When I started my Tote-m robotics project I had planned on building simple H-bridge motor controllers myself. The basic circuit is rather simple – four FET transistors connected in an “H” configuration with the motor between them (see here for additional details). However the bridge is just the tip of the iceberg – I would also need a microcontroller to generate a PWM signal (Pulse Width Modulation) to control the motor’s speed and direction. Additional features such as regenerative braking add still more complexity.
Given this realization I set out to determine if a commercial motor controller combining a microcontroller and bridge exists within a reasonable price range. After scouring the web I finally settled on four candidates:
- RoboClaw (2 motor controllers per board) – $124.95
- Max Current: 30A continuous; 60A peak
- Interfaces: USB, analog, RC, serial
- Regenerative braking; over-current and thermal limiting
- Battery Elimination Circuit (BEC) supplying 5V 3A
- Quadrature encoder interface
- Sabertooth (2 motor controllers per board) – $124.99
- Max Current: 25A continuous; 50A peak
- Interfaces: analog, RC, serial
- Regenerative braking; over-current and thermal limiting
- BEC supplying 5V 1A
- Pololu (single motor controller) – $54.95
- Max Current: 25A continuous; peak unknown
- Interfaces: USB, analog, RC, serial
- BEC supplying 5V 150ma
- Robot Shop (single H-Bridge without controller) – $46.36
- Max Current: 30A continuous; 80A peak
- Interfaces: analog, RC
Although I briefly considered the Robot Shop product due to its low cost, I quickly eliminated it from consideration due to the additional PWM circuitry required. The three remaining candidates are close enough in price to eliminate cost as a selection criteria.
After comparing the various features I finally selected the RoboClaw controller for use as the robot’s motor controllers. The deciding factors were 1) the board can easily interface to the robot’s Raspberry Pi CPU via a USB interface, 2) the board supports interfacing to quadrature encoders so that the motor’s speed is automatically adjusted to match a specified velocity while ascending/descending inclines, and 3) the board provides a robust BEC supplying ample 5V current to power the robot’s other electronics from a single 12v source.
Now that the motor controller has been selected the next step is to build a software API so that the robot’s Raspberry Pi can send commands over USB to the robot’s various motor controllers. I plan on posting the source code in a later post once testing has been completed.