Buongiorno a tutti
Rieccomi qui
Ho un problema con la libreria AccelStepper.h
La uso per comandare NEMA 17 comandato da un PoStep25-32
Ho testato il primo codice ed il NEMA posiziona correttamente, mentre con il secondo usando la libreria Accellstepper posiziona a un numero di step non corretto, minore di quello previsto e mai uguale.
Dove sto sbagliando?
Grazie in anticipo
Codice 1 (movimenti corretti):
int motorDirPin = 6; //digital pin 6
int motorStepPin = 3; //digital pin 3
int t1 = 2;
void setup(){
pinMode(motorDirPin, OUTPUT);
pinMode(motorStepPin, OUTPUT);
digitalWrite(motorDirPin, HIGH);
digitalWrite(motorStepPin, LOW);
delay(5000);
}
void loop(){
for ( int sr = 0; sr < 8; sr++){
delay(1000);
digitalWrite(motorDirPin, HIGH);
for(int s = 0 ; s < 50; s++){
digitalWrite(motorStepPin, HIGH);
digitalWrite(motorStepPin, LOW);
delay(t1);
}
}
delay(1000);
digitalWrite(motorDirPin, LOW);
for(int s = 0 ; s < 400; s++){
digitalWrite(motorStepPin, HIGH);
digitalWrite(motorStepPin, LOW);
delay(t1);
}
delay(1000);
digitalWrite(motorDirPin, HIGH);
for(int s = 0 ; s < 2000; s++){
digitalWrite(motorStepPin, HIGH);
digitalWrite(motorStepPin, LOW);
delay(t1);
}
}
Codice 2 (accelstepper):
#include <AccelStepper.h>
int motorSpeed = 4800;
int motorAccel = 8000;
int motorDirPin = 6; //digital pin 6
int motorStepPin = 3; //digital pin 3
AccelStepper stepper(1, motorStepPin, motorDirPin);
void setup(){
stepper.setMaxSpeed(motorSpeed);
stepper.setSpeed(motorSpeed);
stepper.setAcceleration(motorAccel);
delay(5000);
}
void loop(){
for ( int sr = 0; sr < 8; sr++){
delay(1000);
stepper.move(50);
stepper.runToPosition();
}
delay(1000);
stepper.move(-400);
stepper.runToPosition();
delay(1000);
stepper.move(2000);
stepper.runToPosition();
}