Selbstgedruckter Roboter

Viele Verbesserungen für den 3D-Drucker, Geschenke und Praktisches habe ich gedruckt. Warum nicht auch mal etwas zum Spielen und Lernen? Beim Scrollen durch die neuesten gedruckten Teile auf Thingiverse fiel mir ein modularer Roboter auf, bei dem bis auf die Elektronik alles gedruckt werden konnte: SMARS. Weil ich Spielkind sowieso schon den Einstieg in die Arduino-Programmierung gewagt hatte, sollte das mein neues Projekt werden.

Einkaufsliste:

  • 2 Steppermotoren 28BYJ-48 mit Motortreibern der Bauart ULN2003 (alternativ andere Motoren und oder Arduino Motorshield)
  • Arduino Uno R3
  • Ultraschallsensor HC-SR04 (alternativ ein Infrarotsensor)
  • zwei M3x8 Schrauben
  • vier M4x12 Schrauben mit Muttern
  • ggfs. step-up oder step-down-Module für die richtige Spannung
  • Batterien, DuPont-Kabel, Stecker,…
Steppermotor, Motortreiber, Kette, Zubehörverbinder und ein Halter für den noch nicht verbauten IR-Sensor

Druck und Teile. Als sparsamer Lipper habe ich die LowCost-Variante der Motoren (also Stepper vom Typ 28BYJ-48, was ich mittlerweile schon fast ein wenig bereue, weil sie mir etwas zu langsam sind und ein paar Tücken mit sich bringen inkl. der fehlenden Zubehörhalterung am entsprechenden Chassis). Das Drucken der Teile (Chassis, Antriebs-Räder, [28byj-48-Variante] Slave-Räder, Kettenglieder[Original-SMARS]) lief problemlos und die Motoren passten perfekt in die Aufnahmen. Einzig die Löcher am Chassis für die Slaveräder waren unerwartet klein, so dass ich die Räder mit M3-Schrauben ohne Muttern befestigen konnte. Etwas unaufmerksam habe ich auch nach den Verbindern für die Kettenglieder gesucht, was die genialen Konstrukteure über einen Standard-1.75-Filamentfaden gelöst haben.

Die Halterung für Sensoren ist ebenfalls auf Modularität ausgelegt. Die Sensoren lassen sich in bestimmte Winkel kippen (die haltenden Knubbel habe ich leider beim ersten Versuch abgefeilt, weil ich dachte, das PLA bricht mir beim Zusammenfügen m( ).

Denkt daran, dass die Stepper noch Strom brauchen (hier enden die Leiter im Nichts, weil ich noch am Testen bin.

Verkabelung. Der Anschluss der Motoren an den Arduino gelingt über die oft mitgelieferten Motortreiber (ULN2003 – die Bezeichnung taucht z.B. bei Amazon auf, auf dem Board steht sie bei mir nicht) recht einfach, auch wenn ein richtiges Motorshield auf dem Arduino Kabelsalat einspart (s.u.). Für den ersten Test habe ich den benötigten Strom für die Motoren direkt aus dem 5V-Pin des Arduino gezogen, auf Dauer sollte man die Motoren extern versorgen.

Weil ich noch einen Ultraschallsensor (SR04) herumliegen hatte, misst mein Roboter Abstände, um zu entscheiden, wo er hinfahren soll. Leider habe ich die alte Version vom Sensor, die nur mit 5V, nicht aber mit 3,3V arbeitet, so dass es im Testaufbau keinen freien Anschluss mehr auf dem Arduino gab. Naja, die Motoren sollen ja eh extern mit Strom versorgt werden. Es ist übrigens noch hilfreich zu wissen, dass bei den Treibern der Jumper neben dem Stromanschluss überhaupt erst den Stromkreis für den Motor schließt.

Für den irgendwie immer zu hohen USB-Anschluss musste ich in meinem „Motorshield“ extra eine Aussparung einfügen.

Kosmetik und Stromversorgung. Während der ersten Versuche, sah mein Robot wie eine geplatzte Kabeltüte aus. Damit er wirklich fahren kann, musste ich das etwas eindämmen und habe mir zu diesem Zweck ein kleines lötfreies Motorshield gebastelt. Letztlich habe ich nur die beiden Motortreiber auf eine Platine geklebt und diese mit Pins nach unten mit dem Arduino verbunden. Als Stromversorgung dient mir solange ich noch auf Teile warte eine Powerbank und ein Netzteil mit 5V. Ich vermute, es wird auf einen 9V-Block für den Arduino und eine kleine Powerbank für die Stepper hinauslaufen. Habt ihr zufällig Erfahrung mit Modellbau-LIPOs in Zusammenspiel mit dem Arduino?

Programmierung. Wie schon erwähnt sind die Motoren etwas zickig, was an einer ungewohnten Anschlussbelegung zusammenhängt. Mit ein wenig Suchen konnte ich sie aber trotzdem mit der normalen Stepper-Library versöhnen. Dann musste ich nur noch die Stepper „gleichzeitig“ zum Laufen kriegen (abwechselnd je einen Step) und schon fuhr mein SMARS.

Den gesamten Code findet ihr auf Github

Den Sensor kann man mittels Ping-Library auslesen oder „zu Fuß“. Da ich hinter die Dinge sehen wollte, ging ich zu Fuß und habe meine erste Abfragen prompt nicht hingekriegt. Nach langem Testen lag es schlicht und einfach an vertauschten Pins am Sensor. Bei der Fehlersuche ist der Serielle Monitor sehr hilfreich. Nachdem endlich Werte geliefert wurden, habe ich den SMARS mittlerweile so weit, dass er bis auf 5cm geradeaus  an ein Hindernis heran fährt und sich dann um 45° nach rechts dreht. Danach prüft er, ob er mehr als 5 cm Abstand zum nächsten/selben Hindernis hat. Wenn ja, fährt er geradeaus, wenn nicht, dreht er sich um weitere 45° und prüft erneut.

Beide Sketches/Codeschnipsel (im zweiten Fall auch inklusive serieller Ausgabe zum Kontrollieren) findet ihr auf Github, wo ich sie unverändert im jetzigen Zustand belasse.

Und ab jetzt tüftele ich, wie der Robot am besten seine Wege findet. 🙂

_ _ _ _ _ _ _ _ _

Geholfen und/oder als Inspiration und Codeschnipsellieferanten gedient haben mir: blog.thesen.eu (28byj-48 mit der stepper-library), howtomechatronics.com (Ultraschallsensor) und deskfactory.de (Ultraschallsensor) und einige YouTube-Videos, die ich leider nicht mehr zusammenkriege…

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

Erstelle eine kostenlose Website oder Blog – auf WordPress.com.

Nach oben ↑

%d Bloggern gefällt das: