Publié 2026-04-13
La modulation de largeur d'impulsion (PWM) est la méthode standard utilisée pour contrôler avec précision la position angulaire d'un passe-temps standard.servomoteurmoteur. En faisant varier la largeur de l'impulsion électrique envoyée auservomoteurtoutes les 20 millisecondes, vous pouvez commander leservomoteurpour se déplacer selon un angle spécifique, généralement compris entre 0 et 180 degrés. Ce guide fournit les spécifications exactes du signal, la logique de contrôle étape par étape, des exemples pratiques et des conseils de dépannage afin que vous puissiez mettre en œuvre immédiatement le servocontrôle PWM.
Un servomoteur standard contient un petit circuit de commande qui lit le signal PWM entrant. La position de l'arbre de sortie du servo est déterminée uniquement par lelargeur d'impulsion(durée du signal haut) dans une trame fixe de 20 ms (50 Hz). La relation est linéaire : une largeur d'impulsion spécifique équivaut à un angle cible spécifique.
Mappage impulsion-angle standard (pour servos 0-180°) :
0 degrés :Impulsion de 0,5 ms (500 microsecondes)
90 degrés (neutre) :Impulsion de 1,5 ms (1 500 microsecondes)
180 degrés :Impulsion de 2,5 ms (2 500 microsecondes)
Ces valeurs sont les normes de l'industrie. Vérifiez toujours la fiche technique de votre servo, mais plus de 95 % des servos standard suivent cette cartographie exacte.
Pour contrôler l'angle du servo, vous devez générer un signal répétitif avec deux paramètres clés :
Le servo attend une nouvelle impulsion toutes les 20 millisecondes. Cela signifie que la fréquence PWM est de 1/0,02 s = 50 Hz. Ne changez pas cette fréquence ; sinon le servo tremblera ou ne répondra pas.
Utilisez cette formule d'interpolation linéaire :
Largeur d'impulsion (ms) = 0,5 + (angle / 180) 2.0
Par exemple:
Angle = 45° → Impulsion = 0,5 + (45/180)2,0 = 0,5 + 0,5 =1,0 ms
Angle = 135° → Pouls = 0,5 + (135/180)2.0 = 0.5 + 1.5 = 2,0 ms
En pratique, vous réglez une minuterie : sortie HIGH pour la largeur d'impulsion (par exemple, 1,5 ms), puis sortie LOW pour le temps restant (20 ms – 1,5 ms = 18,5 ms). Répétez continuellement.
Imaginez que vous ayez un servo connecté à un bras robotique. Vous voulez qu’il se déplace de complètement à gauche (0°) à complètement à droite (180°) par étapes.
Séquence du signal (chaque ligne correspond à un cycle de 20 ms) :
Cycle 1 : ÉLEVÉ pendant 0,5 ms → Le servo se déplace à 0°
Cycle 2 : ÉLEVÉ pendant 1,0 ms → Le servo se déplace à 45°
Cycle 3 : ÉLEVÉ pendant 1,5 ms → Le servo se déplace à 90°
Cycle 4 : ÉLEVÉ pendant 2,0 ms → Le servo se déplace à 135°
Cycle 5 : ÉLEVÉ pendant 2,5 ms → Le servo se déplace à 180°
Comportement observé :Le servo passera à chaque angle et maintiendra cette position. Il ne dérive pas car le circuit de commande reçoit en permanence la largeur d'impulsion cible.
Vous pouvez générer le signal PWM requis en utilisant :
Modules de minuterie/compteur de microcontrôleur– Mettre en place un PWM 50 Hz avec cycle de service variable. Cycle de service = (largeur d'impulsion / 20 ms) 100 %. Pour une impulsion de 1,5 ms, rapport cyclique = 7,5 %.
Bit-banging logiciel– Contrôlez directement une broche GPIO avec des délais. Moins précis mais fonctionne pour l'apprentissage.
Modules de servomoteurs dédiés– Ces valeurs de précision de synchronisation de déchargement nécessitent toujours la même plage d'impulsions de 0,5 à 2,5 ms.
Exigence critique de précision :La précision de la largeur d’impulsion doit être de ±10 µs (microsecondes). Une gigue ou des angles erronés se produisent si votre timing est décalé de plus de 20 µs.
Cas réel :Une erreur courante consiste à utiliser une plage de 1,0 à 2,0 ms, car certaines bibliothèques de microcontrôleurs utilisent cette valeur par défaut. Un utilisateur a signalé que son servo ne tournait qu'à 90° au total. Après avoir modifié la plage d'impulsions entre 0,5 et 2,5 ms, une rotation complète de 180° a été rétablie.
PWM contrôle l'angle du servo par largeur d'impulsion, et non par rapport cyclique seul.Pendant une période fixe de 20 ms, le temps haut absolu (0,5 à 2,5 ms) détermine la position.
La relation est linéaire :largeur d'impulsion = 0,5 ms + (angle/180)*2,0 ms.
Utilisez toujours 50 Hz (période de 20 ms).Toute autre fréquence entraînera un comportement erratique ou aucun mouvement.
Vérifiez vos largeurs d’impulsion minimales et maximales.La plupart des problèmes proviennent d'une plage d'impulsions incorrecte et non d'une défaillance matérielle.
Suivez ces étapes immédiatement pour obtenir des résultats cohérents :
1. Mesurez la réponse réelle de votre servo.Envoyez des impulsions de 0,5 ms, 1,5 ms et 2,5 ms. Marquez les angles physiques. S'ils ne sont pas 0°, 90°, 180°, enregistrez la cartographie réelle impulsion-angle.
2. Ajoutez une marge de sécurité de 100 à 200 µsaux deux extrémités (impulsion min = 0,6 ms, max = 2,4 ms) pour éviter toute liaison mécanique.
3. Utilisez un matériel de minuterie dédiéau lieu de retards logiciels lorsque cela est possible. Le PWM basé sur une minuterie maintient la précision même lorsque votre code principal est occupé.
4. Test avec un analyseur logique ou un oscilloscopepour confirmer les largeurs d’impulsion. De nombreuses simulations logicielles cachent des erreurs de timing.
5. Pour les projets multi-servos,gardez l’alimentation électrique séparée de l’alimentation logique. Un servo bloqué peut consommer 1 à 2 A, provoquant des chutes de tension qui corrompent les signaux PWM.
By strictly adhering to the 0.5–2.5 ms pulse width range within a 20 ms period, you will achieve precise, repeatable angle control on any standard servo motor. Mettez d'abord en œuvre l'étape de mesure, puis affinez votre code et votre servo se déplacera exactement là où vous le commandez.
Heure de mise à jour:2026-04-13
Contactez le spécialiste des produits Kpower pour recommander un moteur ou une boîte de vitesses adapté à votre produit.