DC Motor/Stepper Control - Arduino

Hello Pololu People,

I am interested in DC motor/stepper motor control using the Arduino platform.
The motor voltage is 12VDC and the current may very depending on the motor size required. For testing purposes the motor current shall be less than 2A.

Browsing through the Pololu site, I found the ’ Dual TB9051FTG Motor Driver Shield for Arduino’ (Pololu item #: 2520). Wondering if this motor controller may also control a stepper motor? As I understand things, dual motor control allows for stepper motor control as well. Also, in case one requires extra motors to control, is the motor controller stackable? Another concern, is the motor controller able to be powered using a power supply other than a battery? I noticed other motor controllers, such as Cytron, require battery source only as stated in the user manual: “Please use battery when driving inductive load such as DC brush motor. Due to the protection circuit of most Power supply (switching), it will shut down when regenerative current from motor is detected.”

Also, wondering about replacing the standard Arduino Uno with the ’ A-Star 32U4 Prime SV’. Has someone had experience with this unit, the A-Star seems to more advanced in many ways.



The Dual TB9051FTG Motor Driver Shield (or pretty much any other dual H-bridge) can be used to drive a stepper motor; however it lacks the specific features typically found in dedicated stepper motor drivers, such as built-in current limiting and microstepping. I would highly recommend considering a dedicated current-limiting stepper motor driver such as the ones in our stepper motor driver category, instead.

If stacking the shields is an important feature to you, I recommend considering our new Motoron Motor Controllers. While it is possible to stack dual TB9051FTG shields, it would require the additional shield have its Arduino connections remapped to appropriate pins. You can find some information about this in the “Remapping the Arduino connections” section of the Dual TB9051FTG Motor Driver Shield user’s guide. Additionally, if you are using our Arduino library for the Pololu Dual TB9051FTG Motor Driver Shield, you would use the alternate constructor for the remapped board so you can specify which pins it is using. Please note that in the default configuration, our library uses pins capable of 20kHz PWM outputs for the M1PWM and M2PWM pins, but when remapped it will try to use analogWrite() instead (which is at a much slower frequency that could be audible), so you would need to be sure to choose analogWrite-capable pins .

I suspect the warning for the motor controller you referred to is about noise or back EMF from the motor making its way to the power supply (which is sometimes referred to as “regenerative braking”, and can sometimes cause problems for switching power supplies). There is no special circuitry on the dual TB9051FTG shield to prevent noise or back EMF from reaching your battery, but it is typically only an issue with higher power motors, so I generally wouldn’t expect a problem from powering the dual TB9051FTG shield from supplies other than batteries.

It should be fine using the A-Star 32U4 Prime SV with the dual TB9051FTG shield; however, the A-Star 32U4 Prime uses pins 7 and 8 for driving the LCD, so if you are planning on using the A-Star with an LCD, you will probably need to remap those pins on the dual TB9051FTG shield to avoid a conflict.


Hello Brandon,

Thank you greatly for your highly informative and intelligent response. Now I understand your recommendation to current limit the stepper motor with a dedicated driver. We’re interested in stepper motors less than current rating of 2A, which may be powered by either a 12VDC plug-in regulated power supply or a 12VDC lead acid battery depending on the situation, the 12VDC is for portability. I see there’s several stepper motor drivers available offering wide input voltage ranges too, which is required as the 12VDC battery will drop over time. I assume there are no stepper motor driver shields for the Arduino? The A4988 stepper driver would suffice for <1A as the voltage range is wide, great for 12VDC batter drop. As I understand things, most motor drivers are current rated almost twice the actual capacity unless heatsinks are used. Wondering, is there a stepper motor driver you may recommend for a higher current around 2A? The TB67S128FTG driver is double the current rating than the A4988, with wide input voltage range. The TB67S128FTG seems to offer more features that may be unused, but for only an extra $10, I’m thinking this may be a wise choice, assuming it can also be controlled by an Arduino. I see that the dedicated drivers will require hookup wiring. Any hookup wires you recommend that offer a secure connection with the Arduino?

Given the situation of a 12VDC battery source, I imagine the stepper motor must be rated below 12VDC as the battery voltage will drop over time. As I understand things, best to supply a higher than rated voltage to the stepper with current limited drivers to ensure strong operation. I noticed a stepper motor, Pololu item #: 1477, with a lower voltage of 8.6VDC, and only 1A/phase, which may connect well with one of the stepper motor drivers. Wondering, do you offer these stepper motors geared (typically planetary) for extra torque? I’ve seen one a few years ago here at work that was 9.6VDC with a small phase current of only 0.5A with planetary gearing offering greater torque, this would be great for 12VDC battery sourced application where lower power consumption is desired.

As for brushed 12VDC motors, wondering what you may recommend as a motor operating less than 2A? I’m looking at the TB9051FTG Motor Driver Shield, Pololu item #: 2998, for Arduino which offers a wide input voltage range and a high 2.6A per motor, wondering your thoughts on this choice? There’s no active current limiting though with the TB9051FTG; unsure if this matters for brushed dc motor compared with the necessary stepper motor drive current limiting.

Looks like the A-Star 32U4 Prime SV is the best option given the wide input voltage range. Do you know when the SD card version may be back in stock?


We do not carry any stepper motor drivers in an Arduino shield form factor. For connecting the driver to the Arduino, you might consider our Premium Jumper Wires.

The maximum ratings in the driver datasheets is for the driver IC itself, but the practical characteristics depend on the carrier board and conditions it is in. The continuous current figures mentioned on our product pages are what we tested our carrier boards to be able to achieve, without additional cooling, in ambient conditions. It is possible to run them at higher continuous currents if you keep the driver sufficiently cooled. I generally expect forced airflow to be more effective than just a heatsink, with the combination of both giving the best results.

Generally, when using a current limiting driver, using a voltage higher than the stepper motor is rated for allows the current to ramp up faster, which can help you achieve higher step rates. So running something like the #1477 stepper motor at 12V would be fine.

Unfortunately, we do not carry any stepper motors with gearboxes or separate gearboxes for stepper motors, and I do not have any specific recommendations for those.

The Dual TB9051FTG Motor Driver Shield for Arduino (which is product #2520 by the way) is a great choice for brushed DC motors. It offers a lot of useful built-in protections like under-voltage, over-current, and over-temperature conditions, as well as reverse-voltage protection that protects the board from damage if you accidentally connect power backwards. It does not have a configurable active current limit, like you mentioned, but it does have a fixed current chopping threshold to help limit the peak motor current and current sensing.

We manufacture the A-Star 32U4 Prime SV with microSD in-house, so we can generally make more units quickly. We are already making more, and it should be back in stock in the next few days. If you backorder them now, we will ship them when they are available.


Hello Brandon,

Your response is greatly appreciated. These items shall be used to establish a baseline for stepper/brushed motor control for several projects forward.

Referring to the stepper motor drivers in general, is the motor coil power able to be enabled and disabled through driver software so that the coil current may be shut off until motion is required? I assume the ENABLE input on the stepper motor drivers performs a motor coil shut on/off. This is essential for a battery operated situation in order to conserve power; from my experience, the stepper motor coil is drawing full power even when stationary unless the coil power is disabled.

Also, do all stepper motor drivers require an LC voltage spike suppressor capacitor? I noticed that the A4988 recommends to “put a large (at least 47 µF) electrolytic capacitor across motor power (VMOT) and ground”, while the TB67S128FTG stepper motor driver seems to not recommend this. Wondering what you recommend in general for voltage spike suppressor or decoupling capacitors with both the stepper and dc brushed motors?

Referring to 12DC brushed motors, wondering what you recommend as a basic 12VDC motor (<2A) to connect with a 12DC brushed motor controller for software testing? I noticed that 12V Carbon Brush (CB) 20D Gearmotors, which are listed with <2A stall current, perhaps these are suitable?

We’re in Canada, and while looking into ordering, I noticed the Canada distributor, Canadarobotix. While browsing through Canadarobotix, I noticed several items unlisted including the TB67S128FTG stepper motor driver, the A-Star 32U4 Prime SV and other smaller components. Wondering the best method to order items listed in the main Pololu product site over to Canada?


Yes, you can de-energize the stepper motor using either the enable or sleep pins (which function slightly differently on each driver). I recommend looking at the driver’s respective datasheet, which you can find for each of our carrier boards under the “Resources” tab of their product page. We also carry a few drivers that have some additional features for controlling the current limit digitally. For example, the digital current control version of our MP6500 carrier allows you to set the current limit directly using a pair of I/O signals.

The TB67S128FTG carrier has some larger electrolytic capacitors onboard, so you generally do not need to include additional capacitance. In general, whether or not you need to add additional capacitance depends on your specific system (i.e. application, components used, length of wires), so I do not have any specific recommendations. However, you might find the information in this “Understanding Destructive LC Voltage Spikes” app note helpful.

Our 12V carbon brush 20D gearmotors sounds like they would be a good fit. Additionally, you could consider some of our 25D gearmotors, particularly the 12V LP or 12V MP versions.

We do not keep a stock of which particular items each distributor carries, but you can find a list of our Canadian distributors here. If you follow the link to go to the distributor’s profile page, you can see a list of the products they have purchased over the last year, which could help give you an idea of which ones they carry. Alternatively, if you cannot find the items you are interested in from distributors closer to you, you could order directly from us through our website. You can find information about international orders here.