Popular Motor Drivers and Controllers for Robotics Projects

Popular Motor Drivers and Controllers for Robotics Projects

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.

Functional diagram illustrating the relationship between a motor controller, motor driver, power supply, and motor.
The relationship between a motor controller, motor driver, power supply, and motor with encoder.

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
Warning: Never connect a motor directly to the 3.3V or 5V output pins of your microcontroller. Motors draw several amperes of current and generate back-EMF voltage spikes that can instantly destroy the board. Always route motor power through a dedicated driver supplied from its own power source, and tie the driver's ground to your microcontroller's GND.

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:

Diagram comparing motor driver topologies: single H-bridge for Brushed DC, dual H-bridge for Stepper motors, and 3-phase inverter bridge for BLDC motors
Simplified circuit topologies for driving DC, Stepper, and Brushless DC motors
  • 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

Diagram illustrating Pulse Width Modulation (PWM) duty cycles and how pulsing voltage creates average motor voltage and speed control
Pulse Width Modulation (PWM) duty cycles and how pulsing voltage creates average motor voltage and speed control

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:

Photographs of popular DC and Step motor drivers: the L298N dual H-bridge module, the Cytron MD13S, and the ZK-5AD 5A dual motor driver
Popular DC and Step motor drivers: L298, Cytron MD13S, ZK-5AD
  • 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
Note: Unlike basic brushed DC and stepper drivers, brushless motor drive electronics are frequently sold as ESCs (Electronic Speed Controllers). While basic ESCs act purely as drivers, higher-level brushless hardware integrates full onboard closed-loop control, moving it into the motor controller category below.

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:

Photographs of popular motor controllers: Sabertooth Dual, Cytron Motion Pro, an BLDC RC Car controller
Popular motor controllers: Sabertooth Dual, Cytron Motion Pro, an BLDC RC Car controller
  • 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

Diagram showing communication methods between a microcontroller and various motor hardware tiers, including PWM/DIR, STEP/DIR, RC PWM pulses, and CAN/UART serial buses
Overview of communication signal types across different motor driver and controller tiers

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.
What's Next? In our next article, we’ll explore the world of rotary encoders and dive deeper into the differences between open-loop and closed-loop control systems.
Back to blog

Leave a comment

Please note, comments need to be approved before they are published.