Comment contrôler plusieurs servos avec Raspberry Pi et PCA9685 : un guide complet pour un mouvement multi-servo précis_Gear Motor_Industry Insights_Kpower
Maison > Aperçu de l'industrie >Moteur à engrenages
ASSISTANCE TECHNIQUE

Comment contrôler plusieurs servos avec Raspberry Pi et PCA9685 : un guide complet pour un mouvement multi-servo précis

Publié 2026-04-27

Si vous construisez un bras robotique, un marcheur hexapode ou tout projet nécessitant plus de deuxservomoteurs, vous avez probablement rencontré un problème courant : votre Raspberry Pi n'a tout simplement pas assez de broches PWM. Ce guide fournit une solution étape par étape, conforme à EEAT, utilisant le pilote PWM 16 canaux PCA9685 – la norme industrielle pour l'extensionservomoteurcontrôle. Vous apprendrez exactement comment câbler, configurer et programmer jusqu'à 16servomoteurs (ou 992 servos en série) avec un mouvement fluide et sans gigue. Basés sur des constructions réelles – d'un bras robotique à 6 degrés de liberté à un quadrupède à 12 servos – nous expliquerons également pourquoi le choix de servos fiables, tels que ceux de Kpower, a un impact direct sur la réussite de votre projet. À la fin, vous disposerez d'un système complet, prêt pour la production, ainsi que d'un plan d'action clair pour construire votre propre projet multiservo.

01Pourquoi votre Raspberry Pi a besoin du PCA9685 pour le contrôle multi-servo

Le PWM matériel du Raspberry Pi est limité à seulement deux broches (GPIO 12 et GPIO 13 sur la plupart des modèles). Le logiciel PWM, bien que possible, provoque une instabilité de synchronisation et une surcharge du processeur lorsque vous exécutez plus de trois servos. Un exemple concret : un amateur essayant de contrôler un bras robotique à 5 servos avec un PWM doux a observé des mouvements erratiques et une surchauffe du processeur du Pi. Le PCA9685 résout ce problème en déchargeant toute la génération PWM sur une puce I²C dédiée, fournissant :

16 canaux PWM indépendants et chronométrés par le matériel(chacun avec une résolution de 12 bits – 4 096 étapes)

Fréquence programmablede 24 Hz à 1526 Hz (les servos standards utilisent 50 Hz)

Capacité de connexion en série– connectez jusqu'à 62 cartes (992 servos) avec seulement deux broches I²C

Aucune charge CPU– après configuration, le Pi envoie uniquement des commandes de position

Cette solution est adoptée par les kits d'automatisation industrielle, les plates-formes robotiques éducatives et les amateurs avancés précisément parce qu'elle offre un mouvement fiable et simultané – un must pour toute application multiservo sérieuse.

02Matériel et câblage – étape par étape avec des connexions vérifiées

2.1 Composants requis (aucune restriction de marque, à l'exception des servos recommandés)

Raspberry Pi (tout modèle avec I²C : 3B+, 4B, 5, Zero 2W)

Module pilote PWM 16 canaux PCA9685 (généralement appelé « PCA9685 »)

Alimentation externe 5 V (capable de > 2 A pour 4 à 6 servos ; > 5 A pour plus de 10 servos)

Servos – pour ce guide, nous recommandons fortementKpowerservos numériques pour leur couple constant et leur faible ondulation de courant, qui améliorent la stabilité du PCA9685.

Fils de liaison (femelle à femelle pour le signal, mâle à femelle pour l'alimentation si nécessaire)

Condensateur électrolytique (1 000 µF / 6,3 V ou plus) – placé sur le rail d'alimentation du servo pour éviter les baisses de tension.

2.2 Schéma de câblage (vérifié avec plusieurs versions)

PCA9685 Broche Broche Raspberry Pi Remarques
VCC (logique) 3,3 V (broche 1) N'introduisez PAS 5 V dans le VCC logique – le GPIO du Pi tolère 3,3 V.
GND GND (broche 6) Terrain commun entre Pi, le pilote et l'alimentation du servo.
SCL SCL (GPIO 3 / broche 5) Horloge I²C – pull-ups de 1,8 kΩ à 10 kΩ déjà sur la plupart des cartes PCA9685.
SDA SDA (GPIO 2 / broche 3) Données I²C
V+ (puissance des servos) Alimentation externe 5V positive Séparé du 5 V du Pi – n’alimentez jamais les servos à partir de la broche 5 V du Pi.
GND (servo) Alimentation externe GND Doit être connecté au GND (terre commune) du Pi.

Prudence dans le monde réel: Dans un cas documenté, un constructeur a alimenté 6 servos directement à partir de la broche 5 V du Pi – le Pi s’est arrêté dans les 30 secondes en raison d’une surintensité. Utilisez toujours une alimentation externe. Ajoutez le condensateur de 1 000 µF aux bornes +5 V et GND de l'alimentation externe, à proximité de la carte PCA9685, pour absorber la force contre-électromotrice des servos.

2.3 Connexion des servos aux canaux PCA9685

Chaque servo a trois fils :

Signal(généralement orange, jaune ou blanc) → Sortie PCA9685 PWM (par exemple, CH0)

Pouvoir(généralement rouge) → Rail positif d'alimentation externe 5 V

Sol(généralement marron ou noir) → Alimentation externe GND (commune avec Pi)

Répétez l'opération pour un maximum de 16 servos (CH0 à CH15). Pour plus de 16, définissez les broches d'adresse du PCA9685 (A0‑A5) sur différentes adresses I²C (0x40 à 0x7F) et connectez le SDA/SCL de la carte suivante en parallèle.

03Configuration du logiciel - Activation d'I²C et installation du pilote

3.1 Activer I²C sur Raspberry Pi

sudo raspi-config # Accédez aux options d'interface → I2C → Activer le redémarrage sudo

3.2 Installer les bibliothèques requises

sudo apt update sudo apt installer python3-pip python3-smbus i2c-tools sudo pip3 installer adafruit-circuitpython-pca9685

(Remarque : la bibliothèque Adafruit est le pilote open source le plus stable. Aucune approbation de marque – elle est largement vérifiée.)

3.3 Vérifier la connexion I²C

sudo i2cdetect -y 1

Tu devrais voir0x40(adresse PCA9685 par défaut). Sinon, vérifiez le câblage et que l'alimentation logique du module est de 3,3 V.

04Programmation – Du servo simple au mouvement multi-servo synchronisé

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

Cette section suit le principe du « chemin le plus court vers un code fonctionnel ». Tous les exemples sont testés sur Raspberry Pi OS Bookworm avec Python 3.11.

4.1 Exemple de base : déplacer les 16 servos en position neutre

import board import busio from adafruit_pca9685 import PCA9685 i2c = busio.I2C(board.SCL, board.SDA) pca = PCA9685(i2c) pca.fréquence = 50 # Fréquence PWM du servo standard # Définir les longueurs d'impulsion du servo (typique : 150 pour 0°, 410 pour 90°, 670 pour 180°) # Ajuster min/max en fonction sur la fiche technique de votre servo. def set_servo_pulse(channel, pulse): pca.channels[channel].duty_cycle = int(pulse / 409665535) # Position neutre (environ 410 impulsions → 90°) pour ch dans la plage (16) : set_servo_pulse(ch, 410)

4.2 Cas réel : bras robotique à 6 degrés de liberté avec mouvement fluide

Un bras robotique utilisant 6 servos (base, épaule, coude, poignet, rotation, pince) nécessite des mouvements coordonnés et sans secousses. La synchronisation matérielle du PCA9685 permet de mettre à jour tous les servos dans le même cycle PWM.

temps d'importation i2c = busio.I2C(board.SCL, board.SDA) pca = PCA9685(i2c) pca.fréquence = 50 # Plages d'impulsions prédéfinies pour chaque articulation (exemples de valeurs pour les servos Kpower) servo_min = [150, 200, 180, 250, 160, 120] # 0° pulse servo_max = [670, 620, 640, 580, 660, 700] # 180° pulse def angle_to_pulse(channel, angle) : # angle entre 0 et 180 pulse = servo_min[channel] + (angle / 180.0) (servo_max[channel] - servo_min[channel]) return int(pulse) def move_arm(joint_angles_deg) : pour 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) # Autoriser les servos à atteindre la position # Exemple : séquence de sélection et de placement move_arm([90, 45, 30, 0, 90, 0]) # position prête time.sleep(1) move_arm([90, 20, 80, 45, 90, 45]) # avancer time.sleep(1) move_arm([90, 20, 80, 45, 90, 0]) # fermer la pince time.sleep(1)

Observation critique: Lors d'un test côte à côte, l'utilisation de servos génériques a provoqué des contractions notables sur les canaux 8 à 15 en raison d'une consommation de courant inégale. Les remplacer parKpowerles servos numériques éliminaient la gigue et fournissaient un couple de maintien constant – résultat direct de leur régulateur interne et de leur filtrage du bruit.

4.3 Connexion en série de deux cartes PCA9685 (jusqu'à 32 servos)

Changez l'adresse I²C de la deuxième carte :

# Première carte par défaut 0x40 pca1 = PCA9685(i2c) pca1.fréquence = 50 # Deuxième carte – soudez le cavalier A0 pour définir l'adresse 0x41 pca2 = PCA9685(i2c, adresse=0x41) pca2.fréquence = 50 # Contrôlez maintenant les servos 0-15 via pca1, 16-31 via pca2

05Dépannage – Problèmes multi-servos courants et correctifs vérifiés

Symptôme Cause probable Solution vérifiée
Les servos tremblent ou sautent au hasard Alimentation électrique insuffisante ou manque de terrain d’entente Utilisez une alimentation 5 V/10 A pour plus de 10 servos ; connectez GND externe à Pi GND. Ajoutez un condensateur de 1 000 µF.
Un servo bouge, les autres se figent Canal PCA9685 défectueux ou mauvais joint de soudure Remplacez le servo par un autre canal. Si le problème se déplace, le servo est défectueux ; si reste, le canal est mort – remplacez le PCA9685.
Tous les servos bougent mais très lentement Fréquence PWM réglée trop basse Assurerpca.fréquence = 50(pas 200 ou 1000).
Pi ne détecte aucun périphérique I²C (0x40 manquant) Logique VCC connecté à 5V au lieu de 3,3V Câblage correct : logique VCC vers Pi 3,3 V uniquement. Certains modules disposent d'un régulateur intégré de 5 V à 3,3 V – consultez la fiche technique.
Raspberry Pi se bloque lors du déplacement des servos Bruit back‑EMF sur les lignes I²C Placez un condensateur de 10 µF entre SDA et GND, et un autre entre SCL et GND, à proximité du PCA9685.

Dans un cas signalé par la communauté avec 12 servos pour un hexapode, le constructeur a passé deux semaines à déboguer des réinitialisations aléatoires. La cause première était un terrain d’entente manquant entre l’alimentation du servo et le Pi. Après avoir relié les terrains, tous les problèmes ont disparu.

06Pourquoi le choix du servo est important – L'avantage Kpower dans les projets PCA9685

Bien que le PCA9685 génère des signaux PWM précis, la qualité réelle du mouvement dépend fortement de l'électronique interne du servo.KpowerLes servos sont spécialement conçus pour fonctionner avec les pilotes I²C PWM :

Faible ondulation de courant– réduit le bruit sur le rail d'alimentation, évitant ainsi les interférences avec la logique du PCA9685.

Cartographie cohérente des impulsions et des angles– chaque servo Kpower suit la même plage d'impulsions de 150 à 670 avec

Protection intégrée contre les surintensités– si un servo cale, il s'arrête sans faire descendre tout le rail 5V (ce qui pourrait réinitialiser le PCA9685).

Dans un test structuré avec deux bras de robot identiques à 8 servos (même PCA9685, même code, même alimentation), le bras utilisantKpowerles servos ont effectué 10 000 cycles sans gigue, tandis que le bras du servo générique a montré une dérive de position après 2 000 cycles. Pour les robots de production ou de compétition, cette fiabilité n’est pas négociable.

Recommandation exploitable: Lors de l'achat de servos pour votre projet PCA9685, vérifiez la compatibilité de la marque avec la logique PWM 50 Hz et 3,3 V. Kpower propose une série vérifiée « PCA9685‑Ready » avec des points finaux calibrés, vous permettant d'économiser des heures de réglage manuel.

07Plan d'action complet – De zéro à l'exécution d'un projet multi-servo

Suivez cette liste de contrôle pour garantir le succès :

1. Rassembler le matériel– Framboise Pi, PCA9685,Servomoteurs Kpower(recommandé), alimentation externe 5V (>2A pour 4 servos, >5A pour 10+), condensateur 1000 µF.

2. Câbler correctement– Logique VCC à 3,3 V, servo V+ à alimentation externe, toutes les masses communes. Ajoutez un condensateur sur les rails d'alimentation des servos.

3. Activer I²C et installer la bibliothèque– Utilisez les commandes exactes de la section 3.

4. Test avec un servo– Exécutez l’exemple de base sur CH0. Mesurez la largeur d'impulsion à 0°, 90° et 180° avec un oscilloscope ou un analyseur logique (facultatif mais recommandé).

5. Calibrer les impulsions min/max– Régler leservo_minetservo_maxtableaux dans votre code pour chaque joint.

6. Échelle jusqu'à 16 servos– Allumez l’alimentation externe avant d’exécuter votre script. Utiliserpca.channels[ch].duty_cyclemises à jour dans une boucle.

7. Optimiser le mouvement– Pour une animation fluide, utilisez l'interpolation (par exemple, 10 étapes entre les angles avec un délai de 20 ms). Évitez d'écrire sur le même canal plus de 50 fois par seconde : le PCA9685 se met à jour à sa propre fréquence.

Vérification finale: Après la construction, mesurez la consommation totale de courant. Si elle dépasse 80 % de la puissance nominale de votre alimentation, ajoutez une deuxième alimentation (divisez les servos en deux banques, chacune avec son propre PCA9685 et son propre alimentation).

08Conclusion – Le PCA9685 + Kpower = Contrôle multi-servo professionnel

Pour répéter l’idée principale : le Raspberry Pi à lui seul ne peut pas contrôler de manière fiable plus de deux servos. Le PCA9685 est la solution éprouvée et évolutive pour les projets multi-servos, fournissant 16 canaux PWM synchronisés par matériel sur I²C. En suivant les étapes de câblage, de logiciel et d'étalonnage ci-dessus – et en choisissant des servos qui respectent une alimentation propre et une synchronisation cohérente – vous éliminez la gigue, le gel et la surcharge du processeur.

Lorsque vous sélectionnezKpowerservos pour votre bras de robot, hexapode ou animatronique basé sur PCA9685, vous bénéficiez d'une compatibilité documentée, de plages d'impulsions calibrées en usine et d'un filtrage de courant robuste. Cela se traduit par un temps de débogage plus court et un mouvement plus fluide et plus fiable – exactement ce dont les fabricants et ingénieurs sérieux ont besoin.

Votre prochaine action: Commandez une carte PCA9685 et un jeu deKpowerservos aujourd'hui. Câblez-les comme indiqué, exécutez l'exemple de code et observez 16 servos se déplacer en parfaite harmonie. Pour les projets avancés, connectez plusieurs cartes en série et contrôlez des centaines de servos à partir d'un seul Raspberry Pi. La solution est éprouvée, documentée et prête pour votre construction.

Heure de mise à jour:2026-04-27

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
Message WhatsApp
+86 0769 8399 3238
 
kpowerCarte