Simpler Fahrroboter mit AVR
Im folgenden ist der Bau eines ganz simplen Fahrroboters beschrieben. Die Grundidee kommt von Ulrich Radigs Website.
Grundelemente sind:
- AVR Board für die Steuerung
- Zwei Servomotoren, die mittels “Servo Hacking” zu Getriebemotoren umgewandelt wurden.Dies ist z.B. unter http://www.electronicsplanet.ch/Roboter/Servo/hacking/dchack.htm detailliert beschrieben. Kostenpunkt einfache Servos 3-5 Euro pro Stück
- Zwei Räder (z.B. von Conrad)
- ein Tischtennisball
- Getriebemotoransteuerung, z.B. mit L293.
Hardware
Die Grundplatte, die die Motoren, Platine etc. trägt wird aus einer Aluminiumplatte ausgesägt. Masse so wählen, dass die ganzen Bauteile auch auf die Grundplatte passen. Bei mir war 160x115mm passend.
Roboter, ausgesägte Grundplatte
Die beiden Servomotoren haben Befestigungsbohrungen. Für diese passend können aus der Grundplatte Winkel herausgesägt werden. Danach können die Bohrungen passend ins Aluminium gebohrt werden.
Roboter, Grundplatte mit
Motorbefestigungen
In obigem Foto sind die Servos bereits an der
Grundplatte angeschraubt. Das Controllerboard ist ebenfalls mittels
Abstandhalter befestigt. Die beiden vom Controller-Board abführenden Litzen sind
RxD und TxD für die RS232-Steuerung.
Im Foto wird mittels
eines Gewindebohrers ein M3-Gewinde in die Servoachse geschraubt. Um das Rad
fest mit der Servomotorachse zu verbinden, ist eine Gegenmutter notwendig.
Die Räder müssen auf die
Servoachsen geschraubt werden. Als Radachse können dann lange M3-Schrauben
genommen werden.
Im Bild ist das Rad am Servo angeschraubt
und mit der Gegenmutter fixiert.
Im vorderen Bereich wird
der halbierte Tischtennisball mittig angeklebt.
Hier ist der Roboter fahrbereit. Ein Batteriehalter mit
4 Mignonakkus versorgt die Motoren mit Strom.
Die 9V Batterie versorgt das Controllerboard. Versuche mit einer gemeinsamen Batterie schlugen bei mir fehl, weil offensichtlich die Motoren die Spannung zu stark schwanken lassen. Der Controller wird dadurch öfter unabsichtlich resettet. Mit zwei getrennten Batterien funktioniert das ganze aber gut.
Das sichtbare schwarze Kabel beinhaltet die RxD und TxD-Leitung des AVR zu Fernsteuerung mittels Kabel. Ich habe ein etwa 5m langes Telefonkabel dafür zweckentfremdet. Die Lochrasterplatine enthält den Motorsteuerbaustein L293.
Software
Der Roboter wird über RS232 gesteuert. In einer simplen Schleife des Hauptprogramms werden User-Kommandos von RS232 gelesen. Diese werden in Motorsteuerkommandos umgesetzt. Die eigentliche Motorsteuerung erfolgt interruptgesteuert. Mit dem Interrupt wird eine Software PWM-Steuerung der Motoren realisiert. Jeder Motor ist (via L293) über drei Pins des AVR angeschlossen (Motor A, Motor B, Enable). Mittels der Beschaltung von A und B kann die Motorrichtung gesteuert werden. Mittels Modulation von Enable kann die Geschwindigkeit des Motors gesteuert werden. Der Interrupt wird 3000 Mal pro Sekunde aufgerufen.
Obwohl die Servos vom gleichen Hersteller und das gleiche Modell sind, laufen sie bei gleichen Eingangsdaten unterschiedlich schnell. Dies kann etwas durch die Ansteuerung ausgeglichen werden. Auf längeren Strecken wird der Roboter aber von selbst eine leichte Kurve fahren.