#include <AccelStepper.h>
AccelStepper stepper(1,3,2);
float speedMultiplier = 1.00005;
int en = 10;
int steps = 200; //number of steps per revolution
long last = 0;
int lag = 500; //time (ms) interval for display
int dir = 1; //direction of rotation
float rpm, v, oldspeed, a;
int nsteps;
void setup() {
Serial.begin(9600); // define Serial output baud rate
pinMode(en, OUTPUT);
digitalWrite(en, HIGH);
stepper.setMaxSpeed(2000); //max speed 2000 steps/s
stepper.setAcceleration(50);//acceleration rate(steps/s^2)
stepper.setSpeed(200);
Serial.println("Outputs:");
Serial.println(" (+ve=clockwise, -ve=counter clockwise)");
Serial.println("No. of Steps RPM Acceleration(steps/s^2) Speed(steps/s)");
Serial.println("-------------------------------------------------------------------\n");
}
void loop(){
stepper.runSpeed();
stepper.setSpeed(stepper.speed() * speedMultiplier);
if (stepper.speed()==1000)
stepper.setSpeed(1000);
stepper.moveTo(20000);
if (millis() > last + lag) //lag time elapsed since last print
{
v = stepper.speed(); //get motor speed (steps/s)
nsteps = v * lag / pow(10, 3); //No. of steps taken during lag time
rpm = 60.0 * v / steps; //RPM
a = (v - oldspeed) * 1000.0 / lag; //Acceleration
oldspeed = v; //update speed value
last = millis(); //update last print time
//Outputs
//print No. of Steps
Serial.print(String(nsteps) + "\t\t");
//print RPM
Serial.print(String(rpm, 2) + "\t\t");
//print Acceleration
Serial.print(String(a, 2) + "\t\t\t");
//print Speed
Serial.println(String(v));
}
}