Aujourd’hui on va apprendre à comment commander un servomoteur avec un arduino.
J’ai utilisé dans le tutoriel du westernduino une série de servo pour commander mes cibles, ici je vais aborder seulement le fonctionnement et le code à appliquer.
Ce qu’il faut savoir rapidement sur les servo c’est qu’il en existe de différentes sortes.
Ce qui fait bouger la position du servo c’est un moteur à l’intérieur suivi d’engrenages, ils peuvent être en plastiques ou métalliques.
Les servo ont un angle de rotation qui peut varier ici pour les servo que j’ai ils vont de 0° a 180°, il en existe en 360°.
Le voltage peut différer, ici je vais utiliser un servo 5v et un autre en 12v.Et autre caractéristique important pour les servo c’est le couple que dégage le servo exprimé en kilo par cm.
Pour les petits servo SG90 9g le couple est le plus souvent 1,5kg/cm donc plus vous allez loin sur l’axe du servo moins vous avez de force.
Si avec ce servo je suis à 5 cm du centre de l’axe je n’aurai que 1,5(kg) / 5 (cm) soit 0,3kg de force !
#include < Servo.h >
#define PIN_POT A0
#define PIN_SERVO 8
#define PIN_SERVO1 9
Servo myservo; // create servo object to control a servo
Servo myservo1;
int pos = 0; // variable to store the servo position
int val; // variable to store potentiometer
void setup()
{
Serial.begin(9600);
myservo.attach(PIN_SERVO); // attaches the servo on pin 9 to the servo object
myservo1.attach(PIN_SERVO1);
}
void loop()
{
val = analogRead(PIN_POT);
pos = map(val, 0, 1023, 0, 179);
myservo.write(pos); // tell servo to go to position in variable 'pos'
myservo1.write(pos);
Serial.println(pos);
delay(100);
}En matériel il nous faut :
– 1 arduino
– 1 régulateur de tension 5V L7805CV (option)
– 2 condensateurs 25v 10μF (option)
– 1 servomoteur 12V et ou 1 servomoteur 5V
– 1 potentiomètre 10kΩ ou autre
– 1 transformateur 12V (option)
Pour le branchement la grande majorité des servo ont 3 fils, le marron pour le négatif, le rouge pour le positif (ici 5v ou 12v), et un fil de commande en orange.
Je branche les fils de commande des servo, un sur le pin 8 de l’arduino et un sur le pin 9.
J’ai 1 source d’alimentation en 12v que je vais connecter sur un côté de la breadboard et je vais connecter mon servo 12v de ce côté. Je vais mettre un régulateur de tension 5V (L7805CV +2 condensateur 10uf 25v ) pour alimenter mon servo 5V.
Pour faire tourner mes servo dans la position que je souhaite pour notre test je vais utiliser un potentiomètre 10kΩ, pour le connecter je me branche sur le 5v d’un coté et au négatif de l’autre ( attention pas de 12v car vous pouvez griller votre arduino) et la borne du millieu du potentiomètre va être relié à la borne analogique de l’arduino A0. J’ai légèrement modifié mon montage en branchant le potentiomètre sur le 5V délivré par l’arduino au lieu du 5V du régulateur de tension car j’ai eu un résultat non voulu quand je tournai mon potentiomètre vers les 5V.
J’en ai fini avec le montage.
Maintenant comment programmer un servomoteur avec arduino ?
On appelle la librairie servo pour les commander plus facilement , je defini pin_pot en A0 car je vais récupérer la tension du potentiomètre par ce pin, puis les 2 pin pour les 2 servo.
Je crée 2 objets servo avec comme nom de variable monservo et monservo1, 2 entier int un pour la valeur du potentiomètre et un pour la position des servo.
Dans le setup je connecte mes servo à leurs pin avec attach( numéro du pin), pas besoin de définir le pin analogique en entrée ou sortie sachant que c’est obligatoirement un entrée.
Puis dans ma boucle je récupère la valeur au borne du pin A0 avec analogRead que je vais mapper avec la fonction map.
La fonction map ré-etalonne la valeur de source vers une autre fourchette de valeur ici dans
map(val, 0, 1023, 0, 180); sur le pin analogique je vais avoir une valeur entre 0 et 1023 ( 0 0V , 1023 5V ) et comme je ne peux pas réutiliser cette valeur car mon servo a une position entre 0° et 180° donc je retrouve 0,180.
Map va me donner en résultat une valeur entre 0 et 180 à l’étalonnage de ce qui rentre dans le pin A0
Puis j’applique la valeur de la position a mes servo avec write(pos);
J’ai rajouté un petit delay pour laisser le temps aux servo de se positionner et éviter de corriger la position trop souvent.
Mon servo SG90 9G tremble !
Les petits servo SG90 ne sont pas très fiable (ils vibrent a 0° ) et leurs positions 0° est souvent plus aux alentours des 15°, donc si tu utilises ses servo commence à 15° pour éviter des surprises par la suite.
Télécharger le code : Servomoteur
Petit Bonus !
Si tu souhaites utiliser tes servo dans un tableau voici le code à utiliser, c’est ce que j’ai utilisé dans Westernduino !
Servo monServo0;
Servo monServo1;
Servo monServo2;
Servo mesServos[]={monServo0,monServo1,monServo2};
J’en ai terminé avec les servo, cette série de tuto basé sur des éléments particulier en électronique va te permettre de créer ce que tu souhaites en assemblant toutes les briques que l’on aura abordé.
📌 FAQ – Contrôler un servomoteur avec Arduino
Q : Qu’est-ce qu’un servomoteur ?
R : Un servomoteur est un moteur équipé d’un système de rétroaction qui permet de contrôler précisément sa position angulaire. Il est couramment utilisé dans les projets Arduino pour des applications nécessitant un positionnement précis.
Q : Quels types de servomoteurs sont utilisés dans le tutoriel ?
R : Le tutoriel utilise deux types de servomoteurs :
Un servomoteur 5V, tel que le SG90 9g, avec un couple d’environ 1,5 kg/cm.
Un servomoteur 12V, nécessitant une alimentation séparée et un régulateur de tension 5V (L7805CV) pour le contrôle.
Q : Comment connecter un servomoteur à un Arduino ?
R : Les servomoteurs ont généralement trois fils :
Rouge : alimentation positive (5V ou 12V selon le servo).
Marron : masse (GND).
Orange : signal de commande, connecté à une broche numérique de l’Arduino (par exemple, D8 ou D9).
Un potentiomètre 10kΩ est utilisé pour ajuster la position du servo, connecté entre le 5V et le GND, avec la broche centrale reliée à l’entrée analogique A0 de l’Arduino.
Q : Quel est le rôle du potentiomètre dans ce montage ?
R : Le potentiomètre permet de contrôler la position du servomoteur en fournissant une tension variable à l’entrée analogique A0 de l’Arduino. Cette valeur est lue et mappée pour correspondre à un angle de 0° à 180°, que le servo adopte en conséquence.
Q : Pourquoi utiliser un régulateur de tension pour le servomoteur 5V ?
R : Lorsque l’alimentation principale est de 12V, un régulateur de tension (comme le L7805CV) est nécessaire pour abaisser la tension à 5V, adaptée au servomoteur 5V. Cela évite d’endommager le servo en lui fournissant une tension excessive.
Q : Comment programmer un servomoteur avec Arduino ?
R : Le tutoriel utilise la bibliothèque Servo.h pour simplifier le contrôle du servomoteur. Le code lit la valeur du potentiomètre, la mappe à une plage d’angles (0° à 180°), puis utilise la fonction write() pour positionner le servo à l’angle correspondant.
Q : Pourquoi mon servomoteur SG90 tremble-t-il à 0° ?
R : Les petits servos comme le SG90 peuvent présenter des vibrations à l’angle 0°, souvent en raison de tolérances mécaniques. Il est recommandé de commencer à un angle légèrement supérieur, comme 15°, pour éviter ce problème.
🔗 À découvrir aussi sur Retro&Geek
👉 Utiliser un moteur pas à pas 28BYJ-48 avec ULN2003A
Apprenez à contrôler des moteurs pas à pas pour des mouvements précis dans vos projets Arduino.
👉 Créer une télécommande infrarouge avec Arduino
Contrôlez vos projets électroniques à distance grâce à une télécommande infrarouge.
👉 Configurer le module Bluetooth HC-05 pour Arduino
Ajoutez une connectivité sans fil à vos projets Arduino pour les contrôler via Bluetooth.
👉 Utiliser un écran LCD 16×2 avec Arduino
Affichez des informations en temps réel sur un écran LCD, complément idéal pour vos projets Arduino.
N’hésitez pas à poser vos questions sur les réseaux sociaux de la chaîne instagram , twitter , facebook ,youtube ; si vous ne comprenez pas certaines parties du tutoriel n’hésitez pas , me dire ce que vous aimeriez que je crée pour en faire des vidéos tutoriel et à partager les projets que vous aimeriez créer etc…
Comme toujours allez sur la page de C’est quoi Retro et Geek pour connaître tout ce que je recherche à faire sur la chaîne.
Merci les RetroGeeker et RetroGeekeuse



