Comment contrôler l'angle d'un servomoteur avec un microcontrôleur : un guide complet étape par étape_Gear Motor_Industry Insights_Kpower
Maison > Aperçu de l'industrie >Moteur à engrenages
ASSISTANCE TECHNIQUE

Comment contrôler l'angle d'un servomoteur avec un microcontrôleur : un guide complet étape par étape

Publié 2026-04-17

01Comment contrôlerservomoteurAngle de moteur avec un microcontrôleur : un guide complet étape par étape

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.

1. Principe de base : la modulation de largeur d'impulsion (PWM) détermine directement l'angle

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 msAngle 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.

2. Étape par étape : comment le microcontrôleur génère l'impulsion correcte

Suivez exactement ces étapes pour contrôler n’importe quel servo standard avec n’importe quel microcontrôleur :

Étape 1 : Identifiez les exigences en matière de signal du servo

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.

Étape 2 : Connectez correctement le servo au microcontrôleur

Un servo standard a trois fils :

Couleur du fil (typique) Fonction Connexion
Marron ou Noir Terre (GND) Terre du microcontrôleur
Rouge Alimentation (VCC, 5 V) Alimentation externe 5 V (n'utilisez pas la broche 5 V du microcontrôleur pour plus d'un petit servo)
Orange ou Jaune Signal (PWM) Broche numérique du microcontrôleur compatible PWM

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.

Étape 3 : configurer le matériel PWM du microcontrôleur

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°.

Étape 4 : Écrivez le code du microcontrôleur pour définir l'angle souhaité

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);

Étape 5 : Vérifier avec des mesures réelles

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°.

3. Exemple complet : Contrôler un servo de 0° à 180° et inversement

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é.

4. Tableau de vérification critique : largeur d’impulsion par rapport à l’angle

Utilisez ce tableau pour une vérification rapide sans calculs :

Angle souhaité Largeur d'impulsion requise (µs) Cycle de service à 50 Hz, 8 bits (0–255)
1000 13
45° 1250 16
90° 1500 19
135° 1750 22
180° 2000 26

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.

5. Pourquoi cette méthode est universelle et fiable

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.

6. Problèmes courants du monde réel et leurs solutions

Problème Cause la plus probable Solution
Le servo ne bouge pas du tout Pas d'alimentation au servo ou connexion à la terre incorrecte Connectez l'alimentation du servo à une alimentation externe de 5 V et à une masse commune avec le microcontrôleur.
Le servo vibre ou tremble La largeur d'impulsion est instable ou la fréquence n'est pas exactement de 50 Hz Vérifiez la configuration PWM ; utiliser le PWM matériel au lieu des boucles de retard logicielles
Le servo se déplace uniquement à 0° et 180°, pas à des angles intermédiaires Le code envoie uniquement des largeurs d'impulsion minimales et maximales Vérifier la formule de calcul ; mesurer la largeur d'impulsion avec un oscilloscope
Le servo devient très chaud La fréquence d'impulsion est trop élevée (par exemple, 300 Hz au lieu de 50 Hz) Reconfigurer PWM à exactement 50 Hz (période de 20 ms)
La position du servo dérive avec le temps La tension d'alimentation est instable Ajoutez un grand condensateur (1 000 µF) sur les lignes électriques des servos

7. Conclusion exploitable : vos prochaines étapes exactes

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

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