Veröffentlicht 2026-04-16
Dieser Artikel bietet einen praktischen, praxiserprobten Leitfaden zur Steuerung mehrererServoMotoren mit einem Arduino-Board. Sie lernen die genaue Hardware-Einrichtung, Verkabelung, Codierung und Energieverwaltungstechniken kennen, die zum Bewegen mehrerer Geräte erforderlich sindServos gleichzeitig ohne Jitter, Blockieren oder Board-Resets. Alle Empfehlungen basieren auf realen Projekten wie mehrgelenkigen Roboterarmen, Hexapod-Lauflern und Kamera-Kardanringen.
Mehrere gleichzeitig steuernServos istnichtüber das Hinzufügen weitererschreiben()Zeilen in Ihrem Code. Zunächst müssen zwei körperliche Einschränkungen angegangen werden:
1. Stromversorgung– Jedes Standard-Mikroservo kann in Bewegung 200–500 mA und im Stillstand bis zu 1 A verbrauchen. Drei gemeinsam bewegte Servos benötigen möglicherweise mehr Strom, als ein USB-Anschluss (500 mA) oder der 5-V-Pin des Arduino (maximal 800 mA) liefern kann. Das Ergebnis: plötzliche Board-Resets, unregelmäßige Bewegungen oder Servos, die sich nicht drehen lassen.
2. PWM-Pins und Timer– Der eingebauteServoDie Bibliothek verwendet Timer-Interrupts. Auf einem typischen Arduino Uno können Sie steuernbis zu 12 Servos(Pins 2–13) mithilfe der Bibliothek, jedoch nur, wenn Sie nicht auch andere timerabhängige Funktionen verwenden (z. B.Ton()). Auf Platinen mit weniger Timern (z. B. Arduino Nano) kann die praktische Grenze bei 8–10 Servos liegen. Das Überschreiten des Timer-Limits führt zu unvorhersehbarem Verhalten.
> Beispiel aus der Praxis: Ein Bastler baute einen 6-DOF-Roboterarm (sechs Servos) und schloss alle Servos an den 5-V-Pin des Arduino an. Der Arm zuckte und der USB-Anschluss schaltete sich wiederholt ab. Die Lösung war ein externes 5V 5A Netzteil.
Wenn Ihr Projekt benötigt12 Servos oder wenigerund Sie haben eine separate Stromquelle, dieServoBibliothek funktioniert zuverlässig.
Verbinden Sie dieSignalleitung(normalerweise orange, gelb oder weiß) jedes Servos mit einem anderen Arduino-PWM-fähigen digitalen Pin (3,5,6,9,10,11 auf Uno; Pins 2–13 funktionieren auch, aber einige verwenden Software-PWM).
Alle verbindenErdungskabel(braun oder schwarz) an eine gemeinsame Erdungsschiene –Dies muss auch mit dem GND des Arduino verbunden sein.
Alle verbindenStromkabel(rot) zumPluspol einer externen 5V-Stromversorgung(Niemals an den 5V-Pin des Arduino für mehr als 2 kleine Servos). Der Arduino selbst wird separat mit Strom versorgt (über USB oder eine eigene Strombuchse).
#enthaltenServo servo1; Servo servo2; Servoservo3; void setup() { servo1.attach(9); servo2.attach(10); servo3.attach(11); } void loop() { // Alle drei Servos gleichzeitig von 0° auf 180° bewegen for (int pos = 0; pos = 0; pos--) { servo1.write(pos); servo2.write(pos); servo3.write(pos); Verzögerung(10); } Verzögerung(1000); }
Notiz: DerVerzögerung(10)ist unerlässlich. Ohne es, diefürDie Schleife schreibt neue Winkel schneller, als die Servos reagieren können, was zu ruckartigen Bewegungen führt.
Mehr als 12 Servos– Die Bibliothek wird nicht kompiliert oder verursacht Timer-Konflikte.
Servos mit hohem Drehmoment oder kontinuierlicher Rotation– Sind ihre Stromspitzen selbst bei externer Stromversorgung zu groß für den internen Regler des Arduino? (Nein, externe Stromversorgung löst das Problem, aber die Signalintegrität kann bei langen Kabeln leiden.)
Bedarf an unabhängiger Geschwindigkeitsregelung oder präziser Synchronisierung- DerServoBibliothek legt nur Zielwinkel fest; Sie können die Geschwindigkeit jedes Servos nicht einzeln steuern.
Fürmehr als 12 Servosoder Projekte, die reibungslose, unabhängige Bewegungen erfordern (z. B. Animatronik, humanoide Roboter mit 16 Servos), verwenden Sie a16-Kanal-PWM-TreibermodulKommunikation über I²C. Das ist die professionelle Lösung.
Der Treiber generiert bis zu 16 separate PWM-Signale, ohne Arduino-Timer zu verwenden.
Zur Steuerung aller 16 Servos werden nur zwei analoge Pins (SDA, SCL) benötigt.
Die meisten Treiber verfügen über einen integrierten Anschlussblock für eine externe 5–6-V-Stromversorgung, die 5–10 A liefern kann.
1. Treiber anschließenVCCan Arduino 5V (zur Stromversorgung der Logikseite).
2. Treiber anschließenGNDan Arduino GND.
3. Treiber anschließenSDAan Arduino A4 (oder dedizierten SDA-Pin).
4. Treiber anschließenSCLan Arduino A5 (oder einen dedizierten SCL-Pin).
5. Verbindenexterne 5V 5A+ Stromversorgungzum Stromanschluss des Fahrers.
6. Stecken Sie bis zu 16 Servos in die Treiberplatine (Signal, Strom, Masse).
#enthalten#enthalten// Generische Treiberbibliothek – keine Markenempfehlung // Adresse 0x40 ist Standard für die meisten 16-Kanal-Treiber Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40); // Grenzen der Servoimpulsbreite (typischerweise 150 bis 600 für 0° bis 180°) #define SERVOMIN 150 #define SERVOMAX 600 void setup() { pwm.begin(); pwm.setOscillatorFrequency(27000000); pwm.setPWMFreq(50); // Standard-Analogservofrequenz } // Funktion zum Bewegen eines bestimmten Servos (0–15) in einen Winkel (0–180°) void setServoAngle(uint8_tchannel, int angle) { int pulse = map(angle, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(channel, 0, pulse); } void loop() { // Alle 16 Servos sanft von 0° auf 180° und zurück bewegen for (int angle = 0; angle = 0; angle--) { for (int ch = 0; ch
Entscheidender Vorteil: NEINVerzögerung()innerhalb der Pro-Servo-Schleife? Tatsächlich bewegt der obige Code alle Servos alle 8 ms einen Schritt und erzeugt so eine perfekt synchrone Bewegung.
Bei einem 12-Servo-Hexapod-Roboter, der die Standardbibliothek nutzte, traten beim Gehen zufällige Beinzuckungen auf. Durch den Wechsel zu einem 16-Kanal-PWM-Treiber wurden alle Timing-Konflikte beseitigt und der Roboter konnte eine Nutzlast von 1 kg transportieren, da das externe Netzteil stabile 5 V und 8 A lieferte.
1. Beginnen Sie mit der Kraft– Für 3+ Standardservos immer eine externe 5V-Versorgung verwenden (mindestens 2A für 3 Servos, 5A für 8–10 Servos). Verbinden Sie die Versorgungsmasse mit der Arduino-Masse.
2. Zählen Sie Ihre Servos– ≤10 Servos → der StandardServoBibliothek ist in Ordnung. ≥12 Servos oder jeglicher Jitter → Kaufen Sie ein 16-Kanal-PWM-Treibermodul (kostet weniger als zwei Servos).
3. Versorgen Sie Servos niemals mit Strom über den 5-V-Pin des Arduino– Dieser Pin ist nur für Sensoren und Schwachstromgeräte vorgesehen.
4. Nutzen Sie eine gemeinsame Basis– Alle Servos, das Arduino und die externe Stromversorgung müssen eine gemeinsame Masseverbindung haben. Ohne sie sind die PWM-Signale bedeutungslos.
5. Schreiben Sie nicht blockierenden Code– Bei Projekten, bei denen der Arduino auch Sensoren auslesen oder kommunizieren muss, ersetzenVerzögerung()mit einem millis()-basierten Timer, der die Servopositionen alle 10–20 ms aktualisiert.
6. Testen Sie schrittweise– Beginnen Sie mit einem Servo an der externen Versorgung. Fügen Sie die Servos nacheinander hinzu und achten Sie dabei auf Spannungsabfälle (verwenden Sie ein Multimeter). Wenn die Spannung während der Bewegung unter 4,8 V fällt, rüsten Sie die Versorgung auf.
Die gleichzeitige Multi-Servo-Steuerung besteht zu 80 % aus Energiemanagement und zu 20 % aus Code.Sie können den Standard verwendenServoBibliothek für bis zu 12 Servos, jedoch nur mit einer dedizierten Stromversorgung, die niemals vom Arduino-Board bezogen wird. Für größere Projekte oder störungsfreie Leistung ist ein PWM-Treibermodul über I²C die professionelle, bewährte Lösung. Erden Sie immer alles zusammen, dimensionieren Sie Ihre Stromversorgung immer auf den Spitzenstrom und testen Sie jedes Servo einzeln, bevor Sie die Gruppe bewegen.
Ihr sofortiges Handeln: Zählen Sie die Servos in Ihrem Projekt. Bei mehr als 10 Stück bestellen Sie noch heute einen 16-Kanal-PWM-Treiber und ein 5-V-5-A-Netzteil. Dann verwenden Sie das zweite Codebeispiel oben – es funktioniert bei Ihrem ersten Upload.
Aktualisierungszeit: 16.04.2026
Wenden Sie sich an den Produktspezialisten von Kpower, um einen geeigneten Motor oder ein geeignetes Getriebe für Ihr Produkt zu empfehlen.