Forum: Mikrocontroller und Digitale Elektronik Ansteuerung Kameramodul


von Julian (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich hab ein Kameramodul gekauft und will da jetzt Bilder rausbekommen. 
Das Problem ist nur: Ich weiß nicht wirklich wie ich weitermachen soll. 
Das Modul ist ansich echt super. Hat Autofokus und Zoom und sogar n Sync 
zum Blitz (was ich nicht brauche). Ich habe bisher alle Pins, die 
einfach nur auf Spannung sitzen müssen dran (also Pins 
1-6,19,20,24,25,30,33,34). Im Anhang dazu mal die Pinbelegung.

Ich würde jetzt noch folgende Pins anschließen:
- Einen Taktgeber an 27
- DigitalOut an die 10 Datenpins

Meine Fragen wären:
- was muss ich an SCL und SDA (31/32) geben?
- was muss ich an PCLK (28) übergeben?
- Sehe ich das richtig, dass ich 21,22,26 und 29 eigentlich nicht 
zwingend brauche?
- Wie muss ich die Daten die über Data0-9 kommen entschlüsseln?

Ich bin über jeden Tip sehr dankbar.

von Schiko (Gast)


Lesenswert?

Du musst die Daten entschlüsseln, wie im Datenblatt beschrieben.
..und ja, auf HSync und VSync kannst Du verzichten,
wenn Du eine intelligente Bildverarbeitung verwendest.
Irgendwo hast Du dann starke Gradienten, die Dir die Bildgrenze anzeigen
:)

von Julian (Gast)


Lesenswert?

Wow, das ging ja echt fix. Danke schon mal soweit.

Also wenn ich das richtig verstanden habe, dann kommen die gesamten 
Bildinformationen über Data0-9, HSync, VSync und PCLK (also Pins 
7-14,17/18, 21/22 und 28), wobei mit PCLK die Pixel-Output-Rate (woraus 
ich die Framerate errechnen kann) gibt. HSync und VSync würden mir 
sagen, wann eine Zeile/Spalte ausgegeben ist.

Im Datenblatt steht nur, dass eine "RAW 10-bit Bayer data" Bild 
geschickt wird. Ich finde nur was zu einem Bayer Filter. Wie muss ich 
die Daten interpretieren?

Searial Control Data (SDA) und Searial Control Clock (SCL) können beide 
jeweile lesend und schreibend betrieben werden und schicken "nur" 
Datenbefehle hin und her, wobei SCL den SDA "freischaltet", oder?

von Irgendwer (Gast)


Lesenswert?

Julian schrieb:
> Im Datenblatt steht nur, dass eine "RAW 10-bit Bayer data" Bild
> geschickt wird. Ich finde nur was zu einem Bayer Filter. Wie muss ich
> die Daten interpretieren?

http://de.wikipedia.org/wiki/Demosaicing
und einfach mal nach "Bayer demosaicing" suchen

>
> Searial Control Data (SDA) und Searial Control Clock (SCL) können beide
> jeweile lesend und schreibend betrieben werden und schicken "nur"
> Datenbefehle hin und her, wobei SCL den SDA "freischaltet", oder?

Aua, sich erstmal mit den Grundlagen zu beschäftigen hat noch nie 
geschadet:
http://de.wikipedia.org/wiki/I²C
http://www.nxp.com/documents/user_manual/UM10204.pdf

von Julian (Gast)


Lesenswert?

Irgendwer schrieb:
> http://de.wikipedia.org/wiki/Demosaicing
> und einfach mal nach "Bayer demosaicing" suchen

Ok super, ich habe schon ein bisschen dazu gelesen. Ich denke, dass 
bekomme ich hin. Die 10-bit Bildinformation kommt dann quasi über die 10 
Datenleitungen gleichzeitig?

Irgendwer schrieb:
> Aua, sich erstmal mit den Grundlagen zu beschäftigen hat noch nie
> geschadet:
> http://de.wikipedia.org/wiki/I²C
> http://www.nxp.com/documents/user_manual/UM10204.pdf

Ja, im prinzip ja das was ich gesagt hatte. Ich kannte I2C halt bisher 
nur aus der Anwendersicht. Vielen Dank für den netten Hinweis, dass das 
genau die beiden Kanäle sind. Mit denen kann ich dann also umgehen.

Lg Julian

von Peter (Gast)


Lesenswert?

Schiko schrieb:
> Du musst die Daten entschlüsseln, wie im Datenblatt beschrieben.

Ohne Datenblatt geht natürlich garnichts. Was hast du denn genau für 
einen Sensor ? (Bezeichnung)

> ..und ja, auf HSync und VSync kannst Du verzichten,
> wenn Du eine intelligente Bildverarbeitung verwendest.
> Irgendwo hast Du dann starke Gradienten, die Dir die Bildgrenze anzeigen
> :)

Das ist natürlich hanebüchener Unsinn. Den Gradienten kann es überall im 
Bild geben. H- und V-Sync haben schon ihre Berechtigung ausser man weiß 
genau was das Kameramodul macht, wie es Eintaktet, etc. Da muss man 
schon arg auf Pixelzählen stehen ... Unsinnige Arbeit.

Julian schrieb:
> Also wenn ich das richtig verstanden habe, dann kommen die gesamten
> Bildinformationen über Data0-9, HSync, VSync und PCLK (also Pins
> 7-14,17/18, 21/22 und 28), wobei mit PCLK die Pixel-Output-Rate (woraus
> ich die Framerate errechnen kann) gibt. HSync und VSync würden mir
> sagen, wann eine Zeile/Spalte ausgegeben ist.

Ganz genau so ist es.

Julian schrieb:
> Searial Control Data (SDA) und Searial Control Clock (SCL) können beide
> jeweile lesend und schreibend betrieben werden und schicken "nur"
> Datenbefehle hin und her, wobei SCL den SDA "freischaltet", oder?

Über das serielle Interface setzt du Auflösung, Weißabgleich, 
Wiederholrate, AGC, ... und einige hunderte mehr Einstellungen. Eben 
alle Einstellungen die man an der Kamera einstellen kann. Wie genau und 
in welchen Registern das geht, das steht im Datenblatt.

Julian schrieb:
> Irgendwer schrieb:
>> http://de.wikipedia.org/wiki/Demosaicing
>> und einfach mal nach "Bayer demosaicing" suchen
>
> Ok super, ich habe schon ein bisschen dazu gelesen. Ich denke, dass
> bekomme ich hin. Die 10-bit Bildinformation kommt dann quasi über die 10
> Datenleitungen gleichzeitig?

Genau so ist es.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Julian schrieb:
> HSync und VSync würden mir sagen, wann eine Zeile/Spalte ausgegeben ist.

Nicht ganz. HSync wird einmal pro Zeile aktiviert, aber VSync nicht 
einmal pro Spalte (das macht schon der Pixeltakt), sondern einmal pro 
komplettem Bild.

von Julian (Gast)


Angehängte Dateien:

Lesenswert?

WOW, vielen herzlichen Dank an Peter. Das is echt mal eine sehr gut 
brauchbare Antwort (nicht, dass die anderen nicht brauchbar gewesen 
wären, aber das finde ich musterhaft). Vielen Dank dafür!

Natürlich auch vielen Dank an Rufus!

Peter schrieb:
> Ohne Datenblatt geht natürlich garnichts. Was hast du denn genau für
> einen Sensor ? (Bezeichnung)

Ich hab auf Amazon eine Modul (oder besser mehrere) von ner Firma die es 
nicht mehr gibt gekauft. Die hieß glaub ich mal DIS oder so.
Ich hab das Datenblatt nochmal durchgesehen und ich finde nur das im 
Anhang (mit Binnig hat das nichts zu tun, oder? Das ist ja nur, um die 
output-größe zu reduzieren. Da steht, man kann es einschalten, muss man 
aber nicht.)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Es wäre praktisch, wenn Du nicht nur Schnipsel des Datenblatts zur 
Verfügung stellen würdest.

"Binning" dürfte hier das Zusammenfassen benachbarter Pixel zu einem 
größeren bedeuten, das wird gemacht, um bei wenig Licht gegen das 
Sensorrauschen ankämpfen zu können.

von Wolfgang (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> das wird gemacht, um bei wenig Licht gegen das
> Sensorrauschen ankämpfen zu können.

... oder um zu Gunsten einer höheren Frame-Rate bei konstanter Datenrate 
die Datenmenge pro Bild zu reduzieren.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wenn "binning" im Zusammenhang mit "improved low-light performance" 
erwähnt wird, wie im Datenblattschnipselchen ... dann ist die Reduktion 
der Datenrate sicher nicht das erste, das einem einfällt.

von Meister (Gast)


Lesenswert?

Sieht mir wie ein DCMI Interface aus. Datenpins, H&Vsync und Pixelclock 
brauchst du dafür. Das solltest du dann mit einem Mikrocontroller der es 
verarbeiten kann nutzen STM32 z.B. (oder ein Raspberry Pi?).

von Peter (Gast)


Lesenswert?

Meister schrieb:
> Das solltest du dann mit einem Mikrocontroller der es
> verarbeiten kann nutzen STM32 z.B. (oder ein Raspberry Pi?).

STM32Fxx ist das sicher gut geeignet. Evtl gibt es auch schon eine 
Codebasis auf der man aufbauen könnte.

Der Rapsberry Pi ist m.Mn. nicht geeignet. Der hat ein CSI (Camera 
Serial Interface) in Version 2. Bei diesen Kameras werden die Daten 
nicht parallel (D0-D9) sondern seriell ausgegeben. Bei der parallelen 
Ausgabe wird immer ein gesamtes Pixel (10 Bit) pro Takt ausgegeben.

Beim CSI wird pro Takt immer ein einziges Bit ausgegeben. (Aka. 10 Takte 
= 10 Bit = 1 Pixel). Außerdem findet die Übertragung über differentielle 
Signalpegel (D+ und D-) statt. Das beim Raspberry Pi verwendete CSI hat 
2 Datalanes (Datenleitungen) und die passende Taktung heißt MIPI Clock 
und ist ebenfalls differentiell. Ein Begriff der zwar nicht 100% passt 
aber mit dem man etwas anfangen kann ist LVDS. Das hat man vielleicht 
schon einmal gehört. Danach kann man googeln.

@ Julian: poste bitte doch mal das ganze Datenblatt und die Bezeichnung 
des Kamerasensors. (evtl. OVxxxx)

Für deine Kamera würde ich dir die Nutzung des DCMI empfehlen. Aber dazu 
musst du die ziemlich in die STM32F4 Serie einarbeiten. Das ist schon 
heavy metal dann. Da reizt man den Controller voll aus.

Meister schrieb:
> Sieht mir wie ein DCMI Interface aus.

Ich bin mir nicht ganz sicher, was dieses DCMI überhaupt ist. Ich 
glaube, dass ST so einfach das parallel "Quasi - Standartinterface" von 
Kameras nennt. Und getreu dem Motto: Gib dem Kind einen Namen haben die 
es halt DCMI getauft. Ist aber genau das richtige (@Julian).

von Meister (Gast)


Lesenswert?


von Julian (Gast)


Angehängte Dateien:

Lesenswert?

Rufus Τ. Firefly schrieb:
> Es wäre praktisch, wenn Du nicht nur Schnipsel des Datenblatts zur
> Verfügung stellen würdest.

Ist im Anhang. Ich dachte, es wäre sinnvoller nicht gleich alles zu 
posten.

Rufus Τ. Firefly schrieb:
> "Binning" dürfte hier das Zusammenfassen benachbarter Pixel zu einem
> größeren bedeuten

Genau so ist es. Alternativ kann man noch Skipping anschalten. Per 
default sind aber beide aus. Ich denke ich brauche das (zumindest für 
den Anfang) auch nicht.

Meister schrieb:
> Das solltest du dann mit einem Mikrocontroller der es
> verarbeiten kann nutzen STM32 z.B. (oder ein Raspberry Pi?).

Ok cool. Meines Erachtens nach ist der Pi auch nicht geeignet, weil die 
Taktrate sehr instabil ist. (Nach meinen letzten Messungen hängt das 
sehr davon ab was im Hintergrund noch alles läuft.) Zusätzlich zu den 
oben genannten Argumenten, die mir einleuchten.

Ich werde dann wohl versuchen mich in den STM32F4 einzuarbeiten. Kann 
ich dazu das kaufen oder gibts da billigere Alternativen:
http://shop.mymcu.de/index.php?sp=article.sp.php&artID=200072

Meister schrieb:
> Jupp es gibt eine Codebasis dazu:
> http://mikrocontroller.bplaced.net/wordpress/?page_id=1115

Sehr cool, dass schaue ich mir gleich mal an. Vielen Dank euch, ihr seid 
super.

von Meister (Gast)


Lesenswert?

Das STM32F4 Discovery ist die Basis für viele Projekte und sehr günstig 
(so günstig wie in kleinen Stückzahlen der uC). Passt also :)

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.