May one speed up a stepper motor?


today I managed to make my stepper motor to run at my Arduino, but the range between "setspeed(20)" and "setspeed(255)" is too narrow for what I want to do...

I have to use 20 as a minimum, otherwise the motor won´t start. And 255 is still somewhat to slow... Is there any possibility to make the motor go faster or - if not - should I buy a special motor?

Does one know how the speed is done that is shown in these videos? Are these special motors or is it done by driver? Thanks a lot! Martin...



We may be able to help if you post your code.

Thank you both for your answers...

I will try to answer everything one by one:

1) What the motor was designed for: I don´t know that. It is a Nanotec 4H5609, which should be comparable to the newer SH5618, but, that one only has 1.8 degrees per step.

2) How much load on the motor: The motor data is: 0.9 degrees, 12 Volt, 0.6 amp. I already piggypacked the L293D-chips on the motor shield to make it take work with more power, but still it is getting hot. I have heat sinks here, not mounted yet.

3) How much power you have available: My power supply will be something like 12V 7Ah batteried or so.... At the moment I am testing with this power supply, that gives linear 1.5 - 15 V/DC / 1.5 A, 22.5 Watt: Here are pictures and more data

4) Your motor controller: My motor controller is the one from shown here. Normally it takes 0.6A (1.2A peak) - but it runs with three piggypacked L293D at the moment.

5) Your software: My software does not exist until know. I was trying with modifying some of the testing code that was provided with the "AFMotor"-library from Adafruit...

I need a smooth motion from the motor, starting as slow as possible, then speeding up, then slowing down again... If I could make the motor run three times as fast as it does now, I´d be happy. Also I´d buy another motor, if you recommend one that solves my problems. Actually the one I have here is too heavy for my needs...

Thanks a lot for you answers, I appreciate your help very, very much! Martin...

Not noone no idea, no?

Perhaps you could post the code you’re actually using. I’ve never seen the code you’re describing so I can’t comment.

Yes, of course, although I cannot imagine how to speed up a motor with it?

#include <AFMotor.h>

AF_Stepper motor(400, 2);

void setup() 
  motor.setSpeed(100);  // 10 rpm   

void loop() {

  motor.step(1000, FORWARD, MICROSTEP); 


Have you tried using the Arduino stepper motor library?

No, not yet! Is it true I might speed up the motor by software? Hmmmm....

I´ll give this a go as soon as possible! Thank you very much for your hint! I appreciate it very much, really! Thanks! :)

Well it is possible to slow it down by software

You should probably not use microstepping if you are going for speed.

#include <AFMotor.h>
AF_Stepper motor(400, 2);  // Is it really a 400 step per turn stepper?

int speed = 10;

void setup() 
void loop() 
  motor.setSpeed(speed);  // start slow and build up
  motor.step(1600, FORWARD, SINGLE);   // Four turns at each speed 
  speed += 10;

Hello, thanks a lot for your replies.

It is really a 400 steps motor... I know I might go faster with the motor using SINGLE steps, but I need very smooth motion when running at slow speeds and there should be no "stairs" or recognizable steps in the transition when speeding up and down. I suppose the sudden speed changes in johnwassers code are already to sudden...

All in all the step motor was already almost fine, if only I could make it go faster while in fastest mode but keeping it as alow as it is now when in slowest mode...

I really wonder how the guys in the videos made the stepper motors run that fast while being able to slow then down that much... Mine is really very slow when running "fast"! :)

To make a stepping motor run faster you need to feed it with fast pulses. If the pulses are too fast the motor will stall. To get the stall speed higher you need to supply the motor with a higher voltage. But that will put too much current int the windings and so this has to be controlled with a chopping regulated motor drive.

Everything Mike said is important but not hard to achieve as there are a number of inexpensive “chopper” drives available. Another thing to consider is providing for an acceleration ramp in your code. If you try to accelerate the motor too fast with a load on it it will miss steps. There are a number of factors involved in a stepper controlled system such as the mass of whatever you’re moving, how fast it needs to move and how quickly it needs to achieve that speed. Knowing these things you can calculate the torque the motor needs to produce allowing you to select a motor. Once you have chosen a motor you can choose a drive.
OR, you can guess what you need and experiment until you get it right :).