Le servo
En une phrase : un servo est un petit moteur qui sait où il est : on ne lui dit pas « tourne », mais « va à cet angle », et il y va tout seul, puis tient la position.
L'image à retenir¶
Pense à un pilote qui garde son vaisseau sur une trajectoire : il regarde sans arrêt où il est, compare avec où il doit aller, et corrige. Le servo fait pareil avec son axe, des dizaines de fois par seconde. Son nom vient d'ailleurs de « servomécanisme » : un mécanisme asservi, qui obéit à une consigne.
À quoi sert un servo ?¶
| Rôle | Exemple |
|---|---|
| Aller à une position précise | la porte du hangar (mission 3), une direction de véhicule |
| Tenir une position contre un effort | un bras qui porte une charge, une trappe qui reste fermée |
| Balayer | une tourelle, un radar, un capteur qui scrute |
| Tourner en continu, doucement (servo à rotation continue) | une petite roue lente, un tapis roulant |
| Balayer sur un grand angle (servo 360° à position) | le radar à balayage (mission 4) |
Plus en profondeur¶
Ce qu'il y a dedans¶
Un servo contient quatre éléments qui travaillent en équipe :
- un moteur électrique, petit et rapide ;
- des engrenages, qui ralentissent le mouvement et le rendent beaucoup plus costaud ;
- un capteur de position (souvent un potentiomètre), accroché à l'axe de sortie : il mesure l'angle réel ;
- une petite carte électronique, qui compare l'angle demandé et l'angle mesuré, et fait tourner le moteur dans le bon sens jusqu'à ce qu'ils soient égaux.
C'est la boucle de rétroaction : mesurer, comparer, corriger, recommencer. Si on pousse l'axe, le capteur le voit, et le moteur résiste pour revenir. C'est pour ça qu'il ne faut jamais forcer un servo alimenté : on lutte contre son moteur… et ce sont ses engrenages qui paient.
La commande : une impulsion¶
Le servo reçoit sa consigne sur son fil signal : une impulsion répétée 50 fois par seconde (toutes les 20 ms). C'est la durée de l'impulsion qui indique l'angle demandé.
Pour un servo de 270° comme notre Geekservo, avec la convention la plus courante :
| Impulsion | Angle demandé |
|---|---|
| 500 µs (0,5 ms) | 0° |
| 1 500 µs (1,5 ms) | 135°, le milieu |
| 2 500 µs (2,5 ms) | 270° |
Entre les deux, c'est proportionnel : 2 000 µs pour 270°, soit environ 7,4 µs par degré. La bibliothèque ESP32Servo fabrique ces impulsions pour nous, avec writeMicroseconds() ou write(). Le lien avec les signaux carrés est expliqué dans le PWM.
Chaque servo a sa plage
500 à 2 500 µs est une convention, pas une loi : certains servos s'arrêtent avant, d'autres utilisent 1 000 à 2 000 µs. C'est pour ça qu'on calibre chaque servo, comme à la mission 3.
Position ou rotation continue¶
Certains servos ont été modifiés pour tourner sans fin : leur électronique ne compare plus des angles, et l'impulsion règle alors la vitesse et le sens.
| Servo à position | Servo à rotation continue | |
|---|---|---|
Impulsion de 1,5 ms (write(90)) |
va au milieu | s'arrête |
| Impulsion plus courte | va vers une extrémité | tourne dans un sens |
| Impulsion plus longue | va vers l'autre extrémité | tourne dans l'autre sens |
| Plus on s'écarte de 1,5 ms… | plus l'angle est grand | plus il tourne vite |
| Il sait où il est ? | oui | non : il ne connaît que sa vitesse |
Le couple : la force qui fait tourner¶
La force d'un servo s'exprime en couple, souvent en kg·cm (ou g·cm). Un couple de 0,5 kg·cm veut dire : le servo peut soulever 500 g accrochés à 1 cm de son axe. Plus loin de l'axe, il soulève moins, dans la même proportion : 250 g à 2 cm, 125 g à 4 cm. C'est la loi du bras de levier, la même qu'avec une balançoire.
charge maximale = couple ÷ longueur du bras
La vitesse et le courant¶
- La vitesse est souvent donnée en secondes pour 60° : « 0,12 s / 60° » veut dire qu'il faut 0,12 seconde pour tourner de 60°.
- Le courant dépend de l'effort : faible au repos, plus fort pendant un mouvement, et beaucoup plus fort quand l'axe est bloqué (on dit qu'il « cale »). Les vendeurs de petits Geekservo annoncent de l'ordre de 100 à 200 mA en fonctionnement et plus de 500 mA bloqué : c'est ce qui peut faire redémarrer l'ESP32 sur l'USB.
Exemples de calculs¶
Calcul 1 · Quelle impulsion pour 90° ?
Plage : 500 µs pour 0°, 2 500 µs pour 270°, soit 2 000 µs pour 270°.
impulsion = 500 + 90 × 2 000 ÷ 270 = 500 + 666,7 ≈ 1 167 µs.
Calcul 2 · Quel angle pour 1 800 µs ?
On fait le chemin inverse : (1 800 − 500) × 270 ÷ 2 000 = 1 300 × 270 ÷ 2 000 ≈ 175,5°.
Calcul 3 · Que peut porter la porte de la mission 3 ?
Couple annoncé du Geekservo 270° : environ 500 g·cm. La porte est accrochée à un bras LEGO, et son centre est à 4 cm de l'axe.
charge maximale = 500 ÷ 4 = 125 g. Une porte en pièces LEGO pèse bien moins : c'est large. Mais en doublant la longueur du bras, on divise la charge possible par deux.
Calcul 4 · Combien de temps pour ouvrir en grand ?
À 0,12 s pour 60°, une course complète de 270° prend 270 ÷ 60 × 0,12 = 0,54 s à pleine vitesse. Dans le programme de la mission 3, la vitesse est réglée à 60 °/s : la même course prend alors 270 ÷ 60 = 4,5 s. Beaucoup plus doux pour la mécanique !
Calcul 5 · Deux servos sur l'USB ?
Deux servos qui calent en même temps : 2 × 550 = 1 100 mA, plus les 100 mA de l'ESP32. Bien au-delà des 500 mA de l'USB : il faudra une alimentation externe pour les grands projets (voir l'alimentation).
Mise en pratique¶
Chronométrer une course : avec le programme de calibrage de la mission 3, demande 30 puis 240, et filme le servo avec un téléphone au ralenti. Compte les images : tu peux mesurer le temps réel d'une course de 210° et le comparer au calcul.
L'expérience du bras de levier : fixe une poutre LEGO Technic sur l'axe (les trous sont espacés de 8 mm), et accroche un petit objet de plus en plus loin du centre. À un moment, le servo n'arrive plus à soulever, et grogne : c'est la limite de son couple. Coupe vite l'alimentation (ou redemande une position sans effort).
Les pièges¶
| Le piège | Ce qui arrive | La bonne habitude |
|---|---|---|
| Forcer l'axe à la main, servo alimenté | engrenages abîmés | ne toucher l'axe que hors tension |
| Demander un angle derrière une butée | le servo force, chauffe, consomme beaucoup | calibrer, garder 5° de marge |
| Un bras trop long ou trop chargé | le servo n'arrive pas à tenir la position | raccourcir le bras, alléger, ou un servo plus costaud |
| Plusieurs servos sur l'USB | l'ESP32 redémarre | un seul à la fois, puis une alimentation externe |
Exercices¶
1. Quelle impulsion pour 135° sur un servo 270° (500 à 2 500 µs) ?
500 + 135 × 2 000 ÷ 270 = 500 + 1 000 = 1 500 µs : le milieu, logique !
2. Un servo de 2 kg·cm porte une charge au bout d'un bras de 5 cm. Quelle charge maximale ?
2 000 g·cm ÷ 5 cm = 400 g.
3. Un servo à rotation continue reçoit write(90) mais tourne encore lentement. Pourquoi, et que faire ?
Son point d'arrêt n'est pas exactement à 90 (petites différences de fabrication). On cherche la valeur où il s'immobilise vraiment (88, 91…), en essayant des valeurs une par une, par exemple avec le programme d'enquête de la mission 4.
4. Combien d'impulsions un servo reçoit-il en une minute ?
50 par seconde × 60 = 3 000 impulsions.
À retenir
- Un servo vise une position et la tient : moteur + engrenages + capteur + électronique.
- La consigne est la durée d'une impulsion, répétée 50 fois par seconde (500 à 2 500 µs pour 0 à 270° sur notre Geekservo, à calibrer).
- Rotation continue : la même impulsion règle la vitesse et le sens.
- Couple ÷ longueur du bras = charge maximale. Ne jamais forcer l'axe alimenté.
Où ça sert dans l'atelier¶
- Les Geekservo : nos servos et moteurs compatibles LEGO.
- Mission 3 · Calibrer : trouver les angles de la porte.
- Mission 3 · Le programme Dagoservo : un mouvement en douceur, des butées logicielles.
- Mission 4 · L'enquête : position ou rotation continue ?
- Le manuel du mécano : fixer un servo et sa porte en LEGO Technic.
Pour aller plus loin¶
- 🇫🇷 Un moteur qui a de la tête : le servomoteur, cours Arduino d'Eskimon.
- 🇫🇷 Servomoteur, sur Wikipédia (partie « En modélisme »).
- 🇬🇧 Hobby Servo Tutorial, SparkFun : impulsions, rotation continue, dépannage.
- 🇬🇧 ESP32Servo, la bibliothèque utilisée dans l'atelier.