TPBD1 : Partie 4 Chapitre 1 – ServoMoteurs

Accueil/TPBD1 : Partie 4 Chapitre 1 – ServoMoteurs
TPBD1 : Partie 4 Chapitre 1 – ServoMoteurs 2016-12-20T11:38:35+00:00

Project Description

Dans ce tutoriel nous allons aborder les servomoteurs. Un servomoteur c’est un « moteur intelligent » : un moteur qui peut calculer de combien de degré il tourne. C’est très utile notamment dans la robotique : on demande à un bras équipé de servomoteurs de prendre un objet sur une surface tactile, la carte Arduino calcule de combien de degrés les servomoteurs doivent tourner pour saisir l’objet sur la surface tactile (on connaît donc sa position) et hop le tour est joué ! Impossible de faire cela avec des moteurs classiques, enfin presque car on peut jouer sur le temps d’activation mais on perd beaucoup en précision. Savoir se servir d’un servomoteur est donc un point essentiel et c’est pourquoi je vous propose de l’aborder.

 

Le matériel

Pour réaliser ce tutoriel, vous aurez juste besoin de :

La librairie Servo

C’est la librairie qui va nous permettre d’utiliser les servomoteurs. Vous pouvez consulter la page de cette librairie sur le site officel.

Nous allons donc voir les fonctions de cette librairie et apprendre à les utiliser.

 

–    Attach() : permet d’affecter notre servomoteur à une sortie de l’Arduino. Il faut indiquer la sortie entre les parenthèses.

–    Write() : vous permet de faire tourner votre servomoteur pour attendre le degré précisé entre les parenthèses (on par toujours de 0 au début du programme).

–    writeMicroseconds() :cette fonction est similaire à Write() sauf qu’on demande au servomoteur de tourner pendant X millisecondes        qu’on précise entre les parenthèses.

–    read() : permet de connaître la position en degré du servomoteur par rapport au début du programme.

–    Attached() : permet simplement de vérifier si la sortie précisé entre parenthèse est affectée à un servomoteur. Cette fonction est peu utile mais je préfère vous la donner.

–    Detach() : donne l’effet inverse de la fonction Attach() et déconnecte donc votre servomoteur. Il faut préciser entre parenthèse la sortie à vérifier.

–    Servo : pour déclarer une variable de type Servo.

Vous êtes toujours là ? Bon c’était tout pour les fonctions je vous rassure et on enchaîne à la pratique.

Utiliser son servo moteur

Voici la sortie d’un servomoteur. Comme on peut le voir il y a 3 câbles contrairement à un simple moteur qui s’en contente de 2.

  • Les fils Rouge et blanc sont respectivement les bornes + et – rien de spécial jusque là
  • Le fil marron c’est celui qui est propre aux servomoteurs, par lequel on envoie les informations comme « tourner de 5° » , qu’on branche sur une sortie PWM

 

Voilà un petit programme de démonstration que j’ai fait, testez votre servomoteur avec !

#include <Servo.h> // inclusion de la librairie Servo

Servo monservo; // déclaration d'une variable de type Servo
int position = 0; //positionne le serveur a la valeur donnée (0= centré) changez cette valeur pour tester

void setup()
{
  monservo.attach(9); // attache la variable Servo à la broche 9
}

void loop() {
monservo.write(position);
}

 

9 Commentaires

  1. Mat Dipizz 22 février 2015 à 16 h 43 min␣- Répondre

    Bonjour
    Je vous remercie pour tous vos tutos qui m’ont fait débuter en programmmation.
    Je voudrais savoir si on peut faire revenir le servo dans l’autre sens .
    Mon servo tourne puis se bloque et grésille je suis donc obligé de le remettre au neutre a la main
    Merci pour votre aide
    A bientôt

    • Lily 16 juin 2015 à 12 h 20 min␣- Répondre

      Bonjour,
      Oui il suffit de rajouter une ligne ou tu écris monservo.write (0); dans la boucle. Par contre pour le voir fonctionner il faut penser a mettre un delay(500) car sinon il n’a pas le temps de tourner.
      A bientôt.

  2. Papywane 5 avril 2015 à 19 h 23 min␣- Répondre

    En regardant sur plusieurs j’ai toujours vu le servo attaché au broche 9 ou 10 sont elles les seules a pouvoir faire fonctionner un servo ?
    Merci d’avance pour votre aide.

    • Lily 16 juin 2015 à 12 h 22 min␣- Répondre

      Bonjour,
      Non n’importe quel pin (broche) digital peut faire marcher ton servo moteur. Le mettre sur la 9 ou la 10 est juste devenu une habitude.
      Bonne journée.

  3. Lumaye 15 juin 2015 à 8 h 33 min␣- Répondre

    Bonjour, je débute avec la programmation et avec arduino.J’essaie de faire une ouverture automatique en fonction de la lumière. Le système que j’ai réalisé fonctionne bien mais le servo (TG9Z) n’est pas assez puissant, lorsque je place un autre servo (MG995 tower pro) il tourne en permanence et de manière saccadée. Quelqu’un peut il m’aider ?
    Merci d’avance pour votre aide.

  4. vitinhoo 12 septembre 2015 à 1 h 56 min␣- Répondre

    how to control the servo motor with maya

  5. Pierre 6 mars 2016 à 9 h 07 min␣- Répondre

    Bonjour,

    la commande des servos est liée à la possibilité de sortir du PWM sur la broche de l’arduino.

    Pour l’arduino UNO, les broches utilisables sont : (tiré de la « documentation » du site arduino.cc)
    PWM: 3, 5, 6, 9, 10, and 11. Provide 8-bit PWM output with the analogWrite() function.
    donc, un maximum de 6 servos.

    Pierre

  6. MicRoger 23 mars 2016 à 9 h 27 min␣- Répondre

    Une petite erreur de description d’une fiche de servo : « Les fils Rouge et blanc sont respectivement les bornes + et – rien de spécial jusque là »
    En fait ce sont les fils rouge et NOIR. Le fil blanc, lui, de signa, lui, est celui du signal. Il y a quelques variantes suivant les fabricants :
    Fil du + : toujours rouge.
    Fil du – : parfois marron.
    Fil signal : parfois jaune.

  7. arnaud9212 24 mars 2016 à 19 h 32 min␣- Répondre

    merci de corriger cette faute MicRoger!

Laisser un commentaire