Eine verbesserte TXT-Encodermotor-Steuerung mit stabilerer Motor-Halterung:
- XM-Motor-Servo-Actuator1.JPG (1.02 MiB) 3301 mal betrachtet
Hier sieht man den Aktuator von der Vorderseite. Das Gegengewicht reduziert das notwendige Motor-Drehmoment zum Bewegen der Plattform
- XM-Motor-Servo-Actuator2.JPG (1.4 MiB) 3301 mal betrachtet
Bisher bin ich immer davon ausgegangen, dass man schnelle Motoren braucht. Aber das ist gar nicht der Fall.
Mir ist aufgefallen, dass man bessere Ergebnisse erzielt, wenn man die Motorspannung bei nur 6.5V belässt, PID-Parameter für den Motor auf eine gemächliche Ansteuerung setzt: Geringer P-Wert, PWM-Limit runter auf 150, I und D > 1.
- Bildschirmfoto vom 2023-06-15 22-26-40.png (524.59 KiB) 3301 mal betrachtet
Diese Einstellungen reduzieren die Rüttelbewegungen deutlich. Und die Platform kommt bei Erreichen der Zielposition fast zum stehen. Bei langsamerer Ansteuerung kann man den Balancier-Tisch vielleicht auch mit den alten FT-Motoren samt Getriebe oder sogar Minimots plus externen Encoder (wie von Jan) regeln.
Meine Vermutung ist, dass durch die sachteren Bewegungen, die mit geringeren Beschleunigungen einher gehen, geringere Stöße auf die Plattform übertragen werden. Auf jeden Fall ist die TXT-Motor-Steuerung ruhiger als die Ansteuerung mit den schnellen Servos, wobei es da auch Programme gibt, die einen schellen Servo langsam fahren. Hab' ich aber noch nicht ausprobiert.
Ich will mal die Plattform-Winkel direkt messen. Evtl. kann man da auch drauf regeln.
Zuerst habe ich es mit den Accelerometern einer IMU (Intertial Measurement Unit) versucht. Aber die misst ja nicht nur g sondern auch die dynamischen Beschleunigungen. Die Signale sind daher sehr verrauscht und die Winkel passen oft nicht. Daher will ich mal die Winkel mit I2C-Magnet-Encodern (AS5600) direkt an der Plattform messen:
- Platform-Angle-Measurement1.JPG (1.01 MiB) 3301 mal betrachtet
(Metallachsen sind mit Papierstreifen in die Lochsteine geklemmt)
- Platform-Angle-Measurement2.JPG (1.1 MiB) 3301 mal betrachtet
Dummerweise gehen mir jetzt die Interrupt-Pins auf dem Arduino-Mega aus. D20 und D21, die ich für Encoder-Messung verwende sind ja gleichzeitig auch für I2C. Da muss ich mir noch etwas umarrangieren. Evtl. beide Encoder-Signale über ein Oder-Gatter auf einen Interrupt-Pin legen und die Encoder-Signale in der Interrupt-Service-Routine von normalen Digital-Pins einlesen. Schau mer mal.