Return to Robotics Tutorials

Comparison of Robot Motor Controllers

Selecting a motor controller for your robot can be a challenge. There are many factors to consider: from the maximum current draw to wheel speed encoders and regenerative braking. The following summary includes many of the controllers that I examined while building a 4WD rover.

The set of motor controllers included below was pre-selected with the following key features:

  • Suitable for DC brushed motors
  • Dual-channel
    Enables easy differential drive control for 2WD, 4WD or 6WD robots, especially when velocity control is included (wheel speed encoders).
  • High current capacity
    High torque motors demand high current when loaded (especially if ever stalled)
  • RC & microprocessor control
    It is very convenient to enable both driving via a remote control (RC) transmitter and receiver as well as local / autonomous control from an onboard microcontroller (serial or I2C).

Feature Comparison

Sabertooth Dual 12A
TRex 13A 6-16V Dual
Ion Motion
RoboClaw 2x15A USB
Category Feature
# Motors   2 2+Aux 2 2
Current Continuous 12A 13A (15A onAux) 15A 18A
Peak 25A 30A 30A 40A
Voltage   6-24v (30v max) 6-16v 6-34v 6-30v
Cost   U$80 U$100 U$90 U$100
Modes Analog Y (0-5) Y (0-5v) Y (0-2v) N
Serial Y Y Y N
BT N N N Y (serial)
BEC Voltage 5v 5v 5v 5v
Current 1A (1.5A pk) 0.1A 3A 2A (3A pk)
Decoders   N N Y (vel & pos) Y (in I2C)
Inputs RC/Analog 2 5 2 2
Serial Y Y Y N
Encoders N N 2 2
Stop Y N Y N?
Outputs Bidir Motor 2 2 2 2
Unidir Motor 0 1 0 0
Servos N N N 4-6 (3 @ 6v?)
CPU Program N N (FW update) N Y (USB,ISP/FTDI)
Core N/A ? ATmega32 ATmega328P
Mapping Deadband Y Y Y N?
Exponential Y Y Y


Calibration Y Y Y N?
Control Acceleration Y Y Y N?
Current limit Y* (overcurrent) Y, prop Y N?
Regen brake Y N Y N
Fuse N N N PTC fuse
Battery Cutoff Y N? Y Y
  Charging Lithium N N N
Sensor Motor current Y* (Limit only) Y Y Y
  Bat voltage ? N Y Y
  Temperature Y* (Limit only) N Y N
  Acceleration N N N Y
  Encoders N N Y Y
Notes   - Safe reverse - Swap RC/serial upon override - Buffered cmds - Discontinued?

Feature Definition

Continuous Current
Defines the maximum current that the motor controller can output (per motor/channel) over an extended period of time. Review the motor torque curves to determine a suitable limit (eg. 1/3 of stall torque current) and be sure to double it if you are running a 4WD robot with two motor channels.
A battery eliminator circuit (BEC) allows the motor controller to redirect some of the current from the main battery source to the logic controller and any external logic you might have. Without a BEC, you may need to supply an additional battery input for the logic in addition to the main motors. The BEC output is usually regulated to 5v, which is stepped-down from the main battery voltage (eg. 12v, 7.2v, etc.). The greater the BEC output current, the more logic can be powered by the BEC output.
Mapping: Calibration
In the case of analog and RC input modes, it is very likely that the actual minimum and maximum ranges (in volts for analog and microseconds for RC) may not match the full range expected by the motor controller's logic. Many controllers offer a calibration mode that monitors the input and attempts to determine the maximum range and scale accordingly. Ultimately, this means that the control stick's input resolution is maximized.
Motor Control: Acceleration
Some controllers provide the ability to limit the acceleration that the motor will respond to. This prevents sudden / jarring motions on the robot and damage to the geartrain. It can also be used to limit the amount of wheelslip that occurs when starting the robot from a standstill (useful if depending on odometry for position). In essense, the acceleration limit will provide a gradual response to your control input, increasing speed as time elapses.
Motor Control: PID
PID controllers enable accurate wheel speed and position to be maintained in a closed-loop feedback system. The most common use for this is to ensure that left and right motors are turning at the same speed, which enables the robot to travel forwards. It is highly likely that each motor will have a different resulting speed when provided the same PWM input signal (due to friction and other factors), so a PID (or PI) loop is very useful.


Reader's Comments:

Please leave your comments or suggestions below!


Leave a comment or suggestion for this page:

(Never Shown - Optional)