J'ai un moteur pas à pas : moteur et un driver type A4988 : driver.
J'ai pas mal regardé sur le net afin de bien régler le potentiomètre du driver et avec les carac de mes moteurs, j'étais censé mettre une vref de 0.25 V est-ce correct ?
Après avoir mis le potentiomètre comme il me semblait correct ( vérif au multimètre ) j'ai donc testé deux trois trucs. ( moteur alimenté par une alim en 12v )
Cependant, quand je testais des petits programmes, je n'ai pas obtenu le résultat espéré, j'aurais donc besoin de vos avis éclairé pour m'aider à trouver ou j'ai commis une erreur ( ou plusieurs )
#include <Stepper.h>
const byte pinDir=8;//pin pour la direction
const byte pinStep=9; //pin pour le pas
const byte pinEnable=13;//pin pour couper le moteur
Stepper moteur(200,8,9); //declare un moteur pas a pas appelé moteur 200 pas / tour branché pin 8-9
void setup()
{
moteur.setSpeed(60);// vitesse à 60tours /min
}
void loop()
{
moteur.step(200); // 200 pas donc 1 tour ?
delay(5000);
}
En faisant cela mon moteur devrait faire un tour, exact ? cependant il en fait a peine un quart, mon problème vient-il d'un mauvais réglage du potentiomètre ou d'une mauvaise utilisation de la librairie stepper ?
PS : j'ai joint mon câblage ( l'erreur peut peut être venir de la ? ) le condensateur à une capacité de 100uF Tension max 25V et l'alim fournie 12v
Merci pour tes précisions, j'ai donc testé tout ça ce matin, et ça marche impeccable !
J'ai téléchargé la librairie que tu as envoyé ( elle est parfaite ), et j'ai regardé un peu le fichier BasicStepperDriver.h.
On peut choisir la vitesse, mais également si on veut indiquer une rotation en pas, ou en degré !
Voici le petit programme de test que j'ai fait :
#include <BasicStepperDriver.h>
const byte pinDir=8;//pin pour la direction
const byte pinStep=9; //pin pour le pas
const byte pinEnable=13;//pin pour couper le moteur
BasicStepperDriver moteur(200,8,9,13); //declare un moteur pas a pas appelé moteur 200 pas / tour pin 8 dir pin 9 step pin 13 enable
void setup()
{
moteur.setRPM(60);// vitesse à 60tours /min
}
void loop()
{
moteur.enable(); //active le moteur
moteur.rotate(90); //90 degré de rotation
delay(5000);
moteur.rotate(-90);//-90 degré rotation
delay(5000);
moteur.move(200);//rotation en PAS ( 200 ici ) 1 tour
delay(5000);
moteur.move(-200);//rotation en pas ( -200 ici ) -1 tour
delay(5000);
moteur.disable();//desactive le moteur
delay(5000);
}
j'ai donc testé tout ça ce matin, et ça marche impeccable !
Voilà qui SUPER, j'utilises aussi AccelStepper ça dépend des usages, avec cette bibliothèque on peu bien gérer les accélérations, justement. Lien 1, lien 2, lien 3.
Pour le A4988, la syntaxe est AccelStepper mystepper(1, pinStep, pinDirection);
A noter il est souvent nécessaire de gérer le signal ENABLE (actif à 0) sois-même. S'il est en l'air, le moteur reste continuellement sou tension d'où surchauffe.