AccelStepper - How to set number of steps in one revolution?

3,723 views
Skip to first unread message

dakujr

unread,
Oct 31, 2015, 7:03:28 PM10/31/15
to accelstepper
Hi, 

How does one set number of steps to be moved in one revolution? For example, I have a stepper motor capable of 200 steps/revolution that is 1.8 degrees per step.

In the following program how do I set the number of steps per revolution for example to 10000 steps per rev?

#include <AccelStepper.h>
// Define a stepper and the pins it will use
AccelStepper stepper(1,9,8);  // AccelStepper mystepper(1, pinStep, pinDirection);A stepper motor controlled by a dedicated driver board.
void setup()
{  
  stepper.setMaxSpeed(500);
  stepper.setAcceleration(10000000);
}
void loop()
{    
  stepper.moveTo(8000);
  while (stepper.currentPosition() != 8000) // Full speed up to 300
    stepper.run();
  //stepper.stop(); // Stop as fast as possible: sets new target
  stepper.runToPosition(); 
  delay(1000);
  // Now stopped after quickstop
  // Now go backwards
  stepper.moveTo(-8000);
  while (stepper.currentPosition() != 0) // Full speed basck to 0
    stepper.run();
  //stepper.stop(); // Stop as fast as possible: sets new target
  stepper.runToPosition(); 
  delay(1000);
  // Now stopped after quickstop
}

Thanks!

Mike McCauley

unread,
Oct 31, 2015, 7:14:19 PM10/31/15
to accels...@googlegroups.com
Hello,



On Saturday, October 31, 2015 04:03:28 PM dakujr wrote:
> Hi,
>
> How does one set number of steps to be moved in one revolution? For
> example, I have a stepper motor capable of 200 steps/revolution that is 1.8
> degrees per step.

You dont.

AccelStepper has no idea how steps per revolution in your motor. It only knows
about steps. You are responsible for knowing how many steps per rev and
setting the number of steps to move accordingly.
--
Mike McCauley VK4AMM mi...@airspayce.com
Airspayce Pty Ltd 9 Bulbul Place Currumbin Waters QLD 4223 Australia
http://www.airspayce.com
Phone +61 7 5598-7474

gregor

unread,
Oct 31, 2015, 7:16:30 PM10/31/15
to accelstepper
hi,
AccelStepper does not know how many steps a motor has (because it does not need to), you will have to do the conversion yourself: 
long stepsPerRev = 200; //200 steps per stepper motor revolution

void moveRevolutions(float revs) {
long stepsToGo = static_cast<long>(revs * static_cast<float>(stepsPerRev));
stepper.move(stepsToGo);
}

moveRevolutions(2.2); //move 2.2 revolutions 
moveRevolutions(-0.7); //move -0.7 revolutions


Reply all
Reply to author
Forward
0 new messages