Ce que vous apprendrez

  • Ce qu'est un servomoteur.
  • Le câblage avec Arduino
  • Le simple code pour tester

Prérequis

Aucun

Contenu du cours

Un servomoteur… Étrange comme nom, n’est-ce pas ? Cela dit, il semblerait qu’il le porte bien puisque ces moteurs, un peu particuliers, emportent avec eux une électronique de commande (faisant office de « cerveau »). Un 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.


       

                               Image : Servomoteur

On utilise des servomoteurs couramment en modélisme pour contrôler des systèmes mécaniques (gouverne d'avion, accélérateur de moteur thermique, etc.). Les servomoteurs sont aussi couramment utilisés en robotique pour faire des mini-robots, des actionneurs ou des indicateurs rotatifs.

Bon, à présent, voyons un peu comment utiliser ces moteurs dont je vous vante les intérêts depuis tout à l’heure. Vous allez le voir, et ça ne vous surprendra même plus, la facilité d’utilisation est encore améliorée grâce à une bibliothèque intégrée à l’environnement.

La connectique d’un servomoteur se résume à trois fils : deux pour l’alimentation positive et la masse; le dernier pour le signal de commande. Rappelons qu’un servomoteur accepte généralement une plage d’alimentation comprise entre 4.5V et 6V (à 6V il aura plus de couple et sera un peu plus rapide qu’à 4.5V). Si vous n’avez besoin d’utiliser qu’un ou deux servomoteurs, vous pouvez les brancher sur la sortie 5V de la carte Arduino. Si vous voulez en utiliser plus, il serait bon d’envisager une alimentation externe car le régulateur de l’Arduino n’est pas fait pour délivrer trop de courant, vous risqueriez de le cramer. Dans ce cas, n’oubliez pas de relier la masse de l’alimentation externe et celle de l’Arduino afin de garder un référentiel électrique commun.

Le câble permettant le transit du signal de commande du servo peut être branché sur n’importe quelle broche de l’Arduino. Sachez cependant que lorsque nous utiliserons ces dernières, les sorties 9 et 10 ne pourront plus fournir un signal PWM (elles pourront cependant être utilisées comme de simples entrées/sorties numériques). C’est une des contraintes de la bibliothèque que nous allons utiliser.


La librairie Servo

Pour utiliser le servo avec Arduino, il va nous falloir générer le signal PPM vu précédemment. C’est à dire créer un signal d’une fréquence de 50Hz et modifier l’état haut d’une durée comprise entre 1 et 2ms. Contraignant n’est-ce pas ? Surtout si on a plusieurs servos et tout un programme à gérer derrière… C’est pourquoi l’équipe d’Arduino a été sympa en implémentant une classe très bien nommée : Servo. Tout comme l’objet Serial vous permettait de faire abstraction du protocole de la voie série, l’objet Servo va vous permettre d’utiliser les servomoteurs. Et comme elle est développée par une équipe de personnes compétentes, on peut leur faire totalement confiance pour qu’elle soit optimisée et sans bugs !   Voyons maintenant comment s’en servir !

PRÉPARER LE TERRAIN

Tout d’abord, il nous faut inclure la librairie dans notre sketch. Pour cela, vous pouvez au choix écrire vous même au début du code #include <Servo.h> ou alors cliquer sur library dans la barre de menu puis sur « Servo » pour que s’écrive automatiquement et sans faute la ligne précédente. Ensuite, il vous faudra créer un objet de type Servo pour chaque servomoteur que vous allez utiliser. Nous allons ici n’en créer qu’un seul que j’appellerai « monServo » de la manière suivante : Servo monServo. Nous devons lui indiquer la broche sur laquelle est connecté le fil de commande du servo en utilisant la fonction attach() de l’objet Servo créé. Cette fonction prend 3 arguments :

  • Le numéro de la broche sur laquelle est relié le fil de signal
  • La valeur basse (angle à 0°) de la durée de l’état haut du signal de PPM en microsecondes (optionnel, défaut à 544 µs)
  • La valeur haute (angle à 90°, 180°, 360°, etc.) de la durée de l’état haut du signal de PPM en microsecondes (optionnel, défaut à 2400 µs)

Par exemple, si mon servo possède comme caractéristique des durées de 1ms pour 0° et 2ms pour 180° et que je l’ai branché sur la broche 2, j’obtiendrais le code suivant :

#include

<Servo.h>


Servo monServo;

void setup(){

monServo.attach(2, 1000, 2000);

 monServo.write(90);

}

void loop(){}

Pour terminer, voilà le code complet qui vous permettra de mettre l’angle du bras de votre servomoteur à 120° :

#include

<Servo.h>

Servo monServo;

void setup(){

monServo.attach(2, 1000, 2000);

 monServo.write(90);

}

void loop(){}



Contrôlez un servomoteur S3003 avec Arduino.

Catégorie

Electronique

Durée

01:00:00

Nombre de vidéos

1

Certificat de fin de formation

NON