Skipping Stepper Motor

Hi, I'm using the Bipolar Stepper found in the Arduino Stepper Library with an Arduino Mini Pro and L293D driver to control a 12V Bipolar Stepper Motor with 60 to 1 gear reduction.

It all seems to be working properly when the external torque is acting against the motor rotation (plenty of torque and no skipped motor steps) however when the external torque is acting with the motor rotation the motor begins to skips.

Any ideas?

Either the running frequency is too high for the voltages available, or load torque exceeds the torque of the stepper.

In this application, I'm applying the same external torque whether the motor is rotating cw or ccw. When the motor is rotating cw the motor is rotating against the external torque and every thing is okay. When the motor is rotating ccw the motor is rotating with the external torque and skipping occurs.

I theorized that the motor is skipping as the coils are sequenced to advance to the next step and the external torque is acting to accelerate the motor right through the intended next step. In an attempt to validate this theory I added a small amount of friction to the applied torque in an attempt to dampen (reduce) the acceleration caused by the external load (no other changes were made). It worked, the system now works properly in both direction.

I'm now wondering if I can correct the original skipping problem by using the acceleration/deceleration functions available in the AccelStepper Libary?

Any thoughts or input you may have would be appreciated.

You may have to increase running voltage, and reduce voltage when holding position. A great many of the commercial high speed drives use this on a linear basis. Its called voltage programming, the higher the step rate the higher the motor mains voltages. This may help the in step pole "grab" the rotor better and stop the overshoot.

Thank you for your insight. I do see marginal improvement when I drive the 12V stepper motor with 17V. I am however hoping to run the entire system with a single power source and have found the voltage regulator on the Arduino overheat if the power supply gets much above 12V. What about the "setMinPulseWidth" parameter in the AccelStepper library? I don't know what this parameter does but wonder if it could help solve the overshoot issue?

Pre regulate the power to the arduino with a 7810, 7812, or 7808 regulator, then run a power supply voltage that gives your motor best response. The acceleration PWM value in the stepper class is for soft start/stop operations by reducing the effective voltage on a winding.

You want as much voltage as you can get, do not use a voltage regulator. If it slips you are going too fast, you do need more torque to resist slipping when the motor is trying to hold the load back.

Grumpy_Mike: You want as much voltage as you can get, do not use a voltage regulator. If it slips you are going too fast, you do need more torque to resist slipping when the motor is trying to hold the load back.

@Grumpy_mike The regulator is not for the motor, but for the arduino, allowing one powersupply to be used with a greater voltage than the arduino can withstand.

I stepped away for a few days but once again appreciate the input. Ajofscott, you had suggested pre-regulating with a 7810, 7812, or 7808 regulator. Is there any reason not regulate the voltage down to 5V with a 7805?

You have to have 2 to 3 volts to drop across the onboard regulator, and staging voltage drops offers a degree of protection in the event of an upstream regulator failure.