
ULN2003 5V à 12V, mais attention au moteur 28BYJ-48 5V ou 12V max !
Spécifications moteur pas à pas 28BYJ-48 5V et 12V
/**
Stepper Motor Control. This sketch drives a stepper motor
Author: Eric VALLEE
*/
#include <Stepper.h>
#define SPEED 15 // Speed in RPM / 64 (20 -> 1 revolution ~3s)
#define STEPPERROTATION 2048
// Créer une instance de la classe stepper
// L'ULN2003 (fils 1 2 3 4) est branché sur les sorties 4 5 6 7
// de l'Arduino (et sur GND, +V)
// Stepper small_stepper(STEPPERROTATION, 4, 6, 5, 7); // Sens horaire
Stepper small_stepper(STEPPERROTATION, 7, 5, 6, 4); // Sens anti-horaire
int Steps2Take = 0; //Nombre de pas de rotation souhaité
long temps = 0; //Durée de rotation pour un tour
//************************************************************
// Selon les spécifications du moteur
// 64 pas par tour, 4 phases, angle de 5.625° (Arbre de sortie)
// Démultiplication 1:64 pour ce moteur réducteur mécanique
// 360°/5.625°x64=4096 angles avec la démultiplication
// 360°/5.625°x64x4 bobines/2 bipolaire=2048 step / tour
void setup() {
Serial.begin(9600); // 9600 bps
Serial.println("Test de moteur pas a pas");
}
void loop() {
Serial.println("Moteur en marche ");
//Faire tourner le moteur
small_stepper.setSpeed(SPEED);
// Vitesse de 20 (max) réduire ce chiffre pour un mouvement
// plus lent. 10 permet d'avoir un couple plus élevé
Steps2Take = 2048;
// Une rotation complete avec 2048 pas (1 tour environ 4.5sec)
//Pour tourner à l'envers de 6 fois 1/30eme de tour,
// simplement multiplier Steps2Take par 6/30 et mettre un
// moins pour inverser le sens
// Exemple Steps2Take = -6*2048/30;
temps = millis();
small_stepper.step(-Steps2Take); //Ca tourne
temps = millis() - temps ;
//Chronométre un rour complet 6.236 sec par tour à vitesse 100
Serial.println(temps);
//Affiche le temps (en ms) pour un tour complet
delay(2000); //pause
temps = millis();
small_stepper.step(Steps2Take); //Ca tourne
temps = millis() - temps ;
//Chronométre un rour complet 6.236 sec par tour à vitesse 100
Serial.println(temps);
//Affiche le temps (en ms) pour un tour complet
delay(2000); //pause
}