Maison > Aperçu de l'industrie >Lecteur personnalisé
ASSISTANCE TECHNIQUE

Comment écrire le code du servo et vous apprendre étape par étape comment régler le PWM et éviter les pièges

Publié 2026-03-02

Quand il s'agit d'écrireservomoteurcode, de nombreux amis qui débutent se retrouvent coincés ici. Il semble que le gouvernail soit facile à utiliser, mais lorsque vous écrivez réellement le code pour le contrôler, vous constaterez que divers problèmes tels qu'une rotation imprécise, une gigue et une réponse lente apparaissent. En fait,servomoteurle contrôle n’est pas si mystérieux. Si vous comprenez les principes et les pièges courants, vous pouvez également écrire un code de contrôle fluide.

Quel est le principe de la commande de l'appareil à gouverner ?

Le secret essentiel du fonctionnement de l'appareil à gouverner réside dans le signal périodique de 20 millisecondes. En termes simples, il y a un circuit de référence à l'intérieur duservomoteur, qui attend toujours un signal d'impulsion. La largeur de cette impulsion détermine l'endroit où l'arbre d'asservissement s'arrête.

Habituellement, nous utilisons une impulsion de 1,5 millisecondes correspondant à la position médiane de 90 degrés, de 0,5 milliseconde correspondant à 0 degré et de 2,5 millisecondes correspondant à 180 degrés. Vous vous demandez peut-être pourquoi doit-il être envoyé toutes les 20 millisecondes ? Il s'agit en fait d'une norme industrielle, permettant un temps de réponse et de stabilisation suffisant pour le servo.

Après avoir compris cela, vous comprendrez l'essence de l'écriture de code : ne consiste-t-il pas simplement à envoyer une impulsion d'une largeur spécifique au servo toutes les 20 millisecondes. Ne pensez pas trop compliqué, c'est le travail délicat d'un minuteur.

Comment générer cette impulsion dans le code

Le moyen le plus direct consiste à utiliser le module PWM fourni avec le microcontrôleur. Cette chose est née pour faire ça. Il vous suffit de régler la division de fréquence et la période de comptage de la minuterie de manière à ce qu'elle déborde exactement toutes les 20 millisecondes.

Réglez ensuite la valeur du registre de comparaison sur la largeur d'impulsion de l'angle correspondant. Par exemple, si vous souhaitez que le servo tourne à 0 degré, réglez le temps de niveau haut PWM sur 0,5 milliseconde. Ce processus est comme régler un réveil, définir quand sonner et combien de temps sonner.

️ Les étapes de fonctionnement spécifiques sont en fait trois étapes :

1. Initialisez la minuterie et laissez-la fonctionner à une fréquence de 50 Hz

2. Configurez le canal de sortie PWM et définissez la polarité

3. Écrivez une fonction de conversion d'angle pour mapper 0 à 180 degrés en 0,5 à 2,5 millisecondes

Si votre microcontrôleur ne possède pas de module PWM, pas de panique. Cela peut être fait en utilisant un port IO ordinaire et en ajoutant une fonction de retard, mais le processeur doit être occupé tout le temps et ne peut pas effectuer d'autres tâches.

Comment résoudre le problème de vibration constante du servo ?

Lorsque vous rencontrez un servo qui tremble comme une passoire, ne doutez pas de votre vie. Très probablement, l'impulsion de votre code est instable. Le piège le plus courant est que les interruptions interfèrent avec la génération PWM.

Par exemple, si vous activez l'interruption du port série et recevez des données pendant quelques microsecondes, l'impulsion qui doit être envoyée pendant 1,5 millisecondes devient 1,6 millisecondes et le servo tremblera. La solution consiste à donner la priorité la plus élevée à PWM, ou à utiliser le PWM matériel pour qu'il soit entièrement géré par les périphériques et ne dépende pas du processeur.

Une alimentation électrique insuffisante provoquera également des secousses. Le courant de démarrage du servo est assez important, surtout lorsqu'il est sous charge. Si le microcontrôleur se réinitialise dès que votre servo tourne, ou si le servo tremble tout seul, vérifiez rapidement l'alimentation et remplacez-la par un adaptateur secteur suffisant.

Que dois-je faire si l'appareil à gouverner ne peut pas tourner en place ?

Ce problème est en fait assez courant. Vous avez clairement calculé que 1,5 millisecondes correspond à 90 degrés, mais le servo n'a tourné qu'à 85 degrés et a arrêté de bouger. Il y a un petit détail ici. Pour différentes marques de servos, l'angle correspondant à la même largeur d'impulsion peut être différent.

Ceci est particulièrement évident pour les servos bon marché, avec de grands écarts de vitesse et une précision de potentiomètre médiocre. La solution consiste à ajouter des modifications à votre code. Écrivez une fonction d'étalonnage qui permet d'affiner la valeur de largeur d'impulsion de chaque angle dans le programme.

Il y a aussi la question des limites mécaniques. Le servo n'a pas atteint la position désignée, il est peut-être coincé par quelque chose. À ce stade, augmenter de force la largeur d’impulsion pour la faire passer ne fera que griller le servo. N'oubliez pas de limiter la largeur d'impulsion dans le code et ne laissez pas la valeur de commande dépasser la limite physique du servo.

Comment écrire un code de commande de l'appareil à gouverner multicanal

Si vous souhaitez fabriquer un robot ou un bras robotique, vous devez disposer de plusieurs appareils à gouverner. Si chaque servo utilise un canal PWM séparé, les broches du microcontrôleur ne suffiront pas. À ce stade, le panneau de commande d'asservissement ou la méthode de simulation logicielle doit être utilisé.

Il est très simple d'utiliser ce type de puce de servomoteur spécialisée. Une interface I2C peut contrôler des servos à 16 canaux. Le code est également simple. Écrivez simplement une fonction de bibliothèque pour ajuster directement l'angle. Si vous utilisez une minuterie pour le simuler vous-même, vous pouvez configurer une interruption temporisée pour traiter une impulsion de servo à la fois, à tour de rôle.

Notez que lorsque plusieurs servos fonctionnent en même temps, la pression d'alimentation sera importante. Vous pouvez concevoir une séquence de démarrage dans le code afin que les servos à courant élevé démarrent à des moments échelonnés afin qu'ils ne tournent pas tous en même temps, ce qui peut efficacement éviter les chutes de tension.

Quelles sont les techniques de débogage du code de l’appareil à gouverner ?

J'ai mis le code écrit et le gouvernail a fonctionné, mais j'avais toujours l'impression que quelque chose n'allait pas. A cette époque, il ne sert à rien de se contenter de regarder, il faut utiliser les données pour parler. Le moyen le plus simple consiste à sortir le port série et à imprimer la valeur de largeur d'impulsion envoyée à chaque fois pour voir à quel point elle diffère de la valeur théorique.

Vous pouvez également utiliser un analyseur logique pour capturer la forme d'onde PWM. Vous pouvez savoir en un coup d'œil si la largeur d'impulsion est précise et si la période est stable. De nombreux problèmes peuvent être compris d'un seul coup d'œil en examinant la forme d'onde, tels que les problèmes d'impulsion ou les périodes longues et courtes.

Une autre façon stupide de déboguer le servo est de le tester par sections. Testez d'abord la position 0 degré séparément, puis 90 degrés et enfin 180 degrés pour voir si la position de chaque point est correcte. Si un certain point est inexact, il y a fondamentalement quelque chose qui ne va pas dans le calcul correspondant à cette largeur d'impulsion.

En parlant de ça, avez-vous déjà rencontré une situation où les vitesses avant et arrière de l'appareil à gouverner sont différentes ? Bienvenue pour partager votre expérience de piège dans la zone de commentaires. Si vous le trouvez utile, donnez-lui un like et soutenez-le afin que davantage d'amis qui jouent aux servos puissent voir cet article ~

Heure de mise à jour:2026-03-02

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
+86 0769 8399 3238
 
kpowerCarte