Aller au contenu

Utilisation d’un servomoteur dans un projet Arduino

Utilisation d’un servomoteur dans un projet Arduino

Nous vous présentons un projet plus avancé que le tutoriel sur le projet contrôlant les LEDs

Objectif : Diriger un servomoteur à l’aide d’un potentiomètre avec Arduino, apprendre à contrôler un servomoteur.

Difficulté : 1/5

Temps d'exécution : 15 min

Matériel nécessaire :



Le montage du servomoteur sur la carte Arduino

montage servomoteur avec arduino

1. Connectez le 5V(+) et le Ground(-) de votre carte Arduino à votre breadboard.

2. Placez un potentiomètre en connectant un côté au +, l’autre au -. Un potentiomètre est un diviseur de tension : il permet de changer la tension entre la broche centrale et la broche +, qui est observable sur l’entrée analogique. Connectez la broche centrale à A0. Ceci contrôlera la position du servomoteur.

3. Le servomoteur a 3 fils : rouge pour l’alimentation, noir pour le Ground, et blanc pour la transmission d’infos. Ajoutez 3 entêtes mâles aux sorties femelles, et branchez les sur la platine : 5V pour le rouge, Ground pour le noir, et la broche 9 pour le blanc.

4. Lorsque le servomoteur démarre, il peut y avoir une baisse de tension dans la carte. Vous devez réguler ces changements en plaçant un condensateur 100uf entre le fil rouge et le noir. Soyez sûr de connecter la cathode (côté avec une bande noire) au Ground pour éviter tout problème.

Contrôlez le servomoteur grâce au programme

Voici ce programme :

1. Pour utiliser la librairie du servomoteur, vous devez d’abord l’importer. Ceci permet l’ajout de nouvelles fonctionnalités spécifique au servomoteurs à celles du codage Arduino de base.

#include

2. Pour se référer au servomoteur, il faut nommer une instance de la librairie importée. C’est ce qu’on appelle l’objet. Ici, l’objet est un Servo, et on le nomme myServo. Chaque fois qu’on fera appel au servomoteur dans notre code, on l’appellera myServo.

Servo myServo;

3. Définissez une constante pour placer le potentiomètre (potPin est ici placé en A0) et ajoutez 2 variables qui seront utilisées pour l’angle de rotation du servomoteur et la valeur du potentiomètre.

int const potPin = A0;
int potVal;
int angle;

4. Dans le setup(), attachez le servomoteur à la carte, en définissant son emplacement (9). Ajoutez une connexion sérielle pour vérifier les valeurs du potentiomètre.

void setup(){
myServo.attach(9);
Serial.begin(9600);
}

5. Dans la boucle, lisez et affichez la valeur au moniteur de série.

void loop(){
potVal = analogRead(potPin);
Serial.print(« potVal:  »);
Serial.print(potVal);

6. Pour créer une valeur utilisable par le servomoteur, il vous faut convertir les données. Dans notre cas, il faut convertir les données entre 0 et 1023 entre 0 et 179. La fonction map() est utile pour cela. Elle a besoin de la valeur à échelonner (potVal, des minimum et maximum de l’entrée, et des minimum et maximum de sortie. On stocke cette valeur dans la variable angle, et on l’envoie.

angle = map(potVal, 0, 1023, 0, 179);
Serial.print(« , angle:  »);
Serial.println(angle);

7. Commandez maintenant le servomoteur, en lui indiquant qu’il doit s’actionner selon l’angle calculé.

myServo.write(angle);
delay(15);
}

Lorsque tout est prêt, tournez légèrement le potentiomètre : vous verrez alors le servomoteur s’actionner !

Intégrer ce type de programme dans un projet robotique

Bravo ! Vous venez de réaliser un projet Arduino assez complexe, qui pourrait être intégré à un projet robotique plus complet. Diriger un servomoteur de la sorte pourrait permettre d’actionner le bras d’un robot par exemple !

2 Commentaires

  • Avatar
    imane
    mars 12, 2019

    merci beaucoup, c'est bien expliqué. j'ai seulement une question au lieu d'utilisé un potentiomè tre je veux utilisé une application pour commander un robot à distance

  • Avatar
    colot
    oct. 13, 2019

    Bonjour à vous qui me lirais. Je suis pensionnée et j’ai 74 ans, j’ai un projet de main myoélectriques que j’ai conçu du début à la fin en PLA. Pour la partie mécanique et fonctionnels statique j’ai l’expérience, mais où j’ai de véritable problème c’est que j’ai décider de transmettre les mouvementes par des mini servo via une carte Arduino. Pour tout dire je ne comprends rien, je vous mail pour vous demander bien sur ci vous voulez bien, le logiciel complet sur un document Word que je pourrais copier et coller. Je me servirais toujours du même programme pour les mains à fabriquer, la différence sera le réglage de l’ange de balayage du servo « mains enfants : adultes » par un bouton poussoir. Voila ou je bute avec mon projet non commercial pour des amis d’handisport. J’espère que vous pourrez m’aider, Je vous remercie. Je me permets de vous traduire par Google Hello to you who would read me. I am pensioner and I am 74 years old, I have a project of myoelectric hand that I conceived from the beginning to the end in PLA. For the mechanical and functional static part I have the experience, but where I have real problem is that I decided to transmit the movements by mini servo via an Arduino board. To be honest, I do not understand anything, I mail you to ask you of course you want, the complete software on a Word document that I could copy and paste. I will always use the same program for the hands to manufacture, the difference will be the setting of the sweeping angel of the servo "child hands: adults" by a push button. Voila where I stop with my non-commercial project for friends of disabled. I hope you can help me, thank you. I would like to translate you by Google

Cet article vous a plu ? Laissez-nous un commentaire !

Tous les champs sont obligatoires

Nom:
E-mail: (ne sera pas publié)
Commentaire:
Recopier le code
ok