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

AnschlussMotorAufgabe
S1180°-ServoPlattform kippen — X-Achse
S2180°-ServoPlattform kippen — Y-Achse
S3180°-ServoGesamtfehler-Zeiger
S4360°-ServoAusgleichsmasse, schwenkt bei anhaltender Neigung aus
S5360°-ServoAusgleichsmasse gegenläufig
S6180°-ServoFlagge — klappt bei 2 Sekunden gehaltener Balance auf
STEPPERSchrittmotorFein-Nullpunktkalibrierung der Ausgleichsmasse
DCDC-MotorVibrationswarnung 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

  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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.