Hi, ich bin gerade dabei mich mit der CCD-Zeile µPD8872 von Pollin zu beschaeftigen. http://www.pollin.de/shop/downloads/D100997D.PDF Habe das Teil an einen FPGA angeschlossen und kann auch mehr oder minder sinnvolle Daten auslesen. Ich habe ein altes M42 Objektiv vor dem CCD befestigt und ein Blatt mit schwarzen Streifen davor gehalten. Mit ein bisschen rumprobieren bekomme ich die Streifen abgebildet (siehe Bild). Allerdings ist der Sensor ziemlich unempfindlich, ich brauchte einen Baustrahler um die Vorlage hell genug zu beleuchten (Objektiv hat Blende 3,5). Das passt irgendwie nicht zu den Berichten, die ich von anderen CCD Zeilen hier gelesen habe. Da war immer von super-empfindlich und "uebersteuert staendig" die Rede. Kennt jemand diesen Sensor. Ist er wirklich so unempfindlich? Wie funktioniert ueberhaupt die Belichtung? Der Chip wird ja durchgehend beleuchtet, ich wuerde daher vermuten, dass die gesamte Auslesezeit zwangsweise auch Belichtungszeit ist, und der TG-Puls (transfer gate, siehe Bild bzw. Datenblatt) nur die Ladungen von den Fotozellen in ein Schieberegister uebertraegt. Die Empfindlichkeit muesste dann von der Auslesegeschwindigkeit abhaengen. Ist das richtig? Kann mir jemand ein aehnliches Datenblatt empfehlen, das die Zusammenhaenge ein bisschen besser erklaert als das vorliegende? Viele Gruesse Sebastian
Hallo die Belichtungszeit ist die Zeit zwischen 2 TG-Pulsen. Ist der Abstand zu groß hast du Überbelichtung und die CCDs "laufen über". Wenn du einzelne Zeilen einlesen willst mußt du erstmal dummylesen: heißt auslesen und verwerfen weil die Ladungszellen erst mal leer sein müssen. Dein Auslesetakt muß hoch genug sein um die Zeile zwischen 2 TG Pulsen leer zu bekommen. Während des TG-Pulses muß dein Takt stoppen um nicht Ladung auf mehrere Zelle zu verteilen. Wenn die Zeile überbelichtet ist bekommtst du auch "Bilder". Das kann aber alles sein.
Hallo, ich denke das habe ich alles berücksichtigt. Werde einfach mal meinen Auslesetakt noch weiter verlangsamen und mal vergleichen, was für Werte rauskommen. Wie lang sollten denn die TG Pulse auseinander liegen? Mit 2 bis 10 MHz Takt ist das ja eine riesige Spanne. Wahrscheinlich wäre es sinnig mir ein halbwegs gleichmäßig beleuchtetes Testbild zu basteln... Schuhkarton mit ein Paar Streifen drin oder so. Werd mir mal was ueberlegen. Sebastian
Hallo Streifenmuster ist ganz gut, aber mach die Streifen unterschiedlich breit. Dann kann man das Signal besser zuordnen. Bei 2MHz hast du ca. 5ms kürzeste Belichtungszeit.Die ILX von Sony mit denen ich gearbeitet habe mussten schneller ausgelesen werden. Bei Framos gab es mal ein PDF welches die CCD-Technik gut beschrieb. Habe es leider nicht gefunden aber auf der Homepage gibt es Infos dazu. Ich habe damals den Fehler gemacht zu Anfang die CCD nicht mehrmals zu leeren. Die Sonys haben einige Zyklen gebraucht um nach einer Überbelichtung wieder gut zu funktionieren. Ich habe dann die Blende des Objektives zu gemacht und dann langsam wieder geöffnet. Mit einem Scope geht das einstellen aber recht gut.
Hi, inzwischen bekomme ich recht stabil Daten aus dem CCD gelesen. Habe ein Schachtel genommen, auf der einen Seite ein Loch fuers Objektiv geschnitten und auf der gegenuberliegenden Seite mein Test-Streifenmuster aufgeklebt. Von oben kann man die Schachtel beleuchten und so fuer recht konstante Lichtverhaeltnisse sorgen. Nun baue ich noch ein schnelleres Interface zum PC, damit man komfortabler scharfstellen und Serienaufnahmen machen kann. Werde bei Gelegenheit mal ein Paar Bilder vom Aufbau machen. Am analogen Ausgangssignal des CCD ist mir aber noch einiges unklar. Zu Vout, siehe Timing-Diagramme: Im Datenblaat ist die Offsetspanung mit 6V (4,5..7,5V) angegeben. Die Saettigungsspannung (ich vermute, das ist die maximale Spannung die fuer ein Pixel ausgegeben werden kann?) soll 3V sein. Ich wuerde also vermuten, dass Vout zwischen 6V-3V und 6V liegen kann. Was hat der kleine Huckel (mit der roten 1 bezeichnet) zu bedeuten? Nutze ich einen 3.3V ADC und habe Vout einfach 3:1 heruntergeteilt. Ist natuerlich ueberhaupt nicht optimal, daher ueberlege ich wie es besser geht.
Hallo such mal nach correlated double sampling. Gab mal Ics von Sony die das machten. Sind 2 S/H Stufen mit einem Subtrahierer. Der eine S/H wird auf die Blackpixel getriggert. Der 2te auf die Pixel. Am Ausgang liegt dann die Differenz von aktuellem Pixel und Schwarzwert. Woher der Höcker im Signal kommt weiß ich nicht.
Genau so einen CDS-Chip habe ich auch bei Analog gefunden: AD9826 Gehäuse mit Objektiv hab ich nun, jetzt muss ich noch den CCD-Chip auf die neue Platine mit AD9826 transplantieren... mal schauen ob das gut geht. Sebastian
Hallo. Der letzte Beitrag hier ist zwar schon ein paar Tage her, ich versuche trotzdem mal Anschluss zu finden. ;) Ich habe aus einem alten Scanner einen uPD3778 inkl. Platine herausoperiert, und den versuche ich gerade mit einem ATmega64 auszulesen. Das Timing zur Triggerung eines Auslesezyklus scheine ich allerdings nicht richtig zu treffen, ich betreibe ihn nach Datenblattbeispiel mit f_RB = 2 MHz. @sfreak Bei Dir scheint es ja sauber zu laufen, könntest Du bitte den Teil Deines Programms posten, der den Timingteil enthält? Auch wenn es im Unterschied ein FPGA ist, vielleicht kann ich mir das Timing abschauen und mit meinem vergleichen? Danke! :) Gruss Wolfgang
Hi, ich habe mein Programm inzwischen weigehend umgestrickt, da ich noch den oben angesprochenen AD9826 eingebaut habe. Werde heut Abend mal schauen, ob ich die alten Sachen noch habe. Sebastian
Ich habe das ganze mal für einen Spektralanalyseversuch mit einem ILX551B Sensor und einem ATMega 168 in BASCOM funktionsfähig hinbekommen. Als Prismenersatz benutze ich eine Beugungsgitter Folie. Die Daten des Liniensensors müssen noch kalibriert werden, da dieser im Blauen Bereich schon sehr abfällt (siehe Datenblat ILX551B). Auch die Software bedarf noch der Überarbeitung. Zusätzlich habe ich noch ein Empfangs- und Auswerteprogramm in Delphi geschrieben. Der Ablauf ist folgender: Der ATMega168 wartet auf die Eingabe der Belichtungszeit (in us), startet dann einen Dummylauf über alle Pixel des ILX551B um die Sensorpixel zu leeren. Danach wird der ILX551B ausgelesen und die Daten in ein Array geschrieben. Anschliessend werden diese Daten über die Serielle Schnittstelle über ein myUSBtoUART Serial-Modul mit 115200 baud zum PC übertragen. Mein Pascal Programm liesst die Daten ein, stellt sie in einer Grafik dar (per Mouse auch Zommbar und in den Achsen verschiebbar) und und triggert dann den ATMega168 für einen neuen Messdurchlauf. Das Ganze muss natürlich noch auf korrekte Wellenlängen skaliert werden, wie ich das genau hinbekomme überlege ich noch. Im übrigen ist der ILX551B äusserst Empfindlich und übersteuert sebst bei kleinstem Fremdlichteinfall. Anbei Spaktral-Bild von rotem Billiglaser, BASCOM- und Delphi-Auswerte-Programm. Das Projekt wird von mir in nächster Zeit wie folgt verbessert: 1. Ersatz des ATMega168 durch einen ATXMega 256A3, A/D Auflösung 12 bit (jetzt 8 bit) mit schnellerer Wandlung und Abfrage ALLER Pixel. Ich hoffe dass der XMega die 12 Bit auch bringt; es soll da Probleme geben. 2. Normierung und Linearisierung der Spektralempfindlichkeit des ILX551B Sensors und Anzeige des Spektrums in Wellenlängen (µm). 3. Einsatzt von 2 Linsen zur Strahlaufweitung und Parallelisierung hinter dem Spalt. 4. Gesteuerte Spaltweitengrösse mittels Servo. 5. Mechanische Konstruktion: Gehäuse vollkommen lichtdicht und innen schwarz. Unterdrückung des direkten Strahlengangs hinter der Gitterfolie, da sonst das Gehäuseinnere zusätzliches unerwünschtes Licht abbekommt.
Hallo. @sfreak Das wäre klasse, wenn es da noch was Altes gäbe, vorallem weil es auch eine NEC Zeile ist. Meine NEC Zeile braucht im Grunde vier CLKs (zwei für das Gate, zwei für das Shift), wobei eins davon das invertierte eines anderen ist also trivial. Daswegen waere ein Beispiel, das funktioniert, ganz schön. :) Gruss Wolfgang
Hi, die Horizontaltakte müssen sich ziemlich genau bei 50% Signalpegel schneiden. Wenn nicht, verschmiert man die Ladungen im Schieberegister und bekommt ein Matschbild. Beachte die kapazitive Last für die H-Takte!. Die Takte für den Ladungstransfer können ruhig langsam schalten. In dieser Zeit steht der Sensor ja. Es reichen dort also einfache Treiber. Zeilensensoren sollten eigentlich immer laufen. Also immer den vollständigen Zyklus durchlaufen. Wenn das H-Regster leer gelesen ist taktet man einfach weiter, um eine Ansammmlung von Ladungen dort zu verhindern bis zum nächsten Ladungstransfer aus den Fotodioden. Gruß, RS
Hallo an alle! Ich und mein Kollege sitzen gerade auch an dem NEC 8872 und haben es versucht mit Arduino Uno die Daten zum PC zu transportieren, allerdings kommt bei uns immer wieder ein Signal nur von einer Stelle, nämlich vom Anfang des Sensors, wo eigentlich die Black Pixel liegen. Wir haben das Programm zum Takten so definiert, dass nach jedem phi1-Takt ein Wert ausgelesen wird. Ein Paar Dummy-Durchläufe(also wo es ganz normal getaktet wird, aber nichts ausgelesen) haben wir auch eingebaut. Allerdings bleiben die meisten Pixel unempfindlich. Weiss jemand, woran es liegen könnte? Oder liegt es evtl. an dem Arduino? Mit uC haben wir bis jetzt nur wenig Erfahrung gemacht...
Wir würden gerne das ganze mit so einem ILX-Sensor testen, aber ausser die bei Eureca für haben wir keine gefunden, die man in Deutschland bestellen könnte. Aus USA oder China zu bestellen dauert es leider zu lange. Weiss jemand in welchen Geräten die teile eingebaut wurden?
Hallo Roman, hat denn Eureca keine mehr, oder gibt es andere Gründe dort nicht zu kaufen ? Könntet Ihr Euren Arduino code für den NEC 8872 hier posten ? Gruß Wally
Wir haben uns den ILX554B geholt, allerdings ist das Ergebnis im Moment nicht zufriedenstellend. Das Problem liegt nach wie vor beim Auslesen, das kann man anscheinend einfach so mit Serialprint-Befehl nicht lösen...
Ich versuche den Code einfacher zu gestalten, falls er unverstaendlich ist
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.