Bonjour,
en réalisant un système de poulie, je me suis confronté à un problème au niveau de mon moteur pas à pas.
Celui ci commence à tourner avant d'entrer dans la boucle qui le commande, sachant que j'ai besoin d'un nombre précis de tour, cela me dérange fortement.
je vous joins mon script et mon montage (j'utilise un moteur NEMA17 et un driver A4988, et une pile de 9V) PS: j'utilise une LED pour savoir si je suis entrer dans la boucle ou pas
script :
// defines pins numbers
const int stepPin = 3;
const int dirPin = 4;
const int led = 6;
int tour=0;
void setup() {
// Sets the two pins as Outputs
pinMode(led,OUTPUT);
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
tour=0;
}
void loop() {
// Enables the motor to move in a particular direction
// Makes 200 pulses for making one full cycle rotation
digitalWrite(dirPin,HIGH);
while (tour<=3)
{
digitalWrite(led,HIGH);
for(int x = 0; x < 200; x++)
{
digitalWrite(stepPin,HIGH);
delayMicroseconds(1000);
digitalWrite(stepPin,LOW);
delayMicroseconds(1000);
}
tour=tour+1;
}
digitalWrite(led,LOW);
}
Celui ci commence à tourner avant d'entrer dans la boucle qui le commande, sachant que j'ai besoin d'un nombre précis de tour, cela me dérange fortement.
Que se passe-il
a) si vous renommez la fonction loop en oldloop (pour ne pas perdre ce que vous avez tapé, et le copier coller progressivement)
b) si vous introduisez
Dans la mesure où vous êtes obligé de couper l'alimentation et de rallumer pour pouvoir tester votre programme, il est possible que le moteur, lorsqu'il n'est pas alimenté, puissent subir une rotation si un couple est exercée sur son axe.
Il faudrait que votre montage, et votre moteur, soit en permanence alimentés pour vérifier.
Modifiez votre programme en ajoutant une pause de quelques secondes à chaque fois que vous faites vos trois tours et en réinitilisant la variable tour.