CCD Zeile NEC µPD8872CY

OP Persönliche Seite #2655173
Lesenswert?

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
Angehängte Dateien:
Gast #2655685
Lesenswert?

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.
OP Persönliche Seite #2655693
Lesenswert?

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
Gast #2655888
Lesenswert?

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.
OP Persönliche Seite #2657873
Lesenswert?

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.
Angehängte Dateien:
Gast #2657945
Lesenswert?

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.
Gast #2811881
Lesenswert?

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
(Firma: Bastler aus Mönchengladbach) Persönliche Seite #2822548
Lesenswert?

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.
#2831549
Lesenswert?

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
Gast #2831719
Lesenswert?

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
#2845828
Lesenswert?

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...
#2845835
Lesenswert?

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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren