Maison > Aperçu de l'industrie >Moteur à engrenages
ASSISTANCE TECHNIQUE

Comment contrôler plusieurs servomoteurs avec un Raspberry Pi (un guide complet)

Publié 2026-04-05

Contrôler plusieursservomoteurLes moteurs avec un Raspberry Pi constituent un défi courant pour les projets de robotique et d'automatisation. La clé est de ne pas se connecterservomoteurdirectement aux broches GPIO – les sorties PWM intégrées du Raspberry Pi sont limitées et ne peuvent pas fournir suffisamment de courant. La solution fiable consiste à utiliser une carte de pilote PWM dédiée, telle que le module PWM 12 bits 16 canaux PCA9685. Ce guide fournit une méthode étape par étape, conforme à l'EEAT, pour contrôler jusqu'à 16servomoteurs simultanément, basés sur des projets du monde réel comme un bras robotique à 6 axes ou une tête animatronique multiservo.

01Pourquoi un Raspberry Pi standard ne peut pas contrôler directement de nombreux servos

Broches PWM matérielles limitées– Un Raspberry Pi ne dispose que de deux canaux PWM matériels (GPIO 18 et GPIO 19 sur la plupart des modèles). Le logiciel PWM est possible mais entraîne une instabilité et une charge CPU élevée.

Courant insuffisant– Chaque servo peut consommer 200 à 500 mA pendant le mouvement. Connecter plus de deux servos directement à la broche 5V risque d’endommager le régulateur de tension du Pi.

Précision du timing– Les servos ont besoin d’un signal PWM précis de 50 Hz avec des cycles de service variables. Le pilote PCA9685 décharge ce timing, offrant un contrôle stable pour tous les servos simultanément.

02Matériel requis – Exemple réel (bras de robot à 6 servos)

Pour un projet type (ex. : un petit bras robotique à 6 degrés de liberté), vous aurez besoin de :

Raspberry Pi (tout modèle avec GPIO, 3B+ ou plus récent recommandé)

Carte pilote PWM 16 canaux PCA9685 (généralement disponible pour environ 5 à 10 $)

Alimentation externe 5V DC (capacité = nombre de servos × 0,5 A + 20% de marge → pour 6 servos : 6 × 0,5 = 3A, utiliser une alimentation 5V/5A)

6 servos standards SG90 ou MG90S (courants dans les projets de loisirs)

Fils de liaison (femelle à femelle pour le signal, mâle à femelle pour les connexions optionnelles)

Condensateur électrolytique de 1 000 µF (facultatif mais recommandé, placé sur le 5 V/GND près des servos pour réduire les pics de tension)

03Schéma de câblage (étape par étape)

1. Connectez le PCA9685 au Raspberry Pi (bus I2C)

VCC → broche 5V sur Pi (ou utilisez le 5V de l'alimentation externe – voir note d'alimentation)

GND → broche GND sur Pi (terre commune obligatoire)

SCL → GPIO3 (SCL)

SDA → GPIO2 (SDA)

2. Connectez l'alimentation externe 5 V au PCA9685

Borne V+ sur PCA9685 → alimentation externe 5V positive

Borne GND sur PCA9685 → négatif alimentation externeETau GND de Pi (créer un terrain d’entente)

3. Connectez les servos au PCA9685

Fil de signal servo (généralement orange/jaune) → canal PWM 0,1,2,… (jusqu'à 15)

Servo VCC (rouge) → borne V+ sur PCA9685 (5V externe)

Servo GND (marron/noir) → borne GND sur PCA9685

> Erreur courante: Utilisation de la broche 5V du Pi pour alimenter plusieurs servos. Même avec une carte pilote, le 5 V du Pi ne peut pas fournir plus de ~500 mA. Utilisez toujours une alimentation externe de 5 V avec un courant adéquat.

04Configuration du logiciel (Raspberry Pi OS, testé sur Bookworm)

Activez I2C et installez la bibliothèque Python :

sudo raspi-config # Naviguer : Options d'interface → I2C → Activer sudo reboot

舵机树莓派_树莓派控制360度舵机转动_如何用树莓派控制多个舵机

Après le redémarrage, installez leadafruit-circuitpython-servokitbibliothèque (la bibliothèque est open source ; aucune approbation spécifique de la marque n'est implicite) :

sudo apt update sudo apt install python3-pip python3-smbus i2c-tools sudo pip3 install adafruit-circuitpython-servokit

Vérifiez la détection I2C :

i2cdetect -y 1

Vous devriez voir l'adresse0x40(adresse PCA9685 par défaut).

05Code Python – Contrôle de 6 servos pour un bras de robot

Créer un fichiermulti_servo.py:

from adafruit_servokit import ServoKit import time # Initialiser le pilote PCA9685 (adresse par défaut 0x40, 16 canaux) kit = ServoKit(channels=16) # Régler la fréquence PWM à 50 Hz (standard pour les servos) kit.fréquence = 50 # Définir les canaux de servo (0 à 5 pour 6 servos) servo_channels = [0, 1, 2, 3, 4, 5] # Exemple : move tous les servos en position neutre (90°) # La plupart des servos acceptent des largeurs d'impulsion de 0,5 ms (0°) à 2,5 ms (180°) # La bibliothèque mappe automatiquement l'angle 0 à 180. pour ch dans servo_channels : kit.servo[ch].angle = 90 time.sleep(0.2) # permettre à chaque servo d'atteindre la position # Déplacer le servo sur le canal 0 de 0° à 180° par étapes def swawy_servo(channel) : pour l'angle dans la plage (0, 181, 10) : kit.servo[channel].angle = angle time.sleep(0.05) # Exemple de séquence pour une rotation de la base d'un bras de robot scanning_servo(0) # la base tourne kit.servo[1].angle = 45 # épaule time.sleep(0.5) kit.servo[2].angle = 120 # elbow time.sleep(0.5) print("Tous les servos contrôlés avec succès")

Courir avecpython3 multi_servo.py. Pour un mouvement simultané, utilisezkit.servo[ch].angle = valeursansdormirentre les canaux – le pilote met à jour tous les canaux en même temps.

06Règles d'alimentation critiques (éviter les réinitialisations ou les dommages)

Nombre de servos Alimentation externe recommandée Condensateur Problème courant
1‑2 5V/2A 470 µF Pi pourrait toujours fonctionner mais évitez
3‑5 5 V / 3‑5 A 1000 µF Secousses du servo / Réinitialisation du Pi
6‑10 5 V / 7‑10 A 2 200 µF Une chute de tension entraîne une perte de contrôle
11‑16 5 V / 12‑15 A 3300 µF Utilisez des fils épais (AWG 16)

Jamaisalimentez le V+ du PCA9685 à partir de la broche 5 V du Pi lorsque plusieurs servos sont connectés. La masse doit être partagée : connectez le GND de l’alimentation externe au GND du Pi et au GND du PCA9685.

07Dépannage – Cas réels

Cas A: Les servos tremblent ou se déplacent de manière erratique.

Cause: Courant insuffisant ou masse commune manquante.

Réparer: Utilisez une alimentation 5 V plus puissante ; vérifiez que le GND de l’alimentation externe est connecté au GND du Pi.

Cas B: Seuls certains servos répondent.

Cause: Fil de signal desserré ou mauvaise adresse I2C.

Réparer: Couriri2cdetect -y 1encore; assurez-vous que l'adresse est0x40. Vérifiez chaque connexion de signal.

Cas C: Raspberry Pi redémarre lorsque les servos bougent.

Cause: Chute de tension sur la ligne 5V alimentant le Pi (même si vous utilisez une alimentation externe, un problème GND partagé peut provoquer un back-feeding).

Réparer: ajoutez un grand condensateur (1 000 à 2 200 µF) aux bornes d'alimentation externe ; utilisez un 5 V séparé pour Pi (Pi alimenté via USB‑C ou micro‑USB, pas à partir de l'alimentation du servo, sauf si l'alimentation est très stable).

08Recommandations concrètes (conclusions basées sur l'EEAT)

Pour tout projet comportant plus de 3 servos, utilisez toujours un PCA9685 (ou un pilote PWM 16 canaux équivalent).Cela élimine la gigue de synchronisation et protège votre Raspberry Pi.

Investissez dans une alimentation externe 5V appropriée– calculez le courant comme (0,5 A par servo) × nombre de servos + 20 % de marge.

Créer un terrain d'ententeentre le Pi, la carte pilote et l’alimentation externe – c’est la cause de panne la plus négligée.

Commencez par un test simple– contrôlez un seul servo via le driver, puis ajoutez-en d'autres un par un.

Utilisez le code fourni comme référenceet ajustez les angles et les retards en fonction de votre conception mécanique.

À retenir: Contrôler plusieurs servos avec un Raspberry Pi ne concerne pas les connexions GPIO directes. Il s'agit de déléguer la génération PWM à un pilote dédié et de fournir une alimentation indépendante et stable. En suivant les règles de câblage et d'alimentation ci-dessus, vous pouvez contrôler de manière fiable jusqu'à 16 servos pour bras de robot, hexapodes, cardans de caméra ou tout projet multi-servo. Testez d’abord votre configuration électrique, puis augmentez-la : cette approche a été éprouvée dans des centaines de versions de loisirs et éducatives.

Heure de mise à jour:2026-04-05

Alimenter l’avenir

Contactez le spécialiste des produits Kpower pour recommander un moteur ou une boîte de vitesses adapté à votre produit.

Courrier à Kpower
Soumettre une demande
+86 0769 8399 3238
 
kpowerCarte