Publié 2026-04-17
Ce guide fournit une explication claire et pratique de la manière exacte dont un microcontrôleur contrôle l'angle de rotation d'un standard.servomoteurmoteur. Vous apprendrez le principe de fonctionnement de base, le signal électrique précis requis et la méthode complète, étape par étape, pour générer ce signal à l'aide de n'importe quel microcontrôleur courant. Aucun nom de marque ou produit spécifique de l’entreprise n’est référencé – seuls des principes génériques largement applicables et des exemples concrets sont utilisés.
Une normeservomoteurle moteur faitpastourner en continu comme un moteur à courant continu ordinaire. Au lieu de cela, il se déplace vers une position angulaire spécifique (par exemple, 0°, 90° ou 180°) et maintient cette position. L'angle est entièrement contrôlé par la largeur d'une impulsion électrique envoyée toutes les 20 millisecondes (ms).
La relation directe est :
Largeur d'impulsion entre 1,0 ms et 2,0 ms → Angle entre 0° et 180°(pour les servos les plus courants)
Une impulsion de 1,0 ms → 0° (à fond dans le sens inverse des aiguilles d'une montre)
Une impulsion de 1,5 ms → 90° (position centrale)
Une impulsion de 2,0 ms → 180° (à fond dans le sens des aiguilles d'une montre)
> Exemple concret :Dans un bras robotique amateur, pour fermer complètement la pince (0°), le microcontrôleur envoie une impulsion répétée de 1,0 ms. Pour ouvrir complètement la pince (180°), elle envoie une impulsion de 2,0 ms. Pour une position semi-ouverte (90°), il envoie une impulsion de 1,5 ms.
Ce signal est appeléModulation de largeur d'impulsion (PWM)– une méthode dans laquelle le microcontrôleur émet un signal numérique qui bascule très rapidement entre ON (5 V ou 3,3 V) et OFF (0 V), et la durée de l'impulsion ON est ce que lit le servo.
Suivez exactement ces étapes pour contrôler n’importe quel servo standard avec n’importe quel microcontrôleur :
La plupart des servos standards fonctionnent avec :
tension:4,8 V – 6,0 V (alimentation,pasà partir des broches du microcontrôleur)
Tension du signal de commande :3,3 V ou 5 V (correspond au niveau logique du microcontrôleur)
Période de répétition des impulsions :20 ms (fréquence 50 Hz)
Plage de largeur d'impulsion :1,0 ms à 2,0 ms (pour 0° à 180°)
Important:Vérifiez la fiche technique de votre servo pour connaître la plage exacte de largeur d’impulsion. Certains servos utilisent 0,5 ms à 2,5 ms pour 0° à 180°, ou 1,0 ms à 2,0 ms pour 0° à 90°. Le principe reste identique.
Un servo standard a trois fils :
Note de sécurité critique :N’alimentez jamais un servo directement à partir de la broche 5 V d’un microcontrôleur. Un servo peut consommer 200 à 1 000 mA, ce qui dépasse les valeurs nominales des broches de la plupart des microcontrôleurs. Utilisez une alimentation 5 V séparée avec une masse commune.
Chaque microcontrôleur dispose de minuteries PWM intégrées. La configuration nécessite de définir deux paramètres :
Fréquence = 50 Hz(période = 20 ms)
Résolution(généralement de 8 bits à 16 bits, selon le microcontrôleur)
Exemple de calcul générique (pour n'importe quel microcontrôleur) :
Si votre résolution PWM est de 8 bits (0 à 255) et que la période totale est de 20 ms (20 000 µs) :
Impulsion de 1,0 ms → cycle de service = (1,0 ms / 20 ms) × 255 = 12,75 → utiliser 13
Impulsion de 1,5 ms → rapport cyclique = (1,5 ms / 20 ms) × 255 = 19,125 → utiliser 19
Impulsion de 2,0 ms → rapport cyclique = (2,0 ms / 20 ms) × 255 = 25,5 → utiliser 26
Cas réel :Un microcontrôleur 8 bits commun réglé sur 50 Hz PWM écrira une valeur de 13 dans le registre de comparaison PWM pour atteindre 0°, 19 pour 90° et 26 pour 180°.
La logique du code est toujours la même sur tous les microcontrôleurs :
1. Initialisez le matériel PWM avec une fréquence de 50 Hz.
2. Calculez la largeur d'impulsion requise en microsecondes pour votre angle cible à l'aide de la formule linéaire :
Largeur d'impulsion (µs) = 1000 + (angle / 180) × 1000(pour une plage de 1,0 à 2,0 ms)
Angle 0° → 1000 µs
Angle 90° → 1500 µs
Angle 180° → 2000 µs
3. Convertissez la largeur d'impulsion en valeur du registre du rapport cyclique du microcontrôleur.
4. Écrivez cette valeur sur la broche de sortie PWM.
Pseudocode générique (s'adapte à n'importe quel microcontrôleur) :
// Supposons que le temporisateur PWM soit déjà configuré pour 50 Hz, résolution 8 bits int targetAngle = 90 ; // degrés int pulseWidth_us = 1000 + (targetAngle1000/180); int dutyCycleValue = (pulseWidth_us255) / 20 000 ; setPWMDutyCycle(PWM_PIN, dutyCycleValue);
Après avoir téléchargé le code, utilisez un oscilloscope ou un analyseur logique pour vérifier le signal :
La fréquence doit être de 50 Hz(période = 20 ms)
La largeur d'impulsion doit correspondre à votre valeur calculée(par exemple, 1,5 ms pour 90°)
Problème courant dans le monde réel :Si le servo tremble ou ne bouge pas, la largeur d'impulsion est probablement incorrecte. Mesurez directement au niveau de la broche de signal. Une erreur de 0,05 ms peut provoquer un écart de 5° à 10°.
Voici un exemple complet et générique qui fonctionne sur n'importe quel microcontrôleur après une adaptation mineure de la syntaxe. La logique est ce qui compte.
Scénario:Une simple plateforme de panoramique de caméra. Le servo doit balayer de 0° à 180° et revenir en continu.
Logique de mise en œuvre étape par étape :
1. Réglez la fréquence PWM sur 50 Hz.
2. Définir une fonctiondéfinirAngle(angle)que:
Angle de serrage entre 0° et 180°
Calcule la largeur d'impulsion = 1 000 + (angle × 1 000/180) microsecondes
Convertit en valeur du registre du rapport cyclique
Écrit sur la broche PWM
3. Dans la boucle principale :
Incrémentation de l'angle de 0° à 180° par pas de 1°
AppeldéfinirAngle(angle)pour chaque étape
Attendez 15 ms (permet au servo de bouger physiquement)
Puis décrémentez l'angle à 0°
Résultat attendu :Le servo tourne en douceur d'une extrémité à l'autre, s'arrêtant précisément à chaque angle calculé.
Utilisez ce tableau pour une vérification rapide sans calculs :
Note:Si votre servo n'atteint pas exactement 0° ou 180°, ajustez légèrement les largeurs d'impulsion minimale et maximale (par exemple, 950 µs pour 0°, 2050 µs pour 180°). Ceci est normal en raison des tolérances de fabrication.
La méthode de contrôle de la largeur d'impulsion est une interface d'asservissement analogique standard utilisée depuis des décennies. Chaque servo standard – quel que soit le fabricant – répond à la même plage d'impulsions de 1,0 à 2,0 ms. Cela signifie:
Vous pouvez contrôler n'importe quel servo standard avec n'importe quel microcontrôleur produisant un PWM de 50 Hz.
La même logique de code fonctionne pour les microcontrôleurs de 8 bits à 32 bits.
Aucune bibliothèque propriétaire ou fonction spécifique à la marque n'est requise.
Principe essentiel à retenir :
> L'angle du servo estdirectement proportionnelà la largeur d'impulsion entre 1,0 ms et 2,0 ms, répétée toutes les 20 ms. Changez la largeur d’impulsion et vous changez l’angle – rien d’autre n’a d’importance.
Plan d’action immédiat à mettre en œuvre aujourd’hui :
1. Vérifiez la plage d'impulsions de votre servo– Consultez sa fiche technique pour les largeurs d’impulsion min/centre/max. La plupart utilisent 1,0/1,5/2,0 ms pour 0/90/180°.
2. Configurez le PWM de votre microcontrôleur– Configurez une broche PWM à une fréquence de 50 Hz. Utilisez le PWM matériel, et non le bit‑banging logiciel, pour des impulsions stables.
3. Écrivez la formule de conversion angle-impulsion- Utiliser:pulse_us = 1000 + (angle_deg × 1000/180).
4. Test avec trois angles connus– Commande 0°, 90° et 180°. Mesurez la position réelle de l’arbre. Ajustez les largeurs d’impulsion min/max si nécessaire.
5. Ajouter une routine d'étalonnage– Stockez les largeurs d’impulsion exactes min et max de votre servo dans le code. Cela garantit une plage parfaite de 0° à 180° malgré les variations de fabrication.
Validation finale :Après avoir suivi ce guide, vous serez en mesure de contrôler n'importe quel angle de 0° à 180° avec une précision de ±1°. La même méthode fonctionne pour les servos à rotation continue (où la largeur d'impulsion contrôle la vitesse et la direction) et pour les servos avec différentes plages d'angle (par exemple, 0°-90° ou 0°-270°) – ajustez simplement la plage de largeur d'impulsion en conséquence.
Répétez la vérité fondamentale :Un microcontrôleur contrôle l'angle d'un servo en émettant un signal PWM de 50 Hz dont le temps d'activation (largeur d'impulsion) varie de 1,0 ms (0°) à 2,0 ms (180°). Maîtrisez cette relation impulsion-angle et vous pourrez contrôler n'importe quel servo avec n'importe quel microcontrôleur.
Heure de mise à jour:2026-04-17
Contactez le spécialiste des produits Kpower pour recommander un moteur ou une boîte de vitesses adapté à votre produit.