Bonjour, j'ai actuellement 3 moteur Néma 17 avec un cnc Shield et un Arduino uno, j'aimerais contrôler précisément l'accélération, la vitesse maximum, et la décélération.
Pour être plus claire, j'aimerais avoir une variable contenant le nombre de pas du moteur, et qu'ensuite l'Arduino gère tout seul la rampe d'accélération et de décélération.
Concernant les composant j'ai :
_Un arduino UNO
_Un CNC shield, voici le lien : Shield CNC pour Uno ARD-CNC-K1 - Shields moteurs | GO TRONIC
_Des driver A4988
_ Des moteurs pas a pas Quimat, voici le lien : 17HD48002-22B Motor Datasheet, Distributor, Stock and Price
Les moteurs tournent très bien avec un programme simple comme celui ci :
#define EN 8 /* Enable pin for all stepper outputs */
#define X_DIR 5 /* Direction-Pin for X-axis */
#define X_STEP 2 /* Step-Pin for X-axis */
#define Y_DIR 6 /* Direction-Pin for Y-axis*/
#define Y_STEP 3 /* Step-Pin for Y-axis */
#define Z_DIR 7 /* Direction-Pin for Z-axis */
#define Z_STEP 4 /* Step-Pin for Z-axis */
#define A_DIR 13 /* Direction-Pin for A-axis*/
#define A_STEP 12 /* Step-Pin for A-axis */
int Count = 0; /* Counter to count number of steps made */
boolean Direction = LOW; /* Rotational direction of stepper motors*/
void setup()
{
Serial.begin(9600);
/* Configure the stepper drive pins as outputs */
pinMode(EN, OUTPUT);
pinMode(X_DIR, OUTPUT);
pinMode(X_STEP, OUTPUT);
pinMode(Y_DIR, OUTPUT);
pinMode(Y_STEP, OUTPUT);
pinMode(Z_DIR, OUTPUT);
pinMode(Z_STEP, OUTPUT);
pinMode(A_DIR, OUTPUT);
pinMode(A_STEP, OUTPUT);
digitalWrite(EN, LOW); //Low to enable
}
Cependant dès que j'utilise la bibliotèque Accelstepper, le moteur ne tourne plus du tout, j'utilise ce code la :
#include <AccelStepper.h>
// Définir les pins pour le moteur pas à pas
#define EN 8 /* Pin d'activation pour toutes les sorties du moteur */
//#define X_DIR 6 /* Pin de direction pour l'axe X */
//#define X_STEP 3 /* Pin de pas pour l'axe X */
const byte dirPin = 6;
const byte stepPin = 3;
AccelStepper stepper = AccelStepper(AccelStepper::DRIVER, stepPin, dirPin);
void setup() {
stepper.setMaxSpeed(1000); // vitesse max souhaitée en nombre de pas par seconde
stepper.setSpeed(200); // nombre de pas par seconde souhaité dans runSpeed
}
void loop() {
stepper.runSpeed(); // on fait tourner quand il faut
}
je n'arrive pas a trouver une solution, si quelqu'un peut m'aider ?