Forum: Analoge Elektronik und Schaltungstechnik ADC-Setup CCD Zeilensensor TCD1103gfg an Raspberry Pi mit PIC16F15323, ADS8329 und LT6220


von Franz S. (franz1234)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich versuche zur Zeit eine Schaltung zum Auslesen und Digitalisieren 
eines CCD-Zeilensensors (TCD1103gfg) zu entwerfen. Die benötigten 
Timing- und Taktsignale für den Sensor soll ein 8bit-MCU zur Verfügung 
stellen. Kopfschmerzen bereitet mir vor allem die A/D-Wandlung, da bin 
ich nämlich noch total unerfahren. Die Daten sollen vom ADC via SPI an 
einen Raspberry Pi geschickt werden.

Ich habe mir folgendes Setup überlegt (siehe auch angehängtes Bild):

* ADC ADS8329 (16bit, 1Msps ADC mit single unipolar input)
* als Verstärker vor dem ADC hab ich den LT6220 gewählt. Die Widerstände 
hab ich so dimensioniert, dass das Sensor-Signal den ADC voll aussteuert 
(siehe angehängte Simulationergebnisse).
* das Ausgangssignal des Zeilensensors hat eine Datenrate von 200kHz, 1 
Msps Sampling rate vom ADC sollte also ausreichen

Könnte das so funktionieren? Was haltet ihr von der Lösung? Hat jemand 
von euch vielleicht ein paar Tipps für mich?

Viele Grüße

Franz

: Bearbeitet durch User
von karadur (Gast)


Lesenswert?

Hallo

Durch den Sample-Hold im CCD hast du ein zeitdiskretes Signal. Du musst 
den CCD-Takt mit dem AD-Wandler-Takt synchronisieren. Es genügt mit dem 
Schiebetakt abzutasten.

Abtastung in der Mitte des Pixels.

Was willst du mit dem CCD machen? Der ist sehr lichtempfindlich.

von Dieter F. (Gast)


Lesenswert?

karadur schrieb:
> Der ist sehr lichtempfindlich.

Das trifft auf alle CCD-Zeilensensoren zu, die ich kenne.

Franz S. schrieb:
> Könnte das so funktionieren? Was haltet ihr von der Lösung?

Ja, was willst Du damit machen?

von karadur (Gast)


Lesenswert?

5.5 μm × 64 μm sind schon sehr groß und empfindlich.

von Franz S. (franz1234)


Lesenswert?

Dieter F. schrieb:
> Ja, was willst Du damit machen?

Ich möchte ein DIY Spektrometer ähnlich zu diesem Projekt hier bauen:
https://hackaday.io/project/10738-ottervis-lgl-spectrophotometer

karadur schrieb:
> Du musst den CCD-Takt mit dem AD-Wandler-Takt synchronisieren. Es genügt mit dem 
Schiebetakt abzutasten.

Danke für den Hinweis! Aber wie mache ich das am sinnvollsten? Dazu 
müsste ich den Output vom ADC doch über den µC routen, da der 
AD-Wandler-Takt nur über die SCLK vom SPI extern vorgegeben werden kann, 
oder? Genau das wollte ich eigentlich vermeiden, da ich so einen sehr 
günstigen µC verwenden und die Daten direkt an den RPi schicken kann.

von karadur (Gast)


Lesenswert?

Ich würde die Kamera komplett vom RPi trennen.

Wenn dein Controller schnell genug ist sollte er den AD-Wandler und den 
CCD steuern können und eine Zeile im RAM für den RPi puffern können.
Du könntest das Signal auch vor verarbeiten um z.B. den Shutter zu 
verändern.

Die von mir entwickelten Zeilenkameras hatten einen FIFO um die Kamera 
vom PC zu entkoppeln.

PS: 16 Bit halte ich für optimistisch.

von Dieter F. (Gast)


Lesenswert?

Franz S. schrieb:
> Ich möchte ein DIY Spektrometer ähnlich zu diesem Projekt hier bauen:
> https://hackaday.io/project/10738-ottervis-lgl-spectrophotometer

Das habe ich mir gedacht. Ich spiele gerade mit dem TCD1304 und versuche 
mich am Shutter. Davor habe ich mit dem TCD1201 experimentiert - den 
aber wegen des fehlenden Shutters wieder verworfen.

Mein erster Ansatz war einfaches "Bit-Banging" nach dem Datenblatt. Da 
dachte ich schon (nach einigen erfolglosen Abenden) dass ich das 
Datenblatt schlicht nicht oder falsch verstehe. Dem war aber nicht so - 
da hat mir die Empfindlichkeit des CCD einen Streich gespielt. Es hat 
funktioniert - nur habe ich viel zu viel Licht auf den Sensor kommen 
lassen und den vollkommen "übersteuert".

Jetzt, mit dem TCD1304, arbeite ich mit Timern und CTC bzw. PWM. Das ist 
übersichtlicher und eigentlich auch einfacher. Wenn man genau nach 
Datenblatt vorgeht funktioniert es nach einer Erfahrung auch.

Da schnelle ADCs relativ teuer sind und ich hier ein paar ATXMega der 
A-Serie liegen habe werde ich alles auf den XMega portieren und den ADC 
von dort nutzen.

Was ich so an Software im Netz gefunden habe hat bei mir leider nicht so 
recht funktioniert. Macht aber nichts, ich will ja etwas lernen und 
herausfinden ob ich es hinbekomme.

Mein Ziel ist übrigens nicht ein Spektrometer sondern eine genaue 
Positionsmessung (das Spektrometer nehme ich aber nach Möglichkeit auf 
dem Weg dahin mit :-) - die mechanischen Anforderungen stellen dabei für 
mich die größere Hürde dar).

Ggf. kann Karadur (er hat wohl Erfahrung mit CCD-Sensoren) ja ein wenig 
aus dem Nähkästchen plaudern ... :-)

von karadur (Gast)


Lesenswert?

Hallo

Vorweg: diesen CCD kenne ich nicht. Ich habe mit Sony CCDs gearbeitet.

Aus dem Datenblatt entnehme ich das 2 Takte einem Pixel entsprechen.

Am Ausgang sitzt eine Sample-Hold-Stufe zu der muss man den AD-Wandler 
synchronisieren. Es scheint so als wenn der Clock L ist der Hold-Zustand 
aktiv ist. ( Seite 8 im Datenbl. )

Um den Helligkeitswert ohne den Dunkelstromfehler zu bekommen muss man 
die Dummypixel D17-D30 messen ( Dunkelstrom des CCD )und vom Signalwert 
abziehen. Habe ich mit Correlated-double-sampling gemacht.


Mit dem Shutter muss man experimentieren.

Der CCD muss in ein innen geschwärztes Gehäuse und es darf kein 
Fremdlicht in den Aufbau. In einem Büroraum ist der CCD weit 
übersteuert.
Den Fehler hatte ich auch gemacht. Erst nachdem ich eine Optik mit 
Blende vor dem CCD hatte konnte man sinnvolle Signale auf dem Scope 
sehen.

Bei meinen Schaltungen kam nach dem Transistorpuffer ein Kondensator um 
den Gleichspannungsanteil zu trennen. Dann kann man den AD-Wandler 
besser ausnutzen.

von Franz S. (franz1234)


Lesenswert?

Danke für eure Hinweise!

> Am Ausgang sitzt eine Sample-Hold-Stufe zu der muss man den AD-Wandler
synchronisieren. Es scheint so als wenn der Clock L ist der Hold-Zustand
aktiv ist. ( Seite 8 im Datenbl. )

Dann werde ich wohl nicht umhin kommen, mir einen besseren µC zu 
suchen...

> Um den Helligkeitswert ohne den Dunkelstromfehler zu bekommen muss man
die Dummypixel D17-D30 messen ( Dunkelstrom des CCD )und vom Signalwert
abziehen. Habe ich mit Correlated-double-sampling gemacht.

Das hatte ich noch gar nicht auf dem Schirm, danke!

> PS: 16 Bit halte ich für optimistisch.

Warum hältst du das für optimistisch?

von karadur (Gast)


Lesenswert?

Bei 3V  sind 16bit ca. 46uV LSB.

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
Noch kein Account? Hier anmelden.