Skip to main content

Qu'est ce qu'un servo-moteur ?

 

I Introduction

Lorsque vous créez un projet qui intègre des éléments robotique vous arrivez forcément à devoir faire un choix de moteur pour automatiser votre création. Plusieurs solutions existent, comme par exemple des moteurs à courant continu:

ori-moteur-miniature-rm260-20767.jpg

Ceux Ceux-ci on tont l'avantage d'être très simple d'utilisation. Il suffit de connecter leurs deux fil d'alimentation à une batterie et ils se mettent à tourner.

Une autre solution serait d'utiliser des moteurs pas à pas:pas :

NEMA17-001-1.jpg

Ces moteurs sont très pratique pour déplacer quelque-chose à un endroit précis, du fait que vous pouvez précisément contrôlerle leurpositionner vitesseà deun rotation.angle donné. Par contre leur utilisation n'est pas aussi triviale que pour un moteur à courant continu.

Ce que je vous propose dans ce tutoriel c'est de découvrir les Servomoteurs. il en existe deux type:type -:

  • A contrôle d'angle
  • -
  • A contrôle de vitesse de rotation

Les premiers ne tournent pas en continucontinu, mais en général entre 0° et 180° et vous pouvez contrôler leur angle d'inclinaison.de trèrotation. Très pratique quand vous voulez faire un bras robotisé, piloter l’orientation des roues avant d'une voiture, ou bien contrôler un petit mécanisme. Les suivantServomoteurs suivants sont très pratiquepratiques lorsque vous souhaitez faire tourner un objet en contrôlant sa vitessevitesse, (par exemple des roues!) :

tiptopboards.com_169-thickbox_mini-servo-moteur-sg90-9g-mod_c3_a9lisme-arduino.jpg

Ce sont des servomoteursServomoteurs à contrôle d'angle sur 360° et le tutoriel va donc porter sur ce type de moteur.

II Fonctionnement

https://fr.wikipedia.org/wiki/Servomoteur --> fonctionnement

Les Servomoteurs intègrent au sein d'un même boitier un moteur DC,à courant continu, un potentiomètre, un réducteur et un circuit de contrôle. L'idée est que la valeur d'angle est mesurée grâce au potentiomètre et le circuit de contrôle fait tourner le moteur et corrige l'orientation. Voila une image qui donne une idée du fonctionnement interne:

upload.wikimedia.org_wikipedia_commons_d_d3_micro_servo.jpg

vue-interne-dun-servomoteur-sans-lelectronique-de-commande.jpg

Vous l'avez surement remarqué, le Servomoteur àa trois fil.fils. Le fil marron correspond à la masse, le fil rouge au 5 voltVolts et le fil orange à l'envoi de données. C'est par ce dernierle fil orange que nous allons envoyer lesle instruction d'anglesignal pour lela Servo.commande de l'angle voulu au Servomoteur.

L’instruction par le fil orange s'envoie sous la forme d'un signal PWM (Pulse Width modulation=Modulation en largeur d'impulsion). leLe principe est que l'envoi d'instruction se fait par un signal électrique qui passe de façon régulière et rapide (30-50Hz ou 300Hz) dude 0 auà 5 volt.Volts. La valeur d'de l'angle voulu est dansdéfinie par le rapport entre le temps que le signal est à 5 voltVolts et le temps que celui celui-ci est à 0 Volt. Par exemple pour un angle de 0°, on envoie 5V pendant 1ms puis 0V pendant 19ms : Le signal est à 5V pendant 5% du temps (1ms/20ms). Une image vous donnera une meilleure idée:

TiemposServo.png

Source : https://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/TiemposServo.svg/220px-TiemposServo.svg.png 

III Mise en pratique

Pour consolider votre compréhension nous allons mettre en pratique avec un Arduino. L'Arduino permet de générer des signaux PWM avec la fonction AnalogWrite() mais nous ne pouvons pas l'utiliser avec lesun ServoServomoteur, car sa fréquence est trop élevée (environ 500Hz). Pour ce faire nous allons plutôt utiliser la librairie servo.h qui est disponible de base avec le programme Arduino.

Connectez doncd'abord un servomoteurServomoteur à l'Arduino comme sur l'image:

et on utilisera pour l'exemple le code suivant

#include <Servo.h>

Servo myservo;  // On créeré un objet MyServo par lequel on envoisenvoie les instructioninstructions au servo

void setup()
{
  pinMode(6,OUTPUT);
  myservo.attach(6);  // On associe notre objet à laau Pin connecté au fil de données du servo
}

void loop() 
{  
  myservo.write(0);     //donne l'ordre de mettre le Servo à sontson angle minimum
  delay(1000);  
  myservo.write(255);    //donne l'ordre de mettre le Servo à sontson angle maximum !
  delay(1000);   
} 

Si tout se passe bienbien, vous devriez voir le servomoteurServomoteur tourner de 180° toutes les secondes. Après çaa, je vous conseilconseille de vous amuser en modifiant les valeurs et/ou le code afin de vous familiariser avec son utilisation.

Vous savez maintenant le minimum nécessaire pour correctement utiliser un Servo.Servomoteur.