Robot parts movement is produced by actuators which are usually electric motors. These electric motors needs power to work and control to know when to run. Electric motor control of a robot is made using a motor drive shield – 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 electric motors can be controlled, which is usually a necessity given the complexity of robots.
What is a motor drive shield
The control of DC electric motor can be done in several ways including the use of 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. Using a power transistor drive circuit may be a solution, but for increased precision in controlling for instance speed and rotating direction the complexity of such a drive module can increase significantly, while programming of the main control 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 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 motor drive shields compatible with Arduino, which can be used both for low and high power DC motor applications.
Robot Power MegaMoto
MegaMoto is a low-cost standardized shield, Arduino compatible, designed to control DC motors with over 800 Watt of power. The supply voltage ranges between 5 to 28 VDC. 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
The DFRobot Motor Shieldcan 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.
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.
Motor Drive Shield – L298N
Also based on L298N, this motor drive shield can be used to control two DC electric motors. Maximum supply voltage is 64 VDC and can be used at a constant working current of 2 A.
Arduino compatible, the Monster is a drive shield that can be used for a maximum voltage of 41 VDC. Also the maximum current rating can be 30 A.
Adafruit motor/stepper/servo shield
Adafruit designed and built a powerful motor drive shield that can be used to control 4 DC motors bidirectionally with individual 8-bit speed selection or up to 2 stepper motors. With this electrical circuit DC motors with supply voltage range between 4.5 VDC and 25 VDC can be controlled.
Arduino Motor Shield
The Arduino motor shield can be used to control the speed and direction of two DC motors. 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 maximum current per channel is 4 A, but in general it can be used with 2 A per channel.
iTead Studio Dual Step Motor Driver Shield
The Dual Step Motor driver shield for Arduino is a classic drive shield developed by iTead Studio that can be used to control two DC stepper motors. Supply voltage range can be 4.75 to 30 VDC.
Pololu Dual VNH5019
Pololu designed and built one of the most performing drive shields that can be used to control two high-power DC motors. Minimum supply voltage is 5.5 VDC and the maximum is 24 VDC. For each motor the circuit can deliver a continuous 12 A.