Étiquettes :

Nous allons voir dans ce tutoriel comment piloter un moteur pas-à-pas bipolaire à l’aide d’un driver A4988. Ce tutoriel est compatible avec les drivers de moteur pas-à-pas couramment utiliser dans les projets de fraiseuse numérique ou imprimante 3D (DRV8825, SilentStepStick, etc.).

Matériel

  • Arduino UNO
  • Stepper driver A4988
  • Câble USB A mâle vers USB B mâle

Principe de fonctionnement

Les drivers de moteur pas-à-pas permettent de piloter efficacement les moteurs en n’utilisant que deux signaux de contrôle STEP et DIR. Le nombre de pulsations envoyés au driver correspond au nombre de pas effectué, la fréquence des pulsation à la vitesse du moteur et le signal dir correspond au sens de rotation du moteur. Le module A4988 s’occupe d’envoyer la séquence aux deux bobines du moteur en fonction des commandes reçues en entrée.

stepper-driver-a4988-pinout Utilisation d'un driver de moteur pas-à-pas A4988

Spécifications techniques A4988

Minimum operating voltage8 V
Maximum operating voltage35 V
Continuous current per phase1.2 A
Maximum current per phase2 A
Minimum logic voltage3 V
Maximum logic voltage5.5 V
Microstep resolutionfull, 1/2, 1/4, 1/8 and 1/16
Reverse voltage protection?No
Dimensions15.5 × 20.5 mm (0.6″ × 0.8″)

Schéma

arduino-stepper-driver-a4988_bb Utilisation d'un driver de moteur pas-à-pas A4988

Avant de connecter votre moteur au driver, veuillez régler correctement le limiteur de courant. Pour cela, il faut:

  • alimenter l’Arduino et le Shield avec la tension Moteur.
  • Puis, placer un voltmètre entre le potentiomètre et la masse GND
  • Tourner le potentiomètre à l’aide d’un tournevis jusqu’à obtenir la valeur qui suit la règle suivante.
MaxCurrent=Vref x 2.5 

Exemple:

Si la valeur de courant est 1A la valeur affichée sur le multimètre doit être égale à 0.4V

MaxCurrent=1.0A –> Vref = 0.4V

Il est possible de modifier la résolution des pas du driver pour plus de précision. Cette configuration est définie en passant les broches M0,M1 et M2 à HAUT ou BAS en suivant le tableau logique qui suit.

MS1MS2MS3Résolution Microstepping
LowLowLowPas complet (full step)
HighLowLow1/2 pas
LowHighLow1/4 de pas
HighHighLow1/8 ième de pas
HighHighHigh1/16 ième de pas

Code

Pour piloter le driver de moteur pas-à-pas, il nous suffit d’envoyer un état HAUT ou BAS sur la broche DIR et une pulsation sur la broche STEP.

const int stepPin = 2;
const int dirPin = 3;


const int stepsPerRev=200;
int pulseWidthMicros = 100;  // microseconds
int millisBtwnSteps = 1000;

void setup() {
  Serial.begin(9600);
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
 
  Serial.println(F("A4988 Initialized"));
}

void loop() {
  Serial.println(F("Running clockwise"));
  digitalWrite(dirPin, HIGH); // Enables the motor to move in a particular direction
  // Makes 200 pulses for making one full cycle rotation
  for (int i = 0; i < stepsPerRev; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(pulseWidthMicros);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(millisBtwnSteps);
  }
  delay(1000); // One second delay

  Serial.println(F("Running counter-clockwise"));
  digitalWrite(dirPin, LOW); //Changes the rotations direction
  // Makes 400 pulses for making two full cycle rotation
  for (int i = 0; i < 2*stepsPerRev; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(pulseWidthMicros);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(millisBtwnSteps);
  }
  delay(1000);
}

Pour plus de fonctionnalités, vous pouvez utiliser la librairie AccelStepper.h

Applications

  • Piloter un moteur pas-à-pas
  • Piloter plusieurs moteurs grâce à un CNC Shield

Sources