I'm looking to drive a bunch of stepper motors with some of Adafruit's Raspberry Pi motor HAT.

(This product: https://www.adafruit.com/product/2348).

I need high torque motors, and I've identified this one here: http://cdn.sparkfun.com/datasheets/Robotics/57BYGH420-2.pdf.

I'm a hardware beginner, but after looking at the specs it's a little mismatched I guess. The motor calls for 2A, 3.2V, while the shield is meant to provide 1.2A, 5-12V.

Will this work? I've read that there will be a torque reduction without sufficient current, but that's within acceptable ranges. The voltage difference concerns me, but I'm wondering if maybe it will work fine.

I've looked at higher current control boards, but those seem to invariably be geared towards CNC applications, which isn't what I'm doing here (it's a robotics project).

On the most general level, I am looking to understand the constraints on delivering power to a stepper motor via a control board.

Any advice? Will this pairing work or am I about to start an electrical fire? I apologize if this question seems basic, I'm trying to get a hold on the fundamentals here.


The ideal stepper motor driver delivers a constant output current. This allows the motors to be driven with a higher voltage for fast acceleration, without getting too hot. This also allows the driver to control the current such that it protects itself into any motor.

Most stepper drivers simply switch constant voltage, as does the hat you have chosen. This means the stepper draws the current it wants to, at the input voltage.

In order not to overheat the hat, you would need to reduce the current that the stepper draws, by either reducing the supply voltage, or padding it with small resistors. Padding with resistors does actually improve the switching time a little. Reducing the current means that the motor will deliver less torque than specified, rather negating the purpose of choosing high torque motors in the first place.

I would not recommend trying to gang up the two channels of the hat directly to drive more current, unless there is a control on there to enable that to be done 'officially'. If you simply program the two channels to the same output, then the first time your software screws up, you could be left with a fried hat.

You could perhaps gang them through resistors, to provide enough isolation between them to protect them from each other in the event of mis-programming, and use a suitable higher voltage. However that's all getting rather fiddly, maybe you'd be better to find drivers suitable for the motor current.


This site is temporarily in read only mode and not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .