Rover – Mad Max in Raspberry

Mein erstes Projekt überhaupt war der Aufbau eines Rovers mit zwei Antriebsrädern und einem Stützrad. Ziel dabei war es mit Raspberry und Python eine mobile Plattform für weitere Projekte zu schaffen.
Dabei wurde bewusst erst mal gebaut und dann überlegt ob das alles passt. Fehler waren beabsichtigt, lernen das primäre Ziel.

Projekt: Rover

Kontakt: Boris Dirnfeldner

Link: – eigenes Projekt –

Vorarbeiten:

Als ersten Schritt wird die Ansteuerung des Schrittmotors erst mal fliegend aufgebaut und die ersten Codezeilen erstellt. Nachdem erstmal die einzelnen Kabel an der richtigen Stelle sind, funktioniert der Motor auch relativ gut. Zumindest bei langsamen Drehzahlen. Also erst mal die Grenzen ausloten und mit dem Timing rumprobieren. So ganz ohne Achslast verträgt der Schrittmotor auch abrupte Drehzahländerungen klaglos.

Aufbau Versuch 1:

Nun wird alles auf ein rechteckiges Sperrholzbrett montiert:
o Bleigelakku 12V am hinteren Ende über der Antriebsachse
o Die Motore sind an beiden Seiten am hinteren Ende und unterhalb der Platte befestigt, so das die Reifen seitlich wie bei Traktoren frei standen.
o Als Reifen sind Tretradrollen mit 10cm Durchmesser direkt an der Motorachse befestigt.
o Vorne mittig ein Stützrad aus dem Möbelbau.
o Der Raspberry und Kabelage vorne auf die Platte.

Ergebnis: Sehr lustig, aber sinnlos. Die verwendete Sperrholzplatte mit 4mm bog sich unter dem Gewicht des Akkus schlicht durch, so das die beiden Räder mit ca. 45° Radsturz schräg abstanden. Mit Absicht wäre das Design Cool, so aber ein glatter Fail!

Aufbau Versuch 2:
Alles wieder runter, dann erstmal die Sperrholzplatte mit ein Paar Holzstreben versteift.
Die Teile wieder in gleicher Weise draufgebaut.
Damit wird nun wieder Erfahrung mit der Ansteuerung der Schrittmotore gesammelt und mit dem sehr empfindlichen Timing bei der Ansteuerung von Schrittmotoren in einer ungeeigneten Programmiersprache gelernt. Hohe Geschwindigkeiten sind so schwierig zu erreichen, geschweige den zu halten.
Durch die Umstellung auf „Pigpio“ und entsprechende Nutzung von „Waves“ war das Ansprechverhalten des Schrittmotors in Ordnung.
Dann ergänzend die Steuerung über Controller integriert und man konnte rumfahren.
Leider versagten die Motore schon bei kleinen Stufen wie z.B. bei Teppichen. Durchdrehende Schrittmotore machen einen üblen Lärm. Deswegen sind auch die Beschleunigungs- und Bremsrampen sehr flach, was aber das Gefährt auch sehr träge in der Reaktion macht.

Ergebnis: Immer noch lustig, aber Ok. Wie ein Endzeitgefährt bei Mad Max und mit etwas Deko für ein Steampunk-Modell grundsätzlich geeignet. Lediglich die schwache Antriebsleistung muss gelöst werden.

Aufbau Versuch 3:

Der Antrieb wird umgebaut, die Motore über einen Riemenantrieb (3:1) an die Antriebsachse umgesetzt. Das ganze ist in einem Gehäuse aus dem 3D-Drucker eingebaut, die Achsen mit Kugellagern gesichert. Jede Einheit ist für sich weiter einzeln aufgebaut und spiegelverkehrt aufgebaut. Danach wieder unter der Plattform montiert.

Ergebnis: Jetzt hat das Teil genug Kraft. Mit der vorhandenen Steuerungslogik reagiert das Modell aber weiterhin zu träge auf Steuer- und Bremsbefehle.

Aufbau Versuch 4:

Bisher war der Controller über USB-Kabel am Gefährt angeschlossen, weil die Anbindung per Bluetooth leider zickt. Das ist wohl bei den China-Nachbauten öfters der Fall und leider auch nicht immer lösbar (leider habe ich als Spielkonsolenverweigerer keine originalen Controller zur Hand, und nur zum ausprobieren sind mir die Dinger zu teuer). Pigpio bietet aber an, auch remote-Instanzen zu steuern und daher stelle ich das ganze System auf eine Client/Server-Steuerung um: Ein Raspberry Pi 3B+ mit dem Controller (kabelgebunden) übernimmt das Benutzerinterface, die Pigpio-Daemons übernehmen die Verbindung und der Zero am Rover steuert die Schrittmotortreiber.

Ergebnis: Das ging sehr schnell und funktioniert super! Die Übertragung verzögert nicht weiter (langsam ist nicht die Steuerung, sondern die Logic der Beschleunigungsrampen).

Aufbau Versuch 5:

Versuchsweise wird die Antriebsspannung für die Schrittmotore auf 24V angehoben. Bei hohen Geschwindigkeiten bringt ein Schrittmotor mehr Leistung bei höherer Spannung.
Dazu wird provisorisch ein zweiter Bleigelakku auf das Gefährt montiert.

Ergebnis: Die Wirkung ist überschaubar. Der Antrieb hat etwas mehr Anzug, die Höchstgeschwindigkeit ist aber kaum höher (zumal auch einiges an Gewicht drauf gekommen ist). Leider habe ich bei einem „Auffahrunfall“ den Aufbau ziemlich zerlegt.
Vorher hat das Ding aber richtig fies ausgesehen, Mad Max war da eher unterdimensioniert.

Fazit:

An sich ist das System nach etwas Feintuning sicherlich verwendbar, aber ineffizient.
Der Akku ist zu fett, die Ansteuerung zu träge und der Antrieb braucht auch noch Aufmerksamkeit im Design. Der Raspberry verbrennt auch ordentlich Strom und eine komplette Steuerung ist in Python auch nicht richtig angesiedelt.
Bei passender Gelegenheit wird ein neuer Aufbau gemacht, dann aber mit Arduino und C/C++ und komplett gedruckten Rahmen/Aufbau.

Probleme:

Das Hauptproblem ist die träge Steuerung aufgrund der zu flachen Beschleunigungsrampen und der Trägheit des Modells (zu schwer) sowie zeitliche Unverbindlichkeit von Python-Code.

Die komplette Steuerung der Schrittmotortreiber per Python und entsprechender Lib war schlichtweg zu unpräzise und führte ständig zu späten Signalen an den Treiber, was insgesamt zu unrunden Schrittmotorlauf führte.
Nach der Umstellung der Steuerung auf den Daemon zur Schrittmotorsteuerung war das Ansprechverhalten erheblich präziser, aber immer noch nicht ideal. Vor allen, da ich die Rampen bei der Ansteuerung ständig zu flach gehalten habe um Schrittverluste zu vermeiden.

Der Direktantrieb am Motor ist zu schwach für das Gewicht, ohne Umsetzung scheitert das Gefährt schon am Teppich. Mit 1:3 Riemenumsetzung war aber einiges an Reserve drin.
Allerding fehlen im Aufbau noch eine Spannrolle, um den Riemen ausreichend sicher an den Rollen zu halten.

Der Bleigelakku ist erwartungsgemäß schwer und benötigt viel Platz. Für den Versuchsaufbau ok, für eine echte Lösung aber keine Option.

Der provisorische Aufbau ist nicht gerade stabil und gegenüber harten Aufprall zu wenig haltbar. Beim Versuch mit 2 Akkus (24V Antriebsspannung) ist beim Aufprall der ganze Akkusatz nach vorne gerutscht und hat den Rover sauber zerspant. Naja, war ohnehin neu zu machen…

Komponenten:
Rechner: Raspberry Zero und Pi 3B+
Schrittmotor: NEMA17 (17HD48002H-22B)
Treiber: TB6000
SW: Python
Bleigel-Akku 12V
PS3 Controller

Überlegungen:
Raspberry:
Einfach meine erste Entwicklungsplattform.
Python: Die von mir am meisten genutzte Programmiersprache mit nativen Libs für DIY-Bauteilen und mit JetBrains PyCharm eine passende IDE.

Schäden:
– Mehrere Dellen an Möbeln wegen der Latenz beim Bremsen und Lenken.
– Zerlegte Halter nach Bremscrash beim Erstversuch mit 2 Bleiakkus.

Wir benutzen Cookies und Logs mit personenbezogenen Daten ausschließlich für essentielle Funktionen wie z.B. bei der Benutzeranmeldung oder der Fehlersuche. Für Videos werden weitere Cookies von Drittanbietern benötigt. Details finden sie unter dem Link "Weitere Informationen".