Servomoteur
Les servomoteurs sont des moteurs qui permettent de se positionner à un angle de rotation donné et de s'y maintenir. Cette position est comprise entre 0 et 180°.
Le servomoteur est constitué de :
un moteur à courant continu permettant la rotation de 0 à 180°.
un réducteur permettant d'augmenter le couple en diminuant la vitesse.
un potentiomètre permettant de gérer le diviseur de tension.
un système d'asservissement permettant de maintenir la position.
Définition : Principe
Pour commander l'angle de rotation à notre servomoteur, on doit lui envoyer une modulation de largeur d'impulsion (PWM). En règle générale, une impulsion de 2ms toutes les 20ms donne un angle de 180°. Une impulsion de 1ms toutes les 20ms donne un angle de 0°.
Nous pourrions générer ces impulsions en utilisant la fonction micros() qui gère les microsecondes.
Mais pour nous simplifier l'utilisation des servomoteur, il existe des bibliothèques.
Définition : Servo.h
Pour utiliser notre servomoteur nous incluons la bibliothèque Servo.h
La méthode write(angle) de cette bibliothèque permet de commander un angle sur notre servomoteur.
// permet d'inclure la bibliothèque Servo.h
const int POT = A0; // broche de lecture de notre potentiomètre
const int SERV = 13; // broche de sortie commandant le servomoteur
Servo servomoteur; // servomoteur : instance de notre classe Servo
void setup() {
servomoteur.attach(SERV); // liaison entre servmoteur et la broche de commande
Serial.begin(9600);
}
void loop() {
int valeur = analogRead(POT); // lecture du potentiomètre
int angle = map(valeur, 0,1023,0,180); // convertion du potentiomètre en angle 0 - 180°
servomoteur.write(angle); // envoi de l'angle au servomoteur
Serial.println(angle);
}
Servo.h est écrit en programmation objet. Elle permet de générer des instances de la classe Servo.
Pour gérer plusieurs moteurs, il faudrait générer plusieurs instances :
Servo servomoteur1;
Servo servomoteur2;
Servo servomoteur3;