Forum: FPGA, VHDL & Co. CCD Kamera für Basys3, welche?


von Thomas S. (ledcalc)


Lesenswert?

Liebes Forum,

ich bin in der Lehre und arbeite mit dem Basys3 FPGA. Im Lauf der 
Veranstaltung lernen wir ein VGA Signal zu erzeugen, was immer sehr gut 
ankommt. Im nächsten Semester würde ich gern die Bilder einer CCD Kamera 
auslesen und diese darstellen. Zur Frage:

Dafür suche ich eine CCD Kamera. Im Vordergrund steht dabei, dass die 
Pixel mit einem einfachen Protokoll möglichst seriell auslesbar sein 
sollten. Schön wäre auch, wenn man die Kamera mit den 3,3V oder 5V des 
Boards versorgen könnte. Und da ich das ganze als Klassensatz brauche 
und naturgemäß auch mal was über den Jordan geht, muss die Kamera nicht 
teuer sein.

Könntet Ihr mir eine Kamera empfehlen? Ich stelle mir das verbaut auf 
einer Platine vor. Wir haben schon ein ähnliches Assignment mit einem 
DCF77 Empfänger auf einer Platine komplett mit Antenne etc. Die muss man 
nur noch mit der IO des Basys3 verbinden. Etwas ähnliches stelle ich mir 
bei der Kamera vor.

Bin gespannt und schon mal Danke,

   Thomas

von Jens W. (jensw)


Lesenswert?

Hi,

dann such doch mal nach OV7670.
Das ist ein günstiges Modul, was andere auch schon an den Arduino 
angeschraubt haben. Da gibt es dann auch SW dazu, da verstehst du am 
einfachsten, was zu tun ist, damit da Bilder oder Video raus kommen.
Und das Teil passt genau zu deiner VGA Auflösung.

Grüße, Jens

von Michael L. (nanu)


Lesenswert?

Jens W. schrieb:
> dann such doch mal nach OV7670.

Ist kein CCD.

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Angehängte Dateien:

Lesenswert?

CCD ist meines Wissens seit der Produktionseinstellung durch SONY vor 
ca. 10 Jahren quasi ausgestorben, heute alles CMOS, gern mit 
MIPI-Interface.

https://www.docma.info/blog/ccd-sensoren-last-orders-please

Das Basys-3 hat IMHO keinen CMOS geeigneten AD-Wandler oder die 
TreiberStufen für die Daisy-Chain.

MIPI-Connector hat es auch nicht, also ausser dem vorgeschlagenen OV7670 
an den PMODs gibt es nicht viel an "Elektronik-Augen" für das genannte 
board.

https://www.fpga4student.com/2018/08/basys-3-fpga-ov7670-camera.html

: Bearbeitet durch User
von Thomas S. (ledcalc)


Lesenswert?

Das wäre ja genau mein Kandidat, danke für den Hinweis. CCD war für mich 
nur Synonym für kleine Kameras. Wichtig wäre, dass wir sie seriell 
auslesen können mit einer vertikalen und horizontalen Synchronisation, 
denn das haben wir bei der Erzeugung des VGA Signals schon verstanden.

Im Datenblatt steht, dass man die Eingänge mit 2.8-3.0V ansteuern muss. 
Meines Wissens ist High beim Basys3 aber 3.3V. Ist das ein Problem?

von Jens W. (jensw)


Lesenswert?

Nee, das ist kein Problem. Die absolut maximum Ratings sind bei 4,5V. Da 
darfst du nicht drüber.
Mit den 3,3V bist du gut dabei. Das funktioniert.

Gruß, Jens

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

> Im Datenblatt steht, dass man die Eingänge mit 2.8-3.0V ansteuern muss.
> Meines Wissens ist High beim Basys3 aber 3.3V. Ist das ein Problem?

Steht 2.8V oder was geringeres (1.7V/2.45V)?
https://www.openhacks.com/uploadsproductos/ov7670_cmos_camera_module_revc_ds.pdf

Das betrifft auf die Schnelle nur zwei IN-Pins und auch nur zur 
Konfiguration. notfalls kann man ja Serienwiderstände zur 
Strombegrenzung dazwischen schalten (scheinen schon 200 Ω drin).

https://digilent.com/reference/_media/reference/programmable-logic/basys-3/basys-3_sch.pdf

Und die Treiberstärke an den FPGA-ausgängen (DRIVE STRENGTH) kann man 
auch beschränken.

von Markus K. (markus-)


Lesenswert?

Thomas S. schrieb:
> Wichtig wäre, dass wir sie seriell
> auslesen können mit einer vertikalen und horizontalen Synchronisation,
> denn das haben wir bei der Erzeugung des VGA Signals schon verstanden.

Die OV7670 hat ein paralleles Interface. Ich habe nicht nachgeschaut, 
aber ich glaube nicht, dass man das auf seriell umschalten kann.

Es gibt von Arducam Kameras mit SPI, aber eigentlich ist das eher 
unüblich. 8Bit Daten+ HSync/Vsync (oder eben MIPI CSI-2) ist schon ein 
übliches Interface.

von Thomas S. (ledcalc)


Angehängte Dateien:

Lesenswert?

Danke für die Hinweise. Habe nun erste Erfahrung mit der OV7670 Kamera.

Dabei ist ein Problem aufgetreten, bei dem ich nochmal elektrotechnische 
Hilfe bräuchte. Bei einer direkten Verbindung der Pins mit dem FPGA 
bekomme ich ziemlich starke Störungen bei der vertikalen 
Synchronisation. Ein paar Zeilen des Bildes kann ich auslesen bevor die 
nächste Framesynchronisation kommt. Wie viele ist unterschiedlich und 
chaotisch, nur selten reicht es für ein komplettes Bild.

Leitet man die in die Kamera eingehende Masterclock über ein Breadboard 
um und schaltet 1, 10, 100 Ohm Widerstände dazwischengeschaltet, dann 
wird die chaotische Synchronisation nicht besser. Hängt statt des 
Widerstands wie auf dem Bild zu sehen eine gewöhnliche Leitung mit 
Krokodilklemme dazwischen, dann ist das Bild weitgehend stabil.

Der Fix funktioniert übrigens nicht nur bei der in die Kamera eingehende 
Masterclock, sondern auch bei der ausgehenden Pixelclock??!?

Nun kann ich schlecht alle Kameras mit Breadboard und Krokoklemme 
ausgeben. Auch würde ich gern besser verstehen, mit welchem Problem ich 
es hier zu tun habe. Habt Ihr Ideen?

von Rick D. (rickdangerus)


Lesenswert?

Thomas S. schrieb:
> Habt Ihr Ideen?
Ich würde mir die SYNC-Signale mit dem Oszilloskop anschauen.
Die Massen hast Du miteinander verbunden? Fragjanur.

von Thomas S. (ledcalc)


Lesenswert?

Ich fürchte fast, das war nach dem Motto: Wer viel misst, misst Mist.

Als Masse für das Oszi (Voltcraft OSO-3062C, 60MHz, 500MSamples/s) habe 
ich zuerst die Masse für die Kamera genommen.

Masterclock aus dem Basys3 (Messsonde auf x1 gestellt):
Peak to peak: 6.5V / RMS: 2.56V Frequenz 24MHz (wie gewollt) / Sieht aus 
wie Sinus, mit Krokoklemme ebenso wie ohne

Pixelclock: Peak to peak: 2.64V / RMS: 1.92V Frequenz 24MHz / Sieht
eher aus wie Sägezahn

solange ich messe, bekomme ich allerdings kein Bild mehr vom FPGA
(Spannung zu niedrig?)

VSYNC: Mit Masse von der Kamera chaotische Messergebnisse, ohne schönes 
Rechtecksignal. Besseres Bild solange das Oszi dran hängt, schlechtes 
Bild ohne.

Habe schon vermutet, dass mir irgendwo ein Pull-Down Widerstand fehlt
und verschiedene (gegen Masse) ausprobiert, bisher ohne Effekt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Thomas S. schrieb:
> Als Masse für das Oszi (Voltcraft OSO-3062C, 60MHz, 500MSamples/s) habe
> ich zuerst die Masse für die Kamera genommen.
Man nimmt die Masse mit kürzestmöglicher Leitung (Stichwort Massefeder) 
dort ab, wo das Signal in einen Eingang hineingeht. Denn dort muss das 
Signal gut sein.

> Masterclock aus dem Basys3 (Messsonde auf x1 gestellt):
Ich habe einen Fehler gefunden. Taste das Signal auf jedem Fall mit 10:1 
ab. Und gleiche vor der Messung auch noch den Tastkopf ab (dafür sind 
die Anschlüsse rechts unten am Oszi dran).

> Peak to peak: 6.5V / RMS: 2.56V
Beuteile interessieren sich nur am Rande um eine den Peak-Peak-Wert, 
denn iher Ein- und Ausgägne sind auf Masse bezogen. Und dort hast du 
(vermutlich wegen schlechter Teminierung) böse Über- und Unterschwinger.

> Frequenz 24MHz (wie gewollt) / Sieht aus
> wie Sinus, mit Krokoklemme ebenso wie ohne
Krokoklemmen sind nun nicht das Mittel der Wahl um Hochfrequenz zu 
verbinden/messen.

> Pixelclock: Peak to peak: 2.64V / RMS: 1.92V Frequenz 24MHz / Sieht
> eher aus wie Sägezahn
Ein Oszi mit 60MHz analoger Bandbreite kann kein Rechteck mit 24MHz 
darstellen. Denn schon die erste Oberwelle des Rechtecks hat über 70MHz.

Thomas S. schrieb:
> Leitet man die in die Kamera eingehende Masterclock über ein Breadboard
> um und schaltet 1, 10, 100 Ohm Widerstände dazwischengeschaltet
Serienterminierung macht man nicht "irgendwo dazwischen", sondern direkt 
(es geht um mm) am Signalausgang.

> Hängt statt des Widerstands wie auf dem Bild zu sehen eine gewöhnliche
> Leitung mit Krokodilklemme dazwischen, dann ist das Bild weitgehend
> stabil.
Eigentlich nur eine lange Umschreibung für "Glück gehabt!"

Der gesamte gezeigte Aufbau ist im Grunde nur für Niederfrequenz <<1MHz 
geeignet. Der reagiert garantiert schon auf "Handauflegen".

: Bearbeitet durch Moderator
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.