Les Servomoteurs SG90 et MG90s

sg90


Le servomoteur est un moteur qui peut tourner de 180 degrés. (*) 

Il est contrôlé par des pulsations électriques (PWM) depuis l'Arduino. 

La pulsation donne au moteur la position qu’il doit prendre.

(*) Certains fabricants proposent des servomoteurs avec un angle de rotation à 360°


Le moteur a trois connexions. 

  •  Le fil brun (GND) 
  •  Le fil rouge (+Vcc) 
  •  Le fil orange (signal ) 

Le signal est à connecter à une pin PWM de l'Arduino


Vous trouverez une multitude de servomoteurs avec des caractérisques différentes pour de multiples usages.


Caractéristiques des servomoteurs SG90 et MG90s (1)

SG90
MG90s
Tension de fonctionnement
+4,8v à +6v
+4,8v à +6v
Courant en position inactive
10mA
10mA
Courant de fonctionnement
100 - 250mA
100 - 250mA
Courant de décrochage
700mA
700mA
Vitesse de fonctionnement
0.12s/60° (+4.8 V)  
0,1s/60° (+4,8v) – 0,08s/60° (+6v)
Angle de rotation (2)
0° à 180°
0° à 180°
Poids
9gr
13,4gr
Longueur du câble
175mm
175mm
Dimensions
22mm x 11,5mm x 27mm
22mm x 12mm x 28mm
  Engrenage 
 Plastique 
 Métallique 

(1) Les caractéristiques peuvent être différentes suivant les fournisseurs
(2) Vous trouverez des Servomoteurs avec des angles de rotation différents de 0° à 90°, de 0° à 180° et de 0° à 360°



SG90

sg90
Engrenage en plastique

MG90s

mg90s

Engrenage métallique


Connexion du servomoteur

servo


  • Le fils Marron sur le GND
  • Le fils Rouge sur le +Vcc
  • Le fils Orange sur une pin PWM



Le Signal doit être relié à une pin PWM de l’Arduino



Cablage

Pin  
Servomoteur  
Arduino
GND
Marron
GND
+VCC
Rouge
+5v
Signal
Orange
Pin 11 PWM
cablage_Servo

Code


Le Signal du servomoteur est relié à la pin 11 PWM


#include "Servo.h" //Bibliothèque du Servomoteur

Servo myServo;   //Initialisation du servomoteur nommé « myServo »

void setup() {
   myServo.attach(11); //Attacher le servo à la pin 11 PWM
  Serial.begin(9600); //Initialisation du moniteur série
}

void loop() {
  myServo.write(0); //Position de départ 0°
  delay(1000);
  myServo.write(180); //Angle 180°
  delay(1000);
}




Référence de la bibliothèque servo.h site officiel Arduino




Code


Le Signal du servomoteur est relié à la pin 6 PWM


 #include <Servo.h> //Bibliothèque du Servomoteur

Servo myServo; //Initialisation du servomoteur, nommé « myServo »

void setup() {
  Serial.begin(9600); // Initialisation du moniteur série
  myServo.attach(6); // Attacher le servo à la pin 6 PWM
}

void loop(){
  myServo.write(180); //servo.write(angle) 180°
  Serial.println(myServo.read()); //Affichage de l’angle
  delay(2000);

  myServo.write(0); //servo.write(angle) 0°
  Serial.println(myServo.read()); //Affichage de l’angle
  delay(2000);

  myServo.write(90); //servo.write(angle) 90°
  Serial.println(myServo.read()); //Affichage de l’angle
  delay(2000);

  myServo.write(0); //servo.write(angle) 0°
  Serial.println(myServo.read()); //Affichage de l’angle
  delay(2000);
}


Controler un servomoteur avec un potentiomètre

servo_potentiometre


Nous ajoutons un potentiomètre de 10 Kohms afin de contrôler la rotation du servomoteur



  • Signal du servomoteur sur pin 9 PWM
  • Potentiomètre entre +Vcc et Gnd
  • Curseur du potentiomètre sur pin Analogique A0


Le curseur va retourner sur A0 une tension comprise entre 0v et 5v suivant la rotation du potentiomètre

Cette tension est convertie en "angle" afin défectuer la rotation du servomoteur 









Code avec le potentiomètre

  • rotation_servo_potentiometre
  • moniteur_serie


/*
Servo-Moteur controler avec un potentiomètre
*/

#include <Servo.h>  //Bibliotheque du Servomoteur

Servo myServo;  //Initialisation du servomoteur
int servoPin=9;  //Pin 9 PWM pour le le servomoteur
int potPin=A0;  //Pin A0 pour le potentiometre
int val;  //Variable pour stocker la valeur de A0


void setup() {
  Serial.begin(9600);  //Initialisation du moniteur série
  myServo.attach(servoPin);  //Attacher le signal à la pin PWM 9
}

void loop(){
  val=analogRead(potPin);  //Lecture de la valeur sur A0
  Serial.print("Decoupage: "); //Affichage du découpage
  Serial.println(val);
  
  val=map(val, 0, 1023, 0, 180); //Mapper les valeurs 0v à 5v découpé en 1024 valeurs en degré
  Serial.print("Angle: ");  //Affichage de l'angle  
  Serial.println(val);  
  Serial.println("----------------------------");
  
  myServo.write(val);   //Rotation du servomoteur suivant la valeur de "val"
  delay(50);
}


Explication .... du void loop()

  • La 1ere ligne, lecture de la valeur sur la pin A0
  • Les lignes suivantes, "Serial.println ...." affichent la valeur du découpage dans le moniteur série
  • La ligne val=map(val,0,1023,0,180); decoupage de la valeur de "val" (0 à 1023) en une valeur d'angle (0° à 180°)
  • Les lignes suivantes, "Serial.println ...." affichent la valeur de l'angle dans le moniteur série
  • La ligne myServo(val); , rotation du servomoteur
  • Le moniteur série affiche les valeurs de "val"


Référence de la commande map site officiel Arduino



Personnaliser

Google Analytics

Google Analytics est un service utilisé sur notre site Web qui permet de suivre, de signaler le trafic et de mesurer la manière dont les utilisateurs interagissent avec le contenu de notre site Web afin de l’améliorer et de fournir de meilleurs services.

Facebook

Notre site Web vous permet d’aimer ou de partager son contenu sur le réseau social Facebook. En l'utilisant, vous acceptez les règles de confidentialité de Facebook: https://www.facebook.com/policy/cookies/

Twitter

Les tweets intégrés et les services de partage de Twitter sont utilisés sur notre site Web. En activant et utilisant ceux-ci, vous acceptez la politique de confidentialité de Twitter: https://help.twitter.com/fr/rules-and-policies/twitter-cookies