Accueil > Arduino, Matériel > Utilisation du servomoteur SG90 avec l’Arduino

Utilisation du servomoteur SG90 avec l’Arduino

Aujourd’hui, on va tester l’utilisation de servomoteurs; mon choix s’est porté sur un modèle Tower Pro SG90 :

image

Photo du site “www.mchobby.be, vente de kit et composant pour Arduino/Raspberry”

Les caractéristiques du SG90 sont les suivantes :

– Dimensions : 22 x 11.5 x 27 mm.

– Poids : 9 gr.

– Tension d’alimentation : 4.8v à 6v.

– Vitesse : 0.12 s / 60° sous 4.8v.

– Couple : 1.2 Kg / cm sous 4.8v.

– Amplitude : de 0 à 180°.

 

Le servo est équipé d’une prise de type Graupner à 3 fils.

La correspondance des fils est la suivante :

Marron masse
Rouge + 5v
Orange commande

Ce type de servomoteur peut être branché directement sur l’Arduino. Par exemple le branchement pourra être le suivant :

image

Pour piloter un servomoteur, Arduino fournit une librairie de nom ‘Servo’ qui simplifie l’utilisation de celui-ci.

Avant toute utilisation d’un servomoteur, il va être nécessaire de comprendre son fonctionnement et ses limites. La première étape est d’initialisée le servomoteur avec un angle de 0° à l’aide de ce programme :

// Test utilisation servomoteur SG90 //

#include <Servo.h>
 
Servo monservo;  // crée l’objet pour contrôler le servomoteur
 
void setup()
{
  monservo.attach(9);  // utilise la broche 9 pour le contrôle du servomoteur
  monservo.write(0); // positionne le servomoteur à 0°
}
 
 
void loop()

}

Maintenant que l’on a la position 0°, vous pouvez y fixer un palonnier qui va vous servir de repère.

Ce servomoteur à une amplitude de 0° à 180°; bon on va essayer de le positionner à 180° avec ce programme :

// Test utilisation servomoteur SG90 //

#include <Servo.h>
 
Servo monservo;  // crée l’objet pour contrôler le servomoteur
 
void setup()
{
  monservo.attach(9);  // utilise la broche 9 pour le contrôle du servomoteur
  monservo.write(180); // positionne le servomoteur à 180°
}
 
 
void loop()

}

Si vous prenez le servomoteur dans votre main, on ressent une vibration car en fait il est arrivé en butée; cela n’est pas bon pour l’électronique embarqué dans le servomoteur. Il va donc être nécessaire de découvrir l’angle à adapter pour effectuer véritablement un 180° sans arriver en butée.

Pour ma part, je suis arrivé à une valeur de 150°. Et pour effectuer un angle de 90°, je dois indiquer une valeur de 70°. Voici un petit exemple de programme qui permet de valider cela :

// Test utilisation servomoteur SG90 //

#include <Servo.h>
 
Servo monservo;  // crée l’objet pour contrôler le servomoteur
 
void setup()
{
  monservo.attach(9);  // utilise la broche 9 pour le contrôle du servomoteur
  monservo.write(0); // positionne le servomoteur à 0°
}
 
 
void loop()
{
  monservo.write(0);
  delay(1000);
  monservo.write(70);
  delay(1000);
  monservo.write(150);
  delay(1000);
}

Voilà c’est tout pour le moment.

Catégories :Arduino, Matériel Étiquettes : , ,
  1. 12/05/2013 à 23:55

    Bonjour, l’image et certaines des caractéristiques proviennent du site (webshop et ou wiki) de MCHobby. Nous faisons du traitement d’image assez détaillé pour une intégration parfaite avec notre WebShop 🙂 Merci de référencer votre source en utilisant la mention:

    « www.mchobby.be, vente de kit et composant pour Arduino/Raspberry.  »

    Echange de bon procédé 🙂

  2. 17/05/2015 à 02:45

    svp je besion d’un code pour avancer deux moteur avec arduino ,shield motor ,ultrason HC_sr04,serveau moteur tower pro SG90, j’ai un code et je veux ajouté le serveaumoteur pour mon code ,aidez moi svp ;voila mon code :

    #include

    #define TRIGGER_PIN 5
    #define ECHO_PIN 6

    Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);

    // variable moteur droit
    const int IN1=2;
    const int IN2=4;
    const int ENABLE1=3;

    // variable moteur gauche
    const int IN3=12;
    const int IN4=13;
    const int ENABLE2=11;

    void setup()
    {
    Serial.begin(9600);
    // intialisation moteur droit
    pinMode (IN1,OUTPUT);
    pinMode (IN2,OUTPUT);
    pinMode (ENABLE1,OUTPUT);
    // initialisation moteur gauche
    pinMode (IN3,OUTPUT);
    pinMode (IN4,OUTPUT);
    pinMode (ENABLE2,OUTPUT);
    }

    void loop()
    {
    float cmMsec, inMsec;
    long microsec = ultrasonic.timing();

    cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
    inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);
    Serial.print(« CM: « );
    Serial.print(cmMsec);
    delay(30);

    if (cmMsec < 20)
    {
    //tourne
    digitalWrite(ENABLE1,HIGH);
    digitalWrite(ENABLE2,LOW);
    digitalWrite(IN1,LOW); // MOTEUR GAUCHE sens 1
    digitalWrite(IN2,HIGH);
    digitalWrite(IN3,HIGH); // MOTEUR DROIT sens 1
    digitalWrite(IN4,LOW);
    delay(300);
    }
    else
    {
    //avance
    digitalWrite(ENABLE1,HIGH);
    digitalWrite(ENABLE2,HIGH);
    digitalWrite(IN1,HIGH); // MOTEUR DROIT sens 1
    digitalWrite(IN2,LOW);
    digitalWrite(IN3,LOW); // MOTEUR GAUCHE sens 1
    digitalWrite(IN4,HIGH);
    delay(300);

    }
    }

  1. 24/05/2013 à 08:56
  2. 27/05/2014 à 12:12

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :