PowerPulse.net
Batteries and Portable Power

Dual Motor Driver Kit for Raspberry Pi

The Pololu DRV8835 expansion board plugs directly into the GPIO header on a Raspberry Pi B+, Pi A+, Pi 2, or Pi 3 and provides an easy and low-cost solution for driving a pair of small brushed dc motors. Its integrated DRV8835 dual motor driver allows it to operate from 1.5V to 11V, making it a great control option for low-voltage motors.

The board can deliver a continuous 1.2A (1.5A peak) per motor, or a continuous 2.4A (3A peak) to a single motor when configured with both channels connected in parallel.

This motor driver kit and its corresponding Python library make it easy to control a pair of bidirectional, brushed dc motors with a Raspberry Pi Model B+, Model A+, or Pi 2 Model B, Pi 3 Model B, or Pi 3 Model B+. The expansion board features Texas Instruments' DRV8835 dual H-bridge motor driver IC, which allows it to operate from 1.5V to 11V and makes it particularly well-suited for driving small, low-voltage motors.

The board can deliver a continuous 1.2A per channel and tolerate peak currents up to 1.5A per channel for a few seconds, and the channels can be optionally configured to run in parallel to deliver twice the current to a single motor. The board ships fully populated with its SMD components, including the DRV8835 driver and a FET for reverse battery protection; header pins for interfacing with a Raspberry Pi and terminal blocks for connecting motors and power are included but are not soldered in.

The board uses GPIO pins 5, 6, 12, and 13 to control the motor driver, making use of the Raspberry Pi's hardware PWM outputs, although the pin mappings can be customized if the defaults are not convenient.

Note that it is designed specifically for newer versions of the Raspberry Pi with 40-pin GPIO headers, including the Model B+, Model A+, Raspberry Pi 2 Model B, Raspberry Pi 3 Model B, and Raspberry Pi 3 Model B+; it is not practical to use this expansion board with the original Raspberry Pi Model A or Model B due to differences in their pinout and form factor.

Summary of features:

  • Dual-H-bridge motor driver: can drive two dc motors or one bipolar stepper motor
  • Motor supply voltage: 1.5 V to 11 V
  • Logic supply voltage 2 V to 7 V
  • Output current: 1.2 A continuous (1.5 A peak) per motor
  • Motor outputs can be paralleled to deliver 2.4 A continuous (3 A peak) to a single motor
  • PWM operation up to 250kHz (ultrasonic frequencies allow for quieter motor operation)
  • Two possible interface modes: PHASE/ENABLE (default - one pin for direction, another for speed) or IN/IN (outputs mostly mirror inputs)
  • Board can optionally power the Raspberry Pi base directly through add-on regulator (not included)
  • Python library makes it easy to get started using this board as a motor driver expansion board
  • GPIO pin mappings can be customized if the default mappings are not convenient
  • Reverse-voltage protection on motor power supply
  • Under-voltage lockout and protection against over-current and over-temperature

In the board's default state, the motor driver and Raspberry Pi are powered separately, though they share a common ground and the DRV8835 receives its logic supply voltage (VCC) from one of the Raspberry Pi's 3V3 power pins. When used this way, the Raspberry Pi must be powered via its USB Micro-B receptacle, and the motor driver board must be supplied with 1.5 V to 11 V through its large VIN and GND pads.

However, the motor driver board provides a set of three through-holes where you can conveniently connect an appropriate voltage regulator, allowing the motor supply to also power the Raspberry Pi.

The DRV8835 datasheet recommends a maximum continuous current of 1.5A per motor channel. However, the chip by itself will overheat at lower currents. For example, in tests at room temperature with no forced air flow, the chip was able to deliver 1.5A per channel for approximately 15 seconds before the chip's thermal protection kicked in and disabled the motor outputs, while a continuous current of 1.2A per channel was sustainable for many minutes without triggering a thermal shutdown.

The actual current you can deliver will depend on how well you can keep the motor driver cool. Tests were conducted at 100% duty cycle; PWMing the motor will introduce additional heating proportional to the frequency.