Skip to content

thoughts

Oliver edited this page Apr 10, 2018 · 3 revisions

Gedanken zum Projekt

Wir wollen einfach mal mit dem Chip rumspielen und schauen wo uns das hinführt. Um auf einem möglichst niedrigen Einstiegslevel zu beginnen, haben wir uns für den OV7670 am Atmega328p (16 MHz) entschieden, wie man ihn auf zahlreichen Arduino-Boards (z.B. dem Nano, Uno) findet. Wohlwissend das wir damit weit unter den Möglichkeiten des Chips bleiben müssen.

Wahl des Bildsensors

Den OV7670 gibt als als fertiges Shield sowohl ohne als auch mit FIFO-Speicher. Bei der Variante mit Speicher, können die Bilddaten vom Chip direkt dort zwischengelagert werden. Der Speicher ist groß genug um ein Bild in der maximalen Auflösung zu halten, bis es vom Mikrocontroller vollständig geladen, verarbeitet und an das gewünschte Ziel übertragen wurde. Dies hat den großen Vorteil das man sich um das Timing und die Zwischenspeicherung nicht kümmern muss und sogar einen Schnappschußmodus implementieren kann.

Grundsätzlich sollte man bei einer Neuanschaffung lieber zu dem Modell mit FIFO-Speicher greifen. Nachfolgend werden wir uns aber zunächst dem ohne Zusatzspeicher widmen.

Wahl der IO-Spannung

Als Betriebs- und IO-Spannung haben wir damit 5V, wodurch für bestimmte Signale zum OV7670 eine Pegelanpassung auf 3,3V notwendig wird. Zur Vereinfachung haben wir dafür handelsübliche 4fach oder 8fach Pegelwandler verwendet. Das spielt für die Funktion keine Rolle, diese müssen auch nicht zwingend Bidirektional arbeiten können.

Die Schnittstellen

Der OV7670 hat ein Kommandointerface und ein Bildinterface. Über das Kommandointerface erhält der Chip u.a. die Einstellungen für das Bildformat, den Arbeitsmodus und das Datenformat in dem die Bilddaten über das Bildinterface zum Atmega übertragen werden. Beide Schnittstellen arbeiten unabhängig voneinander. Das Bildinterface ist unidirektional und "sendet" nur Bilddaten im eingestellten Format zum Chip.

Takterzeugung für den OV7670

Laut Datenblatt sollte am XCLK-Eingang der Kamera wenigstens ein Takt von 10 MHz angelegt werden (Tastverhältnis 1:1). Experimente haben aber gezeigt, das auch ein Takt von 8 MHz störungsfrei funktioniert. Der Vorteil für uns ist, das wir diese Taktfrequenz ohne besondere Tricks über einen Pin vom Atmega selbst aus seiner Prozessorfrequenz generieren können.

Clone this wiki locally