mercredi 2 septembre 2015

[Tuto] Pilotage servomoteur pour Arduino

Un article qui reprend plus en profondeur ce qu'est un servomoteur et comment le piloter avec la board Arduino.

  1. Un servomoteur, qu'est-ce que c'est ?
Un servomoteur est par définition, un moteur avec un brin d'intelligence. Il se présente sous la forme d'un pavé dont les dimensions peuvent varier en fonction des caractéristiques attendues.

Une représentation 3D des éléments "principaux" qui le compose.
Composition servo moteur
Éléments du servomoteur

Je vais m'intéresser à deux choses : la connectique et la mécanique.

  • La connectique
Ce type de moteur est composé de 3 fils de couleurs distinctes.
- rouge : L'alimentation. Cette dernière varie en fonction du moteur. Elle sera indiquée sur l'emballage.
- noir, marron (parfois) : la masse.
- blanc, jaune, ... : la commande
  • La mécanique
Typiquement, ces moteurs ne disposent pas d'un couple très important. Là aussi, il sera important de calculer la masse déplacée pour prendre le servomoteur adapté.
Petit rappel, le couple d'un moteur sera exprimé en Kg/cm. Exemple, pour un servomoteur avec un couple de 4.0 Kg/cm, si la charge se trouve à 10cm alors la charge devra avoir une masse de 400g pour pouvoir être déplacée sans problèmes.

  1. Le pilotage
Le pilotage du servomoteur se fait via le fil de commande. La commande est de type PWM (Pulse With Modulation) ou MLI (en français). On peut généraliser le principe de commande comme suit (dans le cas d'un servomoteur pouvant aller de 0° à 180°) :
PWM de commande


Coté programmation Arduino, il faudra inclure la librairie "servo.h", déclarer tous les servomoteurs de notre application et attacher la pin PWM au servomoteur (dans mon cas la pin 9).
Ce qui donnerait quelque chose comme :
#inclue <Servo.h>
Servo Servo_1;
void setup()
{
   Servo_1.attach(9);
}

Pour déplacer l'axe rien de plus facile avec la commande "Servo_1.write(position_Servo_1);". Avec position_Servo_1 contenant la position en degré souhaitée.