Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Rasenmaehroboter Test

K
K
Zeile 447: Zeile 447:
 
In der unteren Bildhälfte ist die vertikale Synchronisation zwischen den ungeraden (odd) und geraden (even) Halbbildern dargestellt.
 
In der unteren Bildhälfte ist die vertikale Synchronisation zwischen den ungeraden (odd) und geraden (even) Halbbildern dargestellt.
  
In diesem Bild zeige ich einen Teil der VSync-Impulse, und zwar ab der fallenden Flanke von Odd/Even. Könnt ihr sie in der Grafik oben (Zeile CSync) wiederfinden?:
+
In diesem Bild zeige ich einen Teil der VSync-Impulse, und zwar ab der fallenden Flanke von VSync des Sync-Separators. Könnt ihr sie in der Grafik oben (Zeile CSync) wiederfinden?
  
 
[[bild:Video_PG6_VSync.jpg]]
 
[[bild:Video_PG6_VSync.jpg]]

Version vom 10. April 2010, 12:44 Uhr

RP6 Kamera - Mitmach-Projekt: Hardware

Kategorie:Projekte

In diesem "Mitmach-Projekt" soll in den nächsten Monaten eine Experimentierplatine (CONRAD 191537) für den RP6 "gebaut" werden, mit der eine CMOS-Kamera an den RP6 angeschlossen werden kann. Die Teile, die man für das ganze Projekt braucht, kosten beim großen C ca. 62,- €. Natürlich gibt es auch andere Versender, bei denen es evtl. günstiger wird.

Wer mitmachen will, kann zu jeder Zeit selbst entscheiden, wann er aus dem Projekt aussteigen möchte, weil es in 4 Abschnitten ("Phasen") vorgestellt wird. Jede Phase ist ohne die nachfolgenden Abschnitte funktionsfähig.

Im RN-Forum hat radbruch hier: Minimallösung: Kamera für den RP6 ... schon eine einfache und tolle Lösung vorgestellt, mit der der RP6 "sehen" kann. Radbruch hat das eine "Minimallösung" genannt, weil keine weitere Hardware zum Anschluß der Kamera benutzt wurde. Dennoch war das wegen der gut beschriebenen Software-Entwicklung durchaus keine Minimallösung!

In diesem Projekt soll auf der Experimentierplatine (Exp) eine Schaltung "zum Mitmachen" in 4 Schritten aufgebaut werden. Man könnte das dann (wenn es 'mal fertig ist ...) als "Midi-Lösung" für eine Kamera für den RP6 bezeichnen.

So werden die 4 Phasen aussehen:

  • Phase 1 -> Anschluß der CMOS-Kamera an den RP6 mit CINCH-Buchse zum Anschluß eines Video-Monitors
  • Phase 2 -> Aufbau eines zweifach Video-Verstärkers zur Verbesserung der Qualität
  • Phase 3 -> Aufbau eines Sync-Separators zur Abtrennung der Synchronisations-Signale
  • Phase 4 -> Anbau von schaltbaren IR-LEDs

Der Aufbau wird so universell wie möglich sein, d.h. eine Auswertung der Kamera kann sowohl mit der Software von radbruch mit dem RP6 erfolgen (schon in Phase 1!), als auch mit der RP6Control M32. Auch an die CCPro M128 wurde hardwaremäßig gedacht,- ob man mit ihr auch eine Video-Auswertung hinbekommt, habe ich nicht probiert.

Was braucht man allgemein für den Aufbau einer Schaltung auf der Exp:

  • Seitenschneider, Schere, Zange
  • Kleinbohrer 1,5 ... 2,5 mm (zur Platinenbearbeitung)
  • Lötkolben 25..30 Watt, Lötzinn
  • Plastik 70 Schutzlack (CONRAD 813621)
  • Isolierter Schaltdraht YV 0,20 mm² (CONRAD 606065)
  • Versilberter CU-Draht 0,6 mm (CONRAD 605581)
  • Isolierte Kupferlitze in verschiedenen Farben (z.B. CONRAD 605808, rot)

Mit dem versilberten CU-Draht stellt man auf der Unterseite (= Lötseite) der Exp Verbindungen zwischen den Bauteilen her; mit dem isolierten Schaltdraht werden Drahtbrücken auf der Oberseite (= Bestückungsseite) der Exp eingesetzt. Die Lage der Verbindungen zeige ich im Bestückungsplan jeder Phase. Man muss sich nicht an die genaue Lage der Verbindungen halten.

Wenn man die Drähte und Bauteile an anderen Positionen einlötet, kann es aber sein, dass man die nächste Phase nicht mehr so aufbauen kann, wie ich das hier zeige! Möglicherweise sind die weiteren Teile dann nur noch mit einer "wilden" Freiverdrahtung machbar!

Phase 1

In der Phase 1 werden Steckkontakte auf die Exp gelötet, an die die Kamera mit einem kurzen Kabel angeschlossen wird. An einer CINCH-Buchse kann das Videosignal abgenommen werden, um zu sehen, was der RP6 sehen sollte. Mit dieser Ausbaustufe kann man eine Auswertung des Bildes genau wie radbruch per Software machen. Für den RP6 existiert dafür die Software im RN-Forum, für die M32 müßte man sie noch etwas anpassen.

Man braucht folgende Bauteile (43,01€ inkl. Versand CONRAD) für die 1. Phase:

Anzahl Bestell-Nr. Bauteil-Bezeichnung:
1 191537 RP6 Experimentierplatine
1 150001 CMOS-Kameramodul 1
1 738699 CINCH Einbaukupplung gelb
1 741119 1-reihige Stiftleiste RM 2,54mm (36-polig)
1 742902 Zwei Codierbrücken (aus Set)
1 500812 Keramik Kondensator 100 nF
1 472360 Elektrolyt Kondensator 100 uF/16 V

Hier erst einmal der Schaltplan:

RP6 CMOSCamera SP 1.jpg

Und dann der Bestückungsplan:

RP6 Exp CMOSCamera Step1 Bruecken.jpg

Die Schaltung wird in der rechten oberen Ecke der Exp aufgebaut (keine Angst: Der übrige Platz wird noch gebraucht!). Für die CINCH-Buchse muss man drei Löcher 1,6 mm für Haltestifte bohren (Kreise auf dem Plan!). Die 2 Kontakte der Buchse haben eine Breite von ebenfalls 1,6 mm,- man sollte aber mit vielleicht 2 mm bohren und die Kontaktzungen auf der Lötseite umbiegen. Es ist gut, die Buchse vor dem Verlöten noch festzukleben.

CINCH B.jpg CINCH L.jpg

Wenn man die Platine nicht bearbeiten kann oder will, sollte man anstelle der Einbaubuchse eine gelbe CINCH-Kupplung (731080) bestellen, die mit kurzen Kabeln (am besten einem kurzen abgeschirmten Kabel von einem alten CINCH-Kabel) angeschlossen wird.

Wenn die CINCH-Einbaukupplung fest sitzt, geht es an den weiteren Aufbau:

  • Die dicken schwarzen Verbindungen werden auf der Lötseite (unten) mit blankem Draht 0,6 mm hergestellt. Man lötet sie an wenigen Punkten an, aber nicht dort, wo noch ein Bauteil oder eine Drahtbrücke von oben durchgesteckt werden soll!
  • Die dünneren schwarzen Verbindungen befinden sich auch auf der Lötseite der Platine. Sie werden hauptsächlich mit den Drähten der von oben eingesteckten Bauteile und der Drahtbrücken hergestellt.
  • Die rechteckigen Felder sind die Stiftleisten (1x 5-polig und 5x 2-polig), die man ebenfalls (von oben) aufsetzt.
  • Die zwei rot eingezeichneten Drahtbrücken entstehen aus isoliertem Draht und verlaufen auf der Oberseite der Platine. An dem Loch, wo sie enden, werden sie nach unten auf die Lötseite geführt. Man isoliert sie so weit ab, dass man auf der Unterseite das nächstgelegene Bauteil erreicht.
  • Jetzt werden die beiden Kondensatoren eingelötet. Der Elektrolyt Kondensator (Elko) muss richtig herum eingesetzt werden (im Plan ist ein Plus + zu sehen, auf dem Elko ist aber meist der Minuspol markiert).
  • Das CMOS-Kameramodul schließt man jetzt an die 5-polige Stiftleiste an. Die Kontakte auf der Exp haben die gleiche Anordnung wie die Stifte an der Kamera. Die Verbindung sollte nicht länger als 10 cm sein. Die Verbindung kann man löten, aber auch mit 5-poligen Stiftbuchsen steckbar machen. Die Kontakte "V out" und "GND" stellt man am besten mit einem abgeschirmten Kabel (von einem alten CINCH-Kabel) her,- die Abschirmung ist dann GND.

So weit dieser erste Abschnitt. Testen, ob alles funktioniert, kann man mit der Software von radbruch (Link siehe oben!)

Viel Erfolg!

Was bleibt noch:

  • Es gibt 2 Codierstecker JP1 und JP2. Zunächst braucht man auf die 2-poligen Stiftleisten keine Codierbrücken (= Jumper) zu setzen. Steckt man bei JP1 einen Jumper auf, wird der Pin "Gamma" der Kamera auf GND gelegt. Laut Anleitung der Kamera ist damit Gamma = 1 gesetzt (sonst 0,45). Setzt man auf JP2 einen Jumper, wird die "Gain" (= Verstärkung) reduziert.
  • Die Stiftleisten mit dem Namen PGx sind Plugs (= Stecker). Da darf man auf keinen Fall Jumper aufstecken! Hier wird ein Signal ausgegeben oder eingespeist. An PG1 wird die Kamera angeschlossen, PG2 soll einmal in Phase 4 für IR-LEDs dienen. An PG3 kann man das Videosignal abnehmen und an PG4 über eine lose Drahtverbindung (am besten abgeschirmt!) wieder einspeisen. PG4 ist an IT1 des XBUS angeschlossen, das ist der ADC-Eingang 4 (PA4) der RP6 Base (E_INT1). Dieser ADC-Eingang soll die Helligkeit der Bildpunkte auswerten.
  • Wenn man keinen Monitor an die CINCH-Buchse angeschlossen hat und das Videosignal mit IT1 verbindet, sollte man einen 75 Ohm Widerstand statt dem Monitor an die CINCH-Buchse anschließen, damit der RP6 das Videosignal auswerten kann.
  • Alternativen zu ADC4 der RP6 Base: Man kann auch ADC0 oder ADC1 nehmen (verfügbar auf dem RP6 Mainboard). Auch die M32 kann schon arbeiten: ADC2..7 sind frei und freuen sich auf diese Aufgabe!

So könnte das Ergebnis der Phase 1 bei euch aussehen:

Phase1 B.jpg Phase1 L.jpg

Phase 2

Hier die nächste Stückliste! Man braucht folgende Bauteile (3,33€ ohne Versand CONRAD) für die 2. Phase:

Anzahl Bestell-Nr. Bauteil-Bezeichnung:
1 154989 Transistor BC 547C
1 155080 Transistor BC 556B
1 162280 Diode 1N4148
1 425052 Spindel-Trimmpoti 200 Ohm
1 420603 Widerstand Metall 1% 75 Ohm
2 418137 Widerstand Metall 1% 100 Ohm
1 418196 Widerstand Metall 1% 330 Ohm
1 418218 Widerstand Metall 1% 470 Ohm
1 418293 Widerstand Metall 1% 2,2 kOhm
1 418331 Widerstand Metall 1% 4,7 kOhm
1 411019 Widerstand Metall 1% 4,99 kOhm
1 418374 Widerstand Metall 1% 10 kOhm
1 500812 Keramik Kondensator 100 nF
1 455393 MKS 2 Folien-Kondensator 100 nF
1 472352 Elektrolyt Kondensator 47 uF/16 V

Hier erst einmal der Schaltplan der Phase 2:

RP6 CMOSCamera SP 2.jpg

Jetzt funktioniert der Videoverstärker bei mir wie er soll. Es sollte ein einfacher Verstärker sein, der das Video-Signal von 1V p-p auf 2V p-p bringt.

Warum die 2-fache Verstärkung:

  • 1. Die Dynamik der Graustufen wird höher (damit wird der Wertebereich des ADC besser ausgenutzt)
  • 2. Eine einfache "Dioden-Klemme" wird möglich (dazu später)

An das Video-Signal der Kamera wird der Verstärker mit einem Abschlußwiderstand von 75 Ohm und mit einem Elko 47µF angekoppelt. Die beiden Transistoren verstärken das Signal. Der Ausgang liegt am Collector vom BC556B, das ist die 2-polige Ausgangsstiftleiste PG5. Diesen Ausgang habe ich "DC-ADC-Video" genannt, weil hier das Signal für den ADC mit einem Gleichspannungsanteil (DC) aus dem Verstärker ausgekoppelt wird. Das Video-Signal "reitet" also auf einer Gleichspannung. Dieses Signal darf ich nur an eine hochohmige Schaltung anschließen, aber der Analog-Digitalwandler unseres ATMega32 ist ja mit 100 MOhm sehr hochohmig, wenn er nicht (wie bei der RP6 Base der Eingang ADC4) mit einem Pulldown-Widerstand (liegt zwischen dem Eingang und GND) beschaltet ist (RP6 Base: 10 kOhm, R34).

DC-ADC-Video (PG5):

Video PG5.jpg


Mit dem roten MKS 2 Kondensator 100 nF wird das Ausgangssignal als Wechselspannung (AC) ausgekoppelt. Das ist die 2-polige Ausgangsstiftleiste PG6. Dieser Ausgang heißt "AC-ADC-Video".

AC-ADC-Video (PG6):

Video PG6 ohneKlemme.jpg

Über die Codierstecker JP3, JP4 und JP5 können dort noch 3 Bauteile (2 Widerstände und 1 Diode) angeschlossen werden. Das sind die Bauteile der "passiven Klemme" mit Abschlusswiderständen.

Was ist das? Wenn man sich das AC-ADC-Video ansieht, dann fällt auf, dass der Null-Volt-Pegel mitten im Video-Signal, also in den Helligkeitsinformationen liegt. Da der ADC nur positive Spannungen (über 0 Volt) messen kann, würden die unteren (dunkleren) Werte abgeschnitten. Ideal wäre, wenn der Schwarzwert (Black Level) immer auf 0 Volt (GND) liegen würde und die Helligkeitsinformationen darüber. Man müßte das Signal also "anklemmen" können, daher der Name "Klemmschaltung" für Schaltungen, die eine Spannung auf einem festen Wert halten. Wenn es dabei um Video-Signale geht, dann braucht man eine "Schwarzwert-Klemme". Wenn ihr im Netz suchen wollt, werdet ihr bei den englischen Begriffen "Black Level Clamp", "Black Level Restauration" fündig. Da gibt es unendlich viele Schaltungen seit es die Fernsehtechnik gibt. Da kann man auch lesen, dass es eine "passive Klemme" eigentlich für das Video-Signal nicht gibt, sondern man braucht dafür aktive Bauteile (Transistoren, ICs). Die einfachste (passive) Klemme ist eine Diode (1N4148), die man hinter den Folien-Koppelkondensator 100 nF nach GND schaltet (Jumper auf JP4 stecken und als Lastwiderstand den 4,99 kOhm einschalten, d.h. Jumper auch auf JP3 stecken!).

In unserem weiteren Projekt werden wir IMMER einen Lastwiderstand von 5 kOhm für AC-ADC-Video verwenden. Daher schalte ich für die ADC-Kanäle der M32 oder M128 und für die Kanäle ADC0/1 der RP6 Base immer den 4,99 kOhm Widerstand mit JP3 ein. Ausnahme ist der Eingang ADC4 der RP6 Base (an PG4). Da dort auf dem RP6 Mainboard ein Lastwiderstand von 10 kOhm (R34) schon vorhanden ist, brauche ich für diesen ADC-Eingang nur noch einen 10 kOhm Widerstand (Jumper JP5 aufgesteckt, JP3 frei!). Damit errechnet sich wieder ein 5 kOhm Abschlusswiderstand (= 10 * 10 / (10 + 10) kOhm).

AC-ADC-Video MIT Dioden-Klemme (PG6):

Video PG6 mitKlemme.jpg

Jetzt ist das Video-Signal so "festgeklemmt", dass der HSync-Impuls zwar noch unterhalb von 0 Volt liegt, aber der Schwarzwert fast bei 0 Volt. So kann man das schon gut auswerten. Die 0,6 V, die hier geklemmt werden, sind die Durchlaßspannung der Diode. Jetzt wird auch klar, warum ich das Video-Signal der Kamera 2-fach verstärke:

Bei 1 V p-p stehen ca. 0,7 V für die Helligkeitsinformationen zur Verfügung und ca. 0,3 V für den HSync-Impuls. Verstärke ich das 2-fach, ist der HSync-Impuls 0,6 V (= 2 x 0,3 V) hoch. Das paßt gut zur Durchlaßspannung einer Silizium-Diode, damit diese den HSync-Impuls klemmen kann.

Ich kann mit der Dioden-Klemmschaltung jetzt auch meinen Verstärker abstimmen, wenn ich ein Oszi habe: In meinem Bild oben liegt der Schwarzwert noch etwas unter dem 0 Volt Pegel, d.h. ich kann die Verstärkung des Video-Verstärkers noch etwas erhöhen, damit der Schwarzwert genau auf die Nulllinie fällt. Dazu dient der Trimmer 200 Ohm im Video-Verstärker. Rechts herum gedreht wird die Verstärkung größer. Der Regelbereich geht ca. von 1,8-fach bis 3,3-fach. Das sollte ausreichen. Wenn man kein Oszi, aber ein Widerstandsmessgerät hat, kann man VOR dem Einlöten den Trimmer so einstellen, dass das Messgerät ca. 140 Ohm zwischen den beiden enger zusammen liegenden Pins des Spindeltrimmers zeigt. Das ist dann eine Verstärkung von ca. 2-fach.

Wie sieht es eigentlich mit der Software-Auswertung aus, wenn ich ein "geklemmtes" Video-Signal verwende? Da ich ja die HSync-Impulse abschneide, kann ich die Software von radbruch nicht mehr zur Auswertung verwenden. Ich kann ja die Zeilensynchronisation nicht mehr erkennen. Sinn macht das "Klemmen" also nur, wenn ich die Synchron-Impulse auf andere Weise zur Verfügung stellen kann. Das geschieht in der 3. Phase mit dem "Sync-Separator". In dieser 2. Bauphase muß also JP4 offen bleiben!

Jetzt ist auch der Bestückungsplan der Phase 2 fertig, und es kann an den Aufbau gehen:

RP6 Exp CMOSCamera Step2 Bruecken H.jpg

Ich habe wieder die Drahtbrücken (diesmal sind's 5) dick rot eingezeichnet. Ein paar Bauteile sind farbig, um zu zeigen, wie man die Drähte z.B. der Widerstände noch auf der Unterseite der Platine weiter führen kann. Dadurch braucht man fast keinen zusätzlichen blanken Draht auf der Unterseite (man kann das so eng auch nicht mit zusätzlichem blanken Draht verlöten!).

Nehmen wir z.B. den hellgrünen Widerstand 100 Ohm: Nachdem sein Draht am oberen Platinenrand nach unten durchgesteckt wurde, wird er nach links (von oben gesehen!) umgebogen, dann 2 Löcher nach unten geführt, 2 Löcher wieder nach links und 1 Loch nach unten. Er landet dann unter dem Spindeltrimmer 200 Ohm an dessen einem Kontakt und kann dort und an den 3 Stellen, wo er um 90° gebogen wurde, verlötet werden. Auf diese Weise können die Drähte aller Bauteile benutzt werden, wie ich es mit den Farben angedeutet habe. Natürlich kann man das auch gaaanz anders machen.

Der 100 nF MKS 2 Folien-Kondensator sitzt direkt rechts vom USRBUS, ich habe ihn hier 'mal als lila Kasten mit Rastermaß 5 mm eingezeichnet. Seine kurzen Drähte gehen rechts von Y1 und Y5 nach unten.

Die Diode 1N4148 überbrückt rechts von JP4 zwei Löcher, ihr schwarzer Strich (Kathode) schaut zum USRBUS.

Die beiden Transistoren sind gekennzeichnet. "E" ist jeweils der Emitter. Wenn man den Transistor so vor sich hält, dass man auf die abgeflachte Seite schaut (Beinchen nach unten), dann ist der Emitter das rechte "Bein".

Viel Erfolg beim Löten!

Phase 3

Hier schon einmal die nächste Stückliste! Man braucht folgende Bauteile (9,41€ ohne Versand CONRAD) für die 3. Phase:

Anzahl Bestell-Nr. Bauteil-Bezeichnung:
1 154989 Transistor BC 547C
1 155080 Transistor BC 556B
1 175951 IC LM 1881N
1 189502 IC Fassung 8-pol
1 420719 Widerstand Metall 1% 620 Ohm
1 418315 Widerstand Metall 1% 3,3 kOhm
1 418331 Widerstand Metall 1% 4,7 kOhm
1 418595 Widerstand Metall 1% 680 kOhm
1 457191 Keramischer Kondensator 39 pF
1 457302 Keramischer Kondensator 470 pF
2 455393 MKS 2 Folien-Kondensator 100 nF
1 741119 1-reihige Stiftleiste RM 2,54mm (36-polig)

Falls gewünscht, kann man zum sicheren Anschluß der Sync-Signale an die I/O-Wannen-Stecker der RP6Control M32 oder CCPro M128 noch folgende Teile bei Fa. Reichelt bestellen:

Anzahl Bestell-Nr. Bauteil-Bezeichnung:
1 WSL 10G Wannenstecker 10-polig gerade RM 2,54
2 PFL 10 Pfostensteckverbinder 10-polig f. Flachbandkabel
1 AWG 28-10G 3M Flachbandkabel grau 10-polig

Bei Reichelt bekommt man übrigens auch einreihige Stiftleisten (SL 1X36G 2,54), die beim großen C offenbar z.Zt. knapp sind, und passende einreihige Buchsenleisten (BL 1X20G 2,54), mit denen man die Kamera, ADC-Videoverbindungen und die IR-LEDs steckbar anschließen kann.

So, jetzt gibt es auch den Schaltplan der Phase 3:

RP6 CMOSCamera SP 3.jpg

Der Sync-Separator ("Abtrenner der Synchronisierungs-Signale") besteht nur aus dem IC LM 1881N. Zu seinem Pin 2 wird das Video-Signal der Kamera über einen Folienkondensator 100 nF geführt. Die Bauteile 620 Ohm, 39 pF, 470 pF stellen einen Tiefpaß dar und halten die Frequenzen der Bildinformationen vom IC fern. Der Sync-Separator erzeugt die vier Ausgangssignale CSync, VSync, Burst/Back Porch und Odd/Even. Sie werden im Absatz "2.2 Die Synchronisations-Signale" genauer erklärt.

Mit dem Jumper JP8 wird ausgewählt, ob man CSync (Stellung C) oder Burst (Stellung B) für die horizontale Synchronisation (HSync) verwenden möchte. JP9 bestimmt, ob an den 10-poligen I/O-Wannenstecker (I/O M32/M128) eine RP6Control M32 (Stellung 32, 1 Jumper!) oder eine CCPro M128 Karte (Stellung 128, 2 Jumper!) zur Auswertung der Signale angeschlossen wird. Über JP10 (Stellung H) kann HSync mit SDA (für die RP6Base) verbunden werden. Wird JP11 geschlossen (Stellung OE), können die M32 oder M128 das Signal Odd/Even über XBUS IT3 auswerten. JP12 verbindet VSync entweder mit SCL (Stellung 6 für die RP6Base) oder mit XBUS IT2 (Stellung 32 für die M32). Eine Tabelle, die die Verbindungen der Sync-Signale zeigt, findet ihr unter "1.5.3 Verteilung der Sync-Signale".

Bleibt noch die Erklärung der "Aktiven Klemme", die aus den beiden Transistoren besteht. Werden JP6 und JP7 geschlossen (JP4: Offen!), dann steuert der Sync-Separator mit dem CSync-Signal den BC 556B so an, dass er während der horizontalen Sync-Impulse durchschaltet. Damit wird auch der BC 547C durchgeschaltet. Er liegt mit seinem Emitter an GND und mit dem Collector über JP6 am AC-ADC-Video-Signal und schließt das Video-Signal für die Dauer des HSync-Impulses kurz. Dadurch wird der HSync-Impuls gekappt und das Signal annähernd auf den Schwarzwert geklemmt. Nachteil dieser (einfachen) Lösung ist der hohe Abschaltimpuls am Ende der hinteren Schwarzschulter, der evtl. zu einem Verlust von Bildinformationen an den Zeilenanfängen führen kann. Und so sieht's aus:

Video PG6 mitKlemme CSync.jpg

- alles Weitere in Planung ... -

Phase 4

- wird's geben ... -

Frage an euch:

Wie viele IR-LEDs sollen wir nehmen?

  • Stromsparende Variante (20 mA) mit 2 oder 3 LEDs
  • Variante mit höherer Leistung (40 mA) mit 4 bis 6 LEDs

Hier schon einmal die übernächste geplante Stückliste!

Man braucht (voraussichtlich) folgende Bauteile (4,65..6,21€ ohne Versand CONRAD) für die 4. Phase:

Anzahl Bestell-Nr. Bauteil-Bezeichnung:
1 155080 Transistor BC 556B
2 406996 Widerstand Metall 1% 60,4 Ohm
2 418145 Widerstand Metall 1% 120 Ohm
1 418331 Widerstand Metall 1% 4,7 kOhm
2..6 154434 IR-LEDs 5 mm, Typ L-53F3BT
1 529593 Lötpunktrasterplatte 160 x 100

Gesamtkosten des Projekts: Ca. 62€

Allgemeine Daten und Tabellen

Stecker

Stecker Signal(e) Pins Bedeutung
PG1 Video-in, GND, VCC, Gamma, Gain 5 Anschluß CMOS Kamera
PG2 IR-LEDs+, GND 2 Ausgang für IR-LEDs
PG3 Video-out, GND 2 Ausgang Video 1V p-p
PG4 ADC-Video-in, GND 2 Eingang ADC4 der RP6Base
PG5 DC-ADC-Video-out, GND 2 Ausgang DC-ADC-Video
PG6 AC-ADC-Video-out, GND 2 Ausgang AC-ADC-Video

Jumper

Zeichenerklärung:

  • Stellung ON = Jumper aufgesteckt (Kontakt geschlossen)
  • Stellung OFF = Jumper abgezogen (Kontakt offen)
Jumper Stellung Bedeutung
JP1 ON Kamera: Gamma = 1
JP1 OFF Kamera: Gamma = 0,45
JP2 ON Kamera: Gain low
JP2 OFF Kamera: Gain high
JP3 ON AC-ADC-Video: Lastwiderstand 5 kOhm (JP5: OFF!)
JP4 ON AC-ADC-Video: Level Clamp Diode (JP6,7: OFF!)
JP5 ON AC-ADC-Video: Lastwiderstand 10 kOhm (JP3: OFF!)
JP6,7 ON AC-ADC-Video: Black Level Clamp (JP4: OFF!)
JP8 C ON HSync = CSync
JP8 B ON HSync = Burst
JP9 32 ON I/O-Stecker der RP6Control M32
JP9 128 ON (2x) I/O-Stecker der RP6 CCPro M128 (2 Jumper!)
JP10 H ON SDA = HSync
JP11 OE ON M32/M128: IT3 = Odd/Even
JP12 6 ON SCL = VSync
JP12 32 ON M32: IT2 = VSync

Verteilung der Sync-Signale

In dieser Tabelle habe ich aufgelistet, mit welchem Portpin das jeweilige Sync-Signal ab der Phase 3 verbunden werden soll. Dabei habe ich möglichst interruptfähige Pins genommen (auf der RP6Base waren aber keine mehr frei!). Für die horizontale Synchronisation habe ich den ICP-Pin genommen, weil man damit gut Timer starten/stoppen kann, was für das Einlesen der Zeile nützlich sein kann.

System Signal Port Name XBUS USRBUS I/O-Stecker RP6-Name
RP6Base VSync PC0 SCL SCL - - SCL
HSync PC1 SDA SDA - - SDA
Odd/Even - - - - - -
RP6Control M32 VSync PD3 INT1 IT2 - - EINT2
HSync PD6 ICP1 - - Pin 8 IO_PD6
Odd/Even PB2 INT2 IT3 - - EINT3
RP6 CCPro M128 VSync PD2 INT2 - - Pin 8 PORT_RXD1
HSync PD4 ICP1 - - Pin 6 PD4 (A16)
Odd/Even PE6 INT6 IT3 - - PORT_PE6_INT


RP6 Kamera - Mitmach-Projekt: Software

Da dies ein "Mitmach-Projekt" sein soll, hoffe ich für die Programmierung einer Software für die RP6 Kamera, dass sich viele beteiligen und hier fleissig mitschreiben/bearbeiten!

Grundlagen und erste Überlegungen

Auf Wikipedia (siehe Quelle1!) findet man gute Informationen zum Aufbau des BAS Signals, das auch unsere Kamera ausspuckt. Sie ist zwar nicht sehr hochwertig, kann aber laut Datenblatt 352 x 288 Punkte darstellen, was für unsere Zwecke völlig ausreicht. Von den 288 Zeilen, die ausgegeben werden, sind nur ca. 230 Zeilen auf einem Video-Monitor sichtbar.

Jede Zeile wird in 64 µs übertragen, davon sind nur 52 µs für den Bildinhalt vorgesehen. Für einen µC wie den ATMega32 ist das schon eine Herausforderung: Wollte er jeden der 352 Punkte der Zeile lesen, dann hätte er dafür rechnerisch knapp 0,15 µs Zeit. Beim RP6 dauert ein Taktzyklus 0,125 µs (bei 8 MHz Takt), bei der RP6Control M32 0,0625 µs (bei 16 MHz Takt). Mit der M32 hätte man also 2,4 Taktzyklen Zeit für jeden Punkt.

Man sieht schon, dass das nichts werden kann! Es ist unmöglich, jeden Punkt der Zeile "live" einzulesen. Es stellt sich die Frage, wieviele Punkte man denn nun einlesen kann. Ich brauche dazu ja den Analog-Digitalwandler Eingang (ADC) des ATMega32, weil ich die Helligkeit jedes Punktes (also eine Spannung) lesen möchte.

Das Datenblatt zum ATMega32 sagt dazu: Im "free running modus" (auf jede Messung folgt sofort die nächste) braucht jede Analog-Digitalwandlung 13 ADC-Taktzyklen. Das Ergebnis steht dann nach weiteren 0,5 ADC-Taktzyklen zur Verfügung. Was ist eigentlich der "ADC-Takt"? Man muss den Haupttakt des µC für den Analog-Digitalwandler teilen. Das Ergebnis ist dann der ADC-Takt. Der Maximalwert liegt laut Datenblatt bei 1 MHz für den ATMega32. Bei 13 ADC-Taktzyklen pro ADC-Wandlung dauert also jede Wandlung 13 µs.

Das heißt, dass man max. nur 4 Punkte pro Zeile (= 52 / 13) lesen kann. Das ist ja sehr schade! Man hätte dann kaum Auflösung.

Diese Feststellungen sind auch nicht vereinbar mit den Ergebnissen von radbruch (siehe Quelle2!), der viel mehr Punkte pro Zeile einlesen kann. Er verwendet als ADC-Takt 4 MHz, was weit außerhalb der Spezifikationen für den ATMega32 ist. Geht das überhaupt? Kann man mit einer Wandlungszeit von 3,25 µs (= 1 / 4 * 13 µs) realistische 8-Bit-Werte ermitteln? Immerhin würde man so rechnerisch auf eine Auflösung von 16 Punkten pro Zeile (= 52 / 3,25 µs) kommen.

Bevor wir die Fragen beantworten: Überlegen wir erst einmal weiter ...

Mit dem Einlesen der Punkte ist es noch nicht getan. Wir brauchen auch Zeit, um den gewandelten Wert in einer Byte-Variable zu speichern. Dafür stehen die jeweils 13 µs zur Verfügung, während der der ADC-Wandler mit der nächsten Wandlung beschäftigt ist. Bei 8 MHz Takt der RP6 Base sind das 104 Zyklen, in denen man das in GCC gut auch ohne Optimierung durch Assembler-Teile hinkriegt. Wenn eine ADC-Wandlung nur 3,25 µs braucht, hat man bei der RP6 Base noch 26 Taktzyklen zur Verfügung. Auch das reicht noch aus, um in einer Schleife einen Byte-Wert nach jeder Wandlung zu speichern. Wie gross kann denn ein Bild sein, mit dem der ATMega32 nicht überfordert ist? Er hat 2024 Byte SRAM, den Speicherplatz braucht er für Variablen und den Stack (Stapel). Wenn man kein sehr umfangreiches Programm mit vielen Variablen und Unterprogrammen hat, kann man vielleicht die Hälfte (1024 Byte) für ein Bild verwenden. Das wäre eine Auflösung bei 8 Bit Helligkeitswerten von 32 x 32 Punkten. Reduziert man die Helligkeitswerte auf 4 Bit (16 Graustufen), kann man 45 x 45 Bildpunkte darstellen. Auf ein Seitenverhältnis von 4 : 3 des Fernsehbildes bezogen wären in 1024 Byte RAM Bilder von 36 x 28 (8 Bit) oder 52 x 39 (4 Bit) Punkten zu speichern. 16 Graustufen sind für die Aufgabe einer Kamera an einem uC gut ausreichend. Man kann damit Linien folgen und sogar eine einfache Orientierung im Raum erreichen.

Jetzt ist wohl eine Entscheidung fällig:

Ich entscheide mich dafür, eine Bildgröße von 52 x 39 Punkten mit 16 Graustufen zu erreichen.

Kann das klappen? Die 39 Zeilen mache ich dann aus ca. 230 sichtbaren Zeilen der Kamera (Zeilen 30..260). Ich würde also jede 6. Zeile (= 230 / 39) lesen. Jede Zeile dauert 64 µs, also beträgt der Abstand vom Ende der 1. bis zum Anfang der 6. Zeile 256 µs. Das ist genügend Zeit, um die Werte jeder Zeile zu verarbeiten (z.B. in eine Tabelle zu speichern). Kritischer ist die Zeile selbst. Ich will 52 Punkte pro Zeile darstellen. Damit müßte ich jede µs einen Punkt einlesen. Selbst mit der hohen Übertaktung des ADC (4 MHz), die radbruch verwendet hat, komme ich nur auf 16 Punkte pro Zeile. Was tun? Ich könnte das 2. Halbbild benutzen. Bei meiner geringen Auflösung von 52 x 39 Pixeln kann ich ruhig wenige aufeinanderfolgende Zeilen als EINE Zeile betrachten. Wenn ich z.B. Zeilen 5 und 7 eines Halbbildes und Zeile 6 des anderen Halbbildes lesen würde, dann käme ich auf 16 x 3 = 48 Punkte. Natürlich müßte ich nach der Zeile 5 die Zeilen 6 und 7 um je 1,08 µs (= 3,25 / 3) versetzt lesen, damit ich in meiner "dicken Zeile" (besteht aus 3 echten Zeilen!) 48 Punkte (= 16 x 3) lesen kann. Das kommt dem Ziel von 52 Punkten pro Zeile schon nahe.

Bevor ich das als Methode feststampfe, noch eine letzte Überlegung:

Wie wäre es, wenn ich das zeitkritische Lesen einer Zeile vermeide und nur Spalten lese? Das hat radbruch auch in seiner Software gemacht und klingt erfolgversprechend. Ich würde also wie beim 1. Ansatz jede 6. Zeile lesen, um meine vertikale Zeilenauflösung von 39 Zeilen zu erreichen. Das mache ich dann 52 mal, indem ich in jedem Halbbild das Lesen der Zeilenpunkte um 1 µs verzögere. Ich lese also mein Bild spaltenweise ein. Eindeutiger Vorteil: Ich komme nicht in Zeitdruck beim Einlesen, weil ich nur alle 64 µs einen Punkt lesen muss. Nachteil: Ich brauche 52 Halbbilder Zeit, um mein Bild mit allen Zeilenpunkten komplett eingelesen zu haben. Das ist über eine Sekunde.

Schlimm ist das nicht: Ein Bild pro Sekunde ist besser als Nichts. Beim 1. Ansatz wäre das komplette Bild in 60 ms "im Kasten", also 17x schneller.

Hier braucht's wohl wieder eine Entscheidung:

Ich entscheide mich für den 1. Ansatz, der nach 3 Halbbildern fertig ist. Grund: Ich will ja z.B. einer Linie folgen, da kann eine Abtastrate von 1 Sekunde schon zu wenig sein. Sicher könnte man das auch mit der 2. Methode des Spaltenlesens schaffen, wenn man nur wenige Spalten liest und die Kamera um 90° dreht. Ich möchte aber nicht die Kameraposition ändern, sondern immer mein ganzes Bild lesen und verarbeiten. Das ermöglicht mir, im selben Programm einer Linie zu folgen, aber auch einen hellen Gegenstand in der Ferne zu "sehen". Ist sicher Geschmackssache ...

... Baustelle! Hier wird noch weiter gedacht! ..........

Die Synchronisations-Signale

Die Darstellung jeder Zeile wird durch den horizontalen Synchronisations-Impuls (HSync) ermöglicht.

BAS-Zeilensynchronisation.jpg

Oben erkennt man das Videosignal, das hier mit fast 2 Zeilen dargestellt ist. HSync ist 4,7 µs lang und wird gefolgt von der hinteren Schwarzschulter (5,8 µs). Danach werden 52 µs lang die Bildinformationen der Zeile gesendet. Es folgt die vordere Schwarzschulter (1,5 µs) vor dem HSync der nächsten Zeile. In der Mitte ist das Signal CSync des Sync-Separators zu sehen. Es führt normalerweise High-Pegel und wird nur Low (0 V), solange der HSync-Impuls dauert. Ein weiteres Signal, das der Sync-Separator ausgibt, heißt Burst (Back Porch). Es führt für 4 µs Low-Pegel, nachdem der CSync-Impuls beendet ist. Hier liegt beim FBAS-Videosignal (Farb-BAS) der Burst, der die Farbinformationen enthält. Bei unserer S/W-Kamera gibt es keinen Burst.

BAS-Bildsynchronisation.jpg

Dieses Bild zeigt die vertikale Bildsynchronisation. Das ist die Abfolge von Signalen, die zwischen den einzelnen Halbbildern gesendet werden. Auch unsere Kamera sendet diese Halbbilder (Datenblatt: "2:1 Interlace").

In der oberen Bildhälfte ist die vertikale Synchronisation zwischen den geraden (even) und ungeraden (odd) Halbbildern dargestellt. Das ungerade Halbbild ("Field 1") enthält die Zeilen 1, 3 ... 285, 287. Das gerade Halbbild ("Field 2") enthält die Zeilen 2, 4 ... 286, 288.

In der unteren Bildhälfte ist die vertikale Synchronisation zwischen den ungeraden (odd) und geraden (even) Halbbildern dargestellt.

In diesem Bild zeige ich einen Teil der VSync-Impulse, und zwar ab der fallenden Flanke von VSync des Sync-Separators. Könnt ihr sie in der Grafik oben (Zeile CSync) wiederfinden?

Video PG6 VSync.jpg


Quellen

Quelle1
Wikipedia Fernsehsignal
Quelle2
Minimallösung: Kamera für den RP6
Quelle3
Maxim: AC-Kopplung, Vorspannung und Clamp
Quelle4
Intersil: Technical Brief TB462.1
Quelle5
LM1881N Datasheet
Quelle6
BC 547C Datasheet
Quelle7
BC 556B Datasheet
Quelle8
IR-LED L-53F3BT Datasheet


--Dirk 19:19, 27. Mär 2010 (CET)


LiFePO4 Speicher Test