Der mBot2 Roboter verfügt über die Möglichkeit bis zu 4 Servomotoren (kurz Servos) an die Ports S1 bis S4 anzuschließen.
Was unterscheidet einen Servo von einem kontinuierlich drehenden Motor?
Ein Servomotor ist ein Elektromotor, der über ein Getriebe und eine Regelelektronik verfügt mit der man die Winkelposition der Motorwelle kontinuierlich genau festlegen kann. Damit lassen sich z. B. mechanische Bauteile bewegen, die in unterschiedliche Positionen gebracht werden sollen. Je nach Bauart können diese underschiedliche, maximale Drehwinkel haben - üblich sind 180° oder 270°.
Der Anschluss eines solchen Servos erfolgt über drei Leitungen: eine Plus- und Minusleitung (rot und braun) zur Stromversorgung und eine Datenleitung (gelb).
Wie erfolgt die Steuerung der Winkelposition durch ein digitales Signal?
Über die Datenleitung erhält ein Servo ein gepulstes, elektrisches Signal. In diesem PWM-Signal (PulsWeitenModulation) sind Informationen enthalten, welche die Regelelektronik auswertet und darauf hin die Achse in die gewünschte Winkelposition dreht.
Das Signal enthält alle 20 ms einen Impuls, der eine Dauer zwischen 1 ms und 2 ms hat. Bei einer Pulsbreite von 1 ms befindet sich die Drehachse an der Position 0°. Bei einem Servo, der einen maximalen Drehwinkel von 180° hat, würde man die Drehachse mit einer Pulsbreite von 2 ms an die Position 180° bewegen. Mit einer genau dazwischen liegenden Pulsbreite von 1,5 ms befindet sich die Drehachse an der Position 90°.
Anschluss eines Servos an einen mBot2 Roboter
Die Steckkontakte der meisen Servos verfügen bereits über die richtige Reihenfolge der Anordnung der Leitungen im Stecker, die genau den Anschlüssen S1, S2, S3 und S4 am Roboter entspricht.
ACHTUNG: Ein Anschluss von externen Komponenten unter Nichtbeachtung der exakten Anschlussvorgaben kann zu irreparablen Schäden der Elektronik im mBot2 Roboter führen!
Beim Anstecken eines Servos an einen mBot2 Roboter immer beachten:
- Kontolle, ob die Reihenfolge der Anschlussleitungen des Servos denen der Anschlüsse des mBot2 Roboters entspricht: Datenleitung (gelb, außen) - Plusleitung (rot, Mitte) - Minusleitung (braun, außen)
- Den Stecker des Servokabels genau so in die Buchse des mBot2 Roboters stecken, dass dies mit der aufgedruckten Beschriftung der einzelnen Pins am mBot2 Roboter übereinstimmt (siehe Zeichnung)!
Servo braun <--> mBot2 minus Servo rot <--> mBot2 plus Servo gelb <--> mBot2 S1, S2, S3, S4
Programmbeispiel - Einlesen des Zustands eines Tasters am Port S1
Mit dem folgenden Code wird die Motorwelle eines Servos, der an den Port S1 angeschlossen ist, im Abstand von 4 Sekunden zu unterschieldichen Positionen gedreht. Zunächst befindet sich die Drehachse in Mittelposition (90°). Im Anschluss daran wird diese ganz nach links gedreht (Position 0°), dann ganz nach rechts (Position 180°) und zuletzt wieder in die Mittelposition (90°).
import cyberpi, mbot2, time
while True:
mbot2.servo_set(90,1)
time.sleep(4)
mbot2.servo_set(0,1)
time.sleep(4)
mbot2.servo_set(180,1)
time.sleep(4)
mbot2.servo_set(90,1)
time.sleep(4)
Erklärungen zu diesem Programmbeispiel
Zeile 4: mbot2.servo_set(90,1):
Um die Drehachse eines Servos auf eine bestimmte Winkelposition zu stellen, übergibt man der Funktion mbot2.servo_set(angle, port) die gewünschte Winkelposition und den Port, an dem der Servo angeschlossen ist.
angle: 0, ..., 180
port: 1, 2, 3, 4 (1 für S1, 2 für S2, 3 für S3, 4 für S4)
Zusammenfassung - Was wurde in diesem Abschnitt gelernt?
- An einen mBot2 Roboter können bis zu 4 Servos angeschlossen werden.
- Servomotoren verfügen über eine Regelelektronik mit welcher die Winkelposition der Motorwelle genau eingestellt werden kann.
- Mit der Funktion mbot2.servo_set(angle, port) wird die gewünschte Winkelposition der Motorwelle eines Servos festgelegt.
Konstruktion von mechanischen Bauteilen für Servos
Jedem Servo ist ein sogenanntes Servo-Horn beigelegt. Dieses wird auf den Zahnkranz der Drehachse gesteckt und dient grundsätzlich dazu, um durch Drähte oder Seilzüge mechanische Komponenten in Modellflugzeugen, Modellautos, ... anzusteuern. Die Montage komplexerer Teile direkt auf den Servo gestaltet sich damit schwierig.
DIY - Adapter für Servos
Mit dem hier vorgstellten 3D Druck - Adapter können sehr einfach Bauteile auf den Servo montiert werden. Dieser ist so konstruiert, dass er genau das Servohorn eines MF90 Micro Servos in sich aufnimmt. Damit kann der Adapter dann genau auf den Zahnkranz des Servos gesteckt und dort mit der Originalschraube fixiert werden.
Der Adapter besteht aus einem unteren und einem oberen Teil. Der untere Teil wird meist so bleiben wie vorgegeben, den oberen Teil kann man sehr einfach zu eigenen Bauteilen mit einem CAD-Programm erweitern. Dazu sind auch die beiden 3D Konstruktionsdateien für Design Spark Mechanical, wie auch als STL-Datei zur Verfügung gestellt.
Zusammenbau des Adapters und Montage auf einem MF90 Micro Servo
Zuerst wird das Servo-Horn in den unteren Teil gelegt und dann der obere Teil des Adapters mit den 4 Schrauben fixiert. Im Anschluss daran wird der gesamte Adapter auf die Servoachse gesteckt und mit der Originalschraube an der Servoachse fixiert.
Erweiterung des oberen Adapterteil
In der folgenden Abbildung ist zu sehen, wie der obere Teil zum Beispiel zu einem Greifarm erweitert werden kann.
Dateien zum Download
MF90_Servo_Horn_Adapter_oben.rsdocx
MF90_Servo_Horn_Adapter_oben.stl
MF90_Servo_Horn_Adapter_unten.rsdocx
MF90_Servo_Horn_Adapter_unten.stl
MF90_Servo_Horn_Adapter_Greifarm.rsdocx
MF90_Servo_Horn_Adapter_Greifarm.stl