MODE 1 — BALL BALANCE
Hard · 2h · Fast kostenlos
Ziel & Anwendung
Halte einen Ball auf einer flachen Plattform in der Mitte — in zwei Achsen gleichzeitig! Der Kipp-Sensor misst die Plattform-Neigung, zwei Servos kippen automatisch dagegen. Der Dreh-Knopf stellt die Regelstärke live ein, ein dritter Zeiger zeigt den Gesamtfehler. Der Rüttel-Motor warnt bei zu starker Neigung.
- 2D-PD-Regelkreis mit Gyroskop-Feedback implementieren
- P- und D-Gain per Dreh-Regler live während des Betriebs tunen
- Mechanische 2-Achsen-Plattform mit Kardangelenk aus Karton aufbauen
Anschluss & Funktion
Motoren am Board
| Anschluss | Motor | Aufgabe |
|---|---|---|
| S1 | 180°-Servo | Plattform kippen — X-Achse |
| S2 | 180°-Servo | Plattform kippen — Y-Achse |
| S3 | 180°-Servo | Gesamtfehler-Zeiger |
| S4 | 360°-Servo | Ausgleichsmasse, schwenkt bei anhaltender Neigung aus |
| S5 | 360°-Servo | Ausgleichsmasse gegenläufig |
| S6 | 180°-Servo | Flagge — klappt bei 2 Sekunden gehaltener Balance auf |
| STEPPER | Schrittmotor | Fein-Nullpunktkalibrierung der Ausgleichsmasse |
| DC | DC-Motor | Vibrationswarnung bei starker Neigung |
Materialliste
- Flache Kartonplatte als Balancier-Plattform (ca. 20×20 cm)
- Kleiner Ball (Tischtennisball oder Schaumstoffball)
- Kartonrahmen mit 1 cm Randführung für den Ball
- Zahnstocher als Kreuzgelenk-Achsen
- Strohhalme als Achslager
- Heißkleber
- Stabile Basis (min. 20×20 cm, beschwert)
Step-by-Step Tutorial
Kardanisches Gelenk für 2-Achsen-Plattform bauen
Baue ein Kardangelenk aus Karton: äußerer Ring (S2 X-Achse), mittlerer Ring (S1 Y-Achse), innere Plattform. Alle verbunden mit Zahnstocher-Achsen durch Strohhalm-Lager. S1 (180°-Servo) kippt die Plattform in X, S2 in Y. Beide Plastik-Servo-Hörner fest aufschrauben und flächig an die Ringe kleben.
Check: Plattform neigt sich frei in X und Y ohne die Achsen gegenseitig zu blockieren
Tipp: Zwei überkreuzte Achsen (Zahnstocher) mit 90° Versatz — das ist das Kardanprinzip
Ball-Randführung aufbauen
Klebe ringsherum 1 cm hohe Kartonstreifen als Rand auf die Plattform-Oberfläche. Ball muss frei rollen können aber nicht von der Kante fallen. Teste manuell: Ball von Mitte zu jeder Ecke rollen lassen.
Check: Ball rollt frei auf der Plattform ohne runterzufallen
Tipp: Randführung aus 1 cm hohen Kartonstreifen — niedrig genug damit der Ball nicht blockiert wird
PD-Regler für beide Achsen verstehen
S1 kippt die Plattform entgegen der gemessenen X-Neigung, S2 entgegen der Y-Neigung — beide gemeinsam aus Neigung und Neigungs-Geschwindigkeit berechnet. Der Dreh-Regler stellt normalerweise das P-Gefühl ein; hältst du dabei die Steuerknüppel-Taste gedrückt, stellst du stattdessen das D-Gefühl ein.
Check: S1 korrigiert Neigung entgegen dem Gyro-Fehler in X, S2 in Y
Tipp: Negatives Vorzeichen: der Servo muss immer gegen die gemessene Neigung steuern, nicht mit ihr
Bonus-Anzeigen: Ausgleichsmasse, Flagge und Kalibrierung
Klebe auf S4 und S5 je einen kurzen Karton-Arm als Ausgleichsmasse — sie schwenken automatisch gegenläufig aus, sobald die Plattform länger als einen Wimpernschlag stark geneigt bleibt. Auf S6 kommt ein kleines Fähnchen, das erst aufklappt, wenn der Ball zwei Sekunden lang in der Mitte bleibt. Der Schrittmotor feinjustiert dabei laufend den Nullpunkt der Ausgleichsmasse.
Check: Ausgleichsmasse-Servos, Flagge und Kalibrier-Servo laufen alle ungehindert durch
Leichtgängigkeitstest des Kardangelenks
Plattform manuell in alle Richtungen neigen — voller Bewegungsbereich ohne Widerstand. Ball manuell rollen — keine Kanten die blocken. Erst wenn alles frei läuft, Strom einschalten.
Check: Plattform neigt sich in alle Richtungen ohne Klemmen, Ball rollt frei
Tipp: Klemmt eine Achse: Strohhalm-Lager aufweiten oder mit Bleistift-Graphit schmieren
Tuning-Prozess Schritt für Schritt
Ball auf die Plattform legen und beobachten: pendelt er zu langsam ein, P-Gefühl erhöhen (bis leichtes Schwingen einsetzt), dann D-Gefühl erhöhen bis er stabil steht. S3 zeigt den Gesamtfehler als Zeiger, der Rüttel-Motor brummt zusätzlich bei starker Neigung als Warnung.
Check: Ball schwingt sich innerhalb von 10 Sekunden in der Mitte ein
Tipp: Tuning-Reihenfolge: erst P-Gefühl erhöhen bis leichtes Schwingen, dann D-Gefühl erhöhen bis das Schwingen aufhört
Troubleshooting
- Ball schwingt endlos zwischen zwei Punkten — D-Gain erhöhen — Derivat-Anteil dämpft Pendel-Schwingungen zuverlässig
- Plattform reagiert zu aggressiv und kippt sofort — P-Gain halbieren — Übersteuerung ist der häufigste Anfänger-Fehler beim PD-Tuning
- Ball fällt immer in die gleiche Ecke — Plattform im Nullzustand wirklich horizontal ausrichten: beide Servos auf 1500 setzen und Neigung justieren
Modifikationen & Sicherheit
- Pro-Tipp: Integral-Anteil (I) hinzufügen um statischen Fehler zu beseitigen — Anti-Windup nicht vergessen
- Pro-Tipp: Ziel-Position per Joystick verschieben — Ball an beliebiger Stelle halten
- Sicherheit: Plattform so begrenzen dass Servos nie über 150°/1300 ms fahren — sonst mechanischer Anschlag
Wichtige Code-Teile
// Dreh-Regler + Steuerknüppel-Taste schalten zwischen P- und D-Gain
if (RemoteJoystickBtn) dGain = constrain(dGain + EncoderPos * 0.05f, 0.0f, 5.0f);
else pGain = constrain(pGain + EncoderPos * 0.2f, 0.0f, 30.0f);
EncoderPos = 0;
// PD-Regler für 2 Achsen
float errX = -GyroX, errY = -GyroY;
float dErrX = (errX - lastErrX) / dt;
float dErrY = (errY - lastErrY) / dt;
lastErrX = errX; lastErrY = errY;
servocontroller.setServoPulse(1, constrain(1500 + (int)(errX * pGain + dErrX * dGain), 1000, 2000));
servocontroller.setServoPulse(2, constrain(1500 + (int)(errY * pGain + dErrY * dGain), 1000, 2000));
// S3: Gesamt-Fehler-Anzeige
float totalErr = sqrt(errX * errX + errY * errY);
servocontroller.setServoPulse(3, constrain(1000 + (int)(totalErr * 20), 1000, 2000));
// S4/S5: Ausgleichsmasse bei anhaltender Neigung (> 400 ms über Schwellwert)
bool massShift = tiltSince != 0 && (millis() - tiltSince > 400);
servocontroller.setServoPulse(4, massShift ? (errX > 0 ? 1800 : 1200) : 1500);
servocontroller.setServoPulse(5, massShift ? (errX > 0 ? 1200 : 1800) : 1500);
// S6: Flagge nach 2 s gehaltener Balance
servocontroller.setServoPulse(6, centerHeld ? 2000 : 1000);
// DC: Vibrationswarnung bei starker Neigung
setMotorspeed(totalErr > 10.0f ? 30 : 0);Ähnliche Projekte
- MODE 8 — CABLE CAM — Eine Kamera-Gondel, die an einem gespannten Seil entlangfährt — genau wie bei echten Sport-Übertragungen! Der Dreh-Regler oder der Steuerknüppel geben Tempo und Richtung vor, an beiden Enden bremst die Gondel sanft ab. Zwei Servos halten die Kamera dabei automatisch ruhig, egal wie sehr das Seil wackelt.
- MODE 4 — YAW HOLD — Dein Fahrzeug hält automatisch seinen Kurs! Ein Fingertipp auf die Touch-Fläche speichert die aktuelle Ausrichtung als Soll-Kurs, der Kompass-Sensor erkennt jede Abweichung und der Antrieb lenkt sanft gegen. Drei Zeiger zeigen live Lenkausschlag, Soll-Kurs und Ist-Kurs.
- MODE 8 — SEGWAY — Der heilige Gral der Robotik aus Karton! Ein Neigungsregler liest den Kippwinkel und steuert die beiden Antriebsräder genau entgegen — so bleibt der Roboter aufrecht, ganz wie ein echter Segway. Der Dreh-Knopf gleicht kleine Bauungenauigkeiten aus, bei zu starker Neigung schaltet der Roboter zum Schutz automatisch ab.