Description
Le driver de moteur pas-à-pas A4988 est un composant couramment utilisé pour contrôler les moteurs pas-à-pas bipolaires.
- Le module A4988 permet de piloter efficacement les moteurs en utilisant seulement deux signaux de contrôle : STEP et DIR.
- Le nombre de pulsations envoyées au driver correspond au nombre de pas effectués, la fréquence des pulsations détermine la vitesse du moteur, et le signal DIR indique le sens de rotation du moteur.
- Le module A4988 envoie la séquence appropriée aux deux bobines du moteur en fonction des commandes reçues en entrée.
- Spécifications techniques du A4988 :
- Tension d’alimentation minimale : 8 V
- Tension d’alimentation maximale : 35 V
- Courant continu par phase : 1,2 A (maximum 2 A)
- Tension logique minimale : 3 V
- Tension logique maximale : 5,5 V
- Résolution des micro-pas : complète, 1/2, 1/4, 1/8 et 1/16
- Protection contre les surtensions : Non
- Dimensions : 15,5 × 20,5 mm
- Réglage du courant :
- Avant de connecter votre moteur au driver, assurez-vous de régler correctement le limiteur de courant.
- Utilisez un voltmètre pour mesurer la tension entre le potentiomètre et la masse GND.
- Réglez le potentiomètre jusqu’à obtenir la valeur de courant souhaitée (MaxCurrent = Vref × 2,5).
- Configuration des micro-pas :
- Vous pouvez modifier la résolution des pas du driver pour plus de précision.
- Utilisez les broches M0, M1 et M2 pour définir la configuration de micro-pas (voir le tableau ci-dessous).
TableauMS1 MS2 MS3 Résolution Low Low Low Pas complet (full step) High Low Low 1/2 pas Low High Low 1/4 de pas High High Low 1/8 ième de pas High High High 1/16 ième de pas - Exemple de code Arduino :
const int stepPin = 2; const int dirPin = 3; const int stepsPerRev = 200; int pulseWidthMicros = 100; // microsecondes int millisBtwnSteps = 1000; // millisecondes void setup() { Serial.begin(9600); pinMode(stepPin, OUTPUT); pinMode(dirPin, OUTPUT); Serial.println(F("A4988 Initialized")); } void loop() { Serial.println(F("Rotation dans le sens des aiguilles d'une montre")); digitalWrite(dirPin, HIGH); for (int i = 0; i < stepsPerRev; i++) { digitalWrite(stepPin, HIGH); delayMicroseconds(pulseWidthMicros); digitalWrite(stepPin, LOW); delayMicroseconds(millisBtwnSteps); } delay(1000); Serial.println(F("Rotation dans le sens inverse des aiguilles d'une montre")); digitalWrite(dirPin, LOW); for (int i = 0; i < 2 * stepsPerRev; i++) { digitalWrite(stepPin, HIGH); delayMicroseconds(pulseWidthMicros); digitalWrite(stepPin, LOW); delayMicroseconds(millisBtwnSteps); } delay(1000); }
Ce code permet de faire tourner le moteur pas-à-pas dans les deux sens avec une pause d’une seconde entre chaque rotation.