MODE 9 — 3DOF ARM

Hard · 2h · Fast kostenlos

Ziel & Anwendung

Du sagst wo — der Arm entscheidet wie! Statt jeden Servo einzeln zu steuern, gibst du nur das Ziel vor. Der Arm berechnet selbst welchen Winkel jedes Gelenk einnehmen muss um dorthin zu gelangen. Der Joystick stellt die Zielposition ein, der Dreh-Regler die Höhe. Das ist Inverse Kinematik — wie Roboter denken!

  • Der Joystick gibt das Ziel vor — Basis, Schulter und Ellbogen berechnen automatisch die nötigen Gelenk-Winkel
  • Der Dreh-Regler stellt die Ziel-Höhe ein — Arm hebt und senkt sich
  • Zwei Berührungsflächen steuern das Handgelenk — der Joystick-Knopf öffnet und schließt den Greifer

Anschluss & Funktion

Motoren am Board

AnschlussMotorAufgabe
S1180°-ServoBasis-Drehung
S2180°-ServoSchulter-Gelenk
S3180°-ServoEllbogen-Gelenk
S4360°-ServoHandgelenk-Achse 1
S5360°-ServoHandgelenk-Achse 2
S6180°-ServoZeigt, ob die Zielposition erreichbar ist
STEPPERSchrittmotorGreifer öffnen/schließen
DCDC-MotorKurze Vibration beim Erreichen der Zielposition

Materialliste

  • Drei Karton-Segmente (Schulter 10 cm, Ellenbogen 8 cm, Handgelenk 6 cm) als Arm-Teile
  • Stabiler Karton-Sockel (15×15 cm) als schwere Basis
  • Vier Holzstäbchen als Verstärkung der Arm-Segmente
  • Kleiner Greifer aus Karton (2 Finger, je 4 cm) auf dem Stepper
  • Heißkleber, Klebeband, Steine als Sockel-Gewicht

Step-by-Step Tutorial

  1. Drei-Gelenk-Arm aufbauen und gewichten

    Baue einen schweren Karton-Sockel (15×15 cm) und beschwere ihn mit Steinen oder einem Wasserbeutel. Plastik-Servo-Horn auf die Basis-Drehung aufschrauben, Schulter-Segment (10 cm, verstärkt mit Holzstäbchen) flächig draufkleben. Am Schulter-Gelenk, am Ende des Schulter-Segments: Ellenbogen-Segment (8 cm) drauf. Am Ellbogen-Gelenk am Ende: Handgelenk-Segment (6 cm). Gesamtarm 24 cm — Gegengewicht zwingend notwendig!

    Check: Alle drei Segmente bewegen sich frei — Sockel kippt nicht wenn Arm ganz ausgestreckt ist

    Tipp: Gesamtarmlänge 24 cm: Sockel mindestens 500g beschweren (Steine, Batterien) — sonst kippt alles um

  2. Ziel-Position mit Joystick eingeben

    Der Joystick steuert die Zielposition seitlich und nach vorne/hinten. Der Dreh-Regler steuert die Höhe. Die Kinematik-Berechnung ermittelt daraus die drei nötigen Gelenk-Winkel für Basis, Schulter und Ellbogen. Der Arm fährt automatisch zum Ziel-Punkt — du steuerst wohin, nicht wie.

    Check: Joystick nach rechts: Ziel wandert nach rechts. Joystick nach vorne: Ziel wandert nach vorne. Basis, Schulter und Ellbogen reagieren auf neue Winkel

    Tipp: Langsame Joystick-Bewegung für erste Tests — schnelle Positions-Änderungen können die Servos überlasten

  3. Handgelenk und Greifer einrichten

    Plastik-Horn auf die beiden Handgelenk-Servos schrauben, Handgelenk-Platten drauf. Erste Berührungsfläche gehalten: Handgelenk dreht nach vorne. Zweite Berührungsfläche: dreht nach hinten. Der Schrittmotor-Mitnehmer trägt zwei Finger-Platten als Greifer: eine Drehrichtung öffnet, die andere schließt. Der Joystick-Knopf schaltet den Greifer um.

    Check: Erste Berührungsfläche gehalten: Handgelenk dreht nach vorne. Zweite Berührungsfläche: dreht nach hinten. Joystick-Knopf: Greifer öffnet/schließt

    Tipp: Greifer-Finger aus zwei kleinen Karton-Streifen (4 cm) auf dem Schrittmotor-Mitnehmer — öffnen/schließen durch dessen Drehung

  4. Leichtgängigkeitstest aller drei Gelenke

    Bevor Strom eingeschaltet wird: Arm manuell auf maximale Reichweite ausstrecken. Sockel stabil? Basis, Schulter und Ellbogen manuell bewegen — alle leichtgängig? Segment-Verbindungen fest? Greifer-Finger öffnen und schließen manuell? Erst nach vollständigem OK Strom einschalten.

    Check: Arm manuell durch alle möglichen Positionen führen — alle Gelenke drehen frei, Sockel kippt nicht

    Tipp: Arm komplett ausgestreckt: das ist die kritischste Position für den Sockel-Schwerpunkt — hier muss der Sockel stabil stehen

  5. Inverse Kinematik Demo: Ziel anfahren

    Strom einschalten. Joystick langsam nach rechts: Arm fährt nach rechts, ohne dass du Basis, Schulter und Ellbogen einzeln steuerst. Dreh-Regler nach oben: Arm hebt sich. Kleines Objekt (Streichholzschachtel) hinlegen. Joystick auf das Objekt richten: Arm fährt hin. Greifer schließen. Joystick-Knopf drücken. Objekt angehoben! Das ist Robotik-Intelligenz im Miniformat.

    Check: Joystick auf Ziel-Position stellen: Arm fährt automatisch dorthin ohne Einzel-Servo-Kontrolle

    Tipp: Demo-Objekt auf dem Tisch platzieren: Joystick auf das Objekt richten — Arm fährt von alleine hin. Joystick-Knopf: Greifer greift

Troubleshooting

  • Arm springt in unerwartete Position bei bestimmten Zielen — Die Berechnung erlaubt zwei Lösungen (Ellenbogen oben/unten) — Zielposition außerhalb des Arbeitsbereichs erzeugt Sprünge; Ziel näher heranziehen
  • Sockel kippt wenn Arm weit ausgestreckt — Mehr Gegengewicht am Sockel — Steine, volle Batterien oder Wasserbeutel fixieren bis Sockel stabil bleibt
  • Basis und Schulter erreichen den Ziel-Winkel, aber der Ellbogen bleibt zurück — Der Ellbogen-Winkel hängt an der Ziel-Höhe: Dreh-Regler mehr auslenken für eine deutlichere Ellbogen-Bewegung

Modifikationen & Sicherheit

  • Pro-Tipp: Gespeicherte Ziel-Positionen (touch1=speichern, Encoder-Button=abrufen) für Wiederholungs-Aufgaben
  • Pro-Tipp: IR-Sensor am Greifer erkennt wenn ein Objekt in Reichweite ist — automatische Greif-Sequenz

Wichtige Code-Teile

// Ziel-Position aus Joystick und Encoder
float armX = map(JoystickX, 0, 4095, -150, 150);
float armY = map(JoystickY, 0, 4095, 50, 250);
armZ = constrain(armZ + (int)EncoderPos * 5, -100, 100); EncoderPos = 0;

// Inverse Kinematik: 2-Segment Arm (vereinfacht)
float L1 = 100, L2 = 80; // Segment-Längen in mm
float dist = sqrt(armX*armX + armY*armY);
float q2 = acos(constrain((dist*dist - L1*L1 - L2*L2) / (2*L1*L2), -1, 1));
float q1 = atan2(armY, armX) - atan2(L2*sin(q2), L1 + L2*cos(q2));
float q3 = armZ / 100.0f * 0.8f; // Handgelenk-Winkel aus Höhe

// S1/S2/S3: Gelenk-Winkel
servocontroller.setServoPulse(1, 1500 + (int)(q1 * 350));
servocontroller.setServoPulse(2, 1500 + (int)(q2 * 300));
servocontroller.setServoPulse(3, 1500 + (int)(q3 * 400));

// Handgelenk S4/S5, Greifer Stepper
servocontroller.setServoPulse(4, touch1 ? 2000 : 1500);
servocontroller.setServoPulse(5, touch2 ? 2000 : 1500);
static bool gripOpen = true;
if(isButtonPressed(JoystickButton, lastJoyBtn)) {
    gripOpen = !gripOpen;
    stepper.move(gripOpen ? 50 : -50);
}
stepper.run();

Ähnliche Projekte

  • MODE 8 — DELTA — Drei Servos, drei Arme — und trotzdem bewegen sie alle denselben einen Punkt! Das ist Delta-Kinematik: drei Arme im 120°-Abstand steuern gemeinsam die Position einer Plattform im Raum. Der Joystick bewegt die Plattform seitlich, die Berührungsfläche hebt und senkt sie. Genau so funktionieren schnelle Industrie-Roboter!
  • MODE 6 — CUSTOM KIN — Was passiert wenn du einen Roboterarm-Abschnitt länger machst? Direkt ausprobieren! Die erste Berührungsfläche wählt die Arm-Sektion (Oberarm oder Unterarm), der Dreh-Regler verlängert oder verkürzt sie. Die beiden Positions-Zeiger zeigen sofort, wie sich die Endpunkt-Position ändert. Mechanik als interaktives Experiment — ohne Schrauben, nur per Knopfdruck.
  • MODE 5 — PANTOGRAPH — Zeichne mit einem Arm — der andere zeichnet gleichzeitig größer oder kleiner! Der Pantograph ist das älteste Kopier-Gerät der Welt: ein Gelenkviereck das Bewegungen maßstabsgetreu überträgt. Der Joystick steuert den Eingangs-Arm, der Ausgangs-Arm folgt skaliert. Der Dreh-Regler stellt den Vergrößerungs-Faktor ein.