Roboterarm

Steffen Sarstedt | Februar 2022

Einleitung

Der Arbeitsauftrag bestand darin, ein Projekt mit einem Mikrocontroller um zu setzen. Da ich mit für Automatisierungstechnik und Robotik interessiere, habe ich mich entschieden einen kleinen Roboterarm auf zu bauen. Der Arm soll in vier Achsen beweglich sein und kleine Gegenstände heben können.

Die Aufgabe ist es also, ein mechanisch stabiles und gleichzeitig bewegliches Gerüst zu bauen, das anschließend in allen Raumrichtungen bewegt werden kann.

Bauteile für die Konstruktion

Durchführung

Funktionsanalyse

Der Arm soll im Raum bewegt werden können. Ich habe mich für eine statische Variante entschieden, bei der der Kopf zwar im Raum beweglich ist, die Bodenplatte und die Basis des Arms aber an einem festen Punkt bleiben. Damit ergibt sich ein Arm mit drei Graden an Bewegungsfreiheit: Drehung um eine feste Achse, auf- und abwärts, sowie vor und zurück. Jeder Motor hat einen maximalen Drehwinkel von 180°, den ich allerdings nicht überall voll ausnutzen kann. Die Vor- und Rückwärtsbewegung, z.B. wird schon enden, bevor der Motor die vollen 180° gedreht hat.

Das Gerüst muss stabil genug sein, um das Gewicht des Kopfes und der Kralle zu halten, gleichzeitig aber auch beweglich sein. Als Lösung habe ich hier ein fertiges Gestell gewählt, an dem ich die Motoren nur noch befestigen musste. Die Steuerung insgesamt geschieht über einen Mikrocontroller vom Typ Arduino Uno oder Mega. Ein Uno würde bereits ausreichen, ich habe mich allerdings für einen Arduino Mega entschieden, um noch weitere Funktionen hinzu zu fügen.

Aufbau

Ich habe damit angefangen, einige Stützen auf einer Bodenplatte zu befestigen. Auf diesen Stützen werden später der Mikrocontroller und die Basis für den Arm stehen. Zustäzlich habe ich auch die Bodenplatte selbst auf Stützen gestellt, damit sie einfacher an zu heben und zu bewegen ist.

Die Basis des Arms besteht aus einer kleineren Kunststoffplatte und dem ersten Servomotor. Der Motor ist so an der kelineren Platte befestigt, das nur noch ein kleiner Teil über die Platte hinaus ragt. An diesem Drehpunkt wird der Arm so befestigt, dass sich alle Teile um diese Achse drehen können. Der unterste Teil des Arms ist eine kleine Schale, an der alles weitere befestigt wird. Es hat also nur diese eine Schale Kontakt mit der Basis.

Großaufnahme des Drehsockels

Im nächsten Schritt habe ich zwei Motoren an der Schale befestigt. Jeweils einen auf der Rechten und einen auf der linken Seite. Der Motor an der linken Seite sorgt dafür, dass der Arm vor- und rückwärts bewegt werden kann, während der Arm an der rechten Seite die Auf- und Abwärtsbewegung ermöglicht.

Da die Motoren nur rotieren können, musste die Bewegung umgelenkt werden. Das geschieht mit mehreren Gelenken. Die Gelenke sind immer an den Übergängen zwischen den einzelnen Streben gesetzt. In den Streben sind dazu Löcher gebohrt, durch die eine Schraube gesteckt wird. Anschließend wird eine Mutter auf die Schraube geschraubt. Die Mutter darf nicht zu fest angezogen werden, da sonst die Beweglichkeit des Gelenks eingeschränkt wird. Allerdings darf die Schraube auch nicht zu locker sitzen, da sonst der gesamte Arm instabil wird.

Motoren an Bodenplatte
Ausleger mit Kralle

Zuletzt wird am Ende des Arms ein Kopf befestigt, an dem die Kralle sitzt. Die Kralle wird auch von einem Servomotor geöffnet und geschlossen. Der Kopf hat ein gewisses Gewicht, das von den Motoren gehalten werden muss. Die Konstruktion des Arms ist so ausgelegt, dass sie dieses Eigengewicht mit dem Rest des Arms ausgleicht und somit nicht sonderlich ins Gewicht fällt.

Da der Mikrocontroller selber nicht genug Leistung ausgeben kann, um alle Motoren direkt zu versorgen, habe ich ein Treiber Shield eingesetzt. Das Shield nimmt die Signale vom Arduino und leitet sie an die Servomotoren weiter. Die Leistung für die Motoren wird dabei vom Shield geliefert, das extern mit Strom versorgt wird. Dadurch können alle vier Motoren gleichzeitig bewegt werden.

Die größte Herausforderung ist damit bewältigt. Der Arm ist fertig aufgebaut und es ist ausreichend Leistung für die Motoren vorhanden. Im letzten Schritt wird der Code für den Mikrocontroller geschrieben.

Programmierung

Der Controller wird in einer Variante von C++ programmiert. Für die Ansteuerung der Motoren müssen I/O-Pins am Arduino verwendet werden. Die Motoren reagieren auf ein Pulssignal, das mit Hilfe einer Bibliothek erzeugt werden kann. Ansonsten muss das Signal zum Ansteuern der Motoren von Hand erzeugt werden, was sehr aufwändig ist. Es muss nämlich eine Referenzposition gefunden werden, die der Motor als 0 annimmt und anschließend der Drehwinkel von dieser 0-Position aus in eine PWM umgewandelt werden. Diese PWM kann der Servomotor verarbeiten und stellt sich entsprechend auf den Winkel ein. Eine vorinstallierte Bibliothek der Arduino IDE mit dem Namen ‚Servo.h‘ hat diese Funktion bereits eingebaut. Hier muss nur im richtigen Befehl der gewünschte Winkel eingegeben werden und das Signal wird automatisch erzeugt.

Ich habe einen Arduino Mega als Controller genommen, weil ich noch eine weiter Funktion einbauen wollte, wofür ein Sensor benötigt wird. An einem Arduino Uno belegt das Treiber Shield für die Motoren bereits alle Pins, der Arduino Mega hat allerdings mehr I/O-Pins zur Verfügung. Diese Pins benutze ich, um einen RFID-Kartenleser anzuschließen. Die Karten werden mit den festgelegten Positionen beschrieben, die der Arm anfahren soll. Hält man also eine Karte vor den Sensor, führt der Arm eine Bewegung aus und kommt in der Zielposition zum Stehen.