Comment contrôler un Servo moteur avec Arduino
Le servomoteur en général, est un petit moteur ayant un axe de rotation de 0 à 180°. Il existe biensur des servomoteurs à rotation continue mais nous ne les verrons pas dans cet article.
LE servo de base, sans doute le moins chère est le Tower pro sg90. On le trouve a environ 2€. Celui dont on se sert pour s’amuser.
Spécifications d’un Servo Sg90:
- Son poid : 9g pour un sg90.
- Ses dimension: 22.2 x 11.8 x 31 mm approximativement.
- Son couple qui s’exprime en kg par cm : 1.8kg par cm.
- La vitesse de rotation: 0.1 s pour 60 degree
- Sa tension d’alimentation: 4.8 V (~5V)
Niveau branchement, on part sur 3 cables:
- Rouge : Alimentation (5V).
- Noir ou marron : La masse.
- Jaune, orange ou blanc : “Sig”, c’est le signal, controlé par une sortie PWM.
Des tutos sur les servos, il y en à a la pelle.
Je vous met le code le plus simple qu’il y ai. Il se trouve directement dans les exemples de l’IDE: Fichiers -> Exemples -> Servo -> knob.
Le code est comme celui-ci, il sagit de commander un servo par le biais d’un potentiomètre.
Et l’image officiel d’Arduino.cc
/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 Nov 2013
by Scott Fitzgerald
http://arduino.cc/en/Tutorial/Knob
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}
Pour ma part pour pouvoir tester mon servo directement, j’ai décidé de me passer du potentiomètre et de définir un déplacement bien spécifique et en boucle. Voici le code:
#include <Servo.h>
Servo myservo; // create servo object to control a servo
void setup()
{
myservo.attach(9); // On défini la pin 9 PWM
}
void loop()
{
myservo.write(5); // Positionnement du servo à 5°
delay(1000); // délais d'une seconde
myservo.write(175); // Positionnement du servo à 175°
delay(1000); // délais d'une seconde
}
Il va pour commencer se positionner à 5°, patienter une seconde, se positionner à 175°, patienter une seconde, etc.. etc.. en boucle.
Pour mon modèle de servo, le SG90, un servo d’entrée de gamme. Son angle est de 0° à 180° Je le fais passer de 5 à 175 pour éviter le grésillement qu’il se passe lors qu’il est au bout ou au début de sa course.
- Servomoteur SG90 pour modélisme & Arduino




Bonjour, il serai possible d’avoir un schéma avec le potentimètre si possible.
Merci 😉 et très bon boulot pour les tutos , très simple à comprendre .
Bonjour salvator,
Voilà qui est fais j’ai ajouter l’image dans l’article. Il s’agit du schéma officiel vu que j’utilise dans le code avec potentiomètre le script par défaut présent dans l’IDE 🙂
à bientôt
Merci beaucoup 😉