Publié 2026-04-11
Contrôler la vitesse d'unservomoteurLe moteur est une exigence courante dans de nombreux projets de robotique et d’automatisation. Contrairement à un moteur à courant continu standard dans lequel vous ajustez directement la tension ou le cycle de service PWM pour modifier la vitesse, un moteur positionnel standardservomoteurne dispose pas d'une entrée de contrôle de vitesse dédiée. Au lieu de cela, il se déplace vers un angle commandé aussi vite que son engrenage interne et son moteur le permettent. Cependant, vous pouvez toujours contrôler la vitesse effective duservomoteurLe mouvement de en utilisant des techniques basées sur un logiciel ou en sélectionnant des servos avec des fonctionnalités de régulation de vitesse intégrées. Ce guide fournit des méthodes pratiques et exploitables pour contrôler la vitesse des servos, basées sur des tests réels et des pratiques courantes de bricolage. Toutes les techniques sont expliquées sans référence à des marques spécifiques, garantissant que vous pouvez les appliquer à n'importe quel système d'asservissement standard.
La méthode la plus largement utilisée pour contrôler la vitesse du servo consiste à déplacer le servo progressivement de son angle actuel à l'angle cible, avec de petits délais entre chaque étape. Cette technique fonctionne avec n'importe quel servo de position standard et ne nécessite aucun matériel spécial.
Mise en œuvre étape par étape :
1. Lire l'angle actueldu servo (si votre contrôleur prend en charge le retour de position) ou stockez le dernier angle commandé dans une variable.
2. Calculer la différenceentre l’angle cible et l’angle actuel.
3. Divisez le mouvementen petits incréments égaux. Par exemple, si vous devez passer de 0° à 90°, vous pouvez utiliser des incréments de 1° ou 2°.
4. Parcourez chaque incrément– écrire le nouvel angle intermédiaire sur le servo, puis attendre un court délai (typiquement 10 ms à 50 ms).
5. Répétez jusqu'à ce que l'angle cible soit atteint.
Exemple de pseudocode (fonctionne sur Arduino, ESP32, Raspberry Pi et la plupart des microcontrôleurs) :
current_angle = 0 target_angle = 90 step_size = 1 // degrés par pas delay_ms = 20 // millisecondes entre les pas si current_angle
Effet sur la vitesse :
Taille de pas plus grande → mouvement global plus rapide (mais peut paraître saccadé)
Taille de pas plus petite → mouvement plus fluide (mais plus de pas, temps total plus long)
Délai plus long → vitesse apparente plus lente
Délai plus court → mouvement plus rapide, se rapprochant de la vitesse maximale naturelle du servo
Exemple concret :Dans un bras robotique ramassant un petit objet, l'utilisation de pas de 2° avec un délai de 15 ms crée un mouvement fluide, semblable à celui d'un humain, qui empêche les objets de tomber. Sans contrôle de la vitesse, le bras peut trembler et renverser des objets à proximité.
Certains servos sont conçus pour accepter directement les commandes de vitesse. Il existe deux types courants :
A) Servos à rotation continue
Ces servos n'ont pas de limites d'angle ; ils tournent continuellement. La vitesse est contrôlée par la largeur d'impulsion :
Impulsion de 1,5 ms → arrêt
1,5 ms à 2,5 ms → une direction, vitesse croissante
1,5 ms à 1,0 ms → sens opposé, vitesse croissante
![]()
B) Servos intelligents (communication série, par exemple UART, I²C ou RS485)
Ces servos acceptent des commandes telles que « se déplacer vers l'angle X à la vitesse Y ». Vous envoyez des paquets de données structurés contenant l'angle cible, la vitesse de rotation et parfois l'accélération. Référez-vous toujours à la fiche technique du servo spécifique pour connaître le format de commande. Aucun nom de marque n’est nécessaire – le principe s’applique universellement.
Quand utiliser cette méthode :
Vous avez besoin d’un contrôle de vitesse précis et reproductible sans écrire de code de rampe complexe.
Votre projet comporte de nombreux servos et vous souhaitez réduire la charge de traitement du microcontrôleur.
Vous avez besoin d’un contrôle de l’accélération (allègement et sortie) pour un mouvement extrêmement fluide.
Pour les servos analogiques standard, le taux de rafraîchissement (fréquence PWM) est généralement de 50 Hz (période de 20 ms). Changer la fréquence n'est pas une méthode de contrôle de vitesse fiable car les servos s'attendent à un taux de rafraîchissement stable. Cependant, certains servos numériques acceptent des taux de rafraîchissement plus élevés (jusqu'à 300 Hz ou plus). L'augmentation du taux de rafraîchissement peut accélérer la réponse du servo, mais cela ne vous donne pas un contrôle direct de la vitesse – cela modifie uniquement la fréquence à laquelle le servo met à jour sa position.
Recommandation:Ne comptez pas sur la fréquence PWM pour contrôler la vitesse. Tenez-vous-en à la rampe logicielle ou aux servos intelligents pour des résultats prévisibles.
Déplacer le servo trop rapidement dans le logiciel :Si vous réglez la taille de pas à 10° avec un délai de 1 ms, le servo se déplacera toujours à sa vitesse mécanique maximale – les commandes intermédiaires sont ignorées car le servo ne peut pas physiquement suivre. Testez toujours le taux de réponse maximum de votre servo.
Code de blocage :Utiliser longtempsretard()les fonctions empêchent votre programme d’effectuer d’autres tâches. Utilisez un timing non bloquant (par exemple,millis()dans Arduino) pour le multitâche.
En supposant que tous les servos ont la même courbe de vitesse :Même deux servos du même modèle peuvent présenter de légères différences de vitesse en raison des tolérances de fabrication. Calibrez les retards d’étape de manière empirique.
La seule façon universelle de contrôler la vitesse d'un servo de position standard est de diviser le mouvement angulaire souhaité en plusieurs petites étapes et d'insérer un délai entre chaque étape.Aucune modification matérielle n'est nécessaire. Cette méthode fonctionne sur chaque microcontrôleur, chaque marque de servo et chaque échelle de projet. Pour les applications nécessitant un contrôle de vitesse dédié, utilisez des servos à rotation continue ou des servos série intelligents qui acceptent la vitesse comme paramètre de commande.
1. Identifiez votre type de servo– est-ce une rotation positionnelle, continue ou intelligente ?
2. Pour les servos de position :Écrire une fonctionmoveServoSmooth (actuel, cible, stepSize, delayMs)et testez avec stepSize = 1° et delayMs = 20 ms. Ajustez stepSize jusqu'à 5° si le mouvement est trop lent, ou réduisez le delayMs à 10 ms si un mouvement plus rapide est nécessaire.
3. Pour les servos à rotation continue :Cartographiez la vitesse souhaitée (0 = arrêt, 100 = pleine vitesse dans un sens) sur des largeurs d'impulsion comprises entre 1,0 ms et 2,5 ms, avec 1,5 ms comme arrêt.
4. Pour les servos intelligents :Lisez la fiche technique du produit pour connaître le format d'octet de commande de vitesse : il s'agit généralement d'un registre ou d'un paramètre distinct dans le paquet série.
5. Tester et calibrer– vérifiez toujours le mouvement avec votre charge spécifique (poids sur le palonnier du servo). Des charges plus lourdes peuvent nécessiter des pas plus petits et des délais plus longs pour éviter le calage.
En suivant ces méthodes, vous aurez un contrôle complet et prévisible sur la vitesse des servos dans tout projet de robotique ou d'automatisation. Pas de matériel spécial, pas d'astuces spécifiques à une marque – juste des techniques éprouvées utilisées par des milliers de fabricants et d'ingénieurs dans le monde entier.
Heure de mise à jour:2026-04-11
Contactez le spécialiste des produits Kpower pour recommander un moteur ou une boîte de vitesses adapté à votre produit.