Selecting an H-Bridge Motor Controller

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
    1. Max Current: 30A continuous; 60A peak
    2. Interfaces:  USB, analog, RC, serial
    3. Regenerative braking; over-current and thermal limiting
    4. Battery Elimination Circuit (BEC) supplying 5V 3A
    5. Quadrature encoder interface
  • Sabertooth (2 motor controllers per board) – $124.99
    1. Max Current: 25A continuous; 50A peak
    2. Interfaces: analog, RC, serial
    3. Regenerative braking; over-current and thermal limiting
    4. BEC supplying 5V 1A
  • Pololu (single motor controller) – $54.95
    1. Max Current: 25A continuous; peak unknown
    2. Interfaces: USB, analog, RC, serial
    3. BEC supplying 5V 150ma
  • Robot Shop (single H-Bridge without controller) – $46.36
    1. Max Current: 30A continuous; 80A peak
    2. 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.

605098-Roboclaw-2x30A-_300px_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.

Leave a Reply

Your email address will not be published. Required fields are marked *