# How to suddenly stop stepper motor without vibration?

I first send continuous pulses to the stepper driver to make the motor run at high speed(fixed speed), then I stop sending pulses, I know the motor will stop quickly, but will it cause great vibration?

In my application, I need to stop the running motor suddenly, then start running the motor(not so quickly), then stop it quickly... again and again. I do need to use stepper motor for its small size, and I don't want to use electro-mechanical brake due to its limited life time.

Do you have a better way to stop the running stepper motor quickly with minimal vibration?

Thank you.

• You will probably need to test what happens when you stop quickly, the mechanical system it's connected to will have some momentum and there is only so much force the motor can exert. If one overcomes the other it will over-run the motor and judder to a stop at the wrong place. You need to control the acceleration & deceleration of the motor to ensure you do not exceed the physical limitations of the system. Aug 18, 2014 at 12:35
• This vibration upon stopping is exactly the same thing as the "ringing" of a system in response to a step function. It's a property of that system's limited bandwidth (frequency response). Two ways to deal with it: make the moving parts and linkages lighter and stiffer (i.e. increase frequency response) and dampen the system to limit overshoot (i.e roll off the high frequencies in the start-stop signal).
– Kaz
Aug 18, 2014 at 19:05
• Most mechanical systems try to "instantly stop" only when a safety mechanism trips - normally, they profile the movement with calculated acceleration and deceleration. Aug 18, 2014 at 20:30

There will be vibrations due to the sudden stopping of the system. Whether or not it will "cause great vibration" is really your discretion.

To understand what is happening, the motor shaft has some inertia. The angular momentum of the shaft is denoted by I * w, where "I" is the first moment of inertia of the shaft (in kg*m^2), and "w" (omega) is the angular velocity (in rad/sec). The torque generated on the motor is analogous to the force generated when a moving object suddenly stops. Thus, T = dL/dt, where "T" is torque (in N*m), and "dL/dt" is the change in angular velocity (L) per unit time. Obviously, you can't actually stop instantly, since that would require infinite torque, but you can stop rather quickly.

If you want to actually solve for the dynamics of the system, you need to understand Linear, Time Invariant (LTI) Second-Order Systems. Essentially, you can analyze your stepper motor to determine it's inertia (2nd-order term), damping (1st-order term), and springiness (0th-order term), then use the equation:

I * theta'' + b * theta' + k * theta = T = dL/dt

In this equation, I is your moment of inertia, b is your damping, and k is your springiness. Theta (and it's time derivatives) represent your angle. You could use a solver (like Mathematica/WolframAlpha or MATLAB/Octave) to solve the system given your initial conditions.

Of course, since both "b" and "k" are likely to be small, your system is really more like:

I * theta'' = dL/dt

which is far easier to solve.

If you read up more on this, you could simulate your braking system so that you can see the oscillations if you stop immediately, and find a dL/dt (or braking torque) that creates the time-optimal decay in velocity.