1
$\begingroup$

I've read the AccelStepper documentation on airspayce.com and it seems to be not possible to accelerate a stepper starting with a speed greater 0. Acceleration always starts from speed=0, I tried it with several variations of the code below...

#include <AccelStepper.h>
int onOffPin = 9;

AccelStepper stepper(AccelStepper::DRIVER, 2, 10);

void setup()
{      
   stepper.setMaxSpeed(1000);
   stepper.setSpeed(200);
   stepper.setAcceleration(100);       
}

void loop()
{  
    //turn motor on
    digitalWrite( onOffPin, HIGH ); 

    // go forwards
    digitalWrite( onOffPin, HIGH );
    stepper.move(1300);
    stepper.runToPosition(); // stepper shall start from speed 200, but it starts from speed 0; 

    // Now go backwards
    stepper.move(-1300);
    stepper.runToPosition(); 

    //turn motor off
    digitalWrite( onOffPin, LOW ); 
    delay(2000);
}

I also tried to set the speed in the library's method void AccelStepper::computeNewSpeed() directly, but I'm not that good in c++ and don't get it to work.

Anybody any ideas?


UPDATE

I tried to write some custom code in AccelStepper.cpp's method void AccelStepper::computeNewSpeed() My idea was to set the speed manually during acceleration/deceleration if the speed is below my intended value. At first I thought it couldn't be a big deal, but now I see that my cpp skills seems to be not good enough or I don't understand the library quite well.

I tried

void AccelStepper::computeNewSpeed()
{
    long distanceTo = distanceToGo(); // +ve is clockwise from curent location
    long stepsToStop = (long)((_speed * _speed) / (2.0 * _acceleration)); // Equation 16 

    //now here goes my modification
    if (_speed < 200.0 && _speed >= 0 ){
       setSpeed(200.0);
    }
    //I did no modification below this comment

This results in a very slow stepper movement..

$\endgroup$
2
  • $\begingroup$ did you ever get it to work? $\endgroup$
    – MeSo2
    Aug 5, 2021 at 14:55
  • $\begingroup$ no. back then I just arranged myself using the lib as it is. Turned out it was ok for my use case when I setMaxSpeed(1000) and setAcceleration(1000) $\endgroup$
    – mika
    Aug 5, 2021 at 16:58

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.