Juillet 2017 , par Techno_fabrik
Difficulté :
Durée :
Commander un moteur pas-à-pas Nema 17 et son driver A4988
Matériel
carte Arduino (Uno / Mega)
condensateur 47 uF
moteur pas-à-pas Nema 17 (12 V 0.5A)
Driver A4988
Alimentation 12 V
PRÉREQUIS :
Connaissance des risques électriques. Montage réalisable par tous. Notion d'électronique et bases en programmation.
Remarque : Nous n'avons rien connecté aux pins MS1, MS2 et MS3 du driver A4988, c'est à dire que notre moteur tournera avec des pas normaux.
En appliquant des états haut à ces broches, il est possible d'augmenter la précision du moteur en se déplaçant jusqu'à 1/16ème de pas du moteur.
RÉALISATION
ETAPE 1 : Liaison Arduino - A4988
On connecte l'alimentation de la partie commmande au module A4988.
La broche 3 est connectée au step du driver: on pourra alors moduler la vitesse de rotation du moteur.
La broche 4 est connectée au dir du driver: cela nous permet de choisir le sens de rotation en mettant ce pin à HIGH ou LOW.
ETAPE 2 : Alimentation des moteurs
Les moteurs sont alimentés en 12 V (nous avons utilisé une alimentation d'ordinateur).
On ajoute un condensateur de découplage de 47uF pour sécuriser le driver de possible pique de courant causé par le moteur.
ETAPE 3 : Liaison Moteur - A4988
Relier comme sur le schéma le moteur bipolaire.
Vérifier que vous apportez le bon courant au driver : <0.2 A le moteur risque de vibrer sur lui même sans tourner
>1A , le driver se met à chauffer énormément
Programme (codé en C)
// 12/07/2017 - Programme C - Utilisation d'un Moteur pas-à-pas NEMA 17, avec le driver A4988 - Carte Arduino ( ici MEGA)
// Ce programme a pour objectif de :
// - Permettre au moteur de faire un tour dans un sens
// - Attendre 1 seconde
// - Faire deux tours dans l'autre sens puis recommencer
// Programme réalisé par Techno_Fabrik
//********************BIBLIOTHEQUES****************************
//********************DECLARATIONS****************************
int A4988_pas = 2;
int A4988_direction = 3;
//********************SETUP***********************************
void setup() // On initialise les pins 2 et 3 en sortie
{
pinMode(A4988_pas,OUTPUT);
pinMode(A4988_direction,OUTPUT);
}
//********************BOUCLE**********************************
void loop() {
digitalWrite(A4988_direction,HIGH); // Permet au moteur de tourner dans une direction
for(int x = 0; x < 200; x++) {// Permet de faire un PAS à une certaine allure. Pour tourner plus vite, changer le delay jusqu'à 1 , pour ralentir, le changer jusqu'à 30
digitalWrite(A4988_pas,HIGH); // On fait un tour avec 200 pas pour le Nema 17
delay(5);
digitalWrite(A4988_pas,LOW);
delay(5);
}
delay(1000);// On attend 1 seconde
digitalWrite(A4988_direction,LOW); // Permet au moteur de tourner dans l'autre sens
for(int x = 0; x < 200; x++) {// Permet de faire un PAS à une certaine allure. Pour tourner plus vite, changer le delay jusqu'à 1 , pour ralentir, le changer jusqu'à 30
digitalWrite(A4988_pas,HIGH); // On fait un tour avec 200 pas pour le Nema 17
delay(5);
digitalWrite(A4988_pas,LOW);
delay(5);
}
}