Looking for some help with stepper motor control

Hey Everyone,

I'm wanting to use a stepper motor for a project I'm working on and was looking for some advice. First, here is the setup:

  • Arduino Leonardo
  • AccelStepper library for Arduino
  • SparkFun Big Easy Stepper Driver (Allegro A4983, 35V/2A max)
  • Kysan 1124090 Nema 17 Stepper Motor
  • 12V DC power

Right now I've got the driver set to 1/4 stepping and I'm maxing out around 300rpm. (4000 steps/second, 800 steps/360 degrees). The reading I've done seems to indicate that 4000 steps/second is about the most I can get out of the Arduino. I've tried 1/2 stepping and full stepping on the driver but loose any usable torque from the motor.

Any thoughts on how I could get higher rpm? I was hoping for 600-1000rpm for the project.

Can I get higher step rates out of the Arduino easily? (I know that you can start playing around with timers, but I'd like to keep thing simple and I need an easy way to accelerate/decelerate the motor)

Would driving the motor with 24+ volts give me usable torque at 1/2 or full step settings?

Should I choose a different motor (the one I'm testing with was on-hand)



You could get a 3.6 degree bipolar motor. I suppose that's cheating but it would be a simple way to double your speed.

You might look into programming in assembler. Takes some time to learn, but if you have been programming it shouldn't be too bad. This will let you cut out all un-necesary code, reduce program size and speed things up.

Using the Arduino environment, or any other high level language, means that at some point someone had to make certain descisions about memory usage, saving and restoring variables and such. While these descisions are great for general work and reliability therea re times when they also create a large amount of overhead that have a direct impact on how fast the Arduino can execute.

I have played (still need to finish it up...) with a step/direction stepper driver that I started in Arduino. 1200 Bytes. I got the same function at a much higher speed by coding it in assembler - 88 bytes.

You should be able to get higher speed with full stepping, but you might have to work with a better acceleration profile when starting and stopping the motor. A higher voltage can help, as long as the driver can handle it.

If you have a 6-wire motor, an option to improve torque at high speeds is to use only half of each coil. Instead of using, say, red-blue use red-white. This will reduce inductance and will halve your torque at low/no speed but will increase torque at higher speeds, letting you use full steps(maybe)