Fahrroboter

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

von E. Bührle

Im folgenden Artikel möchte ich vorstellen, wie ein Fahrroboter auf Basis des XMC 2Go aussehen kann. Der Roboter ist hauptsächlich für den didaktischen Einsatz gedacht und soll so einfach und flexibel wie möglich sein.

Grundform des Fahrroboters mit Fotowiderständen

Das Fahrgestell

Das Fahrgestell besteht aus einer Basisplatte und einer (oder mehreren) Oberplatte(n). An der Unterseite der Basisplatte werden die Motoren und Taster befestigt. Bohrungen in der Platte ermöglichen das Durchführen von Kabeln. Um die Stabilität des Roboters zu gewährleisten werden zwei Möbelgriffe als Gleiter verwendet. Auf der Oberseite der Basisplatte befindet sich das Batteriepack.

Ansicht der Basisplatte

Die Oberplatte wird mit Distanzbolzen an der Unterplatte festgeschraubt. In der Oberplatte befinden sich ebenfalls Bohrungen zum Durchführen der Kabel. Weitere Bohrungen ermöglichen das Befestigen von An-/Aus-Schiebeschaltern und Reedschaltern. Auf der Oberseite der Oberplatte ist ein Steckbrett aufgeklebt.

Das Fahrgestell bietet in der Grundform (eine Basis- und eine Oberplatte) prinzipiell Platz für zwei Motoren, acht Taster, ein Batteriepack (3 x 1,5V AA oder 4 x 1,5V AA), zwei Reedschalter und zwei An-/Aus-Schiebeschalter (einer für die Hauptstromversorgung, der andere für eventuelle Peripherieeinheiten). Das Steckbrett bietet hohe Flexibilität für Erweiterungen.

Da die Bohrungen für die Taster in der Basisplatte genormte Maße haben, können sie auch zum befestigen kleiner Lochrasterplatinen (z.B. für ein Linienfolge-Modul) verwendet werden. Die Bohrungen sind rund um die Basisplatte angebracht. Die Kreisrunde Form des Roboters ermöglicht einfache Ausweichmanöver.

Der Roboter kann auch sehr einfach erweitert werden, indem mehrere Oberplatten mittels Gewindestangen "gestapelt" werden.

Die Motoren

Um der Konstruktion eines Getriebes aus dem Weg zu gehen wurden zu diesem Zweck Servos (Modelcraft RS2 MG/BB) umfunktioniert. Servos haben den Vorteil, dass Motor und Getriebe in einem handlichen Gehäuse untergebracht sind.

Getriebe für den Antrieb

Servos sind dazu gedacht, einen bestimmten Winkel anzufahren. Um als Antrieb für den Roboter zu dienen, sollen sich die Motoren aber kontinuierlich drehen. Die hier eingesetzten Servos verwenden zur "Orientierung" einen Poti. Das Ziel ist nun, die Servos so umzubauen, dass die Motorsteuerung nicht mitbekommt, wenn die Zielposition erreicht ist und die Motoren weiterdrehen lässt. Außerdem muss der Anschlag entfernt werden.

Der Anschlag des Getriebes besteht zum einen aus einem Nippel am Abtriebszahnrad, zum anderen aus dem Poti. Der Nippel befindet sich am grauen Zahnrad, das aus dem Gehäuse hervorsteht. Dieses Rad kann nach dem Öffnen des Gehäuses vorsichtig aus seiner Fassung gedrückt werden. Der kleine Nippel kann einfach abgesägt werden.

Zahnrad mit Nippel

Die einfachste weitere Vorgehensweise ist, die mitlaufende Nase des Poti mit einem Seitenschneider abzuzwicken (das ist hier möglich, weil diese Nase bei diesen Servos keine Achse bildet). Die Potis müssen nun möglichst genau in Mittelstellung blockiert werden (z.B. durch ganz leichtes und vorsichtiges Anschmelzen der Nase an die Fassung).

Präziser ist es jedoch, den Spannungsteiler/Poti durch zwei feste Widerstände zu ersetzen. Das ist deshalb ratsam, weil die Servos eine Motorsteuerung besitzen, die die Geschwindigkeit der Motoren an die "Entfernung" zur Zielposition anpasst. Umso näher die Potistellung an dieser Zielposition ist, desto langsamer drehen die Motoren. Damit beide Motoren in beide Richtungen gleich schnell fahren, müsste der Poti so genau wie möglich in Mittelstellung sein. Weil das schwer zu erreichen ist, ist es besser, den Poti abzuzwicken und durch zwei möglichst identische Widerstände (in der Größenordnung des Poti in Mittelstellung, hier 2.2kΩ) zu ersetzen.

Zwei feste Widerstände ersetzen den Poti

Die modifizierten Servos können dann mit Laschen an der Unterseite der Basisplatte befestigt werden. Sie werden parallel zum Board an der Stromquelle angeschlossen.

Die Motoren werden über ein digitales Signal gesteuert (orangene Ader). Das Signal besteht aus einer High-Pegel-Phase und einer Low-Pegel-Phase. Die Dauer der High-Pegel-Phase bestimmt die Zielposition (1ms = Gegen den Uhrzeigersinn bis zum Anschlag; 2ms = Im Uhrzeigersinn bis zum Anschlag). Da weder Anschlag noch Positionsbestimmung erfolgen können, dreht der Motor einfach immer weiter. Praktisch ist dabei, dass die Motorsteuerung die Motorgeschwindigkeit an die "Nähe" zur Zielposition anpasst. So kann auf einfache Weise die Geschwindigkeit in beide Richtungen gesteuert werden (1000µs = Vollgas gegen den Uhrzeigersinn; 1600µs = Langsam im Uhrzeigersinn). Auf die High-Pegel-Phase folgt eine Low-Pegel-Phase von mindestens 3ms.

Die eingebauten Motoren sind sehr stark und bremsen den Roboter bei einem kurzen Impuls gegen die Laufrichtung auf der Stelle ab. Dabei erhöht sich die Stromaufnahme allerdings deutlich. Im Betrieb ohne weitere große Verbraucher spielt das keine Rolle (dem Board macht es nichts aus, nur die Helligkeit der Leuchtdioden sinkt kurzzeitig). Wer aber (z.B. bei Peripherieeinheiten) eine Mindeststromstärke benötigt, sollte einen Vorwiderstand verwenden.

Die Sensoren

Zusätzlich zu den oben erwähnten Tastern (Marquardt 1050.3102) können zwei Reedschalter (MEDER MK6-5) am Roboter angebracht werden. Die Bohrungen für die Reedschalter befinden sich in der Oberplatte, mittig über den Rädern. In den Rädern sind Nuten eingefräst, in die Stabmagneten eingedrückt werden können. Die Reedschalter registrieren die Stabmagneten beim "Vorbeidrehen" und können so als einfache Odometrie-Sensoren benutzt werden.

Auf dem Steckbrett können nach Belieben weitere Sensoren platziert werden.

Programme

Hindernissen ausweichen

Der Klassiker. Der Roboter fährt, bis ein Taster gedrückt wird und dreht sich je nach Taster vom Hindernis weg. Der Winkel, um den sich der Roboter wegdreht, ist einstellbar und wird mit den Odometriesensoren (bzw. den Reedschaltern) bestimmt.

Linienfolger

Aufbau mit Linienfolge-Modul

Der nächste Klassiker. Der Roboter folgt einer schwarzen Linie (bzw. deren Rand). Dazu wird ein zentraler Taster durch eine kleine Lochrasterplatine ersetzt. Auf diese Platine werden eine weiße LED mit Vorwiderstand sowie parallel dazu ein Spannungsteiler bestehend aus einem 1kΩ-Widerstand und einem Fotowiderstand gelötet. Der Spannungsteiler wird mit einem ADC-Pin des XMC 2Go verbunden. Alternativ könnte die Lochrasterplatine natürlich auch nur als Halterung für die LED und den Fotowiderstand dienen. Der Rest der Schaltung würde dann auf dem Steckbrett zusammengesteckt werden. Die LED könnte jetzt beispielsweise mit einem zweiten Schiebeschalter separat ein- und ausgeschaltet werden.

Die Steuerung erfolgt mit einem PID-Regler.

Ein kurzes Video des Linienfolgers findet sich hier

Lichtfolger

Der Roboter soll sich auf die hellste Stelle im Raum zubewegen.

Dazu werden aus zwei Fotowiderständen und zwei 1kΩ-Widerständen zwei Spannungsteiler gesteckt, die an die beiden ADC-Pins des XMC 2Go angeschlossen werden. Mit einem einfachen PID-Regler dreht sich der Roboter zur hellsten Lichtquelle und folgt so beispielsweise einer Taschenlampe. (Notwendig ist eigentlich nur P, I und D helfen, kleinere Störungen durch Reflektionen von Uhren o.ä. auszubügeln).

Wird er ohne Taschenlampe "losgelassen", bewegt er sich in Richtung von Fenstern oder anderen Lichtquellen. Dabei vermeidet er es, in den Schatten zu gelangen und weicht auf diese Weise Hindernissen aus.

Ein kurzes Video des Lichtfolgers findet sich hier

Weitere Programmierideen

Dadurch, dass alle möglichen Sensoren eingesetzt werden können, sind allerhand weitere Projekte denkbar.

  • Magnetfolger
  • Geräuschfolger
  • Kommunikation über IR (Fernbedienung)
  • Kommunikation über Bluetooth
  • Gegenständen ausweichen mit Ultraschall
  • "Segway-Roller" (Stützende Möbelgriffe abschrauben)

Downloads

Fahrgestell

Module

  • Modul zur Ansteuerung der Motoren und zum Auslesen der Odometriedaten Datei:Motors2.zip

Programme