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.

Servomoteur

DéfinitionPrincipe

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°.

Servomoteur - PWM

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éfinitionServo.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.

Circuit Servomoteur - Potentiomètre
1
#include <Servo.h>      // permet d'inclure la bibliothèque Servo.h
2
3
const int POT = A0;     // broche de lecture de notre potentiomètre
4
const int SERV = 13;    // broche de sortie commandant le servomoteur
5
6
Servo servomoteur;           // servomoteur : instance de notre classe Servo
7
8
void setup() {
9
  servomoteur.attach(SERV);  // liaison entre servmoteur et la broche de commande
10
  Serial.begin(9600);
11
}
12
13
void loop() {
14
  int valeur = analogRead(POT);          // lecture du potentiomètre
15
  int angle = map(valeur, 0,1023,0,180); // convertion du potentiomètre en angle 0 - 180°
16
  servomoteur.write(angle);              // envoi de l'angle au servomoteur
17
  Serial.println(angle);
18
}

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 :

1
Servo servomoteur1; 
2
Servo servomoteur2; 
3
Servo servomoteur3;