Les servomoteurs
Sommaire du chapitre
Les servomoteurs
servo-moteurs
Les sont utilisés lorsqu'on souhaite un asservissement en position d'un axe de rotation.
Asservissement
Un asservissement est un processus de correction pour maintenir une consigne.
Par exemple, un régulateur de vitesse dans une voiture est un système asservi car la vitesse
doit être constante quelle que soit la pente.
Architecture

Un servomoteur est composé de trois parties principales :
Un moteur électrique : Généralement, un moteur à courant continu est utilisé. Ce moteur est responsable de la production du mouvement.
Un système de réduction : Il s'agit d'un ensemble de réductions mécaniques (engrenages) qui réduisent la vitesse de rotation du moteur tout en augmentant le couple de sortie. Cela permet d'obtenir un mouvement plus précis et puissant.
Un circuit de commande : Ce circuit électronique est l'élément clé du servomoteur. Il reçoit des signaux de commande d'un dispositif externe (comme une carte de contrôle) et utilise ces signaux pour contrôler la vitesse et la position du moteur.
Le fonctionnement global d'un servomoteur peut être décrit comme un système en boucle fermée, où le circuit de commande ajuste en permanence la tension envoyée au moteur en fonction des informations de rétroaction de la position.
Contrôle de position
Le principal avantage d'un servomoteur est sa capacité à contrôler précisément la position angulaire de son arbre de sortie. Pour ce faire, le circuit de commande utilise un système de retour de position.
Le capteur de position est habituellement un potentiomètre ou un capteur de position à effet Hall.
Principales caractéristiques
Les servomoteurs présentent plusieurs caractéristiques importantes à prendre en compte lors du choix d'un modèle pour une application spécifique :
Mécaniques
Couple : Le couple d'un servomoteur est la force de rotation qu'il peut produire. Il dépend du moteur et du système de réduction utilisés.
Vitesse : La vitesse de rotation maximale du servomoteur est déterminée par le moteur et le système de réduction.
Précision : Les servomoteurs sont connus pour leur capacité à fournir un contrôle précis de la position et parfois de la vitesse.
Réponse : Un bon servomoteur répond rapidement aux signaux de commande, ce qui le rend adapté à des applications nécessitant des mouvements rapides et précis.
Électriques
Tension de commande et d'alimentation : \ 5V
Domaines d'application
Modélisme
Robotique
Commande des
Les ont besoins d'être contrôlés via un signal PWM ou MLI.
Principe de la PWM
La PWM est la création d'un signal numérique dont le temps à l'état haut est variable.
On fait varier le rapport cyclique (appelé $r$) qui est compris entre 0 et 1.
$$ r = \frac{T_{on}}{T_{signal}} $$

Trame de commande servomoteurs
Pour indiquer une consigne de position, il faut faire varier le rapport cyclique du signal envoyé au servomoteur.
La période des signaux est de 20 ms et le temps à l'état Haut du signal représente la position :
1 ms : 180$^\circ$
1.5 ms : 90$^\circ$
2 ms : 0$^\circ$

Branchement d'un servo-moteur
Câble noir ou marron : GND
Câble rouge : +5V (Arduino) ou Vin pour les ESP12
Câble blanc ou jaune : Signal Arduino ou ESP12
Lors de ce chapitre sur les servomoteurs, l'alimentation se fait directement sur la carte électronique. Ce montage ne convient plus si une charge est connectée au servomoteur car le courant va monter et peut potentiellement détruire l'alimentation interne de la carte. Pour plus d'explications, je vous invite à vous reporter au chapitre {Label_Power

Code Arduino
#include
#define SERVO_PIN 11 //broche de commande
//Inclusion de la bibliothèque Servo
Servo myServo; // Création d'un objet Servo
void setup()
myServo.attach(SERVO_PIN); //Choix de la broche du servo moteur
void loop()
{
for (int pos = 0; pos <= 180; pos += 1)
myServo.write(pos); //Actualise la position
delay(15);
//Fin for
for (int pos = 180; pos >= 0; pos -= 1)
myServo.write(pos); //Actualise la position
delay(15);
//Fin for
}//Fin loop
Code ESP12
#include
#define SERVO_PIN D2 //broche de commande
//Inclusion de la bibliothèque Servo
Servo myServo; // Création d'un objet Servo
void setup()
myServo.attach(SERVO_PIN); //Choix de la broche du servo moteur
void loop()
{
for (int pos = 0; pos <= 180; pos += 1)
myServo.write(pos); //Actualise la position
delay(15);
//Fin for
for (int pos = 180; pos >= 0; pos -= 1)
myServo.write(pos); //Actualise la position
delay(15);
//Fin for
}//Fin loop
Pour aller plus loin
Une autre application de la PWM
En faisant varier la tension de sortie dans le temps rapidement ($>$50Hz), on peut simuler une
tension analogique.
Voici un code d'exemple pour faire varier la luminosité d'une LED.
const int pin_led = 11; //Selection d'une broche PWM
float duty_cyle[11] = 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0;//Création d'un tableau avec les différents
rapports cycliques
void setup()
pinMode(pin_led, OUTPUT); //Mise en sortie de la broche LED
//Fin setup
void loop() {
for(int i=0;i<11;i++)
int value_r = duty_cyle[i]*255.0; //Conversion d'une valeur entre 0 et 1 en une valeur entre 0 et 255
analogWrite(pin_led, value_r); //Change le rapport cyclique pendant 3 s
delay(600); //Attend 0.6s
}//Fin loop