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?
:
Bearbeitet durch User
e-techniklaie schrieb: > Pegelwandler tu dir das nicht an. Betreib den atmega mit 3,3V. Das Projekt ist auch ohne Pegelwandler schwierig genug.
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.
:
Bearbeitet durch User
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.
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.
:
Bearbeitet durch User
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?
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
Ich hab hier grad eine 5MP Arduino-Kamera an nem STM32F4Discovery-Board am Laufen. Der STM32F407 hat ein Kamera-Interface !!
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.)
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.
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.
Linux: Doch. Ich arbeite hier auch unter Linux (Ubuntu 14.04). Eclipse, GCC und eben die STM32 Bibliothek STM32CUBE.
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.
Der STm32F419 hat sogar direkt ein TFT Interface und kann ein Speicherabbild direkt per DMA auf ein externes TFT Modul bringen. Das bedeutet: Das Einlesen der Kameradaten und das Ausgeben auf TFT benötigt keine CPU Last. Allerdings muss die Kodierung der Farbe passen, wenn man das Bild 1:1 durchreichen will.
photon schrieb: > per DMA auf ein externes TFT Modul DMA auf TFT kann sowohl der Atmega wie auch der LPC. Wie bringst du denn mit deinem F4 vollständige Bilder mit 640x480px auf eine sd-Karte??
>Wie bringst du denn mit deinem F4 vollständige Bilder mit 640x480px auf >eine sd-Karte?? Verstehe ich jetzt nicht. Ich hab doch gar keine SD-Karte.
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?
Ich glaube ich bleibe trotzdem erst mal beim Arduino, den kenne ich und brauche erst mal nur ein paar Pegelwandler, die kosten nur ein paar Cent.
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/
:
Bearbeitet durch User
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.