Aller au contenu






- - - - -

Les potentiomètres et les servomoteurs

Posté par Jekert, dans Difficulté 1/5 18 avril 2016 · 2 931 visite(s)

servo potentiomètre arduino débutant
Petit passage rapide par les potentiomètres et les E/S analogiques. Donc pour ceux qui ne voient pas du tout à quoi peut ressembler un potentiomètre (aussi appelés résistances variables) en voici deux exemples mais il en existe beaucoup d'autres, adaptés à chaque utilisation:

Image IPBImage IPB Image IPB

Pour ce billet j'utilise celui de droite, c'est un potentiomètre de 10k Ohm, il dispose de trois broches ceux sur les extrémités sont utilisés pour le 5V et le GND et celui du milieu est la sortie du potentiomètre(curseur). En fonction de la position du curseur, le courant sortant par la broche du curseur sera plus ou moins élevé.
 
Les servos :
Élément incontournable sur Arduino et dans la robotique en générale, les servomoteurs sont des petits moteurs qui permettent d'atteindre un angle donné entre 0 et 180°. Et comme l'indique Wikipédia Servo ne veut pas dire cerveau mais vient du latin Servus qui veut dire "esclave" donc n'allez pas dire que ce moteur "réfléchi" lorsque l'on vous le demande, à l'oral des TPE par exemple :rolleyes:, pourquoi on appelle ça des Servo...
 
Comment ça marche ?
 Les servomoteurs sont équipés de trois pins le GND, le 5V et PWM (si vous ne vous souvenez plus, j'en avais parlé dans le premier billet). Pour le commander vous n'avez donc pas à utiliser de drivers, il suffit de le brancher correctement sur votre carte (pour rappel, les pins PWM d'une Arduino sont ceux précédés d'un ~) et d'inclure à votre programme la bibliothèque Servo.h . Attention aussi à vérifier la datasheet de votre modèle de servomoteur si c'est la première fois que vous l'utilisez. Personnellement j'utilise des SG90, largement suffisant pour mes petits tests et peu chers :

Image IPB Image IPB

 

Sur la datasheet, on retrouve ceci :

Image IPB

Veillez à respecter les conditions de vos datasheets, j'en ai déjà fait les frais ^_^ ...

 

Les principales fonctions de la librairie Servo.h à connaitre sont :
  • Servo votre_nom_de_servo;       #A déclaré avant la fonction setup;
  • votre_nom_de_servo.attach(9);  #A déclaré dans la fonction setup() n'oubliez pas de modifier le "9" avec le numéro de votre pin PWM;
  • votre_nom_de_servo.write(position);   #A mettre là où vous le souhaitez elle permet de faire atteindre au servo un certain angle, n'oubliez pas de mettre un delay après cette fonction afin de laisser le temps au servo d'atteindre la position donnée.
 
Afin de tester chaque servomoteur que j'ai acheté, j'ai fait ce petit montage disponible ici :
 

Image IPB

Image IPBImage IPB

 
Avec ce programme-ci :
  // Librairies :
#include <Servo.h>
  // Pins E/S :
  Servo servo;
int potent = A0;
  // Variables :
int pos = 90;
int val = 90;
  //Fonction d'initialisation
void setup() {
  // Déclaration E/S :
pinMode(potent, INPUT);
  // Servomoteur(s) :
servo.attach(9);
  // Connectique :
Serial.begin(9600);
}

  // Boucle inifinie :
void loop() {
  val = analogRead(potent);
  pos = map(val, 0, 1024, 0, 180);
  servo.write(pos);
  Serial.print("Position :");
  Serial.println(pos);
  delay(10);
}
Le but de ce programme est de lire la valeur que renvoie le potentiomètre, puis de la convertir avec la fonction map (en suivant cette syntaxe : map(val, min_départ, max_départ, min_arrivée, max_arrivée) ) pour que le servo puisse se déplacer sur l'ensemble de la course du curseur. Puis de l'afficher dans le moniteur série.
 
Voici l'algorigramme qui devrait vous aider à comprendre :

Image IPB

 

Voilà tout pour ce billet, à bientôt !




Ma photo

Progression

État du prochain billet :

5%

 

État du prochain chapitre de l'ouvrage:

85%

 

Rechercher dans le blog

utilisateur(s) actif(s)

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

Derniers visiteurs

  • Photo
    Melmet
    17 mai 2019 - 05:39
  • Photo
    XEvilBestBum
    29 déc. 2018 - 17:40
  • Photo
    Snyp54
    10 nov. 2018 - 22:08

Derniers commentaires