Bonsoir danyell1
J'ai fait des essais avec la bibliothèque StepperDriver et son exemple BasicStepperDriver.ino, ça devrait te convenir, si non, je suis à ta disposition.
A+
Cordialement
jpbbricole
Bonsoir danyell1
J'ai fait des essais avec la bibliothèque StepperDriver et son exemple BasicStepperDriver.ino, ça devrait te convenir, si non, je suis à ta disposition.
A+
Cordialement
jpbbricole
bonsoir jpb
merci je teste ça demain et te tien au courant
par contre si j'ai bien compris je n'utilise plus les 2 steppers drivers ? et je cable mes 2 bobines moteur sur l'arduino uno (2, 3, 4, 5) et pap2 (8, 9, 10, 11) ?
merci
Bonsoir danyell1
Non, pas du tout, si tu regardes l'exemple que je t'ai proposé, BasicStepperDriver.ino, l'initialisation du driver se fait ainsi:
BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP);
donc le driver reste.
J'ai un exemple complet, si tu veux, pour demain.
Cordialement
jpbbricole
Ça c’est ce que j’ai câblé dans ma démo avec accelStepper parce qu’il n’y avait pas vos drivers.
Vous avez testé ?
bonjour jpb
je veux bien l'exemple complet car l'orsque j'ai copier le code
ma trouver une erreur
donc j'ai du faire une bétise "pinStep1 was not declared in this scope"
merci
pouvez vous me donner les N° des pins utilisées (direction, step et enable) pour chacun des 2 moteurs ?
(là je vais faire un tour en vélo mais je regarde ça tout à l'heure)
Le code complet:
/*
Name: ARDFR_danyell1_2MPAP_StepperDriver.ino
Created: 03.11.2022
Author: jpbbricole
*/
#include "BasicStepperDriver.h"
const int mpap1dirPin = 2; // Pin driver DIR
const int mpap1stepPin = 3; // Pin driver STEP
const int mpap1enaPin = 4; // Pin driver ENA
const long mpap1pasTour = 200; // Pas par tour
const int mpap1rpm = 100; // Vitesse
const int mpap1microSteps = 1; // Micro-pas
BasicStepperDriver mpap1(mpap1pasTour, mpap1dirPin, mpap1stepPin, mpap1enaPin);
const int mpap2dirPin = 7; // Pin driver DIR
const int mpap2stepPin = 8; // Pin driver STEP
const int mpap2enaPin = 9; // Pin driver ENA
const long mpap2pasTour = 200; // Pas par tour
const int mpap2rpm = 100; // Vitesse
const int mpap2microSteps = 1; // Micro-pas
BasicStepperDriver mpap2(mpap2pasTour, mpap2dirPin, mpap2stepPin, mpap2enaPin);
void setup()
{
mpap1.begin(mpap1rpm, mpap1microSteps);
mpap1.setEnableActiveState(LOW); // Signal driver ENA actif à LOW
mpap1.enable();
mpap2.begin(mpap2rpm, mpap2microSteps);
mpap2.setEnableActiveState(LOW);
mpap2.enable();
}
void loop()
{
mpap1.rotate(36);
mpap2.rotate(3 * 360);
mpap2.rotate(3 * -360);
delay(1000);
}
Attention au brochage:
Moteur 1
const int mpap1dirPin = 2; // Pin driver DIR
const int mpap1stepPin = 3; // Pin driver STEP
const int mpap1enaPin = 4; // Pin driver ENA
Moteur 2
const int mpap2dirPin = 7; // Pin driver DIR
const int mpap2stepPin = 8; // Pin driver STEP
const int mpap2enaPin = 9; // Pin driver ENA
A+
Cordialement
jpbbricole
re jpb
#include " BasicStepperDriver.h" no such file of directory
message erreur du compilateur
/
j'ai aussi changer le pin 6 pour le 7 qui doit être obstruerimpossible de connecter un fil
Bonjour danyell1
Il faut installer la bibliothèque StepperDriver
Donnes moi les pin pour les 2x3 fils (mpap1 et mpap2) pour les 2 drivers.
Je te fais une version qui gère le signal ENA
A+
Cordialement
jpbbricole
je peux utiser pin "2,3,4 et 7,8,9"ok j'installe stepperdriver
Bonjour danyell1
Dans l'ordre DIR; STEP, ENA. C'est ainsi que je vais les mettre dans la nouvelle version du programme du post #27 que j'ai mis à jour en ajoutant la gestion des signaux driver ENA (actif à LOW).
A+
Cordialement
jpbbricole
@danyell1 - je vous laisse avec le code de @jpbbricole puisqu'il semble vous intéresser plus que accelStepper
@jpbbricole
vous avez testé votre code?
Je pose la question car dans le code de cette bibliothèque (que je ne connais pas) il disent
/*
* Move the motor a given number of degrees (1-360)
*/
void BasicStepperDriver::rotate(long deg){
move(calcStepsForRotation(deg));
}
➜ êtes vous sûr qu'ils gèrent les angles négatifs ou supérieurs à 360°?
peut-être il faudrait appeler un nombre de pas car là ils semblent gérer le positif et négatif
/*
* Move the motor a given number of steps.
* positive to move forward, negative to reverse
*/
void BasicStepperDriver::move(long steps){
startMove(steps);
while (nextAction());
}
EDIT: je réponds à ma question, je suis allé voir dans le code source comment ils calculent le déplacement
long calcStepsForRotation(long deg){
return deg * motor_steps * (long)microsteps / 360;
}
tel que c'est écrit ça va fonctionner et le commentaire donc qui dit que l'angle doit être entre 1 et 360 n'est pas juste
Bonjour J-M-L
Les codes que je poste sont toujours testés "en vrai" sinon, je le signale ![]()
Cordialement
jpbbricole
je viens de tester
en fait les moteurs etaient inversés
j'ai uniquement intervertis les pins
le moteur 2 monter descente fonctionne
mais l'autre qui doit avoir un angle de 36° donc 10 pour 1 tour ne bouge pas
d'autre part sur le dm 556 driver moteur les micro pas commence a 400
merci
le dm556 c'est celui qui controle le moteur qui doit bouger de 36 °
c'est ce que je me disais aussi ! :)
donc s'il commence a 400 je dois changer
mpap1microSteps = 1;
mpap1microSteps = 2;?
Bonjour danyell1
Dépendant du câblage du signal ENA, peut-être que celuici est actif HIGH (LOW actuellement).
Dans les paramètres du moteur 1 essaies d'inverser:
mpap1.setEnableActiveState(LOW); // Signal driver ENA actif à LOW
en
mpap1.setEnableActiveState(HIGH); // Signal driver ENA actif à HIGH
A+
Cordialement
jpbbricole
j'ai tester le moteur 2 qui était le N° 1 fonctionne mais l'autre ne bouge pas je te mets le code modifié pour mes besoin
#include "BasicStepperDriver.h"
const int mpap1dirPin = 7; // Pin driver DIR
const int mpap1stepPin = 8; // Pin driver STEP
const int mpap1enaPin = 9; // pin driver ENA
const long mpap1pasTour = 200; // Pas par tour
const int mpap1rpm = 100; // Vitesse
const int mpap1microSteps = 1; // Micro-pas
BasicStepperDriver mpap1(mpap1pasTour, mpap1dirPin, mpap1stepPin, mpap1enaPin);
const int mpap2dirPin = 2; // Pin driver DIR
const int mpap2stepPin = 3; // Pin driver STEP
const int mpap2enaPin = 4; // Pin driver ENA
const long mpap2pasTour = 200; // Pas par tour
const int mpap2rpm = 1000; // Vitesse
const int mpap2microSteps = 1; // Micro-pas
BasicStepperDriver mpap2(mpap2pasTour, mpap2dirPin, mpap2stepPin, mpap2enaPin);
void setup()
{ mpap1.begin(mpap1rpm, mpap1microSteps);
mpap1.setEnableActiveState(LOW); // Signal driver ENA actif à LOW
mpap1.enable();
mpap2.begin(mpap2rpm, mpap2microSteps);
mpap2.setEnableActiveState(LOW);
mpap2.enable();
}
void loop()
{
mpap1.rotate(36);
mpap2.rotate(16 * 360);
mpap2.rotate(16 * -360);
delay(1000);
}