Tutoriel de contrôle Arduino Servo PWM : Un guide simple pour le réglage de l'angle de largeur d'impulsion_BLDC_Industry Insights_Kpower
Maison > Aperçu de l'industrie >BLDC
ASSISTANCE TECHNIQUE

Tutoriel de contrôle Arduino Servo PWM : Un guide simple pour le réglage de l'angle de la largeur d'impulsion

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.

01Le langage sous-jacent du PWM : qu'est-ce qu'une « impulsion visible » ?

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.

02Hardware Battlefield : l'esthétique spatiale de Three Threads

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)

控制舵机的pwm频率_舵机pwm控制arduino_控制舵机正弦运动代码

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.

03Alchimie du code : à partir deécrire()Contrôle au niveau de la microseconde

L’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.

04Servos multicanaux et réponse dynamique

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 :

控制舵机正弦运动代码_控制舵机的pwm频率_舵机pwm控制arduino

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.

05Diagnostic des problèmes courants (format Q/A)

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é

06Résumé et suggestions d’actions

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

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