Publié 2026-07-04
01Réponse rapide
Oui, vous pouvez contrôler unservomoteurmoteur utilisant un microcontrôleur STM32 en générant un signal PWM avec une fréquence précise de 50 Hz et un rapport cyclique variable entre 1 ms et 2 ms. Les périphériques de minuterie du STM32, en particulier en mode de sortie PWM, fournissent la précision nécessaire pour un fonctionnement fluide.servomoteurpositionnement. Cette méthode fonctionne pour la plupart des passe-temps standardsservomoteurs et de nombreux servomoteurs industriels, mais vous devez vérifier les niveaux de tension, les limites de courant et la compatibilité des signaux avant de vous connecter. Choisir la bonne configuration de minuterie et la bonne broche GPIO est essentiel pour un fonctionnement fiable, en particulier lors du contrôle simultané de plusieurs servos.
02Introduction
Vous construisez un système de contrôle de mouvement et le servomoteur ne répond pas comme prévu. Le bras tremble, la position dérive ou le moteur refuse tout simplement de bouger. Ces symptômes indiquent souvent une cause fondamentale commune : une génération incorrecte de signal PWM à partir du microcontrôleur. Pour les ingénieurs travaillant avec STM32, le défi ne consiste pas seulement à écrire du code : il consiste également à comprendre comment fonctionne réellement le matériel du minuteur, quelles valeurs de configuration sont importantes et pourquoi une configuration apparemment correcte peut toujours échouer.
De nombreux projets de développement stagnent à ce stade. Un servo qui se comporte de manière imprévisible pendant les tests peut retarder les délais de production, augmenter les coûts de débogage et créer une incertitude sur l'ensemble de l'architecture de contrôle. Le problème vient rarement du servo lui-même. C'est presque toujours leGénération de signaux PWMdu STM32. Sans une fréquence de base stable de 50 Hz et un contrôle précis de la largeur d'impulsion, même le meilleur servo sera sous-performant.
Cet article est destiné aux ingénieurs, aux chefs de projet et aux décideurs techniques qui doivent intégrer la servocommande dans un système basé sur STM32. Nous aborderons la configuration matérielle, la configuration de la minuterie, les erreurs courantes et les vérifications pratiques qui séparent un prototype fonctionnel d'une panne sur le terrain.
03Table des matières
1. Pourquoi la précision du signal PWM est importante pour le servocommande
2. Choisir la bonne minuterie STM32 pour le servo PWM
3. Configuration de la minuterie étape par étape pour le signal servo de 50 Hz
4. Calcul des valeurs du pré-échelonneur et de la période
5. Erreurs de configuration courantes et leurs symptômes
6. Contrôler plusieurs servos avec une seule minuterie
7. Sélection des broches GPIO recommandée
8. Questions que les ingénieurs posent souvent sur le servocommande STM32
9. Sélection de la bonne paire servo et STM32 pour votre application
04Pourquoi la précision du signal PWM est importante pour le servocommande
Un servomoteur standard interprète un signal PWM en mesurant la durée de l'impulsion haute. Une largeur d'impulsion de 1 ms commande généralement au servo de se déplacer à 0 degré, tandis que 2 ms commande 180 degrés. Le signal doit se répéter à une fréquence fixe de 50 Hz, soit une nouvelle impulsion toutes les 20 millisecondes.
Si la minuterie du STM32 génère une fréquence qui dérive, ou si la largeur d'impulsion varie ne serait-ce que de 100 microsecondes, la position du servo devient imprévisible. Dans les applications de précision, cette erreur s’aggrave. Une instabilité de 50 µs en largeur d'impulsion peut se traduire par plusieurs degrés d'erreur de position, ce qui est inacceptable pour les bras robotiques, les cardans de caméra ou les systèmes de positionnement industriels.
Le matériel de minuterie STM32, lorsqu'il est correctement configuré, offre une précision de l'ordre de la microseconde. Cependant, les paramètres d'horloge par défaut, les valeurs du pré-échelonneur et les registres de rechargement automatique doivent être calculés pour la fréquence d'horloge spécifique de votre système. Une inadéquation est ici la raison la plus courante de dysfonctionnement du servo lors des tests initiaux.
05Choisir la bonne minuterie STM32 pour le servo PWM
Toutes les minuteries d'un STM32 ne sont pas égales pour le servocommande. Les minuteries à usage général telles que TIM2, TIM3, TIM4 et TIM5 sont préférées car elles offrent des canaux indépendants, chacun capable de générer un signal PWM distinct. Les minuteries avancées comme TIM1 et TIM8 peuvent également fonctionner mais sont souvent réservées à des tâches de contrôle moteur plus complexes.
Lors de la sélection d’une minuterie, considérez :
Nombre de chaînes: Chaque canal peut piloter un servo. Si vous avez besoin de six servos, choisissez un timer avec au moins quatre canaux et utilisez un second timer pour les deux autres.
Résolution de la minuterie: Un timer 16 bits est suffisant pour les servos standards. Une minuterie 32 bits est inutile et ajoute à la complexité de la configuration.

Source d'horloge: Assurez-vous que la minuterie est connectée à une horloge qui reste stable pendant le fonctionnement. L'utilisation de l'oscillateur HSI ou HSE interne est typique, mais vérifiez la fréquence.
Un choix pratique courant est TIM3 sur une série STM32F103 ou STM32F4, configuré en mode PWM sur les canaux 1 à 4. Cette configuration fournit quatre sorties servo avec une utilisation minimale des ressources.
06Configuration de la minuterie étape par étape pour le signal servo 50 Hz
L'objectif est de générer un signal PWM avec une période de 20 ms et un rapport cyclique variable entre 1 ms et 2 ms. Voici la séquence de configuration en pseudocode, en supposant une horloge système de 72 MHz :
1. Activer la minuterie
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
2. Définir le préscaler
Un pré-échelonneur de 71 divise l'horloge de 72 MHz à 1 MHz, donnant un tic-tac toutes les 1 µs.
TIM_TimeBaseInitStructure.TIM_Prescaler = 71 ;
3. Définir la période de rechargement automatique
Une période de 19 999 donne un cycle de 20 ms (20 000 ticks × 1 µs).
TIM_TimeBaseInitStructure.TIM_Period = 19999 ;
4. Configurer le mode PWM
Réglez la largeur d'impulsion pour le canal 1. Une valeur de 1500 correspond à une impulsion de 1,5 ms, qui centre le servo.
TIM_OCInitStructure.TIM_Pulse = 1500 ;
5. Activer la sortie PWM
TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM3, ENABLE);
TIM_Cmd(TIM3, ACTIVER);
6. Réglez la broche GPIO sur une fonction alternative
Configurez la broche comme sortie push-pull AF pour connecter la sortie de la minuterie à la broche physique.
Après cette configuration, la modification de la largeur d'impulsion se fait en mettant à jour le registre CCRx :
TIM_SetCompare1(TIM3, 1000);// impulsion de 1 ms pour 0 degré
07Calcul des valeurs de pré-échelle et de période
Les formules sont simples mais doivent être appliquées correctement pour votre horloge système.

Fréquence de la minuterie= Horloge système / (Prescaler + 1)
Période PWM= (Valeur de rechargement automatique + 1) / Fréquence du minuteur
Pour une horloge de 72 MHz et une fréquence de minuterie souhaitée de 1 MHz :
Pré-échelle = 72 000 000 / 1 000 000 - 1 = 71
Pour une période de 20 ms à 1 MHz :
Valeur de rechargement automatique = 20 000 - 1 = 19 999
Si votre horloge système est de 168 MHz, comme sur certains appareils STM32F4, le préscaler devient 167 et la valeur de rechargement automatique reste 19 999. Vérifiez toujours ces chiffres dans votre environnement de développement, car une erreur à un chiffre dans le préscaler modifiera la fréquence d'une marge significative.
08Erreurs de configuration courantes et leurs symptômes
De nombreux ingénieurs rencontrent ces problèmes lors des tests initiaux :
Si le servo se comporte de manière erratique après quelques secondes, le problème est probablement un changement de source d'horloge ou une interruption de minuterie annulant la sortie PWM. Désactivez les interruptions inutiles sur le canal du minuteur pendant le débogage.
09Contrôler plusieurs servos avec une seule minuterie
Un minuteur STM32 peut piloter jusqu'à quatre servos en utilisant ses quatre canaux indépendants. Chaque canal possède son propre registre de comparaison, permettant un contrôle individuel de la largeur d'impulsion tout en partageant la même fréquence de base.
Pour contrôler six ou huit servos, utilisez deux minuteries. Par exemple, TIM3 pour les canaux 1 à 4 et TIM4 pour les canaux 1 à 4. Assurez-vous que les deux minuteries partagent le même pré-échelonneur et la même période pour maintenir une synchronisation cohérente sur tous les servos.
Une erreur courante consiste à attribuer plusieurs servos au même canal en connectant leurs fils de signal à la même broche. Cela ne fonctionne pas. Chaque servo nécessite une broche de sortie de minuterie dédiée. Planifiez l'attribution de vos broches dès le début de la phase de conception du PCB pour éviter les conflits de routage.
10Sélection des broches GPIO recommandée
La fiche technique STM32 spécifie quelles broches GPIO sont connectées à quels canaux de minuterie. Pour TIM3 sur un STM32F103 :
Canal 1 : PA6
Canal 2 : PA7
Canal 3 : PB0
Canal 4 : PB1
Ces broches doivent être configurées comme sortie push-pull à fonction alternative. N'utilisez pas de mode de sortie GPIO standard, car cela ne produira pas la forme d'onde PWM.
Lors de la sélection des broches, tenez compte des niveaux de tension. Le GPIO STM32 produit une logique de 3,3 V. La plupart des servomoteurs standards acceptent ce signal, mais certains servomoteurs industriels nécessitent une logique 5 V. Dans ce cas, utilisez unchangeur de niveauou un circuit intégré de servomoteur dédié. Ne connectez pas un signal d'asservissement 5 V directement à une broche STM32 sans vérifier la fiche technique pour la tolérance de 5 V.
11Questions que les ingénieurs posent souvent sur le servocommande STM32
Q : Puis-je utiliser n’importe quelle minuterie STM32 pour le contrôle d’asservissement ?
Oui, mais les minuteries à usage général comme TIM2 à TIM5 sont les plus simples à configurer. Les minuteries de base comme TIM6 et TIM7 n'ont pas de canaux de sortie PWM.
Q : Quelle est l’horloge système minimale requise ?
Une horloge de 16 MHz suffit pour les servos standards. Des vitesses d'horloge plus élevées comme 72 MHz donnent une résolution plus fine pour la largeur d'impulsion.
Q : Combien de servos un STM32 peut-il contrôler ?
Cela dépend du nombre de canaux de minuterie. Un STM32F103 typique possède jusqu'à quatre canaux par minuterie et vous pouvez utiliser plusieurs minuteries. Avec quatre minuteries, jusqu'à 16 servos sont possibles.
Q : Ai-je besoin d’une alimentation externe pour les servos ?
Oui. N'alimentez pas les servos directement à partir de la carte STM32. Utilisez une alimentation séparée de 5 V ou 6 V conçue pour la consommation totale de courant de tous les servos.
Q : Que se passe-t-il si la largeur d'impulsion dépasse 2 ms ?
Certains servos peuvent tenter de dépasser leurs limites mécaniques, provoquant ainsi des dommages. Fixez toujours la valeur d'impulsion entre la plage spécifiée par votre servo.
Q : Puis-je utiliser une synchronisation basée sur les interruptions au lieu du PWM matériel ?
Techniquement oui, mais ce n'est pas recommandé. Le logiciel PWM consomme des cycles de processeur et introduit de la gigue. Le matériel PWM est toujours plus fiable.
Q : Pourquoi mon servo fonctionne-t-il avec un Arduino mais pas avec un STM32 ?
La bibliothèque Arduino masque la configuration de la minuterie. Sur STM32, vous devez définir manuellement le pré-échelonneur et la période. La raison la plus courante est une valeur de pré-échelle incorrecte.
Q : Comment puis-je tester si le signal PWM est correct ?
Utilisez un oscilloscope pour mesurer le signal sur la broche GPIO. Vérifiez la fréquence (50 Hz) et la largeur d'impulsion (1 à 2 ms). Un analyseur logique est également suffisant.
Q : Est-il possible de contrôler un servo à l’aide du DMA ?
Oui, mais cela ajoute de la complexité. DMA peut mettre à jour le registre CCR sans intervention du processeur, ce qui est utile pour les mouvements synchronisés multi-servos.
Q : Que dois-je faire si le servo ne fonctionne toujours pas ?
Vérifiez la tension d'alimentation en charge. Une chute en dessous de 4,8 V peut provoquer un comportement intermittent. Vérifiez également que la masse du signal est connectée à la masse du servo.
12Sélection de la bonne paire servo et STM32 pour votre application
Votre choix de servo dépend des exigences de couple, de vitesse et de précision de votre application. Un petit servo à engrenages en plastique fonctionne pour les prototypes légers, mais pour les applications industrielles ou à service continu, envisagez un servo à engrenages en métal avec capacité de retour.
Le STM32 que vous choisissez doit avoir suffisamment de canaux de minuterie pour votre nombre de servos. Pour un projet avec quatre servos, un STM32F103C8T6 suffit. Pour seize servos, passez à un STM32F407 ou STM32F429 avec plus de minuteries et de broches.
Avant de finaliser votre conception, vérifiez lesexigences de couple des servoscontre votre charge mécanique. Si le servo cale sous charge, le STM32 ne peut pas le réparer. De même, si lealimentationne peut pas fournir le courant de crête, le servo perdra sa position.
Pour les acheteurs qui comparent les options, demandez à votre fournisseur la plage de tension de fonctionnement du servo, le courant de décrochage et les spécifications PWM recommandées. Confirmez également les capacités de minuterie du STM32 pour votre modèle spécifique. UNsolution d'asservissement personnaliséed'un fabricant commekpuissanceservomoteurpeut fournir un réglage spécifique à l'application, mais validez toujours l'interface de signal avec votre STM32 avant de vous engager dans une production en volume.
Lorsque vous êtes prêt à aller de l'avant, envoyez votrespécifications des servosetexigences de coupleà votre fournisseur. Demandez un examen technique de votre configuration PWM pour confirmer la compatibilité. Cette étape à elle seule peut éliminer des semaines de débogage et garantir que votre système de contrôle de mouvement fonctionne comme prévu.
Heure de mise à jour:2026-07-04
Contactez le spécialiste des produits Kpower pour recommander un moteur ou une boîte de vitesses adapté à votre produit.