Hardware options for Stepper Motors

What are the pros and cons of driving a bipolar stepper motor with a motor driver IC, like the TI DRV8824 (perhaps packaged on a carrier board like Pololu's http://www.pololu.com/product/2131), vs. using the Arduino Motor Shield based on the L298, or perhaps just an H-bridge as documented in the links in the documentation for the Stepper Library?

If I used a 8824 or similar driver chip, would I be able to use the the Stepper library, or the AccelStepper library? It looks like these libraries are designed to handle controlling the 2 stepper coils directly, while the 8824 would do this itself, providing higher-level direction and step inputs.

pincorrect:
What are the pros and cons of driving a bipolar stepper motor with a motor driver IC, like the TI DRV8824 (perhaps packaged on a carrier board like Pololu's http://www.pololu.com/product/2131), vs. using the Arduino Motor Shield based on the L298, or perhaps just an H-bridge as documented in the links in the documentation for the Stepper Library?

Likely that TI chip is more efficient than the L298 - so that would be one thing it would have going for it.

On the other hand - in theory using the L298 (or better, your own custom driver system using discrete components or some other mosfet-based h-bridge or half-bridge chip) - driving it directly with the Arduino would potentially allow you to experiment with your own software-based chopper driving system (via code and such - you would need to implement a current feedback monitoring system, too) - different stepper drive modes, etc. Again, in theory, all of this could be done going that route.

pincorrect:
If I used a 8824 or similar driver chip, would I be able to use the the Stepper library, or the AccelStepper library?

Unlikely - as you have noted:

pincorrect:
It looks like these libraries are designed to handle controlling the 2 stepper coils directly, while the 8824 would do this itself, providing higher-level direction and step inputs.

Yes - the 8824 does everything for you. I bet if you looked, you could even find someone who has already created a library for the Arduino to make interfacing with the Pololu 8824 fairly easy - if not, such a library wouldn't be difficult to write (and would help others).

The thing you are likely missing about the L298 is that in the case of stepper motors, it wasn't meant to be used alone except in really low-cost applications (such as a DC h-bridge controller or for stepper motor uses where cost was a main factor) - there is a companion chip called the L297 which is meant to be interfaced to the L298, and it provides a lot of additional functionality to the L298 when used for stepper motor applications (take a look at the L297 datasheet, and reference the L298 datasheet side-by-side to see what I mean).

Even so - the pair of chips likely doesn't give everything that the 8824 does, it will have a larger layout on a PCB, and it won't be as efficient.

Then again, if you used that pair of chips, you still couldn't use the existing Arduino stepper libraries with it, because they weren't designed for that combination.

Thanks for all that info.

I'm leaning toward a motor driver solution, because I'm doing something "plain vanilla", so I think I'd be better off letting the driver chip do the current chopping, etc.

I looked at a little more at the blurb at the top of the AccelStepper docs, and it did say that it supports motor drivers like the Sparkfun EasyDriver based on the Allegro 3967. So maybe it would work with (or could be easily modified to support) the TI 8824. (And I'm not really wedded to that one, or any particular driver chip right. I should look at the 3967 also.)

May I ask a follow on question? If I used a motor driver IC, would its active current limiting capability also detect (and maybe even report) if the motor stalls, and prevent damage to the motor in that case? I.e., can I monitor for motor stall if I use a motor driver chip?

No contest.

Do not even think of using an L298 unless you have absolutely no alternative.

Stepper motors work best if they are driven from a high voltage supply. The 8824 can operate with up to 45 volts. The proper stepper motor driver boards can do this because they can be set to limit the current to the maximum required by the motor. Note that the voltage specified in stepper motor specs is largely irrelevant - the maximum current is the key figure. For obvious reasons you must choose a stepper driver that can comfortably supply the max current required by your motor.

Proper stepper motor driver boards also usually allow for microstepping without imposing any additional requirements on the Arduino code.

Both the Stepper and AccelStepper libraries will work with stepper driver boards. It is also very easy to write your own code to make them step - basically just

digitalWrite(stepPin, HIGH);
digitalWrite(stepPin, LOW);

Note that the Easydriver (3967) has a much lower current rating than the BigEasydriver or the Pololu A4988 both of which use the A4988 chip. The 8824 can supply a little more current. If your motor needs more than about 1.5 to 1.7 amps you probably need a more powerful driver (and unfortunately more expensive). The general principle of operation will be the same.

...R

Remember that the speed of a motor always depends on the supply voltage, all
else being equal. So driving a stepper slowly can usually be done either
unipolar or bipolar from an H-bridge, but you need to find a motor with high-resistance
windings (10 to 100 ohms sort of range). The current is resistance limited,
the max RPM might be as low as 150.

For fast stepping a low resistance motor is needed with chopper-drive electronics
from a high voltage supply - the high voltage overcomes back-EMF and allows
faster switching of current (as does the low-impedance windings). Chopper drive
is like using a DC-DC converter, but using the motor's own inductance as the
inductor in the switching circuit. Thus a 3A 1ohm motor driven from 24V might
take only 0.5A when the motor is stationary (but up to 2--3A at top speed under load).
Several 1000 RPM is achievable this way.

Thanks for your input everyone.

Do you guys that have used motor drivers favor any particular one, or any particular line? There are a lot of offerings by TI, Allegra, and I'm sure others.

pincorrect:
Do you guys that have used motor drivers favor any particular one, or any particular line? There are a lot of offerings by TI, Allegra, and I'm sure others.

I have no opinion. I have only tried Pololu A4988s with low-current (330mA) motors and I'm quite happy with them.

My guess is that you would need to be very discerning (far above my pay grade) for the differences to matter as long as the devices are suitable for your motor.

As far as I know the drivers for larger currents usually use discrete mosfets as there can't be sufficient cooling with an all-in-one chip.

...R