Le servomoteur MG90S est la version à engrenages métalliques du micro-servomoteur de 9 g : même boîtier, même connecteur, même commande qu’un SG90, mais un train d’engrenages en métal à la place du nylon. Il se place de 0 à 180° et se pilote avec une seule broche, ce qui en fait le moteur angulaire des petits bras robotisés, des barrières, des tourelles de capteur et de tout ce qui doit s’immobiliser à un angle précis plutôt que de tourner en continu.
Il est livré avec ses trois palonniers et les vis de fixation : rien d’autre à commander pour le monter sur un axe ou sur une tringlerie.
Caractéristiques techniques
| Modèle | MG90S — micro-servomoteur analogique à engrenages métalliques |
|---|---|
| Alimentation | 4,8 à 6 V continu (5 V en pratique) |
| Couple de décrochage | 1,8 kg·cm sous 4,8 V — 2,2 kg·cm sous 6 V |
| Vitesse | 0,10 s pour 60° sous 4,8 V — 0,08 s sous 6 V |
| Course | 0 à 180° (environ 90° de part et d’autre du neutre) |
| Commande | Impulsion répétée toutes les 20 ms environ, de 1 à 2 ms : 1,5 ms au neutre. La bibliothèque Arduino élargit la plage à 0,54–2,4 ms |
| Fils | 3 — masse (brun), alimentation (rouge), signal (orange) |
| Câble | Environ 25 cm, terminé par un connecteur femelle 3 broches au format des récepteurs de modélisme (JR, Futaba) |
| Dimensions | 22,8 × 12,2 × 28,5 mm, hors palonnier — entraxes de fixation au pas des micro-servos 9 g |
| Poids | 13,4 g |
| Température de service | 0 à 55 °C |
| Contenu du lot | Le servomoteur, trois palonniers (simple, double, en croix) et les vis de fixation |
Ce que change le train d’engrenages métallique
Un micro-servo classique comme le Servomoteur SG90 transmet le mouvement par des pignons en nylon. Ils sont légers et silencieux, mais ils cèdent quand l’axe est bloqué : un bras qui bute contre un obstacle, une chute, une tringlerie forcée à la main, et une dent casse. Le servo se met alors à sauter des angles.
Le MG90S remplace ces pignons par du métal. La différence n’est pas dans la force — le couple annoncé est du même ordre que celui du SG90 — mais dans la tenue : le train encaisse un blocage passager sans se casser, et il ne se creuse pas à l’usage. En échange, le servomoteur pèse 13,4 g au lieu de 9 g, et il consomme un peu plus.
Le choix est donc simple : métal dès qu’on demande au servo de forcer (bras qui soulève, pince, direction d’un petit véhicule), nylon quand chaque gramme compte (avion, planeur, maquette).
Brochage : trois fils, trois couleurs
| Brun | La masse. À relier au GND de la carte et à la borne moins de l’alimentation du servo. |
|---|---|
| Rouge | L’alimentation, de 4,8 à 6 V. Elle vient d’une source séparée, pas de la broche 5 V de la carte. |
| Orange | Le signal, à relier à une sortie numérique (D9 dans l’exemple ci-dessous). |
Le connecteur est femelle : il se clipse sur trois broches mâles, celles d’une barrette ou celles de trois fils de prototypage plantés dans une plaque d’essai. Il ne rentre pas directement dans une plaque d’essai, dont les trous attendent des broches mâles.
L’alimentation : la cause de la moitié des pannes
C’est le point qui fait échouer le plus de projets de servomoteurs, et il n’a rien à voir avec le programme. Au démarrage d’un mouvement, et plus encore quand le servo force, le courant appelé dépasse largement ce qu’une broche 5 V d’Arduino peut fournir — et un port USB est limité à 500 mA pour toute la carte.
La tension s’écroule alors au moment précis où le moteur réclame le plus, et l’on observe l’un de ces symptômes : le servo saccade ou tremble au lieu de balayer franchement, l’Arduino redémarre à chaque mouvement (son écran de veille se répète sur le port série), ou le servo s’arrête quand on lui demande de soulever une charge qu’il porte pourtant à l’aise sur une table.
La solution tient en une phrase : alimentez le servomoteur par une source 5 V séparée, et reliez ensemble les deux masses. Un bloc secteur 5 V convient parfaitement, ou un porte-pile pour un montage mobile. La masse commune n’est pas facultative : sans elle, le signal du servo n’a plus de référence et le moteur part dans tous les sens.
Mini-projet : un balayage de 0 à 180°
Le premier montage à faire avec un servomoteur, et le plus utile : il prouve d’un coup d’œil que l’alimentation tient, que le câblage est bon et que le servo n’est pas bridé par une butée.
Ce qu’il faut
| Le moteur | Ce servomoteur MG90S, avec son palonnier simple monté sur l’axe |
|---|---|
| La carte | Uno R3 + câble USB |
| L’alimentation du servo | Alimentation 5 V 2 A — ou un porte-pile pour un montage mobile |
| Les liaisons | 10 × fil mâle-mâle 10 cm, qui se plantent dans la plaque et reçoivent le connecteur du servo |
Le câblage
| Servo — brun | → borne moins de l’alimentation 5 V, puis Arduino GND |
|---|---|
| Servo — rouge | → borne plus de l’alimentation 5 V |
| Servo — orange | → Arduino D9 |
| Alimentation — moins | → Arduino GND : c’est la masse commune, sans elle le servo ne peut pas interpréter le signal |
| Arduino | Alimenté par son câble USB ; la broche 5V de la carte ne sert ici à rien |
Le programme
À copier dans l’IDE Arduino, puis à téléverser sur la carte :
/*
* Balayage d'un servomoteur MG90S
* Carte : Arduino Uno R3 - signal du servo sur la broche D9
* Alimentation : source 5 V separee, masse commune avec l'Arduino
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
#include "Servo.h"
Servo axe;
const byte PIN_SERVO = 9;
void setup() {
axe.attach(PIN_SERVO);
}
void loop() {
// De 0 a 180 degres, par pas de 5
for (int angle = 0; angle != 185; angle += 5) {
axe.write(angle);
delay(20);
}
// Puis retour de 180 a 0
for (int angle = 180; angle != -5; angle -= 5) {
axe.write(angle);
delay(20);
}
}Comment ça marche
axe.attach(9)réserve la broche et fait démarrer la trame de commande : la bibliothèque envoie elle-même une impulsion sur la broche, vingt fois par seconde, sans que la boucle principale ait à s’en occuper.axe.write(angle)prend un angle en degrés et le convertit en largeur d’impulsion. Avec les réglages par défaut de la bibliothèque, 0° part à 0,54 ms et 180° à 2,4 ms.- La boucle
foravance par pas de 5°, et ledelay(20)fixe la vitesse du balayage : c’est lui qu’on allonge pour un mouvement lent et régulier. - Sur une Uno, la bibliothèque
Servooccupe un timer partagé avec les broches 9 et 10. Tant qu’un servomoteur est piloté,analogWrite()ne fonctionne plus sur ces deux broches — utilisez-en d’autres pour une LED à intensité variable.
Pour aller plus loin
Pour viser un angle au lieu de balayer, remplacez les deux boucles par un seul axe.write(90) : le servo rejoint la position et s’y tient. Un servo n’a pas besoin d’être réécrit en boucle, il conserve sa consigne.
Si le mouvement manque de finesse, axe.writeMicroseconds(1500) donne un contrôle direct de l’impulsion, sans passer par la table d’angles. Et si le servo force en fin de course contre une butée, réduisez la plage à 10–170° dans le programme plutôt que de le laisser grogner.
Questions fréquentes
Mon Arduino redémarre dès que le servomoteur bouge. Pourquoi ?
C’est un manque d’alimentation, pas un bug de programme. Le servomoteur tire son courant sur la même source que la carte, la tension chute, et le microcontrôleur se réinitialise. Alimentez le servo par une source 5 V séparée et reliez les masses. Le symptôme se reconnaît sans instrument : chaque mouvement s’accompagne d’un redémarrage de la carte.
Quelle différence avec un SG90 ?
Le SG90 a des pignons en nylon et pèse 9 g ; le MG90S a un train métallique et pèse 13,4 g. Le couple annoncé est comparable : ce que le métal apporte, c’est la résistance aux blocages et une meilleure tenue dans le temps, pas une force supérieure.
Peut-on le faire tourner en continu, comme un moteur de roue ?
Non : c’est la version 180°, et le modèle s’arrête à ses butées. Pour une roue, il faut soit un servomoteur à rotation continue, dont la consigne devient une vitesse, soit un moteur réducteur. Un servo de position ne doit jamais être bloqué en butée : il force, chauffe, et finit par consommer à vide.
Le servomoteur grogne ou chauffe alors qu’il ne bouge pas
Il force contre quelque chose. Trois causes possibles : l’angle demandé est en dehors de la course utile (un write(180) passé, ou une consigne négative), la charge est trop lourde pour son couple, ou le montage exerce une contrainte mécanique qui l’empêche de tenir sa position. Un servo qui ronronne en position consomme en permanence et chauffe : réduisez la charge ou élargissez la marge en fin de course. Et ne forcez jamais l’axe à la main sur ce modèle, le train métallique transmet directement l’effort au moteur.
Combien de servomoteurs puis-je piloter avec une carte ?
La bibliothèque Servo en anime jusqu’à douze sur une Uno, mais la vraie limite est ailleurs : chacun réclame un courant d’appel que la carte ne peut pas fournir. Au-delà de deux ou trois servomoteurs, le montage passe par un driver I2C PCA9685, qui génère seize signaux à partir de deux fils et reçoit une alimentation moteur distincte de celle du microcontrôleur.
À combiner avec
Pour fixer le servomoteur sur un châssis ou une planche sans percer la pièce, le Support Servo se visse en quelques secondes — il est livré sans servomoteur. Pour vérifier un servo d’occasion ou comparer deux modèles sans écrire une ligne de programme, le testeur de servomoteur Gear CCPM fait tourner le moteur et affiche sa position.
Si le couple du MG90S ne suffit pas — une pince qui doit serrer fort, une direction sur un châssis plus lourd — le servomoteur métallique MG995 offre une force d’un autre ordre, avec la même commande par impulsion et donc le même programme. Et pour un montage mobile, le support de piles 4×AA fournit les 6 V nominaux acceptés par le servomoteur : des piles alcalines neuves montent un peu au-dessus de 6 V, des piles rechargeables restent à 4,8 V, et dans les deux cas la masse doit être commune avec celle de la carte.







