Startseite>Fischertechnik-Roboter mit dem Ftduino steuern
Aus Raspberry Pi Geek 04/2019

Fischertechnik-Roboter mit dem Ftduino steuern

© Luschen, 123RF

Mach mal

Martin Mohr

Das Ftduino-Modul schlägt die Brücke zu Fischertechnik und ermöglicht es unter anderem, einen Drei-Achsen-Roboter anzusteuern.

Oftmals übernehmen Roboter monotone, schwere oder gefährliche Arbeiten. Ein Roboter aus Fischertechnik reicht zwar nicht an seine Kollegen in der Industrie heran, hilft aber etwa dabei, die Überbleibsel aus Basteleien fachmännisch zu entsorgen. Dabei kommt ein Drei-Achsen-Roboter zum Einsatz, den ein Ftduino-Modul ansteuert. Als Entwicklungsumgebung bietet sich daher die Arduino IDE an. Über ein LC-Display sehen Sie, was der Roboter gerade macht.

In der letzten Ausgabe [1] finden Sie Hinweise dazu, wie Sie die Arduino IDE auf einem Rechner installieren und einrichten, um das Ftduino-Modul zu programmieren. Dieser Artikel setzt auf diese Installation auf. Damit Sie eine bessere Vorstellung vom Ergebnis dieses Workshops bekommen, schauen Sie einfach bei Youtube vorbei [2].

Aufbau Hardware

Die Basis für den Aufbau bilden ein Roboter von Fischertechnik mit drei Achsen [2] sowie das Ftduino-Modul [3]. Den Roboter bauen Sie entsprechend der Anleitung auf. Zur besseren Übersicht sollten Sie die einzelnen Schalter und Motoren des Roboters beschriften. Es bietet sich an, anstelle der Originalleitungen ein Flachbandkabel zu verwenden, das gestaltet den Aufbau insgesamt etwas aufgeräumter (Abbildung 1).

Abbildung 1: Der komplett aufgebaute Fischertechnik-Roboter mit Ftduino-Modul.

Abbildung 1: Der komplett aufgebaute Fischertechnik-Roboter mit Ftduino-Modul.

Anschließend verbinden Sie den Roboter gemäß den Schaltplänen in Abbildung 2 und Abbildung 3 über eine Klemmleiste mit dem Ftduino-Modul. Die Leiste dient dazu, den Roboter vom Modul zu trennen – so lässt er sich bei Bedarf schnell mit einem anderen Modul ansteuern. Als Nebeneffekt fällt es so leichter, ohne großen Aufwand Fehler in der Verdrahtung zu korrigieren.

Abbildung 2: Die Verdrahtung ab Klemmleiste zum Roboter. Zur besseren Übersicht sollten Sie die einzelnen Schalter und Motoren des Roboters beschriften.

Abbildung 2: Die Verdrahtung ab Klemmleiste zum Roboter. Zur besseren Übersicht sollten Sie die einzelnen Schalter und Motoren des Roboters beschriften.

Abbildung 3: Die Verdrahtung vom Ftduino-Modul bis zur Klemmleiste. Ein Flachbandkabel gestaltet hier den Aufbau etwas aufgeräumter.

Abbildung 3: Die Verdrahtung vom Ftduino-Modul bis zur Klemmleiste. Ein Flachbandkabel gestaltet hier den Aufbau etwas aufgeräumter.

Außerdem erleichtert die Klemmleiste die Überprüfung der Signalpegel. Es gibt also viele gute Gründe für den Einsatz einer solchen Klemmleiste. Um der Wahrheit die Ehre zu geben, der Autor verwendete im Testaufbau statt einer Klemmleiste schlichte Lüsterklemmen: Diese sind preiswerter und erfüllen im konkreten Fall denselben Zweck.

Der Schaltplan sieht einige Schalter (S1 bis S4) vor, um unterschiedliche Funktionen des Roboters zu aktivieren. Zusätzlich gibt es ein über die I2C-Schnittstelle des Ftduino angeschlossenes Mini-Display, das die aktuellen Aktionen des Roboters anzeigt. Dabei kommt ein handelsübliches OLED-Display mit 0,96 Zoll Diagonale und einem SSD1306-Controller zum Einsatz. Ein Gehäuse drucken Sie sich bei Bedarf selbst mit einem 3D-Drucker aus [4].

Hintergrund

Der Roboter verwendet Impulsgeber, um festzustellen, an welchen Positionen sich die Achsen befinden. Sie erzeugen eine bestimmte Anzahl Impulse pro Umdrehung. Diese zählen Sie, um die aktuelle Position zu ermitteln. Allerdings erfassen die Pulsgeber nicht die Drehrichtung. Daher eignen sie sich nur dann sinnvoll als Positionsgeber, wenn Sie sie vor dem Betrieb einmal initialisieren.

Es klingt vielleicht banal, aber achten Sie darauf, dass dem Roboterarm keine Hindernisse im Weg stehen. Gerade beim Initialisieren wissen Sie ja nicht, in welcher Position er zuletzt stehen geblieben ist. Der Roboter mag zwar im Grunde ein Spielzeug sein, fegt aber trotzdem ohne Probleme ein Glas vom Tisch (siehe dazu Kasten “Notabschaltung”).

Notabschaltung

Die großen Kollegen des Fischertechnik-Roboters verfügen allesamt über eine Abschaltvorrichtung für Notfälle. Sie sollten ebenfalls immer in der Lage sein, dem Roboter schnell den Saft abzudrehen. Im Aufbau für diesen Artikel übernahm eine schaltbare Steckdosenleiste diese Aufgabe. Diese Abschaltvorrichtung muss immer funktionieren – es bringt also nichts, die Funktion mit ins Programm aufzunehmen. Es sollte sich grundsätzlich um eine unabhängige und fehlertolerante, hardwarebasierte Lösung handeln, die im Zweifelsfall sofort abschaltet.

Programm initialisieren

Um den Roboter zu initialisieren, definieren Sie zuerst, was links und rechts ist – sonst kommen Sie später beim Programmieren und Testen durcheinander. In den folgenden Beispielen bedeutet rechts immer, dass sich der Motor auf den Nullschalter (I1I4) hinbewegt. Sollte das bei Ihrem Aufbau nicht der Fall sein, tauschen Sie die Polarität am Motor.

Das Testprogramm ist relativ einfach aufgebaut: Es importiert die Ftduino-Bibliothek, mit der alle nötigen Objekte bereitstehen. Die Funktion init_robot() umfasst alle Kommandos, die Sie brauchen, um die Maschine zu initialisieren.

Um eine Achse des Roboters zu initialisieren, definieren Sie zunächst den Eingang des entsprechenden Endschalters als Schalter (Listing 1, Zeile 1). Dann drehen Sie den Motor der Achse so lange nach rechts (Listing 1, Zeile 2), bis er seinen Endschalter erreicht (Listing 1, Zeile 3). Nun bremsen Sie den Motor (Listing 1, Zeile 4).

Listing 1

ftduino.input_set_mode(Ftduino::I3,Ftduino::SWITCH);
ftduino.motor_set(Ftduino::M3,Ftduino::RIGHT,Ftduino::MAX);
while (!ftduino.input_get(Ftduino::I3)){}
ftduino.motor_set(Ftduino::M3,Ftduino::BRAKE,Ftduino::MAX);

Diese Schritte wiederholen Sie jetzt für alle drei Achsen und den Greifer. Bewegen Sie die Achsen so, dass sie nach Möglichkeit keine Kollisionen verursachen – erst hoch-, dann einfahren und zum Schluss drehen. Würden Sie den Arm im ausgefahrenen Zustand drehen, wäre die Wahrscheinlichkeit hoch, dass Sie irgendeinen Gegenstand umwerfen. Wollen Sie auf Nummer sicher gehen, aktivieren Sie die jeweiligen Achsen einzeln.

Die Funktion init_robot() ruft das Programm direkt aus der Funktion setup() nach dem Initialisieren der Bibliothek auf. Die vier Kommandos motor_counter() fahren jede Achse wieder ein kleines Stück nach links, damit der Roboter bei einem weiteren Testlauf nicht sofort in der Anfangsposition steht.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland