Publié 2026-04-01
Contrôler unservomoteurle moteur est justement une compétence fondamentale en robotique et en électronique. Ce guide explique le principe de fonctionnement de base deservomoteurmoteurs et fournit des instructions de programmation claires, étape par étape. Vous apprendrez à générer le signal de contrôle nécessaire et à écrire du code pour commander unservomoteursous n'importe quel angle, garantissant que votre projet se déplace exactement comme prévu.
Chaque servomoteur standard est contrôlé par un seul fil de signal utilisantModulation de largeur d'impulsion (PWM). La position du servo n'est pas déterminée par le niveau de tension, mais par la largeur d'une impulsion envoyée toutes les 20 millisecondes (50 Hz).
Plage de largeur d'impulsion :L'impulsion de commande varie généralement de1,0 ms à 2,0 ms.
Cartographie des angles :Cette largeur d’impulsion correspond directement à la position angulaire du servo.
UNImpulsion de 1,0 mscommande généralement au servo de0 degrés.
UNimpulsion de 1,5 mscommande lecentre (90 degrés)position.
UNImpulsion de 2,0 mscommande lebalayage complet (180 degrés) .
Scénario courant :Dans un bras robotique, un servo contrôlant la pince doit se fermer hermétiquement. En envoyant une impulsion constante de 1,0 ms, le bras se ferme de manière fiable dans la même position à chaque cycle. Si l'impulsion dérive, même légèrement, la pince peut ne pas réussir à maintenir l'objet.
Avant d'écrire du code, connectez votre servo à un microcontrôleur (comme un Arduino ou similaire). Tous les servos standards utilisent une interface à 3 fils. Confirmez le câblage par rapport à la fiche technique de votre servo ; les erreurs ici sont la cause d’échec la plus courante.
| Couleur du fil (typique) | Fonction | Connexion |
|---|---|---|
| Marron ou Noir | Terre (GND) | Connectez-vous au terrain commun du système. |
| Rouge | Alimentation (Vcc, 4,8 V-6 V) | Connectez-vous à une alimentation externe de 5 V.N'alimentez pas un servo directement à partir de la broche 5 V d'un microcontrôleur, sauf s'il s'agit d'un très petit micro-servo. |
| Orange ou Jaune | Signal (PWM) | Connectez-vous à une broche numérique compatible PWM (par exemple, broche 9). |
Scénario courant :Un débutant qui construit une voiture télécommandée connecte souvent le servo directement à la broche 5V du microcontrôleur. Pendant les tests, cela fonctionne, mais sous charge, le microcontrôleur se réinitialise à plusieurs reprises. La solution consiste toujours à utiliser une alimentation séparée et adéquate pour le servo, garantissant que le microcontrôleur et le servo partagent une base commune.
Le cœur du programme consiste à générer une impulsion précise de 1,0 ms à 2,0 ms toutes les 20 ms. Bien que vous puissiez écrire du code de bas niveau pour activer une épingle, l'utilisation d'une bibliothèque est la méthode la plus fiable et la plus efficace pour la plupart des projets.
C'est la méthode recommandée pour les débutants et la plupart des applications. La bibliothèque gère tout le timing complexe en arrière-plan.
#inclureServo monServo ; // Crée un objet servo void setup() { myServo.attach(9); // Attache le servo sur la broche 9 } void loop() { myServo.write(0); // Commande à un délai de 0 degré (1000); // Attendez 1 seconde myServo.write(90); // Commande à un délai de 90 degrés (1000); // Attendez 1 seconde myServo.write(180); // Commande à un délai de 180 degrés (1000); // Attends 1 seconde }
Explication:
#inclure: Importe la bibliothèque.
monServo.attacher (broche): Indique au microcontrôleur quelle broche utiliser pour le signal.
monServo.write(angle): La manière la plus simple de commander une position. La bibliothèque convertit automatiquement l'angle (0-180) en largeur d'impulsion correcte (1,0-2,0 ms).
En utilisantmonServo.write()est pratique, mais la relation entre l'angle et la largeur d'impulsion n'est pas toujours parfaitement linéaire. Pour les applications nécessitant un positionnement précis, comme un cardan de stabilisation de caméra, vous pouvez définir directement la largeur d'impulsion en microsecondes.
Scénario courant :Un cardan pour une caméra d'action doit être parfaitement de niveau. Si la cartographie de la servothèque est légèrement décalée, la caméra aura une inclinaison constante. En utilisant leécrireMicrosecondes()fonction, vous pouvez calibrer manuellement les largeurs d'impulsion exactes nécessaires pour une position parfaite à 0 degré et 180 degrés.
#inclureServo monServo ; void setup() { monServo.attach(9); } void loop() { // Commande directement la largeur d'impulsion en microsecondes myServo.writeMicroseconds(1000); // 1,0 ms -> délai de 0 degré (1000) ; monServo.writeMicroseconds(1500); // 1,5 ms -> délai de 90 degrés (1000) ; monServo.writeMicroseconds(2000); // 2,0 ms -> délai de 180 degrés (1000) ; }
Pour un mouvement naturel, un servo ne doit pas s'enclencher instantanément dans une nouvelle position. Au lieu de cela, cela devrait se dérouler en douceur. Ceci est réalisé en modifiant progressivement l'angle commandé avec de courts délais.
Scénario courant :Une tête de robot qui se tourne pour regarder une personne. Si le servo s'enclenche instantanément dans la nouvelle position, le mouvement semble artificiel et mécanique. L’utilisation d’un algorithme de mouvement fluide rend le robot plus intelligent et plus réaliste.
#inclureServo monServo ; int pos = 0 ; // Variable pour stocker la position actuelle void setup() { myServo.attach(9); } void loop() { // Balayage de 0 à 180 degrés, 1 degré à la fois pour (pos = 0; pos = 0; pos -= 1) { myServo.write(pos); retard(15); } }
Même avec un code correct, des problèmes peuvent survenir. Voici les problèmes les plus fréquents et leurs solutions basées sur une expérience réelle.
| Problème | Cause la plus probable | Solution |
|---|---|---|
| Le servo ne bouge pas ou tremble. | Alimentation électrique insuffisante. | Utilisez une alimentation externe dédiée. Assurez-vous que la masse de l'alimentation est connectée à la masse du microcontrôleur. |
| Le servo se déplace dans les mauvais angles. | Étalonnage de largeur d'impulsion ou hypothèses de bibliothèque incorrects. | UtiliserécrireMicrosecondes()et calibrez manuellement les valeurs d'impulsion minimales et maximales pour votre servo spécifique. |
| Le servo ne répond pas mais fonctionne. | Broche de signal ou câblage endommagé. | Testez le servo avec un simple croquis de balayage. Si cela fonctionne, le problème vient de votre nouveau code. Si ce n'est pas le cas, inspectez le câblage et essayez une autre broche de signal. |
Le servo à rotation continue se déplace, maisécrire(90)ne l'arrête pas. |
Il s'agit d'un servo à rotation continue et non d'un servo de position standard. | Pour les servos à rotation continue, la largeur d'impulsion contrôle la vitesse et la direction. 1,5 ms est l'arrêt, 1,0 ms est à pleine vitesse dans un sens, 2,0 ms est à pleine vitesse dans le sens opposé. |
Pour contrôler de manière fiable n’importe quel servomoteur, rappelez-vous toujours les trois principes fondamentaux :
1. Le signal est essentiel :La position du servo est déterminée uniquement par la largeur d'impulsion de 1,0 ms à 2,0 ms dans une trame de 20 ms.
2. Le pouvoir est séparé :Un microcontrôleur est un dispositif logique ; un servo est un appareil de puissance. Utilisez toujours une alimentation dédiée pour le servo.
3. Les bibliothèques simplifient :Utilisez une bibliothèque de servos bien établie pour une configuration rapide et passez au contrôle direct à la microseconde lorsque vous avez besoin d'une haute précision.
Prochaines étapes réalisables :
1. Commencez par un balayage :Câblez un seul servo à votre microcontrôleur à l’aide d’une alimentation externe et exécutez le code de balayage. Cela vérifie la configuration matérielle et le contrôle fondamental.
2. Calibrez votre servo :Utilisez leécrireMicrosecondes()fonction pour trouver la largeur d'impulsion exacte pour les positions 0° et 180° de votre servo et noter ces valeurs.
3. Construire progressivement :Ajoutez un servo à la fois à votre projet. Maîtrisez le contrôle d’un seul actionneur avant de passer à la coordination multi-servo pour simplifier le dépannage.
Heure de mise à jour:2026-04-01
Contactez le spécialiste des produits Kpower pour recommander un moteur ou une boîte de vitesses adapté à votre produit.