Go Down

Topic: Réglages driver a 4988  (Read 326 times) previous topic - next topic

david74

Bonjour à tous,

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  :smiley-confuse: )

Code: [Select]
#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 d'avance :)

jpbbricole

#1
Oct 31, 2018, 08:56 pm Last Edit: Oct 31, 2018, 09:11 pm by jpbbricole
Bonsoir david74

Je ne crois pas que la librairie stepper.h soit adaptée au driver A4988, dans tout les exemples que j'ai trouvé, les bobines des MPAP (4 fils) sont directements gérés par la librairie.
J'utilise la librairie ah_pololu qui est en même temps le vendeur des drivers.

Ton programme avec ah_pololu.h
Code: [Select]
/********************************************************
** Download from:                                      **
** http://www.alhin.de/arduino/index.php?n=48          **
********************************************************/

#include <AH_Pololu.h>

// RES -> RESOLUTION per full revolve
// DIR -> DIRECTION PIN
// STEP -> STEPPING PIN
// AH_Polopu(int RES, int DIR, int STEP);
AH_Pololu stepper(200,8,9);   // Initialisation

void setup() {
stepper.setSpeedRPM(60);          // 60 tours/Minute
}

void loop() {

stepper.move(200);                // move 200 steps
delay(5000);
}


Cordialement
jpbbricole

david74

Salut jpbbricole !

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 :

Code: [Select]
#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);
}

jpbbricole

Salut david74 !  Haute-Savoie ? j'habite en face!

Salut jpbbricole !

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.

Bonne bricole
jpbbricole

david74

Bonsoir,
Haute-Savoie, exactement  ;D ! en face, où ça ?

La librairie AccelStepper à l'air pas mal non plus !

Si j'ai bien compris la doc que tu as envoyé, on peut indiqué directement au moteur une position à atteindre ?

Par exemple si je veux qu'il se place à X degrés, peu importe ou il est, il le fait ?

jpbbricole

#5
Nov 03, 2018, 06:05 pm Last Edit: Nov 03, 2018, 06:06 pm by jpbbricole
Je suis de l'autre côté du Lac Léman au-dessus de Vevey.

Si j'ai bien compris la doc que tu as envoyé, on peut indiqué directement au moteur une position à atteindre ?

Par exemple si je veux qu'il se place à X degrés, peu importe ou il est, il le fait ?
Oui, on peut aussi lire sa position

mystepper.currentPosition()

Ou bien à quelle distance du but il est

mystepper.distanceToGo()

Une belle bête!!!

Bonne soirée
jpbbricole




david74

Oh, la Suisse !

Y'a de quoi faire avec cette librairie aussi !

Il va falloir que je me familiarise un peu avec, les possibilités sont supers !

Merci et bonne soirée à toi aussi

Go Up