Publié 2026-05-08
tard dans la nuit. Les lumières du laboratoire sont toujours allumées.
J'ai regardé attentivement le servo immobile, tenant fermement la carte de développement STM32 dans ma main. La compilation du code était terminée et le téléchargement était réussi, mais pourquoi était-il immobile ?
Le débogueur a clignoté sur l'écran, comme s'il se moquait de moi.
Avez-vous déjà été comme ça, en parcourant la fiche technique à plusieurs reprises, mais vous ne trouvez pas cette ligne de configuration qui joue un rôle clé ?
Cette nuit-là, il y a quatre ans, j'ai utilisé STM32 pour contrôler le servo pour la première fois. Je pense que PWM est aussi simple que de changer le cycle de service. En conséquence, le servo a tremblé, puis est devenu complètement silencieux.
Plus tard, j'ai réalisé que j'avais oublié l'étape la plus critique : activer l'horloge.
Conseils d'écriture : écriture de pilotes à partir de zéro
Le servo est un enfant obéissant. Cela ne nécessite qu’un seul langage : PWM.
La période est de 20 millisecondes et le temps de haut niveau est compris entre 0,5 millisecondes et 2,5 millisecondes, ce qui est lié au servo standard.
Il existe un grand nombre de modes de minuterie STM32 qui peuvent être sélectionnés. Quelle est la différence entre PWM1 et PWM2 ? En comptant vers le haut et vers le bas, le servo se soucie-t-il vraiment de ces situations ?
Il existe trois servos à différents niveaux de prix que j'ai testés sur un projet. L'un des servos d'entrée de gamme a une bonne performance de réponse de 0,5 ms. Mais un autre servo de qualité industrielle doit rendre le temps mort précis à 1us près.
Il existe un cas comme celui-ci : l’année dernière, j’ai aidé un ami à déboguer un bras robotique à cinq axes. Ce qui est utilisé est le servo à couple moyen commun.Le code semble être en parfait état. Lorsque le rapport cyclique est ajusté de 5 % à 10 %, le servo saute simplement à deux positions extrêmes.。
Calcul des valeurs de prescaler et de rechargement automatique.
Pour STM32 à l'état 72 MHz, si vous souhaitez obtenir une fréquence PWM de 50 Hz, le coefficient de division de fréquence n'est pas déterminé arbitrairement. Chaque servo a une sensibilité différente, des zones mortes différentes et même des tensions d'alimentation différentes, ce qui entraînera une modification de son « audition ».
J'ai vu trop de gens connecter le servo directement à la broche PWM 3,3 V.
Puis il s'est plaint : « La capacité du pilote STM32 est trop faible. »
Non, vous avez oublié de mettre en quarantaine.
Invites d'écriture : comprendre la signification profonde de la fiche technique
Le débogage a duré jusqu'à trois heures. J'ai utilisé un oscilloscope pour étudier fil par fil. Au cours de l'enquête, j'ai découvert que lorsque le servo tournait, le courant montait à 1,2 A. Puis j'ai réalisé que le régulateur de tension 3,3 V de la carte de développement ne pouvait pas supporter un tel courant.
La solution est simple : alimentation externe, terrain d’entente.
![]()
Depuis, chacun de mes projets d’appareil à gouverner a suivi trois règles de fer :
Alimentation séparée pour servo (4,8 V-6 V)
Chaîne de signal de commande, résistance 1 kΩ
Le fil de terre d'alimentation est connecté de manière fiable au fil de terre STM32.
Ces trois éléments valent tout le temps de débogage.
Mais l’alimentation électrique seule ne suffit pas. La précision est l’âme du servocontrôle.
Qu’en est-il des fonctions régulières de type retard ? Oubliez ça, abandonnez-le de manière décisive. Qu'en est-il des interruptions causées par les minuteries ? C'est bon et utilisable.La méthode de fonctionnement que l'on peut vraiment qualifier de professionnelle consiste à utiliser la minuterie avancée du STM32 pour produire un PWM complémentaire et activer la fonction de freinage.。
Pourquoi? Parce que lorsque le servo reste bloqué, vous ne voulez pas qu'il grille.
Ouvrez le manuel de référence STM32. Le chapitre 14 appartient aux minuteries, le chapitre 15 appartient aux minuteries, le chapitre 16 appartient aux minuteries et le chapitre 17 appartient aux minuteries.
Les débutants ont le vertige en regardant les listes de registres. Moi aussi.
Mais il existe une page qui possède la propriété la plus importante : la table de configuration du mode de comparaison de sortie. Il peut vous indiquer quel registre contrôle le rapport cyclique, quel registre contrôle la polarité et quel registre contrôle la zone morte.
Invite d'écriture : l'importance des temps morts
Mon prochain projet nécessite une précision d'angle de servo de 0,5 degré. La plupart des servos du marché ne prennent généralement en charge qu'une résolution de 1us.; Sur une période de 20 ms, 1us correspond exactement à 0,18 degrés. D'après une analyse théorique, cette précision est suffisante.
Cependant, des tests réels ont révélé que la différence de retour des servos bon marché n'est que de 2us.
ce qu'il faut faire?
Rémunération logicielle.
Dans le code, j'ai construit une table de mappage pour associer le rapport cyclique théorique à l'angle réel selon la relation correspondante. J'ai utilisé une interpolation linéaire pour le corriger et la précision finale a atteint 0,3 degrés.
Ce cas nous dit : le matériel a des limites, mais les algorithmes peuvent y remédier.
Questions/Réponses
Q : Le servo ne bouge pas du tout, que dois-je faire ?
R : Vérifiez d’abord la tension d’alimentation et la masse commune. Utilisez un oscilloscope pour voir si le signal PWM est présent.
Q : Le servo vibre sérieusement, quelle en est la raison ?

La période est de 20 ms et il n'y a pas de problème dans le signal, mais la fréquence PWM ne correspond pas ou le rapport cyclique n'est pas stable et doit être confirmé.
Q : Que dois-je faire si la résolution PWM du STM32 n'est pas suffisante ?
R : Réduisez l'horloge de la minuterie ou utilisez le mode 16 bits, et vous pouvez également connecter un module PCA9685 externe.
Q : Comment contrôler plusieurs servos pour qu’ils se déplacent en même temps ?
R : Utilisez plusieurs canaux de la même minuterie pour produire du PWM afin d'éviter les conflits d'interruption.
Beaucoup de gens finissent d’écrire le code et l’arrêtent.
Mais un appareil à gouverner est un dispositif mécanique. Il a son propre tempérament.
Invites d'écriture : limites physiques et protection de sécurité
Dans le passé, j'ai conçu une serrure de porte automatique dans laquelle un servo tournait à quatre-vingt-dix degrés pour pousser le pêne dormant. À cette époque, le programme a été testé jusqu'à cent fois et les résultats de chaque test se sont révélés normaux. Cependant, le troisième jour après l'installation, la serrure est restée bloquée.
Lorsque le servo continue d'être bloqué, la température de la puce interne du pilote monte à 120 degrés.
Quelle est la leçon ?
Pour chaque projet d'appareil à gouverner, une protection contre les temporisations et une détection de courant doivent être ajoutées. L'ADC STM32 peut surveiller le courant de l'appareil à gouverner en temps réel. Si le courant dépasse le seuil et continue pendant 0,5 seconde, la sortie PWM sera immédiatement coupée.
Il ne s’agit pas d’une ingénierie excessive. C'est la frontière entre professionnels et amateurs.
Il y a aussi un angle mort : la position initiale du servo.
Si votre bras robotique se trouve dans une position dangereuse lorsque l'alimentation est coupée, le STM32 émettra le niveau par défaut dès sa mise sous tension. Si ce niveau s'avère être le cycle de service maximum, le servo atteindra la limite.
Tout d’abord, la solution consiste à configurer la broche de sortie du minuteur sur un état haute impédance avant l’initialisation du GPIO.Deuxièmement, la solution consiste à ajouter un signal d'activation matérielle et à attendre que le système soit stable avant de mettre le servo sous tension.。
La fiche technique ne vous indiquera pas ces détails.
La carte de développement STM32 que vous avez en main peut faire plus que simplement allumer des LED.
Il permet au servo de dessiner des cercles, d'écrire, de saisir des objets et d'ajuster les vannes.
Mais le principe est que vous êtes prêt à prendre le temps de comprendre l’origine de chaque paramètre.
Invite d'écriture : la rétroaction en boucle fermée est la solution ultime
Si vous recherchez vraiment une grande précision, abandonnez le contrôle en boucle ouverte.
Je me suis consacré à un projet de robot bionique et j'ai ajouté un retour de potentiomètre à chaque articulation. STM32 était chargé de lire la valeur ADC, de la comparer avec l'angle cible, puis d'utiliser l'algorithme PID pour ajuster le PWM. De cette façon, quelle que soit la façon dont la charge change, la position est toujours précise.
Le contrôle en boucle ouverte, c'est comme marcher les yeux bandés. Le contrôle en boucle fermée, c'est comme marcher les yeux ouverts.
Lequel choisissez-vous ?
A ce moment, revenez au laboratoire au milieu de la nuit. L'appareil à gouverner ne tournait pas, non pas parce qu'il y avait une erreur dans le code, mais parce qu'il y avait un angle mort dans mes connaissances que je ne maîtrisais pas encore complètement.
Chaque échec est une expérience d’apprentissage.
Si vous souhaitez utiliser STM32 pour réellement contrôler le servo, n'oubliez pas ces étapes :
Lisez attentivement la fiche technique du servo pour confirmer la période de modulation de largeur d'impulsion et la plage de largeur d'impulsion.
Utilisez un oscilloscope pour vérifier la forme d'onde émise par le STM32, ne vous fiez pas au calcul.
Alimentation indépendante, masse commune et résistance de protection.
Le mappage d'angle et la protection contre le délai d'attente sont ajoutés au logiciel.
Testez des conditions extrêmes : coupure de courant et redémarrage, rotor bloqué, interférence de signal.
Invites d'écriture : répétez les idées clés et agissez en conséquence
Il n’y a qu’un seul noyau : la précision est cachée dans les documents et la stabilité vient des tests.
Vérifiez votre code aujourd'hui pour voir si la valeur du préscaler est calculée correctement, si elle est mise à la terre et si l'état des broches est sûr au moment de la mise sous tension.
Reprogrammer.
Écoutez le bruit de l'appareil à gouverner qui tourne.
Il ne tremble plus.
Ça marche pour toi.
Dans le laboratoire, tard dans la nuit, les lumières sont toujours allumées.
Mais cette fois, tu souris.
Heure de mise à jour:2026-05-08
Contactez le spécialiste des produits Kpower pour recommander un moteur ou une boîte de vitesses adapté à votre produit.