Tag Archives: servo arduio

Contrôler un mini servo avec Arduino

Avec mon pote Idleman, on a pour projet de réaliser un robot (mais chut j’en dis pas plus pour le moment), et qui dit robot dit moteur, articulation, etc…

N’ayant jamais piloter de servo moteurs, j’ai décidé d’acheter sur la baie des mini servo de 9g.

mini servo

 

Fonctionnement d’un servo moteur

Tout d’abord, il faut s’avoir qu’un servo permet d’effecter des déplacements en translation ou en rotation. De nombreux objets du quotidien utilisent des servo moteurs: voitures télécommandées, drône, électroménager, …

Les différents types de servos se distingue par 3 caractéristiques:

  • leur vitesse de rotation par seconde
  • leur course en degré
  • leur couple exprimé en kg.cm

Le fonctionnement d’un servo est relativement simple. Il suffit d’envoyer une impulsion dont la durée est comprise entre 0,5ms et 2,5ms au servo. Cette impulsion déterminera la position du guide du servo. Ainsi la valeur de 1,5ms donne au servomoteur la position centrale.

Ces impulsion doivent être envoyée de manière périodique, généralement toutes les 50ms.

Il n’y a rien de compliquer pour brancher un servo. Les servos ont généralement 3 fils:

  • un rouge: qui doit être branché au 5V (ou 12V suivant votre servo)
  • un noir : qui doit être branché à la masse
  • un orange (ou autre couleur) : qui  est le fil de tension de commande 0-5V

C’est donc via le fil orange que les commandes seront passées à votre servo. Ce fil devra obligatoire être relié à votre Arduino sur un pin PWN.

Voyons maintenant comment connecter un mini servo à notre Arduino.

Connecter un servo sur un Arduino

Voici le montage que j’ai réalisé pour tester mon mini servo:

arduino mini servo

 

Il suffit ensuite de charger le sketch suivant dans votre Arduino. Ce script utilise la librairie Servo nativement disponible dans l’outil de développement de votre Arduino.

// Sweep
// by BARRAGAN <http://barraganstudio.com> 
// This example code is in the public domain.
 
#include <Servo.h> 
 
Servo myservo;  // create servo object to control a servo 
                // a maximum of eight servo objects can be created 
 
int pos = 0;    // variable to store the servo position 
 
void setup() 
{ 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
} 
 
void loop() 
{ 
  for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees 
  {                                  // in steps of 1 degree 
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
  for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees 
  {                                
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
}

Ce sketch est issu des exemples fournis avec Arduino. Il permet de faire tourner votre servo de 0 à 180 degré.

J’espère que cela vous aidera.

Inline
Inline