Hallo Gast, Sie sind nicht angemeldet.

Sekundäre Elektronik

Von Johannes Dörr, Florian Manteuffel am 12.06.2009, aktualisiert am 14.06.2009 um 00:26 Uhr

Servo-Ansteuerung

Die Servos werden durch den IC "SD20" angesteuert, der die Befehle für die Ausgabe der Impulse über die I2C-Schnittstelle empfängt. Bei Servos wird eine absolute Position angegeben, auf die sich der Motor drehen soll. Das ist ein großer Unterschied zu Schrittmotoren, die sich jeweils bei einem Impuls nur (wie der Name schon sagt) um einen "Schritt" drehen.

Dem IC wird ein Wert zwischen 0 und 255 übergeben, wobei jeder Wert eine bestimmte Position angibt. Der SD20 wandelt diesen Wert nun in einen Impuls mit einer Breite zwischen 1ms und 2ms um, wie es den Spezifikationen von Servos entspricht. Auf diese Weise lassen sich Servos gewöhnlich nur um ca. 90 Grad drehen. Um den Drehbereich zu erweitern, müssen Impulse gesendet werden, die unter 1ms bzw. über 2ms liegen. Dafür kann man den SD20 in den so genannten "Expanded Mode" schalten. In diesem Modus kann er dementsprechende Impulse erzeugen.

Einen Nachteil hat diese Betriebsart jedoch, denn bei Verwendung besteht die Gefahr, dass der Servo in die Endstellung fährt und dabei unter Umständen beschädigt wird. Deshalb müssen vorher experimentell die mechanischen Obergrenzen der Servos herausgefunden und im Programm berücksichtigt werden.

Ultraschallmodule SRF04

Das Ultraschallmodul SRF04, von einem Triggersignal gestartet, sendet eine Schallwelle aus und wartet, bis das Echo wieder empfangen wird. Um eine Messung zu starten, wird ein Impuls an den Triggereingang gelegt. Der Wandler wird von der Ablaufsteuerung getaktet (ein Signal wird ausgesendet) und der Echo-Ausgang des Moduls auf "High" gelegt. Das erste hereinkommende Echo schaltet den Echo-Ausgang wieder auf "Low", sodass ein direkt zur Entfernung des Objektes proportionaler Impuls entsteht.

Manche Controller, wie etwa die C-Control II, sind leider zu langsam um die Länge dieses Ausgangsimpulses (dieser hat eine Lange von 800µs - 18ms) direkt zu messen. Mit einer Schaltung kann man aber auch mit einem solchen Controller die genaue Entfernung bestimmen. Die Impulslänge wird hierbei in einen Spannungswert umgewandelt, und kann dann mit einem AD-Port ausgelesen werden.

Infrarotsensoren GP2D12

Die IR-Sensoren GP2D12 sind in vieler Hinsicht einfacher zu handhaben. So liefern sie direkt ein analoges Ausgangssignal und es muss kein aufwändiges Taktsignal generiert werden. Bei dem Analogsignal entsprechen 10cm etwa 2,6V und 80cm etwa 0,4V. Um aus diesem Signal nun einen genauen Abstandswert zu erhalten, wäre eine Look-Up-Tabelle sicherlich das einfachste, jedoch auch das programmiertechnisch aufwändigste. So haben wir experimentell eine Formel zur Umrechnung ermittelt.
Auf diese Weise erhielten wir zum Beispiel für den einen Sensor folgende Formel: d = [5915 / (x-13)] - 2.

Hierbei bezeichnet X den Spannungswert, der am AD-Port gemessen (als 10-bit Integer-Wert) wird und d die Entfernung in cm.

Liniensensor

Der Liniensensor besteht aus drei Fotowiderständen. Diese sind in einer Reihe angebracht, horizontal zur Fahrtrichtung. In Verbindung mit einem Spannungsteiler kann über den einzelnen Fotowiderständen die Spannung gemessen werden, die proportional zur gemessenen Helligkeit ist. Mehrere LEDs beleuchten den Untergrund, sodass auch ohne Umgebungslicht eine Bodenlinie gut erkannt werden kann. Die Fotowiderstände sind an jeweils einem AD-Wandler der C-Control angeschlossen. Wir haben auf eine elektronische Schaltung, die die Spannungswerte in ein digitales Signal umwandelt, verzichtet und fragen die Helligkeitswerte direkt ab. Somit können Linien besser erkannt werden. Beispielsweise ist es nicht zwingend, dass eine Bodenlinie eine bestimmte Farbe hat. Vielmehr ist der Farbunterschied ausschlaggebend. Somit kann ebenso eine dunkle Linie auf hellem Boden wie eine helle Linie auf dunklem Boden verfolgt werden.

Motortreiber

Wir verwenden Motortreiber vom Typ L298N. Diese ICs können zwei Motoren mit je 2 Ampere oder einen mit 4 Ampere betreiben. Für die letztere Betriebsart müssen die In- und Outputs jeweils parallel geschaltet werden.

Die Drehrichtung wird mit den beiden Input-Anschlüssen eingestellt. Zum Drehen in die eine Richtung muss der eine Port auf "Low", der andere auf "High" gesetzt werden. Die andere Richtung erreicht man mit dem jeweils anderen Pegel. Um den Motor zu bremsen, werden beide Ports auf denselben Pegel gesetzt.

Die Geschwindigkeitsregelung erfolgt einfach über das ständige Ein- und Ausschalten des Motors, was man über den Enable-Pin bewerkstelligen kann. Wird er mit einem PLM-Port verbunden, so lässt sich die Geschwindigkeit gut regeln.

Funkmodul TRX 433

Zur Kommunikation zwischen C-Control und dem Computer an der Homebase verwenden wir zwei 433 MHz Transceiver. Mit diesen Transceiver-Modulen kann eine bidirektionale Funkstrecke aufgebaut werden, die unter optimalen Umständen bis zu 500m Reichweite ermöglicht. Da der TRX 433 den größten Teil der nötigen Formatierung, Codierung und Zeitüberwachung übernimmt, beschränkt sich der Aufwand, Daten zu senden oder zu empfangen, auf wenige kleine Programm-Routinen.
Der Steuercomputer kommuniziert mit dem TRX 433 über drei bidirektionale Ports.