Table des matières

DRV504 + 28BYJ-48

DRV504 Hight power switch

Calcul de la longueur des pas

ATTENTION : le moteur peut être configuré pour avancer par pas ou par demi pas.

Si avance par pas et roue de diamètre 38 mm ⇒ circonférence = 119.4 mm Si largeur entre roue = 93 mm ⇒ distance pour 90° = 73 mm

Câblage et programmation

Le DVV504 peut être piloté directement par le code de l'ARDUINO ou par la librairie STEPPER.h

Exemple de code pour dessiner un carré

carre.ino
3838
/* Dessin d'un carré
 *  10 cm de coté = 1700 pas
 *  angles = 1246 pas
 */
 
// Include the AccelStepper Library
#include <AccelStepper.h>
 
// Define step constants
#define FULLSTEP 4
#define HALFSTEP 8
 
int etape = 8; // Nombre d'étapes
 
// Creates two instances of motor
// Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence
AccelStepper stepper2(FULLSTEP, 8, 10, 9, 11);
AccelStepper stepper1(FULLSTEP, 4, 6, 5, 7);
 
// Défini les déplacements en valeur absolue
void change(int e) {
  Serial.print("Etape = ");
  Serial.println(etape);
  switch (e){
    case 8: stepper1.moveTo(1700); stepper2.moveTo(1700); break;
    case 7: stepper1.moveTo(2946); stepper2.moveTo(454); break;
    case 6: stepper1.moveTo(4646); stepper2.moveTo(2154); break;
    case 5: stepper1.moveTo(5892); stepper2.moveTo(908); break;
    case 4: stepper1.moveTo(7592); stepper2.moveTo(2608); break;
    case 3: stepper1.moveTo(8838); stepper2.moveTo(1362); break;
    case 2: stepper1.moveTo(10538); stepper2.moveTo(3062); break;
    case 1: stepper1.moveTo(11784); stepper2.moveTo(1816); break;
    default: ;
  }
  etape--;
}
 
void setup() {
  Serial.begin(115200);
 
  // set the maximum speed, acceleration factor,
  // initial speed and the target position for motor 1
  stepper1.setMaxSpeed(1000.0);
  stepper1.setAcceleration(200.0);
  stepper1.setSpeed(200);
 
 
  // set the same for motor 2
  stepper2.setMaxSpeed(1000.0);
  stepper2.setAcceleration(200.0);
  stepper2.setSpeed(200);
}
 
void loop() {
  // Change direction once the motor reaches target position
  if ((etape > 0) && (stepper1.distanceToGo() == 0)) change(etape);
  // Move the motor one step
  if (etape >=0) {
    stepper1.run();
    stepper2.run();
  }
}
Sommet 1 2 3 4 5 6 7 8 9 10 11 12 13
Angle 180 120 90 72 60 51.4 45 49 36 32.7 30 27.7
Angle 144 154.3 135 163.6 165 150 166.1

Il est aussi possible d'utiliser l'extension “Stepper” dans mBot.

ATTENTION : si plusieurs moteurs, ils fonctionnent en série et pas en parallèle (blocs bloquants).