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
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).
Sabertooth Dual 12A
TRex 13A 6-16V Dual
RoboClaw 2x15A USB
|Current||Continuous||12A||13A (15A onAux)||15A||18A|
|Voltage||6-24v (30v max)||6-16v||6-34v||6-30v|
|Modes||Analog||Y (0-5)||Y (0-5v)||Y (0-2v)||N|
|Current||1A (1.5A pk)||0.1A||3A||2A (3A pk)|
|Decoders||N||N||Y (vel & pos)||Y (in I2C)|
|Servos||N||N||N||4-6 (3 @ 6v?)|
|CPU||Program||N||N (FW update)||N||Y (USB,ISP/FTDI)|
|Current limit||Y* (overcurrent)||Y, prop||Y||N?|
|Sensor||Motor current||Y* (Limit only)||Y||Y||Y|
|Temperature||Y* (Limit only)||N||Y||N|
|Notes||- Safe reverse||- Swap RC/serial upon override||- Buffered cmds||- Discontinued?|
- 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.