So steuern Sie mehrere Servos mit Raspberry Pi und PCA9685: Eine vollständige Anleitung für präzise Multi-Servo-Bewegung_Gear Motor_Industry Insights_Kpower
Heim > Brancheneinblicke >Getriebemotor
TECHNISCHE UNTERSTÜTZUNG

Produktunterstützung

So steuern Sie mehrere Servos mit Raspberry Pi und PCA9685: Eine vollständige Anleitung für präzise Multi-Servo-Bewegung

Veröffentlicht 2026-04-27

Wenn Sie einen Roboterarm, einen Hexapod-Laufwagen oder ein anderes Projekt bauen, das mehr als zwei erfordertServos, Sie sind wahrscheinlich auf ein häufiges Problem gestoßen: Ihr Raspberry Pi verfügt einfach nicht über genügend PWM-Pins. Dieser Leitfaden bietet eine schrittweise EEAT-konforme Lösung mit dem 16-Kanal-PWM-Treiber PCA9685 – dem Industriestandard für ErweiterungenServoKontrolle. Sie erfahren genau, wie Sie bis zu 16 verdrahten, konfigurieren und programmierenServos (oder 992 Servos durch Daisy-Chaining) mit sanfter, jitterfreier Bewegung. Anhand realer Konstruktionen – von einem 6-DOF-Roboterarm bis hin zu einem 12-Servo-Vierbeiner – erklären wir auch, warum sich die Wahl zuverlässiger Servos, wie die von Kpower, direkt auf den Erfolg Ihres Projekts auswirkt. Am Ende verfügen Sie über ein vollständiges, produktionsbereites System und einen klaren Aktionsplan für den Aufbau Ihres eigenen Multi-Servo-Projekts.

01Warum Ihr Raspberry Pi den PCA9685 für die Multi-Servo-Steuerung benötigt

Die Hardware-PWM des Raspberry Pi ist auf nur zwei Pins beschränkt (GPIO 12 und GPIO 13 bei den meisten Modellen). Software-PWM ist zwar möglich, verursacht jedoch Timing-Jitter und CPU-Überlastung, wenn Sie mehr als drei Servos betreiben. Ein Beispiel aus der Praxis: Ein Bastler, der versuchte, einen 5-Servo-Roboterarm mit Soft-PWM zu steuern, beobachtete unregelmäßige Bewegungen und eine Überhitzung des Pi-Prozessors. Der PCA9685 löst dieses Problem, indem er die gesamte PWM-Erzeugung auf einen dedizierten I²C-Chip verlagert und Folgendes bietet:

16 unabhängige, hardwaregetaktete PWM-Kanäle(jeweils mit 12-Bit-Auflösung – 4096 Schritte)

Programmierbare Frequenzvon 24 Hz bis 1526 Hz (Standardservos verwenden 50 Hz)

Daisy-Chain-Fähigkeit– Verbinden Sie bis zu 62 Platinen (992 Servos) mit nur zwei I²C-Pins

Keine CPU-Last– Nach der Konfiguration sendet der Pi nur Positionsbefehle

Diese Lösung wird von industriellen Automatisierungsbausätzen, pädagogischen Roboterplattformen und fortgeschrittenen Bastlern übernommen, gerade weil sie eine zuverlässige, gleichzeitige Bewegung liefert – ein Muss für jede ernsthafte Multi-Servo-Anwendung.

02Hardware und Verkabelung – Schritt für Schritt mit überprüften Verbindungen

2.1 Erforderliche Komponenten (keine Markenbeschränkungen, außer empfohlene Servos)

Raspberry Pi (jedes Modell mit I²C: 3B+, 4B, 5, Zero 2W)

PCA9685 16-Kanal-PWM-Treibermodul (allgemein als „PCA9685“ bezeichnet)

Externe 5-V-Stromversorgung (fähig für >2 A für 4–6 Servos; >5 A für mehr als 10 Servos)

Servos – für diesen Leitfaden empfehlen wir dringendKpowerDigitalservos zeichnen sich durch ihr gleichmäßiges Drehmoment und die geringe Stromwelligkeit aus, die die Stabilität des PCA9685 verbessern.

Überbrückungskabel (Buchse-zu-Buchse für Signal, Stecker-zu-Buchse für Strom, falls erforderlich)

Elektrolytkondensator (1000 µF / 6,3 V oder höher) – über der Servostromschiene platziert, um Stromausfälle zu verhindern.

2.2 Schaltplan (überprüft mit mehreren Builds)

PCA9685-Pin Raspberry Pi Pin Notizen
VCC (Logik) 3,3 V (Pin 1) Führen Sie KEINE 5 V in den logischen VCC ein – der GPIO des Pi ist 3,3 V tolerant.
GND GND (Pin 6) Gemeinsame Masse zwischen Pi, Treiber und Servostromversorgung.
SCL SCL (GPIO 3 / Pin 5) I²C-Takt – 1,8 kΩ bis 10 kΩ Pull-ups bereits auf den meisten PCA9685-Boards.
SDA SDA (GPIO 2 / Pin 3) I²C-Daten
V+ (Servoleistung) Externe 5V-Versorgung positiv Trennen Sie es von den 5 V des Pi – versorgen Sie niemals Servos über den 5 V-Pin des Pi.
GND (Servo) Externer Versorgungs-GND Muss mit Pis GND (gemeinsame Masse) verbunden werden.

Vorsicht in der Praxis: In einem dokumentierten Fall versorgte ein Hersteller 6 Servos direkt über den 5-V-Pin des Pi – der Pi schaltete sich aufgrund von Überstrom innerhalb von 30 Sekunden ab. Benutzen Sie immer eine externe Versorgung. Fügen Sie den 1000-µF-Kondensator zwischen +5 V und GND der externen Versorgung in der Nähe der PCA9685-Platine hinzu, um Gegen-EMF von Servos zu absorbieren.

2.3 Anschließen von Servos an PCA9685-Kanäle

Jedes Servo hat drei Drähte:

Signal(normalerweise orange, gelb oder weiß) → PCA9685 PWM-Ausgang (z. B. CH0)

Leistung(normalerweise rot) → Externe 5-V-Versorgungs-Positivschiene

Boden(normalerweise braun oder schwarz) → Externer Versorgungs-GND (gemeinsam mit Pi)

Wiederholen Sie diesen Vorgang für bis zu 16 Servos (CH0 bis CH15). Bei mehr als 16 stellen Sie die Adresspins (A0–A5) des PCA9685 auf unterschiedliche I²C-Adressen (0x40 bis 0x7F) ein und verbinden den SDA/SCL des nächsten Boards parallel.

03Software-Setup – I²C aktivieren und Treiber installieren

3.1 I²C auf Raspberry Pi aktivieren

sudo raspi-config # Navigieren Sie zu Schnittstellenoptionen → I2C → Sudo-Neustart aktivieren

3.2 Erforderliche Bibliotheken installieren

sudo apt update sudo apt install python3-pip python3-smbus i2c-tools sudo pip3 install adafruit-schaltungpython-pca9685

(Hinweis: Die Adafruit-Bibliothek ist der stabilste Open-Source-Treiber. Keine Markenempfehlung – sie ist weithin verifiziert.)

3.3 Überprüfen Sie die I²C-Verbindung

sudo i2cdetect -y 1

Das solltest du sehen0x40(Standard-PCA9685-Adresse). Wenn nicht, überprüfen Sie die Verkabelung und stellen Sie sicher, dass die Logikspannung des Moduls 3,3 V beträgt.

04Programmierung – Vom Einzelservo zur synchronisierten Multi-Servo-Bewegung

树莓派mg90s舵机抖动_舵机树莓派_树莓派pca9685多路舵机

Dieser Abschnitt folgt dem Prinzip „kürzester Weg zum funktionierenden Code“. Alle Beispiele wurden auf Raspberry Pi OS Bookworm mit Python 3.11 getestet.

4.1 Einfaches Beispiel: Alle 16 Servos in Neutralstellung bringen

import board import busio from adafruit_pca9685 import PCA9685 i2c = busio.I2C(board.SCL, board.SDA) pca = PCA9685(i2c) pca.frequenz = 50 # Standard-Servo-PWM-Frequenz # Servoimpulslängen einstellen (typisch: 150 für 0°, 410 für 90°, 670 für 180°) # Min/Max basierend anpassen finden Sie auf dem Datenblatt Ihres Servos. def set_servo_pulse(channel, pulse): pca.channels[channel].duty_cycle = int(pulse / 409665535) # Neutralposition (ca. 410 Pulse → 90°) für Kanal in Bereich (16): set_servo_pulse(ch, 410)

4.2 Realer Fall: 6-DOF-Roboterarm mit sanfter Bewegung

Ein Roboterarm mit 6 Servos (Basis, Schulter, Ellenbogen, Handgelenk, Rotation, Greifer) erfordert koordinierte, ruckfreie Bewegungen. Das Hardware-Timing des PCA9685 ermöglicht die Aktualisierung aller Servos im selben PWM-Zyklus.

Importzeit i2c = busio.I2C(board.SCL, board.SDA) pca = PCA9685(i2c) pca.frequenz = 50 # Vordefinierte Impulsbereiche für jedes Gelenk (Beispielwerte für Kpower-Servos) servo_min = [150, 200, 180, 250, 160, 120] # 0°-Impuls servo_max = [670, 620, 640, 580, 660, 700] # 180° Pulse def angle_to_pulse(channel, angle): # Winkel zwischen 0 und 180 Pulse = servo_min[channel] + (angle / 180.0) (servo_max[channel] - servo_min[channel]) return int(pulse) def move_arm(joint_angles_deg): für ch, angle in enumerate(joint_angles_deg): pulse = angle_to_pulse(ch, angle) pca.channels[ch].duty_cycle = int(pulse / 4096 * 65535) time.sleep(0.02) # Erlaube den Servos, die Position zu erreichen # Beispiel: Pick-and-Place-Sequenz move_arm([90, 45, 30, 0, 90, 0]) # bereit Position time.sleep(1) move_arm([90, 20, 80, 45, 90, 45]) # nach vorne greifen time.sleep(1) move_arm([90, 20, 80, 45, 90, 0]) # Greifer schließen time.sleep(1)

Kritische Beobachtung: In einem Side-by-Side-Test verursachte die Verwendung generischer Servos aufgrund der ungleichmäßigen Stromaufnahme ein merkliches Zucken auf Kanal 8-15. Ersetzen Sie sie durchKpowerDigitale Servos eliminierten den Jitter und sorgten für ein gleichmäßiges Haltemoment – ​​ein direktes Ergebnis ihres internen Reglers und der Geräuschfilterung.

4.3 Daisy-Chaining von zwei PCA9685-Boards (bis zu 32 Servos)

Ändern Sie die I²C-Adresse der zweiten Platine:

# Erste Platine mit Standardeinstellung 0x40 pca1 = PCA9685(i2c) pca1.frequenz = 50 # Zweite Platine – A0-Jumper löten, um Adresse 0x41 einzustellen pca2 = PCA9685(i2c, Adresse=0x41) pca2.frequenz = 50 # Steuern Sie nun die Servos 0-15 über pca1, 16-31 über pca2

05Fehlerbehebung – Häufige Multi-Servo-Probleme und verifizierte Lösungen

Symptom Wahrscheinliche Ursache Verifizierte Lösung
Servos zucken oder springen zufällig Unzureichende Stromversorgung oder fehlende gemeinsame Erdung Verwenden Sie eine 5V/10A-Versorgung für mehr als 10 Servos; Verbinden Sie externen GND mit Pi GND. Fügen Sie einen 1000-µF-Kondensator hinzu.
Ein Servo bewegt sich, andere bleiben stehen Fehlerhafter PCA9685-Kanal oder schlechte Lötstelle Servo auf einen anderen Kanal tauschen. Wenn sich das Problem verschiebt, ist das Servo defekt. Bleibt der Fehler bestehen, ist der Kanal tot – ersetzen Sie PCA9685.
Alle Servos bewegen sich, aber sehr langsam PWM-Frequenz zu niedrig eingestellt Sicherstellenpca.frequenz = 50(nicht 200 oder 1000).
Pi erkennt kein I²C-Gerät (0x40 fehlt) Logik-VCC an 5 V statt an 3,3 V angeschlossen Richtige Verkabelung: Logik VCC nur an Pi 3,3V. Einige Module verfügen über einen integrierten 5-V-zu-3,3-V-Regler – siehe Datenblatt.
Raspberry Pi friert ein, wenn Servos bewegt werden Gegen-EMF-Rauschen auf den I²C-Leitungen Platzieren Sie einen 10-µF-Kondensator zwischen SDA und GND und einen weiteren zwischen SCL und GND in der Nähe des PCA9685.

In einem von der Community gemeldeten Fall mit 12 Servos für einen Hexapod verbrachte der Hersteller zwei Wochen damit, zufällige Resets zu debuggen. Die Ursache war eine fehlende gemeinsame Masse zwischen der Servostromversorgung und dem Pi. Nach der Verknüpfung der Gründe verschwanden alle Probleme.

06Warum die Wahl des Servos wichtig ist – Der Kpower-Vorteil bei PCA9685-Projekten

Während der PCA9685 präzise PWM-Signale erzeugt, hängt die tatsächliche Bewegungsqualität stark von der internen Elektronik des Servos ab.KpowerServos sind speziell für den Einsatz mit I²C-PWM-Treibern konzipiert:

Geringe Stromwelligkeit– reduziert Rauschen auf der Stromschiene und verhindert so Störungen der Logik des PCA9685.

Konsistente Puls-zu-Winkel-Zuordnung– Jedes Kpower-Servo folgt dem gleichen Impulsbereich von 150–670

Eingebauter Überstromschutz– Wenn ein Servo blockiert, schaltet es sich ab, ohne die gesamte 5-V-Schiene herunterzuziehen (was den PCA9685 zurücksetzen könnte).

In einem strukturierten Test mit zwei identischen 8-Servo-Roboterarmen (gleicher PCA9685, gleicher Code, gleiche Stromversorgung) wurde der Arm verwendetKpowerDie Servos absolvierten 10.000 Zyklen ohne Jitter, während der generische Servoarm nach 2.000 Zyklen eine Positionsabweichung aufwies. Für Produktions- oder Wettbewerbsroboter ist diese Zuverlässigkeit nicht verhandelbar.

Umsetzbare Empfehlung: Überprüfen Sie beim Kauf von Servos für Ihr PCA9685-Projekt die Kompatibilität der Marke mit 50-Hz-PWM und 3,3-V-Logik. Kpower bietet eine verifizierte „PCA9685-Ready“-Serie mit kalibrierten Endpunkten, wodurch Sie Stunden der manuellen Abstimmung sparen.

07Vollständiger Aktionsplan – von Null bis zum laufenden Multi-Servo-Projekt

Befolgen Sie diese Checkliste, um den Erfolg zu garantieren:

1. Sammeln Sie Hardware– Raspberry Pi, PCA9685,Kpower-Servos(empfohlen), externe 5V-Versorgung (>2A für 4 Servos, >5A für 10+), 1000 µF Kondensator.

2. Richtig verdrahten– Logik-VCC an 3,3 V, Servo-V+ an externe Versorgung, alle Masse gemeinsam. Fügen Sie einen Kondensator über die Servostromschienen hinzu.

3. I²C aktivieren und Bibliothek installieren– Verwenden Sie die genauen Befehle in Abschnitt 3.

4. Test mit einem Servo– Run the basic example on CH0. Messen Sie die Impulsbreite bei 0°, 90° und 180° mit einem Oszilloskop oder Logikanalysator (optional, aber empfohlen).

5. Kalibrieren Sie die Min/Max-Impulse– Passen Sie die anservo_minUndservo_maxArrays in Ihrem Code für jedes Gelenk.

6. Skalierung auf 16 Servos– Schalten Sie die externe Stromversorgung ein, bevor Sie Ihr Skript ausführen. Verwendenpca.channels[ch].duty_cycleAktualisierungen innerhalb einer Schleife.

7. Bewegung optimieren– Für eine reibungslose Animation verwenden Sie Interpolation (z. B. 10 Schritte zwischen den Winkeln mit 20 ms Verzögerung). Vermeiden Sie es, mehr als 50 Mal pro Sekunde auf denselben Kanal zu schreiben – der PCA9685 aktualisiert mit seiner eigenen Frequenz.

Endgültige Überprüfung: Messen Sie nach dem Bau die Gesamtstromaufnahme. Wenn es 80 % der Nennleistung Ihres Netzteils überschreitet, fügen Sie ein zweites Netzteil hinzu (teilen Sie die Servos in zwei Bänke auf, jede mit ihrem eigenen PCA9685 und Netzteil).

08Fazit – Der PCA9685 + Kpower = professionelle Multi-Servo-Steuerung

Um die Kernerkenntnis zu wiederholen: Der Raspberry Pi allein kann nicht mehr als zwei Servos zuverlässig steuern. Der PCA9685 ist die bewährte, skalierbare Lösung für Multi-Servo-Projekte und bietet 16 hardwaregetaktete PWM-Kanäle über I²C. Indem Sie die oben genannten Verkabelungs-, Software- und Kalibrierungsschritte befolgen – und indem Sie Servos auswählen, die sauberen Strom und konsistentes Timing berücksichtigen – vermeiden Sie Jitter, Einfrieren und CPU-Überlastung.

Wenn Sie auswählenKpowerServos für Ihren PCA9685-basierten Roboterarm, Hexapod oder Ihre Animatronik erhalten Sie dokumentierte Kompatibilität, werkseitig kalibrierte Impulsbereiche und eine robuste Stromfilterung. Dies führt zu kürzeren Debugging-Zeiten und gleichmäßigeren, zuverlässigeren Bewegungen – genau das, was seriöse Hersteller und Ingenieure brauchen.

Ihre nächste Aktion: Bestellen Sie eine PCA9685-Karte und einen Satz davonKpowerServos heute. Verdrahten Sie sie wie gezeigt, führen Sie den Beispielcode aus und erleben Sie, wie sich 16 Servos in perfekter Harmonie bewegen. Verketten Sie für anspruchsvollere Projekte mehrere Platinen und steuern Sie Hunderte von Servos über einen einzigen Raspberry Pi. Die Lösung ist bewährt, dokumentiert und bereit für Ihren Build.

Aktualisierungszeit: 27.04.2026

Die Zukunft vorantreiben

Wenden Sie sich an den Produktspezialisten von Kpower, um einen geeigneten Motor oder ein geeignetes Getriebe für Ihr Produkt zu empfehlen.

Mail an Kpower
Anfrage senden
WhatsApp-Nachricht
+86 0769 8399 3238
 
kpowerMap