Steuern von 20 Servos mit einem Raspberry Pi: Eine vollständige Schritt-für-Schritt-Anleitung_BLDC_Industry Insights_Kpower
Heim > Brancheneinblicke >BLDC
TECHNISCHE UNTERSTÜTZUNG

Produktunterstützung

Steuern von 20 Servos mit einem Raspberry Pi: Eine vollständige Schritt-für-Schritt-Anleitung

Veröffentlicht 2026-04-08

Dieser Leitfaden bietet eine praktische, praxiserprobte Lösung für die Steuerung von bis zu 20Servos gleichzeitig mit einem Einplatinencomputer wie dem Raspberry Pi. Mehr als zwei direkt verbindenServos an den GPIO-Pins führen zu Spannungsabfällen, PWM-Timing-Konflikten und Schäden an der Platine. Die zuverlässige Methode ist die Verwendung eines dedizierten PWM-Treibermoduls (z. B. PCA9685). Nachfolgend finden Sie die genaue Hardware-Einrichtung, Schaltpläne, Leistungsberechnungen, Python-Code und Schritte zur Fehlerbehebung – alles basierend auf gängigen realen Robotik- und Animatronik-Projekten.

01Warum Sie keine Verbindung herstellen können 20Servos Direkt an GPIO

Aktuelle Grenze: Jeder GPIO-Pin liefert maximal 16 mA, während ein Standardservo beim Bewegen 150–500 mA verbraucht. 20 Servos würden über 10 A benötigen – weit über der 3,3 V/5 V-Schienenkapazität der Platine.

PWM-Hardware-Limit: Raspberry Pi verfügt nur über zwei Hardware-PWM-Kanäle (GPIO 18 und 19). Software-PWM an anderen Pins führt zu Jitter und CPU-Überlastung für 20 Servos.

Spannungszusammenbruch: Der Betrieb von 20 Servos über den 5-V-Pin der Platine führt zu einem sofortigen Spannungsabfall und einem Zurücksetzen des Systems.

02Übersicht über die Kernlösung

Verwenden Sie eineI²C-basiertes PWM-Treibermodul(16-Kanal-PCA9685 ist der Industriestandard). Verbinden Sie zwei solcher Module (jedes unterstützt bis zu 16 Servos) oder ein Modul plus Multiplexer. In diesem Handbuch werden zwei PCA9685-Karten verwendet (insgesamt 32 Kanäle, wobei nur 20 verwendet werden).

03Erforderliche Komponenten (keine Markennamen)

1 Einplatinencomputer (Raspberry Pi 3B+ oder neuer)

2 PCA9685 16-Kanal-12-Bit-PWM-Treiberplatinen

20 Standard-5-V-Servos (z. B. SG90, MG90S oder MG996R – je nach Drehmomentbedarf auswählen)

1 externes 5-V-DC-Netzteil – Strom berechnen: 20 Servos × 0,5 A = mindestens 10 A. Verwenden Sie a10A–15A geregelte 5V-Versorgung.

Kondensatoren: 2x 1000µF Elektrolytkondensatoren (≥10V) zur Leistungsglättung

Überbrückungskabel (Buchse-zu-Buchse für I²C, Stecker-zu-Buchse für Servoverbindungen)

Steckbretter oder Klemmenblöcke zur Stromverteilung

04Verdrahtungsplan (Schritt für Schritt)

Schritt 1 – I²C-Verbindung zwischen Raspberry Pi und erstem PCA9685

Pi 3,3 V → VCC von PCA9685 (Hinweis: Einige Module akzeptieren 5-V-Logik; überprüfen Sie Ihr Modul. Verwenden Sie bei 5-V-Logikmodulen die 3,3 V von Pi nur, wenn das Modul 3,3 V tolerant ist. Sicherer: Verbinden Sie VCC nur dann mit dem 5-V-Pin von Pi, wenn das Moduldatenblatt eine 5-V-Toleranz bestätigt. Die meisten PCA9685-Karten funktionieren mit 3,3 V I²C-Logik, benötigen aber 5 V für Servo-V+ – siehe nächster Schritt.)

Korrekte Standardverkabelung (für 99 % der PCA9685-Boards):

Pi 5V (Pin 2 oder 4) → PCA9685 VCC (Strom für die Logik des Chips – ja, viele laufen mit 5V-Logik)

Pi GND → PCA9685 GND

Pi SDA (GPIO 2) → PCA9685 SDA

Pi SCL (GPIO 3) → PCA9685 SCL

Schritt 2 – Externe Stromversorgung für Servos

Externe 5-V-Versorgung (10 A+), positiv (+) → PCA9685 V+-Klemme (oft mit „V+“ oder „Servoleistung“ gekennzeichnet)

Externer Versorgungs-GND → PCA9685-GND (muss eine gemeinsame Masse mit Pi haben – Pi-GND mit PCA9685-GND verbinden, wie oben bereits durchgeführt)

Platzieren Sie einen 1000-µF-Kondensator zwischen V+ und GND in der Nähe des PCA9685, um Gegen-EMF-Spitzen zu absorbieren.

Schritt 3 – Servos anschließen

Rot (Strom) jedes Servos → PCA9685 V+-Schiene (verwenden Sie eine Steckbrett-Stromschiene)

Servo braun/schwarz (GND) → PCA9685 GND-Schiene

Servo orange/gelb (Signal) → PCA9685 PWM-Ausgangspin (0 bis 15 auf der ersten Platine, 0 bis 3 auf der zweiten Platine)

Schritt 4 – Zweiter PCA9685

I²C-Adresse der zweiten Platine einstellen: Adressjumper einlöten. Die Standardadresse von PCA9685 ist 0x40. Für zweite Platine: A0-Jumper löten → Adresse wird 0x41.

Verbinden Sie SDA/SCL/GND/VCC der zweiten Karte parallel mit der ersten Karte (gleicher I²C-Bus).

Verbinden Sie dessen V+ mit derselben externen 5-V-Versorgung.

05Software-Setup (Raspberry Pi OS, Terminalbefehle)

I²C auf dem Pi aktivieren:

sudo raspi-config # Schnittstellenoptionen → I2C → Ja sudo reboot

Erforderliche Bibliotheken installieren:

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

I²C-Geräte überprüfen:

sudo i2cdetect -y 1

Sie sollten 0x40 und 0x41 sehen (wenn die zweite Platine korrekt adressiert ist).

06Python-Code zur unabhängigen Steuerung von 20 Servos

Erstellen Sie eine Dateiservo_control.py:

Importzeit Import Board Import Busio von adafruit_pca9685 Import PCA9685 # I2C-Bus initialisieren i2c = busio.I2C(board.SCL, board.SDA) # Erster PCA9685 bei Adresse 0x40 pca1 = PCA9685(i2c, Adresse=0x40) pca1.frequenz = 50 # 50Hz für Standardservos # Zweiter PCA9685 bei Adresse 0x41 pca2 = PCA9685(i2c, Adresse=0x41) pca2.frequenz = 50 # Servoimpulsbreitenbereich (typisch 500 bis 2500 Mikrosekunden) # In Arbeitszyklus umrechnen: Duty = Pulse_us / 2000065535 def angle_to_duty(angle, min_us=500, max_us=2500): Pulse = min_us + (Winkel / 180,0)(max_us - min_us) return int((pulse / 20000.0) * 65535) # Steuern Sie jedes Servo über Platine und Kanal def set_servo(board, channel, angle): if angle 180: angle = 180 board.channels[channel].duty_cycle = angle_to_duty(angle) # Beispiel: Bewegen Sie alle 20 Servos auf 90° servos = [(pca1, i) for i in range(16)] + [(pca2, i) for i in range(4)] # insgesamt 20 für Board, ch in Servos: set_servo(board, ch, 90) time.sleep(0.01) # Staffelung zur Reduzierung des Stromstoßes # Sweep-Servo auf Board1-Kanal0 von 0 auf 180 print("Sweeping-Servo auf Board1-Kanal0") für Winkel in Bereich(0, 181, 10): set_servo(pca1, 0, angle) time.sleep(0.05) # Alle Servos freigeben (PWM-Senden stoppen) – wichtig, um Jitter zu verhindern pca1.deinit() pca2.deinit()

07Energieverwaltung – Wichtigster Teil

Ein realer Fall: Ein Bastler hat einmal 10 Servos direkt an ein 5V/3A-Netzteil angeschlossen. Während der gleichzeitigen Bewegung fiel die Spannung auf 3,8 V, die Servos blieben stehen und der Raspberry Pi startete neu. Lösung:Verwenden Sie eine geregelte 5V/15A-Stromversorgung(z. B. ein LED-Netzteil oder die 5-V-Schiene eines Computer-ATX-Netzteils). Hinzufügengroße Kondensatoren(1000µF pro 5-8 Servos) in der Nähe jeder Treiberplatine.

Umsetzbare Regel: Berechnen Sie Ihren maximalen gleichzeitigen Strom. Wenn sich alle 20 Servos gleichzeitig bewegen, gehen Sie von 10 A aus. Zur Sicherheit 30 % Marge hinzufügen →13A mindestens. Verwenden Sie für die Stromverteilung Drähte der Stärke 14 AWG oder dicker.

08Kalibrieren der Servoimpulsbreiten

Nicht alle Servos haben den gleichen Min/Max-Impuls. Gemeinsame Werte:

500 µs (0°) – 2500 µs (180°) für analoge Servos

600 µs (0°) – 2400 µs (180°) für viele digitale Servos

So kalibrieren Sie: Schreiben Sie ein Testskript, das von 300 bis 2700 µs reicht, finden Sie die mechanischen Grenzen und aktualisieren Sie es dannMinusUndmax_usin der Funktion oben.

09Häufige Probleme und Lösungen

Problem Höchstwahrscheinliche Ursache Fix
Servos zucken oder bewegen sich nicht Unzureichender Stromversorgungsstrom Rüsten Sie auf eine 15-A-Versorgung auf und verwenden Sie kürzere, dicke Drähte
Raspberry Pi startet neu, wenn Servos starten Spannungsabfall auf der 5-V-Leitung Externe Stromversorgung nur für Servos verwenden, Pi separat mit Strom versorgen (über USB-C)
Es funktionieren nur 16 Servos, nicht 20 Zweite Platine nicht erkannt Überprüfen Sie die I²C-Adresse (verwenden Siei2cdetect -y 1), stellen Sie SDA/SCL-Verbindungen sicher
Servos bewegen sich, zittern aber Es fehlt eine gemeinsame Basis Verbinden Sie den Pi-GND mit dem PCA9685-GND und dem externen Versorgungs-GND miteinander
Ein Servo reagiert nicht Schlechte Signalleitung oder Kanal Zur Isolierung mit einem bekanntermaßen funktionierenden Servo auf demselben Kanal austauschen

10Leistungsoptimierung für 20 Servos

Staffelbewegung: Befehlen Sie nicht allen Servos, den Winkel genau in der gleichen Mikrosekunde zu ändern. Hinzufügentime.sleep(0.005)zwischen jedemset_servoAnruf. Dadurch wird der Spitzenstrom durch Lastverteilung reduziert.

Aktualisierungsrate: 50 Hz (20 ms Periode) ist Standard. Erhöhen Sie die Frequenz nicht über 100 Hz – die meisten Servos werden überhitzen.

CPU-Auslastung: Die PCA9685-Hardware erzeugt unabhängig PWM. Ihr Python-Skript sendet nur jedes Mal I²C-Befehle, wenn Sie den Blickwinkel ändern. Bei statischen Positionen kann das Skript beendet werden – die Servos halten die letzte Position, solange Strom anliegt.

11Vollständiger Aktionsplan zur Umsetzung noch heute

1. Bestellen Sie Komponenten– Zwei PCA9685-Boards, 20 Servos, 5V/15A Netzteil, 1000µF Kondensatoren.

2. Test mit einem Servo– Verdrahten Sie ein einzelnes Servo mit dem ersten PCA9685 und führen Sie den Sweep-Code aus.

3. Netzteil hinzufügen– Schließen Sie externe 5 V/15 A an die V+-Schiene an und prüfen Sie, ob sich der Servo stark bewegt.

4. Skalierung auf 5 Servos– Fügen Sie nach und nach weitere Servos hinzu und überwachen Sie dabei die Temperatur der Stromversorgungskabel.

5. Zweiten PCA9685 hinzufügen– Adresse auf 0x41 einstellen, 4 Servos anschließen, testen.

6. Vollständiger 20-Servo-Test– Führen Sie den bereitgestellten Code aus, bewegen Sie alle Servos auf 90° und führen Sie dann einen langsamen Durchlauf aller Kanäle durch.

12Schlüssel zum Mitnehmen

Sie können 20 Servos nicht direkt über den GPIO eines Raspberry Pi steuern – verwenden Sie PCA9685-PWM-Treiberplatinen mit einem speziellen 5-V-Hochstromnetzteil.Diese Methode wird in Tausenden von echten Animatronik-, Hexapod-Roboter- und Automatisierungsprojekten verwendet. Es ist zuverlässig, skalierbar und gut dokumentiert. Beginnen Sie mit einem kleinen Test, überprüfen Sie die Leistungsstabilität und skalieren Sie dann weiter. Ihr Erfolg hängt von einer ordnungsgemäßen Erdung und einer ausreichenden Stromstärke ab – beides ist nicht verhandelbar.

Handeln Sie jetzt: Verdrahten Sie einen PCA9685 mit einem einzelnen Servo und einer externen 5-V-Versorgung. Sobald das funktioniert, fügen Sie den Rest hinzu. Innerhalb von zwei Stunden nach der Montage erhalten Sie ein stabiles 20-Servo-System.

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