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

Controler Un Moteur DC Arduino

Transféré par

Electronique Auto
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)
24 vues5 pages

Controler Un Moteur DC Arduino

Transféré par

Electronique Auto
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

Contrôler un moteur à courant continu

avec une carte Arduino


Youtube : Glassbox

Introduction
Si vous ne possédez pas la même shield :
Si vous souhaitez en acheter une soyez certains que d'autres personnes se sont déjà cassé la
tête sur des problèmes que vous pourriez rencontrer pour votre projet et leur expérience pourra vous
orienter dans le choix de la shield moteur.
Si vous possédez une shield différente de celle utilisée dans ce court tutoriel pas de panique !
La première chose que vous devriez faire c'est trouver la fiche technique de votre puce (ou encore
datasheet pour les anglophones). N.B. Il y a près de 99,99% de chances qu'elle soit en anglais.
Certaines cartes comme celles vendues par Adafruit possèdent une librairie qui leur est dédiée
auquel cas je vous renvoie vers la documentation et les différents exemples que vous trouverez en
lien avec cette librairie spécifique.

Sens trigonométrique Sens horaire

Moteur DC

Document réalisé par Glassbox. Si vous avez des suggestions, notez des erreurs : [email protected]
Retrouvez la vidéo en lien avec ce billet : https://www.youtube.com/channel/UCfcC4-ILn_P66KV_hqzcpIQ
1/5
Ce qui vous débloquera sans doute pour trouver comment faire tourner en sens horaire ou
sens trigonométrique le moteur est la table de vérité qui dans mon cas avait cette allure :

E1 ( pin 5 digital) M1 (pin 4 digital) Résultat


LOW X (n'importe quelle tension) Moteur arrêté
HIGH LOW Moteur tourne à sa vitesse
maximale dans un sens.
HIGH HIGH Moteur tourne à sa vitesse
maximale dans le sens
contraire.
PWM (Pulse Width Modulation) LOW ou HIGH Permet la modulation du
[0,255] rapport cyclique (voir prochaine
version de ce document)
(Voir exemples dans la suite de cette note)

Pourquoi ne pas relier le moteur directement à l'Arduino ?


Il existe plusieurs manières de contrôler un moteur à partir d'une Arduino, des ponts en H, des
hâcheurs, des relais etc.. on désigne ces équipements électroniques comme ''électronique de
puissance'' puisque qu'ils permettent de contrôler un moteur nécessitant 2 A par exemple ce que la
carte ne peut pas délivrer. Il vous faudra donc une alimentation externe. De plus les moteurs
électriques ont la fâcheuse tendance à être sources de signaux parasites qui pourraient endommager
l'Arduino.

Matériel :
– Une carte de programmation Arduino
– Logiciel de codage spécifique aux cartes Arduino.
– Une shield moteur compatible Arduino pour ma part une DFRobots L298p.
– Un petit moteur courant continu comme ceux que l'on peut trouver dans des imprimantes,
des lecteurs DVD etc...

Document réalisé par Glassbox. Si vous avez des suggestions, notez des erreurs : [email protected]
Retrouvez la vidéo en lien avec ce billet : https://www.youtube.com/channel/UCfcC4-ILn_P66KV_hqzcpIQ
2/5
Réalisation
Étape 1 : Le montage

Il s'agit là d'un montage relativement simple:

Étape 2 : Installer le logiciel (si ce n'est pas déjà fait)


Connectez votre carte au port USB de votre ordinateur une fois la connexion entre la carte et
l'ordinateur faite, vérifiez que le programme se chargera bien via la prise USB à laquelle vous avez
branché l'Arduino.

Étape 3 : Le code :

Pour cette shield moteur il faudra s'appuyer sur la table de vérité (cf page 2). Le moteur est branché
aux bornes M1+ et M1- qui sont pilotées par les pins 4 et 5 de l'Arduino.
Le pin 4 permet de choisir le sens de rotation du moteur : LOW ou HIGH
Le pin 5 permet d'éteindre le moteur et de travailler avec la PWM (Pulse Width Modulation) qui
sera l'objet d'une extension de cette note en lien avec une future vidéo.

Document réalisé par Glassbox. Si vous avez des suggestions, notez des erreurs : [email protected]
Retrouvez la vidéo en lien avec ce billet : https://www.youtube.com/channel/UCfcC4-ILn_P66KV_hqzcpIQ
3/5
Programme 1 : Faire tourner le moteur

int M1 = 4;
int E1 = 5;

void setup()
{
pinMode(M1, OUTPUT); //Définit le pin 4 comme sortie de commande du moteur.
}

void loop()
{
digitalWrite(M1,HIGH);
analogWrite(E1,255); //définit la vitesse de rotation du moteur comme maximale(cf rapport cyclique) max = 255
delay(1000); //Durée pendant laquelle l'instruction précédente s'exécute en millisecondes.
analogWrite(E1,LOW); //Coupe le moteur (cf table de vérité)
delay(1000);
}

Programme 2 : Faire tourner le moteur en avant puis en arrière

// Ce programme est le même que le précédent on a juste rajouté les instructions pour que le
// moteur tourne en sens inverse.
int M1 = 4;
int E1 = 5;

void setup()
{
pinMode(M1, OUTPUT); //Définit le pin 4 comme sortie de commande du moteur.
}

void loop()
{
digitalWrite(M1,HIGH);
analogWrite(E1,255); //définit la vitesse de rotation du moteur comme maximale(cf rapport cyclique) max = 255
delay(1000); //Durée pendant laquelle l'instruction précédente s'exécute en millisecondes.
analogWrite(E1,LOW); //Coupe le moteur (cf table de vérité)
delay(1000);
digitalWrite(M1,LOW);
analogWrite(E1,255);
delay(1000);
analogWrite(E1,LOW);
delay(1000);
}

Document réalisé par Glassbox. Si vous avez des suggestions, notez des erreurs : [email protected]
Retrouvez la vidéo en lien avec ce billet : https://www.youtube.com/channel/UCfcC4-ILn_P66KV_hqzcpIQ
4/5
Programme 3 : Modification du rapport cyclique (avant-goût de la PWM)

// Ce programme repose encore sur la même base mais cette fois-ci on fait varier le rapport
// cyclique (ou encore Pulse Width Modulation PWD)
int M1 = 4;
int E1 = 5;

void setup()
{
pinMode(M1, OUTPUT); //Définit le pin 4 comme sortie de commande du moteur.
}

void loop()
{
valeur = 180 // Le fait d'introduire une variable vous évitera de modifier chaque ligne de code lorsque vous voulez
// changer la valeur du rapport cyclique.
digitalWrite(M1,HIGH);
analogWrite(E1,valeur); //définit la vitesse de rotation du moteur comme maximale(cf rapport cyclique) max =
255
delay(1000); //Durée pendant laquelle l'instruction précédente s'exécute en millisecondes.
analogWrite(E1,LOW); //Coupe le moteur (cf table de vérité)
delay(1000);
digitalWrite(M1,LOW);
analogWrite(E1,valeur);
delay(1000);
analogWrite(E1,LOW);
delay(1000);
}

Merci d'avoir lu cette note jusqu'au bout. Je souhaite enrichir celle-ci au fil du temps et de
vos retours/remarques/suggestions pour qu'elle soit la plus claire et constructive possible. Merci
d'avance à ceux qui participeront à cet effort !
Vous pouvez me contacter par mail: [email protected] et dans l'espace commentaires de
la vidéo :https://www.youtube.com/watch?v=fBa39CRO6H0&feature=youtu.be

Document réalisé par Glassbox. Si vous avez des suggestions, notez des erreurs : [email protected]
Retrouvez la vidéo en lien avec ce billet : https://www.youtube.com/channel/UCfcC4-ILn_P66KV_hqzcpIQ
5/5

Vous aimerez peut-être aussi