Kamera OV7670 an Arduino (3,3V auf D[0..7]-Leitungen)

Gast #3665878
Lesenswert?

Hallo,

braucht man einen Pegelwandler für diese 8 Leitungen (Bilddaten, nur 
lesen von der Cam zum MC) wenn ja welchen, reichen da einfache 
Spannungsteiler? Die 8 Datenleitungen sollen so schnell wie möglich 
ausgelesen werden. In dem Artikel zum Pegelwandler hier auf 
microcontroller.net steht, dass Spannungsteiler bei hohen Frequnzen 
nicht zu empfehlen sind. Ich will da so hoch wie möglich mit dem Arduino 
gehen, also 16Mhz oder weniger je nachdem was ich das für einen Scaler 
an der Cam einstellen muss.

Die I2C Leitungen funktionieren jedenfalls mit abgeschaltetem internem 
Pullup (der liegt auf 5V) und einem externen Pullup am 3,3V + vom 
Arduino. Kann man das nicht auch so für die Datenleitungen machen oder 
hat man dann wieder das Problem wie beim allgemeine Spannungsteiler mit 
Widerständen der bei grossen Mhz Probleme macht?
#3665937
Lesenswert?

Wenn du sicherstellst, dass D0-7 INPUT sind, erkennt der ATmega die 
Signale des OV7670 und frittiert nichts - das ist nicht sauber und jeder 
wird die Hände über den Kopf zusammenschlagen, aber es geht. 
Pegelwandler brauchst du für das I2C-Interface. Alles, was auf dem 
Arduino rein Eingang ist, geht notfalls (es ist wirklich unsauber) ohne 
Wandler. (Hatte mir dafür extra paar 74HC... für hoch- und runterwandeln 
geholt, das dann aber mit Arduino als Basis verworfen.)

Allerdings gehen dir die Pins schnell aus, außer du nimmst einen 
ATmega2560-Arduino. Die nächste Schwierigkeit ist dann die niedrige 
Geschwindigkeit und der geringe Speicher.
Gast #3666008
Lesenswert?

Dirk K. schrieb:
> enn du sicherstellst, dass D0-7 INPUT sind, erkennt der ATmega die
> Signale des OV7670 und frittiert nichts - das ist nicht sauber und jeder
> wird die Hände über den Kopf zusammenschlagen, aber es geht.
Und der Kamera macht das nichts? Was passiert denn da e-technisch wenn 
ich von einer 3,3V Quelle an einen 5V Einfang "sende"?

> Pegelwandler brauchst du für das I2C-Interface. Alles, was auf dem
> Arduino rein Eingang ist, geht notfalls (es ist wirklich unsauber) ohne
> Wandler. (Hatte mir dafür extra paar 74HC... für hoch- und runterwandeln
> geholt, das dann aber mit Arduino als Basis verworfen.)
Nein für I2C brauche ich keine weil ich die internen Pullups abschalte 
und externe gegen die 3,3V des Arduino schalte, der hat eine extra 3,3V 
Quelle, daran betreibe ich auch die Kamera. Funktioniert problemlos mit 
100khz, kann Register lesen und setzen. Takt kommt vom Arduino über 
XCLK, entspr. gefused damit der Takt am XCLK Pin rauskommt, funktioniert 
einwandfrei mit 16Mhz. Wenn ich den Pin trozdem noch brauche kommt halt 
eine externe Taktquelle ran.

> Allerdings gehen dir die Pins schnell aus, außer du nimmst einen
> ATmega2560-Arduino. Die nächste Schwierigkeit ist dann die niedrige
> Geschwindigkeit und der geringe Speicher.
Nutze die Cam in der niedrigsten Auflösung und davon erst mal den 
Grauanteil des Bildes und auch nur ein Standbild. Ausserdem gibts da den 
Trick ein Bild in mehreren Teilen auszulesen, haben andere auch schon so 
gemacht oder ich überspringe jede zweite Zeile,... bis es halt passt, 
reicht das alles nicht kann ich immer noch was Schnelleres einsetzen, 
ich brauche keine volle Pixel- und Farbauflösung und keinen Videostream.
Gespeichert wird auf sdkarte oder per seriellem Port zum PC, muss ich 
beides erst mal testen. Manche haben als Puffer SRAM rangeflanscht aber 
dann reichen die Pins vermutlich wirklich nicht mehr.
#3666024
Lesenswert?

e-techniklaie schrieb:
> Und der Kamera macht das nichts? Was passiert denn da e-technisch wenn
> ich von einer 3,3V Quelle an einen 5V Einfang "sende"?
Und beim I²C fragst du dich das nicht? Bei CMOS Eingängen wird 3.3V 
nicht garantiert als High erkannt (5V*2/3=3.33V) und es führt zu einer 
erhöhten Stromaufnahme der Eingangsstufe. Es kann aber auch sein, dass 
der ATmega auf dem Arduino-Board TTL kompatible Eingangsbuffer hat.

e-techniklaie schrieb:
> Nein für I2C brauche ich keine weil ich die internen Pullups abschalte
> und externe gegen die 3,3V des Arduino schalte
Was haben externe Pullups mit einem Pegelwandler zu tun?

BTW: Ich würde das gesamte Projekt mit 3.3V betreiben, 5V ist beim 
Aussterben.
Gast #3666061
Lesenswert?

Max H. schrieb:
> e-techniklaie schrieb:
>> Und der Kamera macht das nichts? Was passiert denn da e-technisch wenn
>> ich von einer 3,3V Quelle an einen 5V Einfang "sende"?
> Und beim I²C fragst du dich das nicht? Bei CMOS Eingängen wird 3.3V
> nicht garantiert als High erkannt (5V*2/3=3.33V) und es führt zu einer
> erhöhten Stromaufnahme der Eingangsstufe. Es kann aber auch sein, dass
> der ATmega auf dem Arduino-Board TTL kompatible Eingangsbuffer hat.
Hmm stimmt:
http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter

Da habe ich bisher immer was falsch verstanden, das war reiner Zufall 
dass es funktionierte. Ich habe auch andere Module mit 3,3V so schon 
betrieben, da hat es mich immer gewundert dass manche schon "kaputt" 
sind bzw. teilweise Schrott rauskommt,
jetzt weiss ich warum.

> BTW: Ich würde das gesamte Projekt mit 3.3V betreiben, 5V ist beim
> Aussterben.
Welcher MC wäre für so eine Kamera am brauchbarsten? Sprich ausreichend 
Speicher, 3,3V und viele Mhz das ganze für wenig Geld und schon auf 
einem arduinoartigen board wo ich keinen separaten Programmer brauche?
#3666066
Lesenswert?

e-techniklaie schrieb:
> Sprich ausreichend
> Speicher, 3,3V und viele Mhz das ganze für wenig Geld und schon auf
> einem arduinoartigen board wo ich keinen separaten Programmer brauche?

So schnell fällt mir PIC24/dsPIC33/PIC32 auf dem Microstick [1] und 
STM32F4DISCOVERY [2] ein. Ich glaube auch mich hier im Forum mal was von 
einem 3.3V Arduino gelesen zu haben.

[1] 
http://www.microchip.com/DevelopmentTools/ProductDetails.aspx?PartNO=DM330013-2
[2] http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419
#3666095
Lesenswert?

Ich aste mich noch mit 'nem kleinen und billigen 
6-Euro-STM32F103-Minimum-Board ab. Damit geht das Auslesen zumindest 
problemlos (schaffe es, 640x480 in SPI-Ram zu wuppen, ohne das Bild 
segmentieren oder andere Kunstgriffe machen zu müssen), aber das ist 
eher aus akademischen Spaß an der Sache.
Werde wohl auch, wenn das mit der 5MP-OV5462-Cam nicht sofort flutscht, 
mit dem STM32F4-Disco lösen, liegt hier noch im Blister rum. (Eigentlich 
für 17€ inkl. Versand recht günstig in der Bucht.)
Gast #3666098
Lesenswert?

photon schrieb:
> Ich hab hier grad eine 5MP Arduino-Kamera an nem
> STM32F4Discovery-Board
> am Laufen.
> Der STM32F407 hat ein Kamera-Interface !!

Sag mal sehe ich das richtig dass es die Dinger für 30€ MIT Display 
gibt? Ohne Display für ca. 10€ je nach Modell.

Wo ist der Haken? Eine brauchbare IDE unter Linux scheint es nicht zu 
geben.
Gast #3666102
Lesenswert?

Ja.
Es muss aber ein STM32F4 sein.
Ich hab es auf dem 13-Euro Board.
Das 30Euro Board liegt auch hier. Jedoch hat sich die Pinbelegung des 
TFTs mit der der Kamera etwas gebissen.
Ich hab deshalb ein extra TFT für 20€ gekauft und spreche das mit nem 
STM32F407 (also der ohne TFT Controller) an.
Ich mach's per Software. Trotzdem hab ich bei 320x240Pixel noch eine 
Bildwiederholfrequenz von 200 pro Sekunde.
Gast #3666627
Lesenswert?

photon schrieb:
> Ja.
> Es muss aber ein STM32F4 sein....
Trotzdem hab ich bei 320x240Pixel noch eine
> Bildwiederholfrequenz von 200 pro Sekunde.

Der Atmega32 schafft 30frames/sec, wenn man ein 8bit-lcd als 
zwischenspeicher benutzt. z.B. 
http://www.ebay.de/itm/190440692143?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649

320x240Pixel kann praktisch jeder uc vom m32 aufwärts. Da der m32 
veraltet ist, sollte man ihn generell durch den pingleichen m1284 
ersetzen.   Problem sind höhere Auflößungen. Hier ist die Engstelle 
weniger der uc, sondern die software. Für meinen lpc1768 mit 100 mhz 
fehlt es zum beispiel an einem Programm, dass mittels DMA auf eine 
sd_karte schreiben kann. Vielleicht gibt es für den F4 brauchbare 
Programme um größere Datenmengen zu verarbeiten. Von der Fähigkeit, 
240x320 pixel verarbeiten zu können, würde ich eine HW-Entscheidung 
nicht abhängig machen. Vielmehr von der verfügbaren software um die 
eigenen Anforderungen zu erfüllen. Den raspi gibt es bei pollin zur Zeit 
für 30€. Dafür soll es fertige Cam-Programme im Megapixel-Bereich geben. 
Wäre sicher auch eine Überlegung wert.
Gast #3666676
Lesenswert?

photon schrieb:
> Verstehe ich jetzt nicht.

Ich hatte dich so verstanden, dass der F4 für die Auswertung eines 
OV7670 besser geeignet sein soll als ein AVR oder ein M3. Sowohl der AVR 
wie auch der normale M3 können Daten per DMA auf ein TFT schreiben, weil 
der Datenfluss auf das TFT praktisch ungesteuert verläuft. Man schreibt 
nur viele Bytes hintereinander. Schwierig wird es erst beim Speichern 
der Bilder auf sd-karte, weil das Speichermedium sd-karte verwaltet 
werden muss.

Wo ist denn dann der Vorteil von deinem F4 gegenüber einem AVR oder 
einem Cortex-M3?
#3667021
Lesenswert?

Man kann das OV7670 Kameramodul auch mit einem FIFO Baustein AL422 
verbandeln, welcher das Bild zwischenspeichert und hat dann alle Zeit 
der Welt auszulesen und weiterzuverarbeiten. Das ganze gibt es sogar 
schon fertig in der Bucht:
http://www.ebay.de/itm/640x480-CMOS-OV7670-Kamera-AL422-3M-Bits-FIFO-Interface-Arduino-SE02007-A14-/281280213630?pt=DE_Haus_Garten_Heimwerker_Sicherheitstechnik&hash=item417d9b727e

Edit: Das geht dann sogar mit einem lahmen MSP430 Launchpad
http://www.rpg.fi/desaster/blog/2012/10/20/ov7670-fifo-msp430-launchpad/
Gast #3667073
Lesenswert?

Stefan H. schrieb:
> Man kann das OV7670 Kameramodul auch mit einem FIFO Baustein AL422
> verbandeln, welcher das Bild zwischenspeichert und hat dann alle Zeit
> der Welt auszulesen und weiterzuverarbeiten. Das ganze gibt es sogar
> schon fertig in der Bucht:
> Ebay-Artikel Nr. 281280213630
Ja ich weiss, ich habe die ohne FIFO. Mittlerweile kostet die Version 
mit FIFO genausoviel wie ich damals für meine ohne bezahlt habe. Vor ca. 
einem Jahr war die noch kaum zu bekommen dreimal so teuer. Wegen 
Zeitmangel lag meine fast ein Jahr herum. Zu früh gekauft, zu viel 
bezahlt.
Gast #3667131
Lesenswert?

Stefan H. schrieb:
> Darf man fragen was es für eine sinnvolle Anwendung gibt für einen
> Bildsensor am Atmega/Arduino? Für jede Bearbeitung / Analyse des Bildes
> hat der kleine doch zu wenig Speicher.
Der dient nur dazu das Bild (und nur eines) von der Cam auszulesen und 
weiterzureichen bzw. zwischenzuspeichern (SRAM oder SD-Karte). 
Analysiert wird auf dem Ding gar nichts. "Verarbeiten" sieht so aus, 
dass alles weggeworfen wird ausser dem Grauanteil des Bildes und das in 
der kleinsten Auflösung, mehr brauche ich nicht. Dafür sollte das Ding 
reichen, ausserdem habe ich nix anderes hier, andere haben das auch 
schon hinbekommen, notfalls muss man in Segmenten lesen, für Bilder wo 
sich nix bewegt geht das, wenn da mal ein Streifen oder Versatz drinn 
ist stört das nicht.

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