Veröffentlicht 2026-04-05
Mehrere steuernServoMotoren mit einem Raspberry Pi ist eine häufige Herausforderung für Robotik- und Automatisierungsprojekte. Der Schlüssel liegt darin, keine Verbindung herzustellenServos direkt an GPIO-Pins – die Onboard-PWM-Ausgänge des Raspberry Pi sind begrenzt und können nicht ausreichend Strom liefern. Die zuverlässige Lösung ist die Verwendung einer dedizierten PWM-Treiberplatine, beispielsweise des 16-Kanal-12-Bit-PWM-Moduls PCA9685. Diese Anleitung bietet eine schrittweise, EEAT-konforme Methode zur Steuerung von bis zu 16Servos gleichzeitig, basierend auf realen Projekten wie einem 6-Achsen-Roboterarm oder einem Multi-Servo-Animatronikkopf.
Begrenzte Hardware-PWM-Pins– Ein Raspberry Pi verfügt nur über zwei Hardware-PWM-Kanäle (GPIO 18 und GPIO 19 bei den meisten Modellen). Software-PWM ist möglich, führt aber zu Jitter und hoher CPU-Last.
Unzureichender Strom– Jedes Servo kann während der Bewegung 200–500 mA verbrauchen. Wenn Sie mehr als zwei Servos direkt an den 5-V-Pin anschließen, besteht die Gefahr, dass der Spannungsregler des Pi beschädigt wird.
Timing-Präzision– Servos benötigen ein präzises 50-Hz-PWM-Signal mit variablen Arbeitszyklen. Der PCA9685-Treiber entlastet dieses Timing und sorgt so für eine stabile Steuerung aller Servos gleichzeitig.
Für ein typisches Projekt (z. B. ein kleiner Roboterarm mit 6 Freiheitsgraden) benötigen Sie:
Raspberry Pi (jedes Modell mit GPIO, 3B+ oder neuer empfohlen)
PCA9685 16-Kanal-PWM-Treiberplatine (üblicherweise für ca. 5–10 $ erhältlich)
Externe 5-V-DC-Stromversorgung (Kapazität = Anzahl der Servos × 0,5 A + 20 % Marge → für 6 Servos: 6 × 0,5 = 3 A, verwenden Sie eine 5 V/5 A-Versorgung)
6 Standard-SG90- oder MG90S-Servos (in Hobbyprojekten üblich)
Überbrückungskabel (Buchse-zu-Buchse für Signal, Stecker-zu-Buchse für optionale Verbindungen)
1000 µF Elektrolytkondensator (optional, aber empfohlen, über 5 V/GND in der Nähe der Servos platziert, um Spannungsspitzen zu reduzieren)
1. PCA9685 mit Raspberry Pi verbinden (I2C-Bus)
VCC → 5V-Pin am Pi (oder verwenden Sie die 5V der externen Versorgung – siehe Hinweis zur Stromversorgung)
GND → GND-Pin auf Pi (gemeinsame Masse zwingend erforderlich)
SCL → GPIO 3 (SCL)
SDA → GPIO 2 (SDA)
2. Schließen Sie eine externe 5-V-Stromversorgung an PCA9685 an
V+-Klemme am PCA9685 → externe 5-V-Versorgung positiv
GND-Anschluss am PCA9685 → externe Versorgung negativUNDzu Pis GND (eine gemeinsame Basis schaffen)
3. Servos an PCA9685 anschließen
Servosignalkabel (normalerweise orange/gelb) → PWM-Kanal 0,1,2,… (bis zu 15)
Servo VCC (rot) → V+-Klemme am PCA9685 (extern 5 V)
Servo GND (braun/schwarz) → GND-Anschluss am PCA9685
> Häufiger Fehler: Verwendung des 5-V-Pins des Pi zur Stromversorgung mehrerer Servos. Selbst mit einer Treiberplatine können die 5 V des Pi nicht mehr als ~500 mA liefern. Verwenden Sie immer eine externe 5-V-Versorgung mit ausreichend Strom.
Aktivieren Sie I2C und installieren Sie die Python-Bibliothek:
sudo raspi-config # Navigieren: Schnittstellenoptionen → I2C → Sudo-Neustart aktivieren
![]()
Installieren Sie nach dem Neustart dieAdafruit-Circuitpython-ServokitBibliothek (die Bibliothek ist Open Source; keine besondere Markenempfehlung impliziert):
sudo apt update sudo apt install python3-pip python3-smbus i2c-tools sudo pip3 install adafruit-schaltungpython-servokit
Überprüfen Sie die I2C-Erkennung:
i2cdetect -y 1
Sie sollten die Adresse sehen0x40(Standard-PCA9685-Adresse).
Erstellen Sie eine Dateimulti_servo.py:
from adafruit_servokit import ServoKit import time # PCA9685-Treiber initialisieren (Standardadresse 0x40, 16 Kanäle) kit = ServoKit(channels=16) # PWM-Frequenz auf 50 Hz einstellen (Standard für Servos) kit.frequenz = 50 # Servokanäle definieren (0 bis 5 für 6 Servos) servo_channels = [0, 1, 2, 3, 4, 5] # Beispiel: Alle verschieben Servos in Neutralstellung (90°) # Die meisten Servos akzeptieren Impulsbreiten von 0,5 ms (0°) bis 2,5 ms (180°) # Die Bibliothek ordnet den Winkel 0–180 automatisch zu. für ch in servo_channels: kit.servo[ch].angle = 90 time.sleep(0.2) # jedem Servo erlauben, die Position zu erreichen # Servo auf Kanal 0 in Schritten von 0° auf 180° bewegen def Sweep_servo(channel): für Winkel im Bereich(0, 181, 10): kit.servo[channel].angle = Winkel time.sleep(0.05) # Beispielsequenz für die Drehung einer Roboterarmbasis Sweep_servo(0) # Basis rotiert kit.servo[1].angle = 45 # Schulter time.sleep(0.5) kit.servo[2].angle = 120 # Elbow time.sleep(0.5) print("Alle Servos erfolgreich gesteuert")
Lauf mitpython3 multi_servo.py. Für gleichzeitige Bewegung verwendenkit.servo[ch].angle = Wertohneschlafenzwischen Kanälen – der Treiber aktualisiert alle Kanäle gleichzeitig.
NiemalsVersorgen Sie den V+ des PCA9685 über den 5-V-Pin des Pi mit Strom, wenn mehr als ein Servo angeschlossen ist. Die Masse muss geteilt werden: Verbinden Sie den GND der externen Versorgung mit dem GND des Pi und dem GND des PCA9685.
Fall A: Servos zittern oder bewegen sich unregelmäßig.
Ursache: Unzureichender Strom oder fehlende gemeinsame Masse.
Fix: Verwenden Sie eine stärkere 5-V-Versorgung; Stellen Sie sicher, dass der GND der externen Versorgung mit dem GND des Pi verbunden ist.
Fall B: Nur einige Servos reagieren.
Ursache: Lose Signalleitung oder falsche I2C-Adresse.
Fix: Laufeni2cdetect -y 1wieder; Stellen Sie sicher, dass die Adresse vorhanden ist0x40. Überprüfen Sie jede Signalverbindung.
Fall C: Raspberry Pi startet neu, wenn sich Servos bewegen.
Ursache: Spannungsabfall auf der 5-V-Leitung, die den Pi speist (selbst bei Verwendung einer externen Versorgung kann ein gemeinsames GND-Problem zu einer Rückspeisung führen).
Fix: Fügen Sie einen großen Kondensator (1000–2200 µF) über die externen Versorgungsklemmen hinzu; Verwenden Sie separate 5 V für Pi (Pi wird über USB-C oder Micro-USB mit Strom versorgt, nicht über die Servoversorgung, es sei denn, die Versorgung ist sehr stabil).
Verwenden Sie für jedes Projekt mit mehr als 3 Servos immer einen PCA9685 (oder einen gleichwertigen 16-Kanal-PWM-Treiber).Dies eliminiert Timing-Jitter und schützt Ihren Raspberry Pi.
Investieren Sie in ein geeignetes externes 5-V-Netzteil– Berechnen Sie den Strom als (0,5 A pro Servo) × Anzahl der Servos + 20 % Marge.
Schaffen Sie eine gemeinsame Basiszwischen dem Pi, der Treiberplatine und der externen Versorgung – dies ist die am häufigsten übersehene Fehlerursache.
Beginnen Sie mit einem einfachen Test– Steuern Sie nur ein Servo über den Treiber und fügen Sie dann nach und nach weitere hinzu.
Verwenden Sie den bereitgestellten Code als Basisund passen Sie Winkel und Verzögerungen an Ihr mechanisches Design an.
Kernstück zum Mitnehmen: Bei der Steuerung mehrerer Servos mit einem Raspberry Pi geht es nicht um direkte GPIO-Verbindungen. Es geht darum, die PWM-Erzeugung an einen dedizierten Treiber zu delegieren und eine unabhängige, stabile Stromversorgung bereitzustellen. Wenn Sie die oben genannten Verkabelungs- und Stromversorgungsregeln befolgen, können Sie bis zu 16 Servos für Roboterarme, Hexapods, Kamerakardanringe oder jedes beliebige Multi-Servo-Projekt zuverlässig steuern. Testen Sie zuerst Ihr Energie-Setup und skalieren Sie es dann hoch – dieser Ansatz hat sich in Hunderten von Hobby- und Bildungsaufbauten bewährt.
Aktualisierungszeit: 05.04.2026
Wenden Sie sich an den Produktspezialisten von Kpower, um einen geeigneten Motor oder ein geeignetes Getriebe für Ihr Produkt zu empfehlen.