Publié 2026-05-06
Sous-titre : Le guide du professionnel sur la modulation de largeur d’impulsion
Du pouls à l’angle, chaque degré est sûr.
L'essence fondamentale du contrôle et de la gestion de l'appareil à gouverner est d'analyser l'existence du « temps ».Dans la plage du signal PWM, il existe une largeur de niveau haut qui détermine l'état de l'arbre.. Pour les développeurs Arduino, être capable de maîtriser ce contenu technique équivaut à acquérir un pouvoir de commande sur les articulations mécaniques. Cet article vous guidera à travers le processus complet depuis le début du principe jusqu'à l'étape de débogage, afin que les situations de gigue et de déviation puissent être éliminées.
Imaginez un mythe, 50 fois par seconde, vous remettez une "lettre" au servo. Au niveau du poids de la lettre, lorsque le niveau haut dure 1,5 ms, le servo reste à 90°, 0,5 ms correspond à 0° et 2,5 ms correspond à 180°. C'est le rythme respiratoire du PWM.
Période fixe : 20 ms (50 Hz)
Largeur d'impulsion variable : 0,5 ms ~ 2,5 ms
Cartographie d'angle : correspondance linéaire, mais des différences individuelles existent
Le fait est que si vous ignorez la stabilité du signal, vous serez témoin d'une gigue de type "Parkinson" dans le servo. À l'inverse, si Arduino est utilisé pour piloter directement un servo haute puissance, le régulateur 5 V intégré surchauffera et redémarrera, une alimentation externe de 4,8 à 6 V doit donc être connectée.
Le scénario pour le lecteur est le suivant : vous construisez un robot à six pattes et l’une des jambes souffre soudainement de convulsions. Lors de la mesure, vous pouvez constater qu'une différence de tension est générée dans la boucle de masse et que la forme d'onde PWM est déformée. Après correction, sa démarche retrouve un état élégant.
En partant de la carte Arduino (perspective localisée), disposez-la dans l'ordre spatial :
1. ligne de signalisation(Orange/Blanc) → Connectez la broche PWM (comme D9)

2. Fil positif(Rouge) → BEC externe ou pôle positif de la batterie
3. fil négatif(marron/noir) → terrain d'entente (A ne pas manquer à coup sûr)
A titre d'exemple, il existe un projet de bras robotique dans lequel le servo fonctionne normalement lorsqu'il est déchargé, mais il tourne de manière aléatoire lorsqu'il ramasse des objets lourds. La raison en est que la longueur de boucle du fil de terre est trop longue, ce qui introduit du bruit et provoque ce phénomène. La solution consiste à ajouter un condensateur de 100 µF à côté du servo et à raccourcir la longueur du fil de terre commun.
Pour rappel, si vous utilisezkpuissanceLe servo, un servo de haute précision, a une vitesse de réponse très rapide et est plus sensible à la gigue du bord d'attaque. Il est recommandé de connecter une résistance de 330 Ω à la ligne de signal pour supprimer la sonnerie.
écrire()Contrôle au niveau de la microsecondeL’environnement Arduino fournit la bibliothèque Servo, mais la comprenez-vous vraiment ?
#inclureServo monServo ; void setup() { monServo.attach(9, 500, 2500); // Lier la broche et personnaliser la plage de largeur d'impulsion } void loop() { myServo.writeMicroseconds(1500); // Écrit directement les microsecondes → 90° delay(500); }
Il y a des phrases omises. Les paramètres par défaut de attach() sont de 544 à 2400µs. Or, dans les faits, l'asservissement est généralement compris entre 500 et 2500µs. Si l’étalonnage n’est pas effectué, l’angle s’écartera.。
Calibrez le signal, extrayez-le comme premier mot-clé et supprimez trois points de mesure réels, qui sont 0° équivaut à 520 µs, 90° équivaut à 1480 µs et 180° équivaut à 2460 µs. Obtenez la table de mappage par interpolation linéaire, stockez la table de mappage dans l'EEPROM et lisez-la à chaque mise sous tension. Cette étape doit être effectuée pour les projets de niveau professionnel.
Ce que le lecteur a constaté, c'est que lorsque vous entrez write(90), la sortie est de 87°. Ce n’est pas qu’il y ait une erreur, mais que vous ne l’avez pas calibré. Vous devez exécuter une fonction d'étalonnage, puis l'angle peut pointer avec précision vers la position que vous avez définie.
Contrôler 12 servos ? Le nombre de broches PWM est limité. Le module PCA9685 est recommandé, qui convertit I2C en PWM 16 canaux. Il libère les ressources du Timer et sa fréquence de sortie est indépendante.
Raisonnement inductif : Du simple servo au multi-servo, modes de défaillance courants :

Courant insuffisant → Chaque servo est bloqué en fonction du courant1,5 fois l'alimentation totale calculée
Conflit de fréquence d'images → Tous les servos doivent partager le même cycle (20 ms)
Blocage de la mise à jour → utiliser un délai non bloquant ou une interruption de minuterie
Rythme de changement de vitesse : à basse vitesse, la largeur d'impulsion change progressivement et est douce ; à grande vitesse, la charge doit être prévue. La réponse dynamique, le deuxième mot-clé, fait référence à la capacité en temps réel du servo à suivre les instructions. La méthode d'optimisation consiste à utiliser writeMicroseconds() pour écrire la valeur directement afin d'éviter la surcharge causée par la conversion de l'angle en largeur d'impulsion dans la bibliothèque.
Q : Après la mise sous tension, le servo tourne violemment vers le bas et vibre ?
La ligne de signal est dans un état flottant ou la broche n'est pas configurée pour la sortie. Le niveau haut par défaut est lu par erreur comme la largeur d'impulsion limite. Vérifiez immédiatement la configuration de la connexion.。
Q : Il reste bloqué en pleine rotation et s'accompagne d'un bruit de « grésillement » ?
Pour le cas A, il y a une chute de tension ou une surcharge du variateur. Si la tension de fonctionnement mesurée est inférieure à 4,5 V, l'alimentation doit être remplacée. Supprimez également les points de blocage mécaniques.
Q : Avec le même code, certains servos sont normaux et certains sont inversés ?
R : La polarité de la cartographie de la largeur d’impulsion et de l’angle des différentes marques est opposée. La valeur de largeur d'impulsion correspondant à 0° et la valeur de largeur d'impulsion correspondant à 180° sont échangées pour réécrire le mappage.
Q : Comment puis-je rester immobile pendant longtemps sans avoir chaud ?
Faux, c'est une erreur d'arrêter d'envoyer du PWM. Il doit être envoyé en continu pour maintenir la largeur d'impulsion. Réduire la fréquence de rafraîchissement à 20 Hz peut avoir un effet de refroidissement.
Q : Le servo saute de manière aléatoire lorsque l'Arduino est réinitialisé ?
R : Pendant la période de réinitialisation, la broche passera à un état à haute impédance.Ajoutez une résistance pull-down de 10k à la terre ou utilisez plutôt un support PWM dédié。
En regardant le cœur, la précision du PWM se résume au produit de l’influence de la qualité de l’énergie, des résultats de l’étalonnage de la largeur d’impulsion, de l’état stable de la synchronisation et des trois phases. Si l’un de ces éléments manque, cela peut être considéré comme totalement insatisfaisant.
Historiquement, les servos analogiques s'appuient sur des potentiomètres pour le retour, et les servos numériques s'appuient sur des MCU pour l'analyse. Cependant, la couche inférieure est toujours PWM.. La tendance à l'avenir pointe vers les servos de bus série, tels que l'UART semi-duplex, mais le PWM reste la référence dans l'éducation et les petits projets en raison de sa simplicité.
Vos prochaines étapes :
Mesurez réellement la forme d'onde avec un oscilloscope ou un analyseur logique (même un module bon marché vaut mieux que de deviner à l'aveugle))
Créez des courbes d'étalonnage indépendantes pour chaque servo
Laisser une marge actuelle (au moins 50%) dans le projet
Inversion de perception : L'appareil à gouverner n'est pas une boîte noire, mais un praticien de l'art du temps. Chaque impulsion que vous envoyez trace un angle.
À ce moment, récupérez l’Arduino, connectez le servo et démarrez votre première opération d’écriture en microsecondes. Cette rotation précise vous donnera un feedback correspondant à tous vos efforts.
L'angle est une information, la largeur d'impulsion est la puissance. Prenez-en le contrôle. *
Heure de mise à jour:2026-05-06
Contactez le spécialiste des produits Kpower pour recommander un moteur ou une boîte de vitesses adapté à votre produit.