Popular Motor Drivers and Controllers for Robotics Projects
Share
Robotic control systems, such as microcontrollers and computers, operate at low voltages (typically 5V or 3.3V) and supply very little current, sufficient only for electronics, not for motors. In contrast, motors require much higher voltages (often 12V, 24V, or more) and can draw several amperes of current, depending on the application. For example, a typical small mobile robot might use two 12V DC motors, each drawing up to 5A under load, to move a 5–10 kg robot at moderate speed. Because of this mismatch, specialized electronics are needed to safely and precisely bridge the gap between delicate control signals and power-hungry motors.
This is where a motor driver and a motor controller come in. A motor driver is a device that amplifies low-power control signals to deliver the appropriate voltage and current to the motors. A motor controller, on the other hand, is the system that determines how the motor should behave — providing commands and feedback handling for actions such as speed, direction, and position.
Motor Driver
A motor driver acts as an interface between a low-power control system, such as a microcontroller (Arduino, Raspberry Pi Pico, etc.), and the motors themselves. Microcontrollers can't provide enough current or voltage to run typical motors, so a driver receives low-power control signals and translates them into high-power signals suitable for motors. Most motor drivers allow control over:
- Direction (forward/reverse)
- Speed (using PWM — Pulse Width Modulation)
- Enabling/Disabling the motor
Driver Topologies by Motor Type
Each motor type works differently inside, so each needs its own kind of driver to switch the current. The diagram below shows the three fundamental topologies:
- Brushed DC Motors (H-Bridge Circuits): Brushed DC motors switch magnetic polarity mechanically using internal carbon brushes. Because commutation happens automatically inside the motor, the driver only needs a single H-bridge circuit (four switches, typically MOSFETs) to reverse current flow for forward/reverse direction and duty-cycle pulsing for speed control.
- Stepper Motors (Dual Full-Bridges & Microstepping): Stepper motors lack mechanical brushes and rely on multiple electromagnetic coils arranged in phases. Driving a bipolar stepper requires two full H-bridges to power two separate phase coils. Modern stepper drivers continuously adjust the current ratio between these coils using sinusoidal microstepping, allowing the motor to achieve precise intermediate steps with smooth, low-vibration motion.
- Brushless DC Motors (3-Phase Switching & FOC): BLDC motors replace mechanical brushes with electronic commutation. They feature three stator windings that require a 3-phase inverter bridge (six switches) to power the motor. Drivers energize these phases using either trapezoidal commutation (switching two phases at a time based on basic sensor/back-EMF timing) or advanced Field-Oriented Control (FOC), which delivers continuous sinusoidal current to maximize efficiency, torque smoothness, and dynamic responsiveness.
What Is an H-Bridge
An H-bridge is the classic circuit for driving a DC motor in both directions. Its name comes from the shape of the schematic: four switches arranged like the letter H, with the motor sitting in the middle as the crossbar (on our diagram the H letter is turned 90 degrees). Each vertical leg of the "H" has one switch connected to the power supply and another connected to ground.
Look at the top left of the diagram above. Closing the diagonal pair SW1–SW4 lets current flow through the motor from terminal A to terminal B, and the shaft spins forward. Closing the other diagonal pair, SW2–SW3, reverses the current and with it the direction of rotation. The only forbidden state is closing both switches on the same side at once: that shorts the power supply straight to ground and can destroy the switches instantly. Dedicated driver chips handle this protection for you.
Controlling Speed with PWM
Pulse Width Modulation (PWM) is the technique motor drivers use to control speed and torque without changing the supply voltage. Instead of outputting a variable analog voltage, the driver rapidly switches the full supply voltage (Vmax) on and off at a high frequency — typically between 5 kHz and 20 kHz. The average voltage (Vavg) the motor receives is set by the duty cycle: the percentage of time the voltage stays on (tON) within one switching period (T):
Vavg = Vmax × (tON / T)
A 25% duty cycle produces a low average voltage and a slow motor, while a 75% duty cycle delivers a higher average voltage for more speed and torque. Thanks to the motor's internal winding inductance and rotor inertia, the motor itself smooths these rapid pulses out — it acts as a natural low-pass filter, turning the pulsing waveform into continuous current and steady shaft rotation.
Common motor drivers include:
-
DC Motor Drivers
- L298N (popular but obsolete and inefficient. Not recommended)
- TB6612FNG
- ZK-5AD
-
Brushless DC (BLDC) ESCs
- Various e-bike 36V/48V BLDC drivers for hub motors with hall-sensor feedback
- TMC6300-based drivers (e.g., SparkFun Three-Phase BLDC Motor Driver)
- ESCs based on BLHeli_S
-
Stepper Motor Drivers
- A4988
- DRV8825
- TMC2208
Motor Controller
A motor controller is a device that manages the performance of a motor. It implements the logic for higher-level control (such as acceleration profiles, position feedback, or even networking to a computer), sends signals to the motor driver, and monitors sensors for feedback. Motor controllers may be simple dedicated chips with basic speed/direction input or sophisticated embedded microcontrollers running control algorithms. Most motor controller boards already include a motor driver and support direct connection to the motor.
Common motor controllers include:
- Cytron Motor Controllers (often used for DC motors in DIY mobile robots)
- Sabertooth DC Motor Controllers (robust, dual-channel DC motor control for heavy or differential-drive robots)
- Pololu Jrk G2 (compact controller for precise motor and actuator position/speed control)
- ODrive (for high-performance brushless DC motor control)
- VESC & VESC-Based Controllers (open-source BLDC/FOC controllers, including Flipsky FSESC and MakerX DV series, popular for robotics and e-skateboards)
Communication Protocols & Interface Types
Microcontrollers and onboard computers command motor drivers and controllers through various control interfaces, depending on the complexity of the hardware. Understanding these interfaces ensures compatibility between your main logic controller and your motor hardware.
-
Basic DC Motor Drivers (PWM & DIR)
Controlled via standard GPIO pins on a microcontroller. Speed is determined by a PWM (Pulse Width Modulation) signal, where varying the duty cycle changes the average voltage supplied to the motor. Direction is handled by digital high/low logic on one or two DIR / IN pins, which toggle the state of an internal H-bridge circuit.
-
Stepper Motor Drivers (STEP & DIR)
Utilize precise pulse timing rather than continuous duty cycles. Sending a digital pulse to the STEP pin advances the motor by a single step (or microstep), with the pulse frequency dictating rotational speed. The DIR pin controls whether the driver steps clockwise or counterclockwise depending on its logic state (HIGH or LOW).
-
RC Electronic Speed Controllers (Servo PWM Pulse Signals)
Hobbyist BLDC ESCs adopt standard RC servo pulses (typically running at a 50Hz refresh rate). Instead of relying on a simple 0–100% PWM duty cycle, speed and direction are mapped to absolute pulse widths — usually ranging from 1000 µs (full reverse or zero power) to 2000 µs (full forward), with 1500 µs representing neutral/stop. Modern high-performance multicopter ESCs also support fast digital protocols like DShot or OneShot for lower latency.
-
Smart Motor Controllers (Bus & Serial Protocols)
High-level controllers replace analog pulse lines with robust digital data buses. Instead of generating raw timing pulses, microcontrollers send high-level commands (e.g., target RPM, position setpoints, or current limits) and receive real-time telemetry back over digital interfaces:
- UART (Serial): Point-to-point serial communication, common for commanding drivers directly from single-board computers like a Raspberry Pi or NVIDIA Jetson.
- CAN Bus (Controller Area Network): High-reliability, noise-immune differential bus popular in industrial and mobile robotics (e.g., ODrive, VESC, UAVCAN). Allows multiple smart controllers to daisy-chain together on a single two-wire bus.
- I2C / SPI: Board-level digital buses used to control multi-channel motor driver expansion modules or configuration ICs over short distances.
- USB: Primarily used for host PC connection, real-time control, firmware updates, and parameter tuning through graphical software interfaces.