Mit Roboterautos die Mobilität der Zukunft verstehen
Willkommen zu einer neuen Blogreihe über Roboterautos. Im ersten Teil werden wir die Grundlagen dafür kennenlernen, sozusagen als Entscheidungshilfe für die Kaufentscheidung, welches Chassis, welcher Mikrocontroller und welche Art der Fernsteuerung am besten geeignet sind.
Zwei oder vier Räder - Abwägung der Vor- und Nachteile für den Bau von RC Cars für Arduino
Beginnen wir mit dem Chassis und betrachten wir die Vor- und Nachteile der preiswerten Kits mit zwei bzw. vier angetriebenen Rädern. Allen gemeinsam sind die Elektromotoren, sodass diese allein kein Auswahlkriterium sind. Die zweirädrigen Roboterautos sind zunächst preiswerter, weil die Kosten für zwei weitere Elektromotoren und Räder entfallen. Stattdessen haben sie ein oder zwei Stützräder, die den RC Cars eine hohe Wendigkeit verleihen. Wer also „auf dem Teller drehen“ möchte, ist damit bestens bedient. Allerdings kann man in dieser Preislage der Gleichstrom-Motoren nicht erwarten, dass sie mit hoher Präzision gleichmäßig laufen. Deshalb ist der Geradeauslauf nicht so gut wie bei der vierrädrigen Variante. Gerade beim Anlaufen der Motoren zeigen diese eine höhere Spurtreue, jedoch sind Kurvenfahrten nur mit deutlich größeren Radien möglich. Ein weiterer Vorteil der vierrädrigen Chassis ist mehr Platz für Batterien, Mikro Controller, ggf. DC/DC-Konverter und Sensoren.
Die Wahl des Mikrocontrollers für den Bau eines RC Cars
Die nächste Frage bezieht sich auf den Mikrocontroller und die Art der Programmierung. Die größte Rechenleistung auf dem kleinen Chassis hat zum Beispiel ein Mikro Computer vom Typ Raspberry Pi. Gerade im Hinblick auf die Fernsteuerung bieten die Typen mit eingebautem WiFi und Bluetooth Vorteile und man kann sogar Bilder einer Raspberry Pi-Kamera übertragen. Die Programmierung erfolgt in der weit verbreiteten Programmiersprache Python, jedoch dauert der Systemstart des Linux-basierten Betriebssystems Raspberry Pi OS rund eine Minute. Ein weiterer Nachteil der Raspis (kurz für Raspberry Pi) ist die Notwendigkeit einer guten Spannungsversorgung mit 5V. Dies erfordert einen guten DC/DC-Konverter.
Im Zusammenhang mit dem Thema Bluetooth-Fernsteuerung wird in einer späteren Folge ein Beispiel mit Raspberry Pi und der Android APP BlueDot von Martin O’Hanlon (Mitarbeiter der Raspberry Pi Foundation) gezeigt.
Viel schneller geht der Systemstart mit einem Micro Controller auf Basis des ATmega 328, z.B. dem Funduino Uno oder Funduino Nano. Rund eine Sekunde nach dem Einschalten kann man mit den Steuereingaben beginnen, kein Booten von MikroSD-Karte, das einmal hochgeladene Programm wird nicht vergessen. Die Eingangsspannung kann zwischen 5 und 9 Volt liegen. Programmiert wird in der Arduino IDE, einer Entwicklungsumgebung in Anlehnung an C/C++ (Weitere Erklärung siehe https://funduino.de/hardware-software). Deshalb werden wir zunächst Beispiele mit dem Funduino Uno R3 betrachten, für die es perfekte Motor Controller als sogenannte Shields gibt. Diese werden einfach auf den Uno aufgesteckt und bei der Programmierung helfen uns sogenannte Bibliotheken (engl. libraries).
Exkurs: Was ist ein Motor Controller/Motortreiber?
Aufgrund der stark limitierten Stromstärke an den Ausgängen der Mikro Controller bedarf es bei größeren Verbrauchern – und dazu gehören alle Arten von Elektromotoren und Relais – einer externen Spannungsversorgung und einer elektronischen Schaltung, die das Steuersignal des Mikro Controllers umsetzt. Die Anforderungen an diesen Integrierten Schaltkreis (engl. IC=Integrated Circuit) sind jedoch noch höher: Er soll einerseits eine variable Drehzahl des Motors ermöglichen, andererseits wollen wir auch die Drehrichtung des Motors durch Umpolen ändern können.
Am Beispiel des ICs L293D wird nun die Funktionsweise erklärt. Grundsätzlich genügt dieser DIP-Baustein mit sechzehn „Beinchen“/Anschlüssen als Motor Controller für zwei Elektromotoren.
Die Spannungsversorgung des ICs erfolgt an den Anschlüssen VCC1 und Ground. Diese Spannung können wir am Mikro Controller abzapfen. Die Spannungsversorgung der Motoren erfolgt über VCC2 und Ground. Hier schließen wir die Batterie(n) an (z.B. 6 oder 9 Volt). Bei größeren Motoren muss der IC gekühlt werden, bei den kleinen gelben vom Kit nicht.
Den einen Motor schließen wir an 1Y und 2Y an, die dazugehörigen Steuerleitungen zur MCU (Micro Controller Unit) sind 1A, 2A und 1,2EN.
Das Umpolen der Motoren für die Änderung der Fahrtrichtung erfolgt grundsätzlich mit einer sogenannten H-Schaltung. Diese realisieren wir mit unserem Mikro Controller, indem wir zwei Ausgangspins (diese gehen an 1A und 1B) entweder auf HIGH oder LOW legen.
Die Geschwindigkeitsänderung erfolgt wie bei dem Beispiel Nr. 04 – Pulsierende LED mit Pulsweitenmodulation (PWM, engl. pulse width modulation), also dem sehr schnellen Ein- und Ausschalten der Spannung. Deshalb benötigen wir für den Anschluss 1,2EN („Enable“) einen PWM-fähigen Ausgang an der MCU (das sind die Pins mit der Tilde ~).
Für den zweiten Motor werden die Anschlüsse 3A, 4A und 3,4EN an Pins der MCU angeschlossen.
Das rechte Bild (Logic Diagram) erklärt die Funktionsweise des ICs. Wir sehen die vier Verstärker, die die Eingangssignale 1A bis 4A jeweils mit der Batteriespannung an die Ausgänge 1Y bis 4Y geben. Dies erfolgt jedoch nur, wenn zusätzlich die PWM-Eingänge 1,2EN und 3,4EN ebenfalls HIGH geschaltet sind.
Zwei von diesen ICs L293D sind auf dem Motor Shield V1 verbaut, so dass hier bis zu vier Motoren angeschlossen werden können.
Um nicht zu viele Pins zu verwenden, befindet sich in der Mitte auf dem Motor Shield V1 ein sogenanntes Schieberegister (engl. shift register, SN74HC595). Dessen Funktionsweise zu erklären, würde den Rahmen dieses Beitrags übersteigen. Zum Glück haben uns die Kollegen der New Yorker Fa. Adafruit die meiste Arbeit beim Programmieren abgenommen und eine Programm-Bibliothek (engl. library) bereitgestellt, um die Motoren einfach zu steuern.
Bild Motor Shield V1 mit Modifikation:
Eingelötete Buchsenleisten (Federleisten) für Anschluss von Zusatzausstattung
Das Motor Shield V2 kann ebenfalls bis zu vier Motoren steuern und benutzt dafür einen ähnlichen IC, jedoch für den Anschluss der Steuerleitungen den sogenannten I2C-Bus mit den Anschlüssen SDA (=Serial Data) am analogen Eingang A4 und SCL (=Serial Clock) an A5. Auch hierfür hat Adafruit eine passende Programm-Bibliothek entwickelt und bereitgestellt.
Bild Motor Shield V2 mit Modifikation:
Eingelötete Buchsenleisten (Federleisten) für Anschluss von Zusatzausstattung
Bei beiden Motor Shields sind hier zusätzliche Buchsenleisten eingelötet, um später Bluetooth- oder 433 MHz-Sender/Empfänger (engl. Transceiver=Transmitter + Receiver) oder Sensoren anzuschließen. Mehr dazu in einem der folgenden Blog-Beiträge.
Spannungsversorgung und Steuerung für ein RC Car für Arduino Mikrocontroller
Wenn unser Roboterauto eigenständig fahren soll, müssen wir es vom USB-Anschluss des PCs trennen. Damit geht auch die Stromversorgung verloren. Von nun an werden Kommandozentrale (MCU) und Elektromotoren mit Batterien oder Akkus versorgt. Dabei sind die Motoren die weitaus größeren Verbraucher. Der Batteriehalter, der den meisten Kits beiliegt, ist für vier Mignon (AA)-Batterien, also 6 Volt für MCU und Motoren. Wer Akkus verwenden möchte, sollte wegen der geringeren Spannung entweder sechs Mignon (AA)-Akkus oder zwei Lithium-Ionen-Akkus vom Typ 18650 verwenden.
Als Steuerung werden wir in den nächsten Folgen zunächst Fernsteuerungen mit Infrarot-Fernbedienung, Bluetooth-Transceiver mit Smartphone APP oder einem zweiten Mikro Controller ebenfalls mit dem BT-Transceiver HC-05 sowie Funkfernsteuerungen mit 433Mhz und 2,4 GHz kennenlernen. Den Abschluss der Blogreihe werden Aspekte des autonomen Fahrens, vornehmlich Hinderniserkennung, bilden. Bis demnächst.