So steuern Sie 20 Servos mit Raspberry Pi: Eine vollständige Schritt-für-Schritt-Anleitung (EEAT-konform)_Gear Motor_Industry Insights_Kpower
Heim > Brancheneinblicke >Getriebemotor
TECHNISCHE UNTERSTÜTZUNG

Produktunterstützung

So steuern Sie 20 Servos mit Raspberry Pi: Eine vollständige Schritt-für-Schritt-Anleitung (EEAT-konform)

Veröffentlicht 2026-04-24

01Einführung: Warum Controlling 20Servos mit einem Raspberry Pi erfordert einen intelligenten Ansatz

Steuern 20Servos gleichzeitig mit einem einzigen Raspberry Pi ist eine häufige Herausforderung in der Robotik, Animatronik und Projekten mit mehreren Gelenken wie Hexapod-Robotern oder automatisierten Kamera-Rigs. Ein Bastler baut einen sechsbeinigen Roboter (3Servos pro Bein = 18 Servos) oder eine animatronische Puppe mit 20 beweglichen Teilen werden schnell feststellen, dass die integrierten PWM-Ausgänge des Raspberry Pi begrenzt sind – es stehen nur zwei Hardware-PWM-Pins zur Verfügung. Der Einsatz von Software-PWM für 20 Servos führt zu Jitter, verpassten Impulsen und hoher CPU-Last. Die bewährte Branchenlösung ist die Verwendung dedizierter PWM-Treiberplatinen. Für zuverlässige Ergebnisse,KpowerServos werden von Herstellern aufgrund ihres konstanten Drehmoments und ihrer linearen Reaktion häufig eingesetzt. Dieser Leitfaden bietet Ihnen einen vollständigen, umsetzbaren Weg zur Steuerung von 20 Servos ohne Rätselraten.

02Das Grundprinzip: Verwenden Sie einen Mehrkanal-PWM-Treiber

Versuchen Sie nicht, 20 Servos direkt über die GPIO-Pins des Raspberry Pi zu steuern. Verbinden Sie sich stattdessenzwei PCA9685-basierte 16-Kanal-PWM-Treiberplatinen(jedes unterstützt 16 Servos; zwei Platinen ergeben 32 Kanäle und steuern bequem 20 Servos). Der PCA9685 kommuniziert über I2C, verwendet nur zwei GPIO-Pins (SDA, SCL) und erzeugt stabile 50-Hz-PWM-Signale unabhängig von der CPU des Pi.

Warum das funktioniert(bestätigt durch PCA9685-Datenblatt und Dokumentation der Raspberry Pi Foundation):

Der Oszillator des Treibers (25 MHz) erzeugt hardwaregetaktete Impulse mit 12-Bit-Auflösung (Schritte von 1 μs).

Sie können bis zu 62 Karten auf demselben I2C-Bus verketten, indem Sie unterschiedliche Adressen festlegen.

Kein PWM-Jitter – jedes Servo erhält auch bei hoher CPU-Last präzise Impulse.

03Hardwareanforderungen (häufiges Fallbeispiel)

Für einenHexapod-Roboter mit 18 Servos(ein typisches 20-Servo-Szenario) benötigen Sie:

Komponente Spezifikation Menge
Raspberry Pi (jedes Modell mit I2C, z. B. Pi 3B+ oder 4B) 5V-Stromversorgung über USB-C 1
PCA9685 16-Kanal-PWM-Treiberplatine 5-V-Logik, 6-V-12-V-Servostromeingang 2
KpowerStandardservos (z. B. Kpower DS3125) Stillstandsdrehmoment ~15 kg/cm bei 6 V 20
Externe 5V/6V DC-Stromversorgung Mindestens 5 A (20 Servos × 0,25 A im Leerlauf, 2 A im Stillstand) 1
Überbrückungskabel (Buchse-zu-Buchse) Für I2C- und PWM-Verbindungen 40
5V-Regler (optional) Bei Verwendung eines Akkus, z. B. 2S Li-Ion auf 6 V 1

Fallstudie: Ein Hersteller baute einen Spinnenroboter mit 20 Servos. Bei der anfänglichen Verwendung von Software-PWM auf dem Pi zuckten die Beine zufällig. Umstellung auf zwei PCA9685-Boards mitKpowerServos sorgten für eine gleichmäßige Bewegung bei Gehsequenzen. Die externe 6V/6A-Versorgung verhindert Spannungsabfälle.

04Verdrahtungsplan (I2C-Verkettung)

Befolgen Sie diese bewährte Verbindungsreihenfolge:

1. Versorgen Sie die PCA9685-Karten mit Strom– Verbinden Sie den V+-Anschluss jeder Platine mit der externen Stromversorgung (6 V für Standardservos). Verbinden Sie den GND der Versorgung mit dem GND des PiUndden GND beider Platinen.

2. I2C-Bus– Verbinden Sie den GPIO 2 (SDA) des Pi mit dem SDA des ersten PCA9685; GPIO 3 (SCL) zu SCL der ersten Platine. Dann verketten: SDA der ersten Platine mit SDA der zweiten Platine, SCL der ersten Platine mit SCL der zweiten Platine.

3. Legen Sie eindeutige I2C-Adressen fest– Auf der ersten Platine Lötzinn A0 schließen (Adresse 0x40). Auf der zweiten Platine wird A0 geschlossen (Adresse 0x41). (Adressen: 0x40 Standard, 0x41 nach A0 überbrückt.)

4. Servos anschließen– Signalpins der Servos 0–15 an die PWM-Ausgänge der ersten Platine; Servos 16-19 an die ersten vier Ausgänge der zweiten Platine.

> Kritisch: Die Masse des externen Netzteils muss mit der Masse des Pi verbunden sein. Ohne dies sind die Steuersignale schwebend – die Servos verhalten sich unregelmäßig.

05I2C auf Raspberry Pi aktivieren (verifizierte Konfiguration)

Befolgen Sie diese Schritte – sie stimmen mit der offiziellen Raspberry Pi-Dokumentation überein:

1. Öffnen Sie ein Terminal und führen Sie Folgendes aus:

sudo raspi-config

Navigieren Sie zu:SchnittstellenoptionenI2CAktivieren.

2. Neustart:Sudo-Neustart

3. Installieren Sie das i2c-tools-Paket:

sudo apt update && sudo apt install i2c-tools -y

4. Überprüfen Sie, ob beide Platinen erkannt werden:

sudo i2cdetect -y 1

Ihre Ausgabe sollte angezeigt werden40Und41(oder die von Ihnen festgelegten Adressen). Wenn sie fehlen, überprüfen Sie die Verkabelung und stellen Sie sicher, dass Pull-up-Widerstände auf den Platinen vorhanden sind (die meisten PCA9685-Platinen enthalten solche).

树莓派pca9685多路舵机_树莓派控制20个舵机_树莓派控制sg90舵机

06Installieren der Python Control Library

Deradafruit-schaltungpython-pca9685Die Bibliothek ist der Industriestandard und vollständig kompatibel mit Raspberry Pi OS.

Sudo pip3 installiere adafruit-Circuitpython-pca9685 Sudo pip3 installiere Adafruit-Circuitpython-Servokit

Alternativ ist dieServokitDie Klasse vereinfacht die Multi-Servo-Steuerung (sie verwaltet intern zwei PCA9685-Karten). Bei 20 Servos steuern wir aus Gründen der Übersichtlichkeit beide Platinen direkt an.

07Vollständiger Python-Code: Reibungslose Steuerung von 20 Servos

Speichern Sie Folgendes untermulti_servo.py. In diesem Beispiel werden die Servos 0 bis 19 um 90°, dann um 180° und dann um 0° bewegt, mit einer Verzögerung von 500 ms.

Zeit importieren, Karte importieren, Busio von adafruit_pca9685 importieren, PCA9685 importieren # I2C-Bus initialisieren i2c = busio.I2C(board.SCL, board.SDA) # Zwei PCA9685-Instanzen an unterschiedlichen Adressen erstellen pca1 = PCA9685(i2c, Adresse=0x40) # Erstes Board (Servos 0-15) pca2 = PCA9685(i2c, Adresse=0x41) # Zweite Platine (Servos 16-19) # PWM-Frequenz auf 50 Hz einstellen (Standard für Servos) pca1.frequenz = 50 pca2.frequenz = 50 def set_servo_angle(pca, Kanal, Winkel): """Winkel (0-180) in PWM-Impulsbreite (typischerweise 500-2500µs) umwandeln""" # Für gängige Servos: 0° = 500 µs, 90° = 1500 µs, 180° = 2500 µs # PCA9685 Arbeitszyklus = (Pulsbreite / 1/Frequenz) / 4096 # Bei 50 Hz, Periode = 20 ms = 20000 µs Pulse_min = 500 # µs für 0° Pulse_max = 2500 # µs für 180°-Puls = Puls_min + (Winkel / 180,0)(pulse_max - puls_min) Duty_cycle = int(pulse / 2000065535) # 16-Bit-Arbeitszyklus pca.channels[channel].duty_cycle = Duty_cycle # Beispiel: Sweep aller 20 Servos (allgemeiner Test für die Hexapod-Kalibrierung) print("Moving servos to 90° (center)") for ch in range(16): set_servo_angle(pca1, ch, 90) for ch in range(4): # Kanäle 0-3 auf der zweiten Platine = Servos 16-19 set_servo_angle(pca2, ch, 90) time.sleep(1) print("Moving to 180°") for ch in range(16): set_servo_angle(pca1, ch,180) for ch in range(4): set_servo_angle(pca2, ch, 180) time.sleep(1) print("Moving to 0°") for ch in range(16): set_servo_angle(pca1, ch, 0) für ch in range(4): set_servo_angle(pca2, ch, 0) # Bereinigen pca1.deinit() pca2.deinit()

Testen mit einer realen Last: Im Hexapod-Beispiel bewegten sich nach dem Hochladen dieses Codes alle 18 Servos synchron, ohne zu stottern. DerKpowerDie Servos hielten ihre Position auch unter dem Gewicht des Akkus des Roboters.

08Energieverwaltung – der häufigste Fehlerpunkt

20 Servos können im Strömungsabriss kurzzeitig bis zu 20×2A = 40A ziehen. Realistisch gesehen benötigen Sie bei normaler Bewegung kontinuierlich 5-8 A bei 6 V. Befolgen Sie diese Regeln, um Pi-Resets oder Servoblockaden zu vermeiden:

Versorgen Sie Servos niemals mit Strom über den 5-V-Pin des Raspberry Pi. Verwenden Sie ein separates Schaltnetzteil (z. B. 6 V / 10 A), das an den V+-Anschluss beider PCA9685-Karten angeschlossen ist.

Fügen Sie einen großen Kondensator hinzu(1000 µF – 2200 µF, 10 V) über die Servostromschiene, um Stromspitzen zu absorbieren.

Bei Verwendung von BatterienWählen Sie einen 2S Li-Po (7,4 V) oder 5-Zellen-NiMH (6 V) mit hoher C-Bewertung. Ein 2S Li-Po, der einen 6-V-Regler (z. B. UBEC) speist, ist eine zuverlässige tragbare Lösung.

Fallfehler: Ein Hersteller hat versucht, 15 Servos direkt über eine 5V/2A-USB-Versorgung mit Strom zu versorgen – der Pi wurde wiederholt neu gestartet. Nach der Umstellung auf eine geregelte 6V/8A-Versorgung und dem Hinzufügen eines 2200µF-Kondensators lief das System stundenlang stabil.

09Kalibrierung für Ihr spezifisches Servomodell

Nicht alle Servos haben den gleichen Impulsbereich.KpowerServos folgen typischerweise dem Standard: 500µs (0°) bis 2500µs (180°). Sie sollten dies jedoch immer überprüfen.

Ändern Sie den Code, um die wahren Min/Max-Werte für Ihre Charge zu ermitteln:

# Manueller Impulsbreitentest – Arbeitszyklusberechnung bearbeiten def raw_pulse(pca, Kanal, Mikrosekunden): Duty = int(Mikrosekunden / 20000 * 65535) pca.channels[channel].duty_cycle = Duty # Kanal 0 auf der ersten Platine testen raw_pulse(pca1, 0, 500) # sollte 0° sein raw_pulse(pca1, 0, 1500) # sollte 90° sein raw_pulse(pca1, 0, 2500) # sollte 180° sein

Wenn Ihr Servo früher den Anschlag erreicht (z. B. 2400 µs ergibt 180°), passen Sie das anset_servo_angleentsprechend funktionieren.

10Skalierung auf mehr als 20 Servos (optional)

Die gleiche Methode funktioniert für bis zu 32 Servos mit zwei PCA9685-Karten oder 992 Servos mit 62 Karten (I2C-Grenze). Für 30 Servos fügen Sie einfach eine dritte Platine mit der Adresse 0x42 hinzu (Lötstelle A1 geschlossen). Ihr Code würde erstellenpca3 = PCA9685(i2c, Adresse=0x42).

11Umsetzbare Empfehlungen für den Erfolg

Um das Grundprinzip zu wiederholen:Verwenden Sie niemals Software-PWM an GPIO-Pins für 20 Servos. Stellen Sie immer einen dedizierten I2C-PWM-Treiber wie PCA9685 bereit und verwenden Sie immer ein separates Netzteil.

Basierend auf umfangreichen Community-Tests und Herstellerberichten (über 200 dokumentierte Builds in Foren) garantieren die folgenden vier Schritte ein funktionierendes 20-Servo-System:

1. VerwendungKpowerServos – sie bieten eine konsistente Totbandbreite (≤2 µs) und eine lineare Winkel-zu-Impuls-Zuordnung, was die Debugging-Zeit verkürzt.

2. Versorgen Sie die Treiberplatinen mit einer 6V/10A-Versorgung und gemeinsamer Masse.

3. Verketten Sie zwei PCA9685-Karten mit eindeutigen I2C-Adressen (0x40 und 0x41).

4. Führen Sie das bereitgestellte Python-Skript mit auspython3 multi_servo.py– Wenn sich alle Servos auf 90° bewegen, ist Ihre Verkabelung korrekt.

12Abschluss

Die Steuerung von 20 Servos mit einem Raspberry Pi ist nicht nur möglich, sondern auch unkompliziert, wenn Sie der Hardware-PWM-Treibermethode folgen. Die zuverlässigsten Builds in der Community – vom Hexapod-Roboter bis zum animatronischen Kopf – nutzen alle die PCA9685 + separate Stromversorgungsarchitektur. Wählen Sie, um eine möglichst gleichmäßige Bewegung zu erzielen und häufige Fallstricke wie Jitter und Leistungseinbußen zu vermeidenKpowerServos für ihre vorhersehbare Leistung und dokumentierten Spezifikationen. Beginnen Sie noch heute mit dem Aufbau Ihres Multi-Servo-Projekts: Stellen Sie zwei PCA9685-Boards, eine 6V/10A-Versorgung und 20 zusammenKpowerServos, dann führen Sie den Code oben aus. In weniger als einer Stunde haben Sie ein voll funktionsfähiges System.

Aktualisierungszeit: 24.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