1
\$\begingroup\$

If I want to accelerate my stepper motor at maximum acceleration, can I drive it by watching the position of the rotor with an encoder and stepping the motor whenever it completes the previous step?

I believe that this is how BLDC's are driven.

\$\endgroup\$
  • \$\begingroup\$ What sort of load are you driving? Is relatively constant? \$\endgroup\$ – gbulmer May 2 '16 at 20:00
4
\$\begingroup\$

Yes, you can run a stepper motor closed loop, and that's the way to get the maximum performance. However, that's not what steppers are designed for. They are optimized for open loop control. You might be better off with a geared BLDC motor than a stepper motor for what you're trying to do.

One problem with closed loop control of a stepper motor is that stepper motors have many poles. This means a complete magnetic cycle is only a small angle of rotation, often just a few degrees. A shaft position encoder would need enough accuracy and resolution to reliably indicate the magnetic phase with that few degrees. That won't be cheap.

If I really needed to do this for some reason (so far used geared motors for such applications), I'd try sensorless drive. This looks at the voltages generated by undriven coils as the rotor spins. The problem with this is that it requires the motor to move. I think for a stepper the firmware would also need to keep track of where it thought the motor was, and intelligently fall back to traditional micro-step open loop control when going to slowly or loosing track or getting data back that doesn't make sense (which indicates lost track of position).

Again, go use a geared motor.

\$\endgroup\$
1
\$\begingroup\$

Yes, in theory a stepper could be driven closed loop, though that will need a special purpose motor control system; a BLCD controller isn't suitable, and stepper controllers are designed for open loop control.

To detect what the stepper's rotor is doing, will need an encoder with significantly more resolution than the stepper. So a 200 step stepper will need significantly more than a 200 pulse encoder. BLDCs have many fewer phase-changes, so a suitable encoder is simpler.

It'll also need a control system and motor drive capable of driving the stepper at its maximum. These typically do not run at constant voltage during ech phase in order to build up the current more quickly. making it slightly trickier (AFAIK, off-the-shelf parts that do this are not designed for closed loop control). I'll assume it needs to be capable of fractional stepping too.

Finally, stepper runs hot under normal circumstances. Trying to drive for maximum acceleration will likely drive it even hotter. So if this is for continuous operation, the control system may need to deal with potential overheating too.

\$\endgroup\$
  • \$\begingroup\$ Why would running a closed-loop system for maximum acceleration be any worse thermally than running an open-loop system at full power but with a more conservative motion profile? Power which is fed into a stepper beyond what would be required to turn it at a given speed will be turned into heat; feeding in the same amount of power, but demanding that it turn as fast as possible would reduce the amount of power that had to be dissipated within the motor. \$\endgroup\$ – supercat May 2 '16 at 20:39
  • \$\begingroup\$ To drive the stepper at maximum acceleration will mean more 'phase-changes per second'. So I'm assuming that means more losses. \$\endgroup\$ – gbulmer May 2 '16 at 21:39
  • \$\begingroup\$ Most kinds of motors experience the worst-case heating when they are stalled, but are not intended to be fed maximum power for an extended period of time while in such a condition. Open-loop stepper motors, by contrast, spend most of their time in a full-powered stall. \$\endgroup\$ – supercat May 3 '16 at 4:54
0
\$\begingroup\$

Many (most?) stepper-motor applications operate perfectly fine as open-loop systems. Because they are very conservatively within the ratings for load, torque, speed, acceleration, etc. etc. But if you are trying to achieve maximum acceleration and/or speed while maintaining control of position, then a closed-loop feedback mechanism is pretty well mandatory.

Fortunately, there are closed loop systems (motors/encoders, and adaptive drivers) that are becoming pretty sensibly priced. So closed-loop systems are becoming more common and more cost-effective.

\$\endgroup\$
0
\$\begingroup\$

You don't have to watch it, steppers work in open loop. It's too expensive and too difficult to control the stepper in closed loop.
BLDC is different, but you guessed the difference - a hall sensor detects the rotor position and then the stator is switched, whenever the rotor passes the magnetic pole.
There is www.trinamic.com DSP processor for that, but I think is already old, since BLDC has lowered the price in this decade. The stepper is two phase machine, thus you need 8 transitors to control, while BLDC is three phase - you need only 6 transitors. The rest: DSP, encoder, ..etc you need for both closed loop, but BLDC is better in any way: less noise and vibration, better accelration, high peak torque...it really doesn't make sense to convert stepper in a closed loop, as you can get a BLDC for the same price .

\$\endgroup\$
  • \$\begingroup\$ Yes, I am currently running my steppers as open loop. However, I want the higher acceleration of BLDC's while still retaining the accurate positioning of steppers. \$\endgroup\$ – dpdt May 2 '16 at 19:26

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.