Publié 2026-04-16
Cet article fournit un guide pratique et testé sur le terrain pour contrôler plusieursservomoteurmoteurs avec une carte Arduino. Vous apprendrez les techniques exactes de configuration matérielle, de câblage, de codage et de gestion de l'alimentation nécessaires pour déplacer plusieursservomoteurs en même temps sans gigue, décrochage ou réinitialisation de la carte. Toutes les recommandations sont basées sur des projets réels tels que des bras de robot multi-articulés, des marcheurs hexapodes et des cardans de caméra.
Contrôler simultanément plusieursservomoteurs estpasà propos d'en ajouter plusécrire()lignes dans votre code. Deux limitations physiques doivent être abordées en premier :
1. Alimentation– Chaque microservo standard peut consommer 200 à 500 mA en mouvement et jusqu'à 1 A au décrochage. Trois servos se déplaçant ensemble peuvent exiger plus de courant qu'un port USB (500 mA) ou que la broche 5 V de l'Arduino (≈800 mA max) ne peut en fournir. Le résultat : des réinitialisations soudaines de la carte, des mouvements erratiques ou des servos qui refusent de tourner.
2. Broches et minuteries PWM– Le intégréServomoteurla bibliothèque utilise des interruptions de minuterie. Sur un Arduino Uno typique, vous pouvez contrôlerjusqu'à 12 servos(broches 2 à 13) à l'aide de la bibliothèque, mais uniquement si vous n'utilisez pas également d'autres fonctions dépendantes de la minuterie (par exemple,tonifier()). Sur les cartes avec moins de minuteries (par exemple Arduino Nano), la limite pratique peut être de 8 à 10 servos. Le dépassement de la limite du minuteur entraîne un comportement imprévisible.
> Exemple concret: Un amateur construisant un bras robotique à 6 DOF (six servos) a connecté tous les servos à la broche 5 V de l'Arduino. Le bras a tremblé et le port USB s'est éteint à plusieurs reprises. La solution était une alimentation externe 5V 5A.
Si votre projet a besoin12 servos ou moinset vous disposez d'une source d'alimentation séparée, leServomoteurla bibliothèque fonctionne de manière fiable.
Connectez lefil de signalisation(généralement orange, jaune ou blanc) de chaque servo à une broche numérique Arduino différente compatible PWM (3,5,6,9,10,11 sur Uno ; les broches 2 à 13 fonctionnent également mais certaines utilisent un logiciel PWM).
Connectez toutfils de terre(marron ou noir) à un rail de masse commun –celui-ci doit également se connecter au GND de l'Arduino.
Connectez toutfils d'alimentation(rouge) auborne positive d'une alimentation externe 5V(jamais sur la broche 5V de l'Arduino pour plus de 2 petits servos). L'Arduino lui-même est alimenté séparément (via USB ou sa propre prise d'alimentation).
#inclureServoservo1 ; Servoservo2 ; Servoservo3 ; void setup() { servo1.attach(9); servo2.attach(10); servo3.attach(11); } void loop() { // Déplacez les trois servos de 0° à 180° en même temps pour (int pos = 0; pos = 0; pos--) { servo1.write(pos); servo2.write(pos); servo3.write(pos); retard(10); } délai (1000); }
Note: Leretard(10)est essentiel. Sans cela, lepourla boucle écrit de nouveaux angles plus rapidement que les servos ne peuvent répondre, provoquant un mouvement saccadé.
Plus de 12 servos– La bibliothèque ne compilera pas ou provoquera des conflits de minuterie.
Servos à couple élevé ou à rotation continue– Leurs pointes de courant sont trop importantes pour le régulateur interne de l’Arduino, même avec une alimentation externe ? (Non, l'alimentation externe résout le problème, mais l'intégrité du signal peut souffrir avec des fils longs.)
Besoin d'un contrôle de vitesse indépendant ou d'une synchronisation précise- LeServomoteurla bibliothèque définit uniquement les angles cibles ; il ne vous permet pas de contrôler la vitesse de chaque servo individuellement.
Pourplus de 12 servosou des projets nécessitant un mouvement fluide et indépendant (par exemple, animatroniques, robots humanoïdes à 16 servos), utilisez unModule pilote PWM 16 canauxcommuniquant via I²C. C'est la solution professionnelle.
Le pilote génère jusqu'à 16 signaux PWM distincts sans utiliser de minuterie Arduino.
Seules deux broches analogiques (SDA, SCL) sont nécessaires pour contrôler les 16 servos.
La plupart des pilotes disposent d'un bornier intégré pour une alimentation externe de 5 à 6 V pouvant fournir 5 à 10 A.
1. Connectez le piloteVCCà Arduino 5V (pour alimenter le côté logique).
2. Connectez le piloteGNDà Arduino GND.
3. Connectez le piloteSDAà Arduino A4 (ou broche SDA dédiée).
4. Connectez le piloteSCLà Arduino A5 (ou broche SCL dédiée).
5. Connectez-vousalimentation externe 5V 5A+à la borne d’alimentation du conducteur.
6. Branchez jusqu'à 16 servos sur la carte pilote (signal, alimentation, masse).
#inclure#inclure// Bibliothèque de pilotes génériques – aucune approbation de marque // L'adresse 0x40 est par défaut pour la plupart des pilotes à 16 canaux Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40); // Limites de largeur d'impulsion du servo (généralement 150 à 600 pour 0° à 180°) #define SERVOMIN 150 #define SERVOMAX 600 void setup() { pwm.begin(); pwm.setOscillatorFrequency(27000000); pwm.setPWMFreq(50); // Fréquence d'asservissement analogique standard } // Fonction pour déplacer un servo spécifique (0-15) vers un angle (0-180°) void setServoAngle(uint8_t canal, int angle) { int pulse = map(angle, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(canal, 0, impulsion); } void loop() { // Déplacez les 16 servos en douceur de 0° à 180° et inversement for (int angle = 0; angle = 0; angle--) { for (int ch = 0; ch
Avantage clé: Nonretard()à l'intérieur de la boucle per-servo ? En fait, le code ci-dessus déplace tous les servos d'un pas toutes les 8 ms, produisant un mouvement parfaitement synchrone.
Un robot hexapode à 12 servos utilisant la bibliothèque standard a subi des contractions aléatoires des jambes lors de la marche. Le passage à un pilote PWM à 16 canaux a éliminé tous les conflits de synchronisation et a permis au robot de transporter une charge utile de 1 kg car l'alimentation externe délivrait un 5 V 8 A stable.
1. Commencez par le pouvoir– Pour plus de 3 servos standard, utilisez toujours une alimentation externe de 5 V (minimum 2 A pour 3 servos, 5 A pour 8 à 10 servos). Connectez la masse d'alimentation à la masse de l'Arduino.
2. Comptez vos servos– ≤10 servos → le standardServomoteurla bibliothèque va bien. ≥12 servos ou toute gigue → achetez un module pilote PWM à 16 canaux (coût moins de deux servos).
3. N’alimentez jamais les servos à partir de la broche 5 V de l’Arduino– Cette broche est uniquement destinée aux capteurs et aux appareils à faible courant.
4. Utiliser un terrain d’entente– Tous les servos, l'Arduino et l'alimentation externe doivent partager une connexion à la terre. Sans cela, les signaux PWM n’ont aucun sens.
5. Écrire du code non bloquant– Pour les projets où l'Arduino doit également lire des capteurs ou communiquer, remplacezretard()avec une minuterie basée sur millis() qui met à jour les positions des servos toutes les 10 à 20 ms.
6. Tester progressivement– Commencez avec un servo sur l’alimentation externe. Ajoutez les servos un par un tout en surveillant les chutes de tension (utilisez un multimètre). Si la tension tombe en dessous de 4,8 V pendant le mouvement, mettez à niveau l'alimentation.
Le contrôle multiservo simultané représente 80 % de gestion de l'énergie et 20 % de code.Vous pouvez utiliser la normeServomoteurbibliothèque pouvant accueillir jusqu'à 12 servos, mais uniquement avec une alimentation dédiée qui n'est jamais tirée de la carte Arduino. Pour des projets plus importants ou des performances sans problème, un module pilote PWM sur I²C est la solution professionnelle et éprouvée. Mettez toujours tout à la terre ensemble, dimensionnez toujours votre alimentation en fonction du courant de décrochage de pointe et testez toujours chaque servo individuellement avant le mouvement de groupe.
Votre action immédiate: Comptez les servos dans votre projet. S'il y en a plus de 10, commandez dès aujourd'hui un pilote PWM 16 canaux et une alimentation 5 V 5 A. Utilisez ensuite le deuxième exemple de code ci-dessus – il fonctionnera lors de votre premier téléchargement.
Heure de mise à jour:2026-04-16
Contactez le spécialiste des produits Kpower pour recommander un moteur ou une boîte de vitesses adapté à votre produit.