Mise à jour le 04/01/2021 : Cet article traite des différentes façons d’utiliser les servomoteurs équipés d’un retour d’information appelée plus communément feedback.
Sommaire :
- Déscriptif d’un servomoteur avec retour d’information
- Recapitulatif des servomoteurs feedback
- Comment utiliser un servomoteur équipé d’un feedback
- Pour tout problème.
- Retour au menu servomoteur
Descriptif d’un servomoteur avec retour d’information
|
Ces servomoteurs classiques possèdent un signal de retour conduit par un quatrième câble blanc. Ce signal peut être exploité par une entrée analogique pour déterminer la position du servo. En robotique, il peut augmenter la stabilité ou servir à enregistrer un mouvement.
Avantages :
- Ce signal analogique dépendant de la position du servo permet de connaître la position réelle de celui-ci.
- Ce signal permet d’améliorer la précision et la stabilité.
- Apprentissage de mouvement, enregistrement de positions ( robotique )
.
Recapitulatif des servomoteurs feedback |
.
Servomoteur feedback | |||||
Reference | Alimentation | Couple | Vitesse | Poids | Dimensions |
S1123 | 4,8 à 6 Vcc | 1,6 kg.cm à 6 Vcc | 0.10 sec/60° | 13.82gr | 11.57 x 32.71 x 31.76mm |
SM1449 | 4,8 à 6 Vcc | 1,6 kg.cm à 6 Vcc | 0,1 s/60° à 6 Vcc | 14 gr | 23 x 12 x 29 mm |
FS5103B | 4,8 Vcc | 3 kg.cm à 4,8 Vcc | 0,18 sec / 60° | 36 g | 41 x 20 x 38 mm |
6 Vcc | 3,2 kg.cm à 6 Vcc | 0,16 sec / 60° | |||
Retour au sommaire
.
Comment utiliser un servomoteur équipé d’un feedback |
Ce programme met en évidence l’utilisation des commandes Servo propres à arduino. Dans celles-ci, nous verrons comment utiliser la commande servo.attach et servo.detach et comment utiliser l’information feed-back du servomoteur. Nous verrons en même temps comment piloter le servomoteur avec un potentiomètre puis, l’utilisation d’un télérupteur ou une bascule RS pour passer d’un mode à l’autre.
.
.
Programme réalisé : IDE Arduino 1.8.10
.
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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
// // //========================================================================= // Utilisation d'un servomoteur avec feedback ( retour d'information ) // // Création de deux modes de fonctionnement. // 1er mode d'utilisation un potentiomètre pour piloter le servomoteur // 2eme mode débrayage du servomoteur pour pouvoir utiliser l’information feedback. // // RedOhm // le 01/02/2020 // H-Mazelin // //========================================================================= // Cette librairie permet à une carte Arduino de contrôler des servomoteurs #include <Servo.h> Servo servo_3; // broche sur laquelle est branchée la broche du signal du servomoteur int servo_broche3 = 3; // broche sur laquelle est branchée le retour analogique du servomoteur int feedback_broche_0 = A0; // broche sur laquelle est branchée le potentiometre int potentiometre_1 = A1; // broche 2 pour connecter le bouton poussoir de selection int bp_selection = 2 ; // variable contenant la valeur du potentiometre int valeur_potentiometre_1; // variable contenant la valeur du retour analogique du servomoteur int var_feedback_3 ; // variable du type int pour stocker la valeur de passage du bp_selection int var_bp_selection; // etat precedent du bouton et forçage a 0 de la variable int etat_bp_selection=0 ; // creation d'une memoire_2 et forçage a 0 de la variable // etat du telerupteur int memoire_2=0; // Un programme Arduino doit impérativement contenir cette fonction // Elle ne sera exécutée une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties void setup () { //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); // on attent que le port de communication soit pret while(!Serial); // pinMode -> Configure la broche spécifiée pour qu'elle se comporte // soit en entrée, soit en sortie. pinMode(bp_selection,INPUT ); } // --------------------------------------------------------------------------- // Le programme principal s’exécute par une boucle infinie appelée Loop () // --------------------------------------------------------------------------- void loop() { // lit l'état de la broche en entrée bouton2 // et met le résultat dans la variable bouton2v var_bp_selection=digitalRead(bp_selection); // Creation un telerupteur // Compare la variable à gauche avec la valeur ou la variable // à droite . Renvoie l'information vraie lorsque les deux // variables ne sont pas égales. if (var_bp_selection!=etat_bp_selection) { if (!var_bp_selection) { //Inversion de la valeur de la variable memoire memoire_2=!memoire_2; } //Inversion de la valeur de la variable memoire memoire_2=!memoire_2; } etat_bp_selection=var_bp_selection; Serial.print("Etat de la variable telerupteur => "); Serial.println(memoire_2); if (memoire_2 == LOW) { // **************************************************************** // Traitement de la lecture du potentiometre pour piloter en direct // le servomoteur // **************************************************************** // Attache un objet de type Servo_3 à une broche. servo_3.attach(3); // lecture de la valeur du potentiomètre (valeur entre 0 et 1023) valeur_potentiometre_1 =analogRead (potentiometre_1); // Affiche sur IDE la valeur brute du potentiometre // Serial.print("Valeur du potentiometre => "); // Serial.println(valeur_potentiometre_1); // mise a l'échelle (valeur entre 1 et 180) // Ré-étalonne un nombre d'une fourchette de valeur vers une autre fourchette. // Ainsi, une valeur basse source sera étalonnée en une valeur basse de destination valeur_potentiometre_1 = map(valeur_potentiometre_1,0,1023,1,180); // définit la position d'asservissement du servomoteur // en fonction de la valeur à l'échelle servo_3.write (valeur_potentiometre_1); Serial.println(valeur_potentiometre_1); } // Si le telerupteur est a l'etat haut alors on realise le traitement si dessous else { //**************************************************** // Traitement de la lecture du feedback du servomoteur //**************************************************** // Désassocie la variable Servo de sa broche. // de façon a rendre le servo libre de tension servo_3.detach(); // Pause de 100 millisecondes pour la lecture sur l'ecran delay (100); // lecture de la valeur du feedback (valeur entre 0 et 1023) var_feedback_3 = analogRead (feedback_broche_0); // Affiche sur IDE la valeur feedback // Serial.print("Valeur du feedback => "); // Serial.println(var_feedback_3); // Pause de 100 millisecondes pour la lecture sur l'ecran delay(100); // mise a l'échelle (valeur entre 5 et 180) // Ré-étalonne un nombre d'une fourchette de valeur vers une autre fourchette. // Ainsi, une valeur basse source sera étalonnée en une valeur basse de destination var_feedback_3 =map (var_feedback_3,115,515,5,180); // Affiche sur IDE la valeur feedback Serial.print("Valeur du feedback en degrés => "); Serial.println(var_feedback_3); // Pause de 500 millisecondes pour la lecture sur l'ecran delay(500); } } |
.
Retour au sommaire
Pour tout problème |
Pour tout problème de téléchargement ou pour nous suivre sur les réseaux sociaux voici les plateformes sur lesquelles nous éditons.
Cliquez sur celle qui vous intéresse .
.
Retour au sommaire