Build Robots

Motor Drive Shields – Arduino Compatible

Robot parts movement is produced by actuators which are usually electric motors. These electric motors need power to work, which needs to be delivered steadily and controllable. A motor driver is an electronic module which is essentially an interface between electronic control units and final effectors, in our case electric motors. This electronic circuit is designed to send the required amount of energy and to control the electric motor, particularly important since power requirements can vary to a great extent between control electronics and actuators.

Using a motor drive shield together with an Arduino controller board is the perfect recipe for rapid robot development and precise control. Moreover by employing such circuit two or more DC motors, servos or even steppers can be controlled, which is usually a necessity given the increasing complexity of robots.

What Is a Motor Drive Shield

The control of a DC electric motor can be done in several ways: direct drive from a microcontroller, power transistors, or by using a motor drive shield. Using a microcontroller on its own is not recommended if the DC motor requires a lot of power, as the sensible chip is highly exposed to power surges. Using a power transistor drive circuit may be a solution, however for increased precision in motor control the complexity of such a drive module can increase significantly. Programming the main processing unit increases in complexity as well, besides high level control routines it needs to handle all required behaviors of motors at a lower level, taking over more resources in terms of processing power and memory.

The most effective solution is using a motor drive shield, or simply a motor driver, which can handle locally motor driving tasks based on input information defining only the goal rather than the exact procedure to accomplish it. Another advantage of employing such drive circuits is that systems can be expanded easily without major changes in the control hardware employed. Below you can find a review of Arduino compatible shields which can be used both for low and high power DC motor applications, some of them being well suited for controlling stepper motors as well.

Robot Power MegaMoto

Robot Power MegaMoto module

MegaMoto is a low-cost stackable standardized shield, Arduino compatible, designed to control one DC motor and capable of handling up to 840W peak power for 5 seconds. The supply voltage ranges between 5 to 28VDC. This circuit can control a single motor with full variable-speed in both directions, forward and reverse, or two motors in an uni-directional way. If it is used for two motors one lead of these will be connected to the battery negative pole and the other lead will be connected to the MegaMoto outputs.

DFRobot 2A Motor Shield

DFRobot 2A motor drive shield

The DFRobot Motor Shield can be used to control two DC motor with maximum 2 A current and supply voltage between 7 and 12 VDC. Connected to Arduino digital output pins 4 and 7, the motor can be accessed the enable or disable DC motor function. The speed of DC motor can be controlled through conventional PWM from Arduino output pins 5 and 6.


  • Logic control voltage:5 V (from Arduino);
  • Motor drive voltage:6.5-12 V (Vin power supply), 4.8-35 V (external power source);
  • 2 way motor drive;
  • Logic supply current Iss:≤36 mA;
  • Motor drive current Io:≤2 A;
  • Maximum power consumption:25W(T=75℃);
  • Up to 2A current each way;
  • Pins 4, 5, 6, 7 are used to drive two DC motors;
  • Supports PWM speed control;
  • Supports PLL advance speed control;
  • Size: 55x55mm.

Sparkfun Ardumoto

Sparkfun Ardumoto motor driver shield

The Ardumoto is based on a L298 H-bridge circuit and can be used to control two DC motors. The range of supply voltage is between 3.3 and 5 VDC and can be used to drive up to 2 A per channel, and is fully compatible with Arduino.

Sparkfun Monster

Sparkfun Monster

The Monster is a motor drive shield capable of higher workloads, at a working voltage of 14VDC it can drive 14A continously (30A peak) to two DC motors.

Adafruit Motor/Stepper/Servo Shield v2

Adafruit Motor/Stepper/Servo Shield for Arduino v2
Adafruit Motor/Stepper/Servo Shield for Arduino v2.3

Adafruit’s revised motor/stepper/servo shield has 2 dedicated 5V connectors for hobby servos, four 1.2A (3A peak) H-bridges delivering 4.5V-13.5VDC to 4 DC motors or 2 steppers and is fully compatible with most Arduino boards.

Arduino Motor Shield revision 3

Arduino Motor Shield rev 3
Arduino Motor Shield rev 3

The Arduino motor shield rev3 can be used to control the speed and direction of two DC motors or one stepper motor. This electronic circuit has a special feature which can be used to measure the current absorption of each motor. The operating voltage range is between 5 and 12 VDC. With external power supply the peak current per channel is 4A, 2A continuous drive.

iTead Studio Dual Stepper Motor Driver Shield

Dual Stepper Motor Driver Shield for Arduino

The Dual Stepper Motor driver shield for Arduino is a classic drive shield developed by iTead Studio that can be used to control two DC stepper motors handling up to 750mA per channel. Supply voltage range can be 4.75 to 30VDC.

Pololu Dual VNH5019 Motor Driver

Pololu Dual VNH5019 motor driver shield

Pololu’s Dual VNH5019 motor driver is one of the most well performing drive shields that can be used to control two high-power DC motors. Minimum supply voltage is 5.5VDC and the maximum is 24VDC. The high current board can handle 12A nominal current per channel or up to 30A peak current. The channel outputs can be combined to drive a single motor at 24A nominal or up to 60A peak current.

Information on this page is checked and maintained as often as possible, however problems might occur. If you spot inconsistencies or know better alternatives to these motor shields please let me know.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.