Description
Le DRV8825 est un pilote de moteur pas-à-pas bipolaire complet qui permet de contrôler efficacement les moteurs en utilisant seulement deux signaux de contrôle : STEP et DIR.
- Tension d’alimentation minimale : 8,2 V
- Tension d’alimentation maximale : 45 V
- Courant continu par phase : 1,5 A (maximum 2,2 A)
- Tension logique minimale : 2,5 V
- Tension logique maximale : 5,25 V
- Résolution des micro-pas : complète, 1/2, 1/4, 1/8, 1/16 et 1/32
- Protection contre les inversions de tension : Non
- Dimensions : 15,5 × 20,5 mm
Avant de connecter votre moteur au driver, assurez-vous de régler correctement le limiteur de courant. Pour cela, suivez ces étapes :
- Alimentez l’Arduino et le DRV8825 avec la tension du moteur.
- Placez un voltmètre entre le potentiomètre du DRV8825 et la masse GND.
- Tournez le potentiomètre jusqu’à obtenir la valeur de courant souhaitée (MaxCurrent = Vref × 2).
Vous pouvez également modifier la résolution des pas du driver pour plus de précision en ajustant les broches M0, M1 et M2 selon le tableau logique fourni. Voici un exemple de code pour piloter le DRV8825 avec un Arduino :
const int stepPin = 2;
const int dirPin = 3;
const int stepsPerRev = 200;
const int pulseWidthMicros = 100; // microsecondes
const int millisBtwnSteps = 1000;
void setup() {
Serial.begin(9600);
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
Serial.println(F("DRV8825 Initialized"));
}
void loop() {
Serial.println(F("Rotation dans le sens des aiguilles d'une montre"));
digitalWrite(dirPin, HIGH); // Active le moteur dans un sens particulier
for (int i = 0; i < stepsPerRev; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(pulseWidthMicros);
digitalWrite(stepPin, LOW);
delayMicroseconds(millisBtwnSteps);
}
delay(1000); // Délai d'une seconde
Serial.println(F("Rotation dans le sens inverse des aiguilles d'une montre"));
digitalWrite(dirPin, LOW); // Change le sens de rotation
for (int i = 0; i < 2 * stepsPerRev; i++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(pulseWidthMicros);
digitalWrite(stepPin, LOW);
delayMicroseconds(millisBtwnSteps);
}
delay(1000);
}