Différences entre versions de « Servo-Moteur »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 197 : Ligne 197 :
 
}}
 
}}
  
== L'angle de rotation max ==
+
== L'angle de rotation maximal ==
 
{{traduction}}
 
{{traduction}}
  
How many degrees can this servo turn? Why do you not list it with the other specifications?
+
De combien de degré tel ou tel servo peut-il tourner? Pourquoi cette information est-elle manquante dans la plupart des spécifications constructeur?  
  
We do not specify the range of rotation of our servos because this information is not generally available from servo manufacturers. RC servos are usually intended for controlling things like the steering mechanism in an RC car or the flaps on an RC plane. Manufacturers make sure that the range is enough for these typical applications, but they do not guarantee performance over a wider range.
+
Les servos RC (pour système Radio Commandés) sont plutôt destiné à contrôler des choses tels que qu'un mécanisme de direction d'une voiture télécommandée ou les volets d'un avion radio-commandé. Dans ce cadre d'utilisation, il n'est pas nécessaire d'avoir une grande amplitude et les constructeurs font en sorte d'avoir une amplitude largement suffisante pour couvrir ce cas d'utilisation. C'est la raison pour laquelle les constructeurs se servo ne se donnent pas la peine de fournir cette information dans leur fiche technique... 90° d'amplitude est plus que largement suffisant.
  
This means most RC servos will rotate about 90° using the standard 1–2 ms pulse range used by most RC receivers. However, if you are using a controller capable of sending a wider range of pulses, many servos can rotate through almost 180°.
+
Cependant, si vous êtes un hobbyiste/Arduiniste, cette information est plus que pertinente et plus l'amplitude est grande et plus votre travail est confortable. Sans information dans la fiche technique, partez du principe que votre servo aura une amplitude de 0 à 90° (environ) mais il existe également des servo avec un amplitude de 180° mais ce ne sont pas les plus commun.
 +
 
 +
Comme précisé, la plupart des servo RC aurons une rotation d'envrion 90° pour une signal d'impulsion entre 1-2ms (le standard en vigueur dans le RC). Ceci dit, si vous utiliser un controleur Servo moteur capable d'envoyer une largeur d'implusion plus étendue (comme Arduino), vous pourriez voir certain servo tourner jusqu'à 180° (si cela est possible mécaniquement).
  
  

Version du 25 octobre 2014 à 16:25

Qu'est-ce qu'un servo-moteur

Un servo-moteur est un type de moteur électrique. C'est un dispositif typiquement utilisé en modélisme pour, par exemple, contrôler la direction d'une voiture télécommandée.

Servomoteur.jpg

Sur un servo-moteur, l'angle de de l'axe reste fixé dans une position et peu varier entre 0 et 180° en fonction du signal envoyé. Un servo-moteur comprend :

  • Un moteur électrique (continu), généralement assez petit.
  • Des engrenages réducteur en sortie du ce moteur (pour avoir moins de vitesse et plus de couple ou de force).
  • Un capteur type "potentiomètre" raccordé sur la sortie.
    • Il s'agit donc d'une résistance qui varie en fonction de l'angle, ce qui permet de mesurer l'angle de rotation sur l'axe de sortie.
    • Un asservissement électronique pour contrôler la position/rotation, de cet axe de sortie pour le maintenir à la bonne position.

Commander électronique d'un servo-moteur?

Le principe de base est assez simple. Il suffit d'envoyer une impulsion et c'est le temps que durera cette impulsion qui déterminera l'angle du servo-moteur. ce temps d'impulsion est de quelques de quelques millisecondes et doit être répété à intervalle régulier (toutes les 20 ms à 50ms). Si le temps d'impulsion varie d'un fabricant à l'autre, les valeurs suivantes sont assez standard:

  • 1.25 ms = 0 degré
  • 1.50 ms = 90 degrés
  • 1.75 ms = 180 degrés

ServoImpluseAngle.jpg

Source: Area RC-Bot

Raccordement d'un servo-moteur

Puisque l'interface de commande est assez simple, un servo-moteur se raccorde avec seulement 3 fils (la masse, +5v et la commande d'impulsion). Les raccordements les plus standardisés sont:

Noir, Rouge, Blanc

  • Noir: Raccordé à la Masse,
  • Rouge: Alimentation moteur et logique de commande. Raccordé à VCC 5v,
  • Blanc: Commande de la position du servo-moteur.

Marron, Rouge, Jaune

Couleurs du standard Graupner.

Servograupner.png

  • Marrons: Raccordé à la Masse,
  • Rouge: Alimentation moteur et logique de commande. Raccordé à VCC 5v,
  • Jaune: Commande de la position du servo-moteur.

Les autres cas

La plupart des servo-moteur ont 3 conducteurs avec des couleurs noir, rouge et blanc OU brun, rouge et orange/jaune/etc:

Servo-autre-raccord.jpg

  • brun ou nour = MASSE/GND (borne négative de l'alimentation)
  • Rouge = alimentation servo (Vservo, borne positive de l'alimentation)
  • Orange, jaune, blanc ou bleu = Commande de position du servo

Please check the specs for your servo to determine the proper power supply voltage, and please take care to plug the servo into your device in the proper orientation (plugging it in backwards could break the servo or your device).

Programmation Arduino

Il bien évidemment possible de programmer soi-même la commande d'impulsion mais cela serait fastidieux et demanderait une optimisation importante du programme.

Mais pour nous faciliter la vie, Arduino dispose de la librairie Servo.h qui permet de prendre facilement le contrôle de deux servomoteurs (ou plus) sur les pin 9, 10 ou autres. Le programme ci-dessous fonctionne, par ailleurs, parfaitement avec la pin 2.

Montage

ServoRaccordement.png

Arduino-ServoMoteur.png

Cette seconde image issue de ce tutoriel sur Arduino.cc

Code Source

Le programme de contrôle en quelques lignes

#include <Servo.h>

Servo monServo; 

void setup(){
  // Attacher la pin 9 à l'objet servo.
  //   ATTN: le code initialise l'angle à 90 degrés par défaut. 
  monServo.attach(9); 
}

void loop(){
  // Assigne un angle de 53 degrés
  monServo.write( 53 );
  delay( 2000 ); 

  // Passer de 0 a 180 degrés par angle de 10 degrés
  for( int iAngle=0; iAngle<= 180; iAngle+=10 )
  { 
    monServo.write(iAngle);
    delay( 50 );
  }
}

Un exemple plus avancé

Voici le code de servo.pde, une version plus complète d'un programme contrôlant un servo-moteur.

Il démontre clairement la capacité d'Arduino à contrôler finement la position d'un servo-moteur.

 /*
 *  Commande d'un servo moteur en plusieurs séquences.
 *  Clignotement de la Led onBoar:
 *    - rapide en début de programme.
 *    - lente en entre les séquences.
 *    - fixe en fin de programme
 *
 *  Commande servo à l'aide de servo.h et 
 *  seulement sur les pin 9 ou pin 10.
 *
 */
#include <Servo.h>

Servo monServo;
int pos = 0;

const int pinLed = 13; // Led sur le board
const long blinkTimeMs = 2000; // temps de clignotement de la led (2 sec)

const int FAST = 50; // interval entre deux clignotement (rapide)
const int SLOW = 150; // interval entre deux clignotement (lent)
const int FIXED = -1; // valeur spécial pour éclairage continu

void setup(){
  pinMode( pinLed, OUTPUT );
  // Attacher la pin 9 à l'objet servo.
  //   ATTN: le code initialise l'angle à 90 degrés par défaut. 
  monServo.attach(9); 
  // remettre l'angle à 0 degrés
  monServo.write( 0 );
  
}

void loop(){
  // Faire clignoter led 13 sur le board.
  // Démarrage de séquence --> clignotement rapide
  blinkBoardLed( FAST );
  
  // Passer de 0 a 180° par angle de 10 degré
  for( int iAngle=0; iAngle<= 180; iAngle+=10 )
  { 
    monServo.write(iAngle);
    delay( 250 );
  } 
 
  // Clignotement lent entre deux séquences
  blinkBoardLed( SLOW );

  // Angle décroissant progressif
  for( int iAngle = 180; iAngle>=0; iAngle-- )
  {
    monServo.write( iAngle );
    delay( 10 );
  }

  // Clignotement lent entre deux séquences
  blinkBoardLed( SLOW );
  
  // Angle arbitraire de 45 degrés
  monServo.write( 45 );

  // Find de séquence -> eclairage fixe
  blinkBoardLed( FIXED );
}

/* Fait clignoter la led 13 sur le board pendant 2 secondes
 *
 * interval: Interval de clignotement. -1 pour fixe.
 */
void blinkBoardLed( int interval ){
  long startMillis = millis();
  // temps que pas 2 sec d'écoulée
  while( (millis() - startMillis) < blinkTimeMs ) {
    
    switch( interval ){
      case -1 : // Cas spécial, allumage fixe
                digitalWrite( pinLed, HIGH );
                delay( blinkTimeMs ); // attendre le temps total
                digitalWrite( pinLed, LOW );
                break;
      default: 
        // faire clignoter
        digitalWrite( pinLed, HIGH );
        delay( interval );
        digitalWrite( pinLed, LOW );
        delay( interval );
     
    } // eof Case
    
  } // eof While
}

{{#Widget:Iframe |url=http://www.youtube.com/embed/7ovrsbSO_L4 |width=420 |height=315 |border=0 }}

L'angle de rotation maximal

De combien de degré tel ou tel servo peut-il tourner? Pourquoi cette information est-elle manquante dans la plupart des spécifications constructeur?

Les servos RC (pour système Radio Commandés) sont plutôt destiné à contrôler des choses tels que qu'un mécanisme de direction d'une voiture télécommandée ou les volets d'un avion radio-commandé. Dans ce cadre d'utilisation, il n'est pas nécessaire d'avoir une grande amplitude et les constructeurs font en sorte d'avoir une amplitude largement suffisante pour couvrir ce cas d'utilisation. C'est la raison pour laquelle les constructeurs se servo ne se donnent pas la peine de fournir cette information dans leur fiche technique... 90° d'amplitude est plus que largement suffisant.

Cependant, si vous êtes un hobbyiste/Arduiniste, cette information est plus que pertinente et plus l'amplitude est grande et plus votre travail est confortable. Sans information dans la fiche technique, partez du principe que votre servo aura une amplitude de 0 à 90° (environ) mais il existe également des servo avec un amplitude de 180° mais ce ne sont pas les plus commun.

Comme précisé, la plupart des servo RC aurons une rotation d'envrion 90° pour une signal d'impulsion entre 1-2ms (le standard en vigueur dans le RC). Ceci dit, si vous utiliser un controleur Servo moteur capable d'envoyer une largeur d'implusion plus étendue (comme Arduino), vous pourriez voir certain servo tourner jusqu'à 180° (si cela est possible mécaniquement).


You can find a servo’s limits if you use a servo controller that can send pulses outside of the standard range (such as our Maestro servo controllers). To find the limits, use the lowest possible supply voltage at which the servo moves, and gradually increase or decrease the pulse width until the servo does not move any further or you hear the servo straining. Once the limit is reached, immediately move away from it to avoid damaging the servo, and configure your controller to never go past the limit.

   You might be wondering why we do not just follow the above steps for all the servos we carry and list a specification for degrees of rotation. Unfortunately, since servo manufacturers do not specify the range of rotation, it might change from one manufacturing run to the next. They will not inform us about changes that are not specified, and we have no way of knowing if or when they might change their manufacturing process.

Où acheter

MCHobby vous propose des servo-moteurs sur son WebShop. Voir la catégorie "Moteur & Robotique"

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.