Mise à jour le 13/03/2019 : Dans cette rubrique , vous allez retrouver des informations et des exemples utils pour l’utilisation de cette librairie .Celle-ci permet à une carte Arduino de contrôler des servomoteurs .
Sommaire :
- Description d’un servomoteur.
- Detail de la librairie servo.
- attach() : Connecte un servomoteur physique à une broche.
- detach() : Détache la variable Servo de sa broche.
- write() : Modifie l’angle du servomoteur en degrés.
- writeMicroseconds(uS) : Envoie une valeur en microsecondes au servo.
- read(): Lit la valeur de l’angle courant du servomoteur.
- readMicroseconds(): Renvoie la largeur d’impulsion.
- Tuto sur le pilotage des servomoteurs.
- Plus information sur les servomoteurs
- Retour au sommaire du tutoriel pour Arduino
.
Description d’un servomoteur |
Un servomoteur intègrent un mécanisme et un axe qui peut-être contrôlé précisément. Les servomoteurs standards permettent de positionner l’axe à différents angles, habituellement entre 0 et 180 degrés .
La partie électrique d’un servomoteur ne dispose que de 3 fils codés par couleur, pour des servomoteurs type modélisme, et 5 fils pour des servomoteurs de grosse puissance genre Topmodele qui permettent d’alimenter le moteur et de lui transmettre des ordres de positions sous forme d’un signal codé en largeur d’impulsion plus communément appelés PWM ou RCO. Cela signifie que c’est la durée des impulsions qui détermine l’angle absolu de l’axe de sortie et donc la position du bras de commande du servomoteur. Le signal est répété périodiquement, en général toutes les 20 millisecondes, ce qui permet à l’électronique de contrôler et de corriger continuellement la position angulaire de l’axe de sortie, cette dernière étant mesurée par le potentiomètre.
A savoir : un servo ou servomoteur se présente sous un aspect comme ci dessous
.
Retour au sommaire
Détail de la librairie servo |
Pour inclure la librairie Servo dans un programme, on ajoutera au début du programme la ligne suivante : #include <Servo.h>
attach()
attach() : Connecte un servomoteur physique à une broche.
2 Options possibles pour attach()
servo.attach(pin)
servo: une variable de type Servo
Pin : le numéro de la broche à laquelle la variable Servo est attachée.
servo.attach(pin, min, max)
servo: une variable de type Servo.
pin: le numéro de la broche à laquelle le servo est attaché.
min: (facultatif): la largeur d’impulsion, en microsecondes, correspondant à l’angle minimal (0 degré) sur le servo (valeur par défaut de 544).
max: (facultatif): la largeur d’impulsion, en microsecondes, correspondant à l’angle maximal (180 degrés) sur le servo (valeur par défaut de 2400).
.
Retour au sommairedetach()
detach() : Détache la variable Servo de sa broche.
Exemple d’utilisation de la fonction detach()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
// // // // Exemple d'utilisation de la fonction attach et detach // RedOhm 27/02/2019 // // // Cette librairie permet à une carte Arduino de contrôler des servomoteurs #include <Servo.h> // Crée un objet de type "Servo", nommé -> monservo Servo monservo; int broche4 =4; /* * Un programme Arduino doit impérativement contenir cette fonction . * Elle ne sera exécuter une seule fois au démarrage du microcontroleur * Elle sert à configurer globalement les entrées sorties * */ void setup() { // initialisation de la connexion série // IMPORTANT : la fenêtre terminal côté PC doit être réglée sur la même valeur. Serial.begin(9600); Serial.println("***************************************"); Serial.println(" Exemple d'utilisation "); Serial.println(" de la fonction attach() et detach()"); Serial.println(" "); Serial.println(" Appui sur la touche a pour attacher "); Serial.println(" le servomoteur "); Serial.println(" Appui sur la touche d pour dettacher "); Serial.println(" le servomoteur "); Serial.println("***************************************"); Serial.println(" "); } /* *Le programme principal s’exécute par une boucle infinie appelée Loop () * */ void loop () { //Obtenez le nombre d'octets (caractères) disponibles pour //la lecture du port série. //dans notre cas soit la lettre a pour attach ou d pour detach // if(Serial.available()) { //Lit les données série entrantes. char commande = Serial.read(); // si la lettre a est détectée if (commande == 'a') { // on attache le servomoteur a sa broche soit la 9 dans notre // cas Serial.println("Activation de la fonction attach()"); monservo.attach (broche4); delay(50); } // si la lettre d est détectée else if (commande == 'd') { // on dettache le servomoteur a sa broche soit la 9 dans notre // cas Serial.println("Activation de la fonction detach()"); monservo.detach(); delay (50); } } } |
.
write()
write() : Modifie l’angle du servomoteur en degrés.
Pour un servomoteur standard, cette instruction permet de fixer l’angle de l’axe ( en degrés ) . La valeur 0 correspond à la rotation maximal vers la gauche et la valeur 180 correspond à un déplacement vers la droite .
Pour un servomoteur à rotation continue , elle permet de fixer la vitesse du servomoteur : donc 0 correspond à la vitesse maximum dans un sens et 180 correspond à la vitesse maximum dans l’autre sens et enfin 90 correspond a l’arrêt du servomoteur .
servo.write(angle)
servo: une variable de type Servo.
angle: la valeur à écrire sur le servo, de 0 à 180
.
Retour au sommaire.
writeMicroseconds(uS)
writeMicroseconds(uS) : Envoie une valeur en microsecondes (µs) au servomoteur qui contrôle en conséquence la position de l’axe .
Écrit une valeur en microsecondes (us) sur le servo, contrôlant ainsi l’arbre. Sur un servo standard, cela va définir l’angle de l’arbre. Sur les servos standards, la valeur du paramètre 1000 est complètement dans le sens anti-horaire, 2000 dans le sens horaire et 1500 dans le milieu.
Notez que certains fabricants ne suivent pas cette norme de très près, en général ,les servomoteurs répondent souvent aux valeurs comprises entre 700 et 2300. N’hésitez pas à augmenter ces points d’extrémité jusqu’à ce que le servo ne vibre plus. Notez cependant que d’aller au-delà de ses extrémités souvent indiqué par un son qui gronde (étant un fort courant) doit donc être évité.
servo.writeMicroseconds(uS)
servo: une variable de type Servo.
uS: la valeur du paramètre en microsecondes (valeur definit en int )
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// // Exemple d'utilisation de la fonction writeMicroseconds // // RedOhm 24/02/2019 // // // Cette librairie permet à une carte Arduino de contrôler des servomoteurs #include <Servo.h> // Crée un objet de type "Servo", nommé -> monservo Servo monservo; /* * Un programme Arduino doit impérativement contenir cette fonction . * Elle ne sera exécuter une seule fois au démarrage du microcontroleur * Elle sert à configurer globalement les entrées sorties * */ void setup() { // associe la variable monservo a sa broche en autre la numero 3 monservo.attach (3); // definit la largeur d'impulsion du servomoteur en microsecondes monservo.writeMicroseconds (1500); // met le servo à mi-chemin } /* *Le programme principal s’exécute par une boucle infinie appelée Loop () * */ void loop () { } |
.
.
read()
read(): Lit la valeur de l’angle courant du servomoteur (la valeur renvoyée est la dernière envoyée avec l’instruction write()).
.
Retour au sommaire
Tuto sur le pilotage des servomoteurs |
.
Retour au sommaire
Plus information sur les servomoteurs |
.
Apparence générale de quelques servomoteurs.
Principe de fonctionnement d’un servomoteur.
Retour au sommaire