LE SERVOMOTEUR
Le servomoteur (souvent abrégé en « servo », provenant du latin servus qui signifie « esclave ») est un moteur capable de maintenir une opposition à un effort statique et dont la position est vérifiée en continu et corrigée en fonction de la mesure. C'est donc un système asservi.
Un servomoteur est un système motorisé capable d'atteindre des positions prédéterminées, puis de les maintenir.
De manière semblable aux moteurs à courant continu, les servomoteurs disposent d’un axe de rotation qui est en revanche entravé par un système de bridage.
Cela ne veut pas dire qu’il ne tourne pas, mais cela signifie qu’il ne peut pas tourner au delà d’une certaine limite. Par exemple, certains servomoteurs ne peuvent même pas faire tourner leur axe de rotation en leur faisant faire un tour complet. D’autres en sont capables, mais pas plus d’un tour.
Le servomoteur est un ensemble mécanique et électronique comprenant :
-
un moteur à courant continu de très petite taille
-
un réducteur en sortie de ce moteur diminuant la vitesse mais augmentant le couple
-
un potentiomètre (faisant fonction de diviseur résistif) qui génère une tension variable, proportionnelle à l'angle de l'axe de sortie
-
un dispositif électronique d'asservissement
-
un axe dépassant hors du boîtier avec différents bras ou roues de fixation
Dans l'univers Arduino, le servomoteur est essentiellement utilisé dans les applications robotiques.
Le servomoteur possède trois fils de connexion pour pouvoir fonctionner. Deux fils servent à son alimentation, le dernier étant celui qui reçoit le signal de commande :
-
rouge : pour l’alimentation positive (4.5V à 6V en général)
-
noir ou marron : pour la masse (0V)
-
orange, jaune, blanc, … : entrée du signal de commande
La puissance absorbée par un servomoteur est délivrée par l’alimentation alors que le signal de commande ne consomme pratiquement aucun courant, un servomoteur peut être directement commandé par un microcontrôleur.
Pour piloter un servomoteur, on utilise un signal PWM ayant une fréquence fixe de 50Hz (T=20ms) et la durée de l’état haut de ce signal détermine la position de l’axe du servomoteur.
Exemple de signal de commande pour un servomoteur pouvant varier de 0 à 180°.
La génération de ces signaux peut se faire avec les instructions de base du langage Arduino. Il existe cependant une bibliothèque Servo intégrée d'office dans l'IDE Arduino. Ses principales fonctions sont :
-
Servo monservo. Cette fonction permet de créer l'objet.
-
monservo.attach(broche) où broche représente le numéro de la broche qui pilote le servomoteur.
-
monservo.write(angle) où angle représente l'angle de rotation du servomoteur. Cette fonction permet d'amener l'axe du servomoteur à la position voulue.
Exemple :
Nous souhaitons positionner un servomoteur en fonction de la position du curseur d'un potentiomètre.
Liste du matériel :
-
1 Arduino Uno
-
1 plaquette d'essai
-
1 servomoteur
-
1 potentiomètre de 10 KΩ
Câblage :
Programme :
/* Servomoteur est un programme qui positionne un servomoteur en fonction de la position d'un potentiomètre */
#include <Servo.h> // appel de la bibliothèque
#define potentiometre A0 // affectation des broches
#define servo 2
int valeur;
Servo monservo; // création de l'objet monservo
void setup()
{
monservo.attach(servo); // le servomoteur est relié à la broche N°2
}
void loop()
{
valeur = analogRead(potentiometre); // conversion analogique-numérique de la tension sur A0
valeur = map(valeur, 0, 1023, 0, 180); // changement d'échelle
monservo.write(valeur); // positionne le servomoteur à la valeur
delay(50); // pause pour laisser le temps au servomoteur de se positionner
}