This extremely small self-powered motor driver board adds two DC motors to any existing microcontroller project, like an Arduino, or similar. The motor driver input voltage can vary between 3.3V to 15V, and 800mA per motor, based on power dissipation limits, and is completely independent of the microcontroller (eg: Arduino) power.
It features on-board logic circuitry to take a single PWM signal and adapt it to allow variable forward/stop/backwards speeds. No other control or direction I/O connections are needed. For example, only three wires connect a microcontroller (Arduino) to the motor controller: D5 (PWM), D6 (PWM) and GND.
There is a optional trace-cut to disable the single-PWM driving logic and configure it with the basic three I/O per motor; PWM, direction1, direction2 (seven wires in total, with ground!). The inputs are protected to allow both 3.3V and 5V logic levels to work.
The motor power supply is completely isolated and independent of the microcontroller power, making it safe and easy to connect. In the default set-up, two signal lines attach to the microcontroller PWM outputs, and one wire for a common ground.
- The power input is NOT polarity-protected! A power diode would drop the voltage too much in low-voltage applications to be applicable. A keyed or tabbed power connector is strongly recommended.
- Due to the way 1-wire "locked antiphase" PWM control works, the motors will run in the absence of a valid signal. This means that the motors will run during an Arduino bootloader delay. A separate power switch for the motors is useful in this case.
Here's a video showing independent high and low speed control. The faint whine is normal due to the low default Arduino PWM frequency. Only three wires connect the Arduino to the motor controller: D5 (PWM), D6 (PWM) and GND.
Also notice how the motors are powered by a 1S (3.7V) Li-Po cell, and the Arduino is powered by USB at 5V.
Here's a close-up of a wiring example, using an 8MHz ATmega8 on an Arduino Duemilanove board. In this example, PWM pins 9 and 10 are being used, and the common ground reaches across the Arduino board, but any ground connection on the Arduino would work.