I want to control a stepper motor about 3RPM and at very low vibration.

I have a ROLLON SRL-M542H stepper controller.If I change it to high step per revolution it works smoothly without more vibration.

Is it a suitable method for reduce vibration?

And how to calculate pulse time for pecific RPM? Im trying to use an Arduino UNO for pulse genaration.

  • 4
    \$\begingroup\$ Stepper motors move in discrete steps. Maybe you can use micro-stepping to produce smoother motion in your stepper motor. Or maybe you need to move to some type of servo-motor or synchronous motor powered by AC. \$\endgroup\$ – mkeith Dec 28 '17 at 17:57
  • 1
    \$\begingroup\$ I think each pulse is one step. So pulse/sec = rev/min * steps/rev * 1min/60sec. Different motors have different numbers of steps per revolution. \$\endgroup\$ – mkeith Dec 28 '17 at 18:00
  • 1
    \$\begingroup\$ you compromise torque with reduced vibration with more usteps Got specs for either? Vibe? Torque? \$\endgroup\$ – Tony Stewart Sunnyskyguy EE75 Dec 28 '17 at 18:01
  • \$\begingroup\$ Yes.If increasing microstepping factor from controller I have seen torque is decreased.It also effect to the step accurete? \$\endgroup\$ – user_fs10 Dec 28 '17 at 18:09
  • \$\begingroup\$ How much load torque do you need? 1% of rated 10%? \$\endgroup\$ – Tony Stewart Sunnyskyguy EE75 Dec 28 '17 at 18:10

Stepper motors are natuarally resonant around each holding position because the holding torque varies from zero at the holding position out to a step distance away where the torque at its maximum.

enter image description here

As such, in a lightly loaded or damped system they can vibrate for quite some time upon stepping.

Use of micro-stepping reduces this effect by bringing the rotor towards the holding point with less velocity and overshoot. Basically, you do not hit the bell as hard.

Micro-stepping does however reduce the effective torque in an open loop system. Since the motor is really alternating between pulling from each direction to establish an average position. Those opposing forces cancel out leaving you with a lesser net force.

Pulse time for a specific RPM will be dependent on the number of steps per rev (poles) of the motor times whatever micro-stepping factor is employed by the driver.

\$PulseTime = 1/(RPM * 60 * Poles * MicroSteps)\$

Acceleration and deceleration profiles should also be employed to successfully ramp up and down the pulses at a rate that the motor can keep up with given your worst load and inertial conditions.


Whenever one needs to meet certain criteria, it must be measurable and then specified up front. Here; low (?) Vibration , low (3) RPM, unknown (?) torque and unknown inertial load(?)

Stepper torque in a 200 step/Rev Stepper motor is specified with a holding torque when rated electrical power is applied.

When microstep interpolation is enabled, the full torque is not available at the intermediate pole positions and is inversely related to the number of microsteps/Rev.

Your controller permits 400 steps to 25k steps /rev so the pulse rate must be increased to achieve the same RPM. ( 1.2 kHz to 75kHz )

If the load torque is insignificant compared to the mass of the rotor, I might start with a step rate in 10kHz range like 9.6KHz with 1600 step/rev.

With a decent CNC bridge and GBRL code software, one can control the acceleration and velocity (RPM) precisely with built in constants for controlling the servo behavior via an Arduino USB serial port. Or use the uStepper controller you have with suitable software.(?)


If your case has any significant friction or inertial mass with a need changing speed rapidly, I would opt to use toothed belt & gear reduction as a method to reduce vibration from half-steps while also increasing torque rather than the loss of torque with ustep.

The other way to reduce vibration is adding inertial mass of a flywheel such as in a turntable.

  • 1
    \$\begingroup\$ Adding mass can make it worse. You really need damping. \$\endgroup\$ – Trevor_G Dec 28 '17 at 18:39
  • \$\begingroup\$ If done badly yes. If done correctly no. it depends on rate of changes applied to response ratio. \$\endgroup\$ – Tony Stewart Sunnyskyguy EE75 Dec 28 '17 at 18:43
  • \$\begingroup\$ YUp was just expanding on what you said. \$\endgroup\$ – Trevor_G Dec 28 '17 at 18:45

It looks like you have a very low step rate....~10 steps/second on a 200 step/revolution motor. A typical hybrid step motor is a fourth-order non-linear system. With an operating point near zero angular velocity, the system is like a mass/spring/damper where the mass is the inertial load, the spring is the slope of the torque curve through the detent position and the damping is controlled by what is seen by the motor's back-EMF looking out of the motor. So, the damping is dependent on the inductance, the motor resistance and the effective resistance looking back into the driver.

You can't do too much about the inductance. Your choice of a driver that regulates the currents in the windings of the motor is probably the wrong thing. The resistance seen looking out of the motor will be very large. As such, the damping will be very low!

You should consider the use of a simple L/R drive...four transistors and perhaps some resistors in series with the motor winding. Also, reducing the level of current in the motor can reduce the resonant frequency and improve the damping ratio. In short, do some experimentation!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.