[go: up one dir, main page]

0% ont trouvé ce document utile (0 vote)
50 vues5 pages

TP4 - Arduino

Ce document présente un TP sur la commande des moteurs en robotique, abordant les moteurs à courant continu, les servomoteurs et les moteurs pas à pas. Il explique le fonctionnement de chaque type de moteur, les connexions nécessaires avec Arduino, ainsi que des exercices pratiques pour les contrôler. Des exemples de code sont fournis pour aider à la mise en œuvre des commandes des moteurs.

Transféré par

pape gora thiam
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
50 vues5 pages

TP4 - Arduino

Ce document présente un TP sur la commande des moteurs en robotique, abordant les moteurs à courant continu, les servomoteurs et les moteurs pas à pas. Il explique le fonctionnement de chaque type de moteur, les connexions nécessaires avec Arduino, ainsi que des exercices pratiques pour les contrôler. Des exemples de code sont fournis pour aider à la mise en œuvre des commandes des moteurs.

Transféré par

pape gora thiam
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 5

Arduino TP4 – Commande des moteurs | Dr Ousmane SADIO

_______________________________________________________________________________________________________________

TP4 – Commande des moteurs

En robotique, on ne point faire abstraction de la notion de mouvement. Les moteurs font que vos
projets ont du mouvement ! Certains moteurs sont mieux adaptés pour des tâches spécifiques,
d'autres peuvent être adaptés mécaniquement pour créer des rotations ou d'autres mouvements
nécessaires. Cette séance sera consacrée à l’étude des techniques de commandes de moteurs à
courant continue, des servomoteurs et des moteurs pas à pas.

A. Le moteur à courant continu


Le moteur à courant continue (CC) fonctionne quand on lui envoie un courant. Le rotor va donc tourner
plus ou moins vite selon celui-ci reçoit une tension plus ou moins élevée, puis s’arrêter dès lors qu’il
n’est plus alimenté.

̶ Dans un moteur CC, la tension à ses bornes et la vitesse de sortie sont liées. Plus la tension sera
élevée et plus la vitesse le sera.
̶ Le couple et le courant sont liés : si l’un des deux augmente alors l’autre également va augmenter.
Autrement dit, pour avoir plus de couple le moteur consomme plus de courant. Un moteur, pour
continuer de tourner à la même vitesse, doit fournir plus de couple.
Attention : pour commander un moteur avec un Arduino, il faut un dispositif capable de générer une
intensité suffisante. Les broches de l’Arduino peuvent envoyer un courant de 40mA maxi ce qui est
généralement trop peu pour entraîner un moteur. Il est impératif alors d’utiliser une source de tension
externe comme une batterie de 9V.

• Pratique
Ecrire un programme de commande d’un moteur à courant continue alimenté par une source de tension
externe à la carte Arduino. Un bouton poussoir servira à activer ou non le relais d’alimentation du
moteur.
Ensiute, remplacer le bouton poussoir par un détecteur d’obstacle. Ainsi lorsqu’un obsracle est détecté
à moins de 10cm, arrêter le moteur.

______________________________________________________________________________
UVS 2021 – 2022 | Licence 2 Robotique
Arduino TP4 – Commande des moteurs | Dr Ousmane SADIO
_______________________________________________________________________________________________________________

B. Servomoteur TowerPro SG90


Le TowerPro SG90 est un micro servomoteur largement utilisé dans le monde du modélisme. Sa prise
standard Graupner à 3 fils (O : PWM, R : +, M : −) et sa tension d'alimentation de 5 volts rendent le
Tower Pro directement utilisable sur un Arduino. Le principe de base est assez simple. Il suffit d'envoyer
une impulsion PWM et c'est le temps que durera cette impulsion qui déterminera l'angle du servomoteur.

Arduino dispose de la librairie Servo.h qui permet de prendre facilement le contrôle de deux
servomoteurs (ou plus) sur les pins 9, 10 ou autres.
• Pratique
Concevoir un système de commande de position du servomoteur à l’aide d’un joystick. L’axe X du
joystick permet de commander le premier servomoteur,
Intégrer un second servomoteur et modifier le programme afin de la position de ce servomoteur soit
commandée par l’axe Y du joystick.
Utiliser la sortie numérique MS du joystick pour ramener l’angle des servomoteurs à 90°.

______________________________________________________________________________
UVS 2021 – 2022 | Licence 2 Robotique
Arduino TP4 – Commande des moteurs | Dr Ousmane SADIO
_______________________________________________________________________________________________________________

Bout de code sur l’utilisation de le bibliothèque servo


(1) Paramétrage
#include <Servo.h>

// Paramètres servomoteurs
Servo servomotor1;
int servo1pin = 9;

(2) Initialisation dans la fonction setup()


servomotor1.attach(servo1pin);

(3) Commande de l’angle dans la fonction loop()


servomotor1.write(angle1);

C. Le moteur pas-à-pas 28BYJ-48


Le 28BYJ-48 est un petit moteur pas à pas unipolaire fonctionnant sur 5V, 25 mA. Avec une réduction
de 1/64, il offre un couple de 340 gf.cm pour une vitesse d'environ 15 rotations par minute (RPM).
Le moteur dispose de 4 bobines de fil qui permettent de cadencer le moteur en mode demi-pas. Il est
souvent accompagné d’un dispositif d’adaptation compatible Arduino, le ULN2003. Ce dernier permet
de contrôler facilement le moteur pas à pas à partir d'un microcontrôleur, comme l'Arduino UNO.

______________________________________________________________________________
UVS 2021 – 2022 | Licence 2 Robotique
Arduino TP4 – Commande des moteurs | Dr Ousmane SADIO
_______________________________________________________________________________________________________________

Une bibliothèque Stepper.h a déjà été créée pour vous aider à piloter un moteur pas à pas. Cependant,
cette bibliothèque ne fonctionne pas de manière très efficace avec les moteurs 28BYJ-48 et ne permet
pas de commander deux moteurs simultanément.
AccelStepper.h est une librairie qui permet le contrôle avancé des moteurs pas-à-pas en incluant des
fonctionnalités tels que : accélération, décélération et contrôle de moteurs pas-à-pas concurrents.
Avant d’utiliser la bibliothèque, il faudra l’installer d’abord à partir du gestionnaire de bibliothèque de
l’IDE Arduino.
• Pratique
Ecrire un programme permettant d’accélérer lentement le moteur dans un sens, puis ralentir suivi d’un
arrêt du moteur et enfin accélérer dans le sens opposé.
Intégrer un potentiomètre dans le montage. Il servira à indiquer la valeur (0 à 1023) du paramètre
endPoint, c’est-à-dire le nombre de pas que doit faire le moteur.

______________________________________________________________________________
UVS 2021 – 2022 | Licence 2 Robotique
Arduino TP4 – Commande des moteurs | Dr Ousmane SADIO
_______________________________________________________________________________________________________________

Code à tester

#include <AccelStepper.h>

#define HALFSTEP 8

#define motorPin1 5 // IN1


#define motorPin2 4 // IN2
#define motorPin3 3 // IN3
#define motorPin4 2 // IN4

int endPoint = 1024; // steps - 1024 = approx 1/4 tours

AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);

void setup(){
Serial.begin(9600);
Serial.println(stepper1.currentPosition());
delay(5000);
//Configurations des limites
stepper1.setMaxSpeed(1000.0);
stepper1.setAcceleration(100.0);
stepper1.setSpeed(200);
stepper1.moveTo(endPoint);
}

void loop(){
// Changer de direction ne fois arrive à la limite
if (stepper1.distanceToGo() == 0){
Serial.println(stepper1.currentPosition());
stepper1.setCurrentPosition(0);
endPoint = -endPoint; // changement de direction
stepper1.moveTo(endPoint);
Serial.println(stepper1.currentPosition());
}
stepper1.run();
}

______________________________________________________________________________
UVS 2021 – 2022 | Licence 2 Robotique

Vous aimerez peut-être aussi