Controler Un Moteur DC Arduino
Controler Un Moteur DC Arduino
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.
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 :
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
É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);
}
// 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