Bonjour,
Je suis nouveau dans le monde arduino.
J'essaie de commander un moteur pas à pas.
Cela fonctionne bien MAIS la durée de la rotation n'est pas conforme.
J'utilise le moteur 28BYJ. Sauf erreur de ma part, c'est un moteur de 2048 pas par tour (en pas entiers)
J'utilise la lib Stepper.
Je commande 10 tours par minute et je commande le nombre de pas à faire, soit 20480 pas.
Je demande alors le temps et j'ai 41 secondes au lieu de 1 minute.
J'ai essayé:
1 tr/min: t = 59,4 s
2trs/min: t = 58,2 s
3 trs/min: t = 55,38 s
10 trs/min: t = 41,6 s
Pourquoi cela va-t-il TROP VITE? Je ne vois pas d'où vient le pb. Défaut dans Stepper? Défaut dans mon prog?
Ci dessous le code.
Merci pour votre aide.
#include <Stepper.h>
#define STEPS 2048 //nombre de pas par tour avec le réducteur
//Créer une instance de la classe stepper
//Le moteur (fils 1 2 3 4) est branché sur les sorties 8 9 10 11 de l'Arduino (et sur GND, +V)
Stepper small_stepper(STEPS, 8, 10, 9, 11); // Sens horaire 8 et 10 même bobine 9 et 11 même bobine
//Stepper small_stepper(STEPS, 11, 10, 9, 8); // Sens anti-horaire en inversant 8 et 11 (si on préfère)
int Steps2Take = 0; //Nombre de pas de rotation demandé au moteur
long temps = 0;
//
//************************************************************
void setup()
{
Serial.begin(9600); // 9600 bps
Serial.println("Test de moteur pas a pas");
}
void loop()
{
//Faire tourner le moteur
small_stepper.setSpeed(10); //variable en tours par minute avec le réducteur. Avec la valeur 10, le moteur fait 20480 pas en 41,6 secondes au lieu de 1 min
//Réduire ce chiffre pour un mouvement plus lent
//minimum 1 et maximum 14. Au delà, les pas sautent. en deçà, il faut diminuer "steps 2048" au début du prog et modifier Steps2Take
Steps2Take = 20480; // Une rotation complète avec 2048 pas
temps = millis();
small_stepper.step(Steps2Take); //Ca tourne
temps = millis() - temps ; //Chronomètre
Serial.print(Steps2Take);
Serial.print(" pas: ");
Serial.print(temps); //Affiche le temps (en ms)
Serial.println(" ms");
delay(2000); //pause
}