Animatronischer Grogu 2.0
🔸 Zu den anderen Teilen von "Animatronischer Grogu 2.0"
Serielle Bus-Servos
Statt normaler Servos aus dem Modellbau, die über PWM angesteuert werden, verwende ich in diesem Projekt digitale Servos, die über einen seriellen Bus angesteuert werden. Das hat den Vorteil, dass man mehrere Servos an einem einzigen Bus anschließen kann, ohne dass man viele Kabel verlegen muss. Die Servos können dann über eine einzige Leitung statt mit einer sternförmigen Verkabelung angesteuert werden. Das spart Platz und Kabelsalat.
Im animatronischen Grogu sind zwei verschiedene Bauformen solcher Bus-Servos verbaut: Kleine Modelle für die Augen, Ohren und Unterarme und größere Modelle für die Kopfbewegungen und Arme.
Die größeren Servos haben eine Bauform, die meist für die Arme oder Beine von kleinen (humanoiden) Robotern verwendet wird. Sie sind dort meist direkt als Knie- oder Ellenbogengelenk verbaut. Hier verwende ich das Modell STS3215 Metall Digital BUS Robotik 360 Servo 55g 19,5kg 6V-7,4V von Feetech.
STS3215-Servo
Die kleinen Servos sind SCS2332 Metall Digital BUS Robotik Servo 20g 4,5kg 4,8V-6V von der Firma Feetech und haben die bekannte Bauform der SG90 oder MG90S Servos.
SCS2332-Servos
An den Spezifikationen kann man schon erkennen, dass beide Servo-Typen nur exakt eine Spannung haben, mit der sie betrieben werden können - sofern man für die Servos nur eine Spannungsquelle verwenden möchte. Daher ist die Spannung der Servos beim Grogu auf 6 Volt festgelegt.
Servo-Controller
Die Bus-Servos können nicht ohne weiteres direkt von einem Mikrocontroller angesteuert werden. Als entsprechendes Interface verwende ich das Serial Bus Servo Driver Board von WaveShare. Es wird über eine serielle UART-Schnittstelle mit dem ESP32 verbunden. Da geraten wird, STS- und SCS-Servos nicht über den gleichen Bus zu betreiben, habe ich zwei dieser Boards verbaut.
BTW: Damit wird auf dem ESP32 mit den hardware-seitigen UART-Schnittstellen langsam knapp: Eine benötigt die Animatronic Workbench, um die Figur live per USB-Kabel zu steuern. Die andere wird für die MP3-Player-Platine benötigt, die ebenfalls über eine UART-Schnittstelle angesteuert wird. Zusammen mit den zwei Servo-Controllern wären also vier UART-Schnittstellen nötig - der ESP32 hat aber nur drei. Daher habe ich die MP3-Player-Platine auf die Software-UART-Schnittstelle umgelegt, da diese nur mit 9600 Baud betrieben wird und somit nicht so zeitkritisch ist.
Servo-IDs
Die Servos werden über ihre IDs angesprochen und sind wie folgt durchgezählt: (Wie beim Arzt ist links/rechts immer aus Sicht des "Patienten" zu verstehen)
ID | Servo | Typ |
---|---|---|
1 | Augenlider oben | SCS2332 |
2 | Augenlider unten | SCS2332 |
3 | Mund | SCS2332 |
4 | Ohr rechts | SCS2332 |
5 | Ohr links | SCS2332 |
6 | Kopf links/rechts drehen | STS3215 |
7 | Nacken-Neigung rechts | STS3215 |
8 | Nacken-Neigung links | STS3215 |
9 | Arm rechts | STS3215 |
10 | Unterarm rechts | SCS2332 |
11 | Arm links | STS3215 |
12 | Unterarm links | SCS2332 |
Ausrichtung und Eichung der Servos
Damit die Servos für die verschiedenen Bewegungen richtig angesteuert werden, müssen sie zuerst ausgerichtet und geeicht werden. Die SCS2332 Servos haben einen Wertebereich von 0-1024, die STS3215 Servos von 0-4096. Die Mitte der Bewegung ist somit bei 512 bzw. 2048 und stellt daher optimaler Weise die Default-Position des Servos dar. Die auf den Abbildungen gezeigten Max- und Min-Stellungen sind nicht die Werte für 0 und 1024 bzw. 0 und 4096, sondern die Werte, die für die Bewegungen des Grogu sinnvoll sind. Sie müssen von Hand ermittelt und in das Projekt der Animatronic Workbench eingetragen werden.
Nacken Neigung
Max | Min | Default |
---|---|---|
("Min" bedeutet beim Nacken: so tief wie möglich, ohne dass der ESP32 berührt wird)
Arme
Max | Min | Default |
---|---|---|
Hände
Max | Min | Default |
---|---|---|
Augenlider
Max | Min | Default |
---|---|---|
Mund
Max | Min | Default |
---|---|---|
Ohren
Ausrichtung der Ohren bei der Montage:
Von vorn | von oben | von unten |
---|---|---|