# How to run stepper motor at its maximum speed

I am running a stepper motor using arduino and IC l293d. What is the maximum possible speed of rotation that I can achieve with the IC and what should be the applied voltage for the same? Earlier, I got the optimum rotation with a step size of 30 at 7V. I want to increase the step size. What should I do?

• `I want to increase the step size. What should I do?` - Change the motor for one with a bigger step size. The step size is a function of the motor - how far it moves with each step - not a function of voltage, current, software, cheese... Jun 30, 2016 at 10:34
• If you are asking these types of questions you might consider using an H bridge and a DC motor in place of the stepping motor controller and stepping motor.. Jun 30, 2016 at 12:01
• It would be informative to review the numerous stepper motor questions at electronics.stackechange.com (do not post another) and the many online resources which explain this. Jun 30, 2016 at 12:59

## 2 Answers

As this link states:

Stepper motors are normally used for positioning, and are not known for their speed.

However, the link is to an on line stepping motor speed calculator.

As for the size of the step, this is a function of the way the stepping motor is built. Some controllers / stepping motor combinations can do half steps or micro steps. Disable these feature for the fewest number of steps per revolution.

These are some of the basic concepts which deal with practical stepping motor applications. As speed increases, other factors come into play. For example, resonance and inductance.

In this paper resonance is discussed:

If a rigidly mounted stepping motor is rigidly coupled to a frictionless load and then stepped at a frequency near the resonant frequency, energy will be pumped into the resonant system, and the result of this is that the motor will literally lose control.

The paper also discusses the effect of the stepper motor's coil inductance:

An important consideration in designing high-speed stepping motor controllers is the effect of the inductance of the motor windings. ... The inductance of the motor winding determines the rise and fall time of the current through the windings. ...

The speed of the stepper motor (assuming you measure it in RPM) will depend on many factors. I am not sure how the "30 step size at 7V" you mention is relevant.

IMHO, the most important parameters are

1) physical parameters of motor (steps per revolution, rated voltage, motor intetia)

2) Load on the motor

3) software implementation

Normally you shouldn't be able to affect 1( if you are looking like most arduino's developers you should be looking at things like this. i.e. 200 steps per revolution, 5-12VDC and a few tens to hundreds of g*cm^2 or motor inertia.) or 2 (although with higher loads lower velocities can be achieved, normally you select the motor based on the load and not vice versa).

Therefore you are left with Software implementation. Things here can get messy very quickly depending on how experienced you are and what you want to do. e.g. The arduino Stepper library is simple and you can set parameters but it is blocking (i.e. you can't do anything else until movement is completed, or interrupts are used).

If you want to get your hands dirty (and your head messed up ;-/ ) you can looks at

• Arduino timers

• micros(), and millis() for updating the steps yourself. (Have a look at here and here - shameless plug)

• pin registers (for increasing speed) here.

My experience is that normally you can get up to 150 [rpm] easily. Theoretically you should be able to go higher but the uC should be doing pretty much nothing else.