Guide complet du contrôle d'angle des micro-servos avec Microcontrollers_Servo_Industry Insights_Kpower
Maison > Aperçu de l'industrie >Servomoteur
ASSISTANCE TECHNIQUE

Guide complet du contrôle d'angle des micro-servos avec microcontrôleurs

Publié 2026-04-07

Ce guide fournit tout ce dont vous avez besoin pour contrôler avec précision l'angle de rotation d'un micro standardservomoteurà l'aide d'un microcontrôleur. Le principe de base est simple : leservomoteurLa position de l'arbre de sortie est déterminée par la largeur d'un signal d'impulsion. Pour les micros les plus courantsservomoteurs, une largeur d'impulsion de 1,5 millisecondes (ms) centre l'arbre à 90°, 1,0 ms le déplace à 0° et 2,0 ms le déplace à 180°. Cependant, les servos du monde réel varient. Cet article vous donne des méthodes vérifiées, des exemples de code et des étapes d'étalonnage pour obtenir un contrôle précis degré par degré sans dépendre d'une marque spécifique.

01Comment unMicro-servoInterprète la largeur d’impulsion en angle

UNMicro-servocontient un petit moteur à courant continu, un potentiomètre de rétroaction et un circuit de commande. Le circuit compare la largeur d’impulsion entrante à la position du potentiomètre. Lorsque la largeur d'impulsion correspond à la position souhaitée, le moteur s'arrête. La relation entre la largeur d’impulsion et l’angle est linéaire dans les limites mécaniques du servo.

Spécifications des signaux standards :

Taux de répétition des impulsions :50 Hz (période = 20 ms)

Plage de largeur d'impulsion utilisable :Généralement 1,0 ms à 2,0 ms

Plage d'angle correspondante :0° à 180°

Cela signifie que le servo attend une impulsion toutes les 20 ms. En modifiant la largeur d'impulsion de 1,0 ms à 2,0 ms, vous commandez l'arbre de 0° à 180°.

Un cas concret courant :

Tu en achètes deuxMicro-servos du même lot. On se centre parfaitement à 90° quand on envoie une impulsion de 1,5 ms. L'autre s'arrête à 85°. Cela est dû aux tolérances de fabrication du potentiomètre de rétroaction et de l'assemblage mécanique. Par conséquent, calibrez toujours chaque servo individuellement.

02Étape par étape : contrôler l'angle du servo avec le code

La plupart des plates-formes de microcontrôleurs fournissent une bibliothèque d'asservissements intégrée qui génère des impulsions stables à 50 Hz. Vous trouverez ci-dessous un exemple de code générique qui fonctionne avec n'importe quel microcontrôleur prenant en charge les bibliothèques de sortie PWM et de servocommande.

Configuration matérielle :

Connectez le fil d'alimentation du servo (rouge) à une alimentation 5 V capable de fournir au moins 500 mA.

Connectez le fil de terre (marron ou noir) au GND du microcontrôleur.

Connectez le fil de signal (orange, jaune ou blanc) à une broche compatible PWM (par exemple, la broche 9).

Exemple de structure de code (pseudocode universel) :

#inclureServo monServo ; void setup() { monServo.attach(9); // Attache le servo sur la broche 9 } void loop() { myServo.write(0); // Commande 0 degré de retard (1000); monServo.write(90); // Commande délai de 90 degrés (1000); monServo.write(180); // Commande délai de 180 degrés (1000); }

Leécrire (angle)La fonction convertit automatiquement l'angle en largeur d'impulsion correspondante en utilisant le mappage par défaut (0°→1,0 ms, 180°→2,0 ms). Cependant, cette valeur par défaut peut ne pas correspondre à votre servo spécifique.

03Étalonnage : recherche des véritables limites de largeur d'impulsion

Pour obtenir des angles précis, vous devez déterminer les largeurs d'impulsion exactes qui produisent 0° et 180° sur VOTRE servo.

Procédure d'étalonnage :

1. Fixez un pointeur ou marquez la position neutre de l’arbre.

arduino micro servo degree_arduino micro servo degree_arduino micro servo degree

2. Envoyez une impulsion de 1,5 ms. L'arbre doit être proche de 90°. Notez tout décalage.

3. Diminuez la largeur d'impulsion par pas de 10 µs jusqu'à ce que l'arbre s'arrête de bouger. C'est votre véritable largeur d'impulsion de 0°.

4. Augmentez la largeur d'impulsion de 1,5 ms par pas de 10 µs jusqu'à ce que l'arbre s'arrête de bouger. C'est votre véritable largeur d'impulsion de 180°.

Résultats de mesure typiques de trois servos courants :

Échantillon de servo Véritable impulsion 0° (µs) Véritable impulsion de 180° (µs) Impulsion centrale 90° (µs)
Échantillon A 540 2420 1480
Échantillon B 510 2450 1500
Échantillon C 570 2380 1460

Ces valeurs montrent qu'en supposant qu'une valeur comprise entre 1 000 µs et 2 000 µs peut entraîner des erreurs allant jusqu'à 15°. Utilisez toujours des valeurs étalonnées.

Application de l'étalonnage dans le code :

La plupart des bibliothèques de servos vous permettent de définir des plages de largeur d'impulsion personnalisées à l'aide d'unattacher()surcharge ou une fonction distincte. Exemple:

monServo.attach(9, 540, 2420); // Broche, largeur d'impulsion minimale (µs), largeur d'impulsion maximale (µs)

Après fixation avec des limites calibrées,monServo.write(90)enverra l'impulsion centrale exacte (1480 µs dans ce cas), donnant un vrai 90°.

04Problèmes courants et solutions

Problème Cause typique Correctif vérifié
Le servo tremble ou vibre Alimentation électrique insuffisante ou bruyante Utilisez un régulateur 5 V séparé (par exemple, 5 V 1 A) et ajoutez un condensateur de 100 µF entre l'alimentation et la masse près du servo.
Le servo ne bouge pas à l'angle commandé Inadéquation de la plage de largeur d'impulsion Effectuez la procédure d'étalonnage et définissez des largeurs d'impulsion min/max personnalisées.
Le servo tourne uniquement entre 0° et 90° La largeur d'impulsion ne dépasse jamais 1,5 ms Vérifiez votre code : assurez-vousécrire(180)envoie en fait une impulsion > 1,5 ms ; utiliser une plage d'attache personnalisée
Le servo chauffe rapidement Taux de répétition des impulsions trop élevé Vérifiez les sorties de votre bibliothèque de servos à 50 Hz (période de 20 ms). Certaines configurations PWM produisent des fréquences plus élevées.

05Recommandations concrètes pour un contrôle d'angle fiable

Étape 1 : Calibrez toujours chaque servo individuellement– Ne présumez pas des spécifications d’usine. Passez 5 minutes à mesurer les vraies largeurs d'impulsion de 0° et 180°.

Étape 2 : Utilisez une alimentation dédiée– N’alimentez pas les micro-servos directement à partir de la broche 5 V du microcontrôleur. Une consommation de courant soudaine peut réinitialiser le contrôleur. Utilisez un UBEC 5V 1A ou une alimentation externe régulée.

Étape 3 : Stockez les valeurs d'étalonnage dans votre code– Après l’étalonnage, codez en dur les largeurs d’impulsion min et max. Exemple:

#define SERVO_PIN 9 #define SERVO_0_PULSE 540 // mesuré µs pour 0° #define SERVO_180_PULSE 2420 // mesuré µs pour 180° Servo myServo ; monServo.attach(SERVO_PIN, SERVO_0_PULSE, SERVO_180_PULSE);

Étape 4 : Vérifiez avec un test simple– Commande 0°, 45°, 90°, 135°, 180°. Utilisez un rapporteur pour vérifier l’exactitude. Si un angle est décalé de plus de 2°, répétez l'étalonnage.

Étape 5 : Documentez vos paramètres– Notez les largeurs d’impulsion calibrées pour chaque servo. Lorsque vous remplacez un servo, recalibrez-le immédiatement.

06Principe fondamental rappelé :

L'angle du micro servo est directement contrôlé par la largeur d'impulsion. Le mappage standard (1,0 ms = 0°, 1,5 ms = 90°, 2,0 ms = 180°) est un point de départ. Les vrais servos nécessitent un calibrage individuel des largeurs d'impulsion minimales et maximales pour obtenir une véritable précision de 0° à 180°. Sans calibrage, vous pouvez rencontrer des décalages de 10° à 20°.

En suivant la procédure d'étalonnage et en personnalisant la plage de largeur d'impulsion dans votre code, vous obtiendrez un positionnement des servos répétable et précis pour toutes les applications, des bras robotiques aux cardans de caméra. Testez toujours les véritables limites de chaque servo et ajustez votre code en conséquence. Cette pratique élimine les incertitudes et garantit que votre projet fonctionne de manière fiable à chaque fois.

Heure de mise à jour:2026-04-07

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