





Les potentiomètres et les servomoteurs
Posté par Jekert,
dans
Difficulté 1/5
18 avril 2016
·
10 495 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:
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
, 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 :
Afin de tester chaque servomoteur que j'ai acheté, j'ai fait ce petit montage disponible ici :
Avec ce programme-ci :
Voici l'algorigramme qui devrait vous aider à comprendre :
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

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 :
Sur la datasheet, on retrouve ceci :
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 :
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 :
Voilà tout pour ce billet, à bientôt !