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 ci on t 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:

NEMA17-001-1.jpg

Ces moteurs sont très pratique du fait que vous pouvez précisément contrôler leur vitesse de rotation. 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: -A contrôle d'angle -A contrôle de vitesse de rotation

Les premiers ne tournent pas en continu et vous pouvez contrôler leur angle d'inclinaison. très pratique quand vous voulez faire un bras robotisé ou bien contrôler un petit mécanisme. Les suivant sont très pratique lorsque vous souhaitez faire tourner un objet en contrôlant sa vitesse (par exemple des roues!)

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

Ce sont des servomoteurs à contrôle d'angle 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, un potentiomètre, un réducteur et un circuit de contrôle. L'idée est que la valeur d'angle est mesuré 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

Vous l'avez surement remarqué, le Servomoteur à trois fil. Le fil marron correspond à la masse, le fil rouge au 5 volt et le fil orange à l'envoi de données. C'est par ce dernier fil que nous allons envoyer les instruction d'angle pour le Servo.

L’instruction par le fil orange s'envoie sous la forme d'un signal PWM (Pulse Width modulation=Modulation en largeur d'impulsion) le principe est que l'envoi d'instruction se fait par un signal qui passe de façon régulière et rapide (30-50Hz ou 300Hz) du 0 au 5 volt. La valeur d'angle est dans le rapport entre le temps que le signal est à 5 volt et le temps que celui ci est à 0 Volt. Une image vous donnera une meilleure idée:

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 PWM avec la fonction AnalogWrite() mais nous ne pouvons pas l'utiliser avec les Servo car sa fréquence est trop élevé (environ 500Hz). Pour ce faire nous allons plutôt utiliser la librairie servo.h qui est disponible de base avec le programme Arduino.

Connectez donc un servomoteur à 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 envois les instruction au servo

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

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

Si tout se passe bien vous devriez voir le servomoteur tourner de 180° toutes les secondes. Après ça je vous conseil 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.