An h-bridge motor controller reverses voltage polarity to dictate DC motor direction and uses Pulse Width Modulation (PWM) to govern speed. If you are building a rover, a CNC plotter, or an automated actuator, picking the wrong driver will result in melted silicon, stalled rotors, or brownout resets on your microcontroller. The direct answer for sizing is simple: your controller’s continuous current rating must be at least 1.5 times your motor’s continuous draw, and its peak current rating must exceed the motor’s absolute stall current. Below is the exact framework to match your load profile to a specific silicon part number.
The H-Bridge Motor Controller Decision Matrix
Not all motors accept the same drive signals. Before selecting an h-bridge motor controller, you must confirm your motor type. Hobby servos, for instance, contain internal driver boards and only require a 50Hz PWM signal on a single GPIO pin—they do not need an external h-bridge. For raw motors, here is how the physics dictate your driver choice.
| Motor Type | Torque Curve Profile | Control Needs | Typical Cost |
|---|---|---|---|
| Brushed DC | High starting torque, drops linearly with speed | 1 H-Bridge (2 half-bridges) for direction & speed | $ |
| Bipolar Stepper | High holding torque, precise positional steps | 2 H-Bridges (4 half-bridges) sequenced in phases | $$ |
| BLDC (Brushless) | Flat torque curve, high efficiency at high RPM | 3-Phase Inverter (ESC), NOT a standard single H-bridge | $$$ |
Use the decision tree below to terminate your search and pick a concrete h-bridge motor controller IC or module.
| If Your Load Profile Is... | Then Choose This Architecture | Concrete Part Number / Module |
|---|---|---|
| Dual brushed DC motors under 1.2A continuous (e.g., small rovers, pan/tilt) | Dual MOSFET H-Bridge with logic-level translation | Toshiba TB6612FNG (Pololu item #713) |
| Single brushed DC motor 1.5A to 3.5A continuous (e.g., linear actuators, winches) | Single high-current MOSFET H-Bridge | Texas Instruments DRV8871 |
| Bipolar stepper motor under 1.5A/phase (e.g., 3D printers, CNC routers) | Dual H-Bridge with built-in current chopping & decay modes | Allegro A4988 or TMC2209 |
| High-current brushed DC over 10A (e.g., e-bike conversions, heavy actuators) | Discrete MOSFET H-Bridge module with opto-isolation | Infineon BTS7960 module (43A peak) |
Sizing Your H-Bridge: The Stall Current Rule
The most common mistake makers and junior engineers make is sizing an h-bridge motor controller based on the motor’s no-load or nominal continuous current. When a DC motor starts from a dead stop, or when a mechanical load jams the rotor, the motor acts as a short circuit. The current spikes to the stall current. If your h-bridge cannot handle this peak, its internal thermal shutdown will trip, or the silicon will literally melt.
1. Controller Continuous Rating ≥ 1.5 × Motor Continuous Current
2. Controller Peak Rating ≥ Motor Stall Current
Worked Load Example
Suppose you are driving a 12V planetary gear motor for an automated garage door latch. You check the manufacturer’s datasheet and find:
- No-load current: 0.3A
- Rated continuous current: 1.2A
- Stall current: 4.2A
Applying the rule: You need a controller that can handle at least 1.8A continuous (1.2A × 1.5) and survive a 4.2A peak.
If you choose the classic L298N BJT-based module, you will fail. The L298N is rated for 2A continuous, but it has a massive internal voltage drop (up to 3V). At 1.8A, it will dissipate over 5W of heat, requiring a massive heatsink, and it will drop your 12V supply down to 9V at the motor terminals, robbing you of torque.
Instead, you select the Texas Instruments DRV8871. It is rated for 3.6A continuous and utilizes MOSFETs with a low Rds(on), meaning it drops only about 0.5V and runs cool without a heatsink. It easily survives the 4.2A stall spike.
Wiring and Terminal Identification for Modern MOSFET Drivers
Modern h-bridge motor controllers separate the high-current motor domain from the low-voltage logic domain. Miswiring these is the fastest way to fry your microcontroller. Let’s look at the terminal identification for the ubiquitous dual-channel TB6612FNG, which is the gold standard for dual low-power DC loads.
| Pin Name | Function | Wiring Rule & Gotchas |
|---|---|---|
| VM | Motor Power Supply | Connect to your main battery/power supply (2.5V to 13.5V). Must have a 100μF electrolytic and 0.1μF ceramic decoupling capacitor to ground. |
| VCC | Logic Power Supply | Connect to your microcontroller's logic level (e.g., 3.3V or 5V). Do NOT connect this to the high-current motor supply. |
| GND | Common Ground | Must be tied to both the motor power ground and the microcontroller ground. Star-ground topology preferred. |
| STBY | Standby Mode | Must be pulled HIGH (to VCC) for the chip to operate. If left floating, the chip stays in low-power sleep and the motor will not spin. |
| PWMA / PWMB | Speed Control | Connect to hardware PWM pins on your MCU. Keep frequency above 20kHz to avoid audible coil whine. |
| AIN1/AIN2 | Direction Control | Digital GPIO pins. HIGH/LOW = Forward, LOW/HIGH = Reverse, LOW/LOW = Coast, HIGH/HIGH = Brake. |
Diagnosing Failure Signatures: Hum, Overheat, and Stall
When an h-bridge motor controller circuit misbehaves, the physical symptoms tell you exactly what is wrong. Do not just swap parts; read the signatures.
1. The Audible Hum or Whine
Symptom: The motor emits a high-pitched whine or a low-frequency hum, even when it should be spinning smoothly.
Cause: Your PWM frequency is set too low. If you are driving the h-bridge at 1kHz to 15kHz, the motor coils are physically vibrating at the switching frequency. In stepper motors, this can also indicate mid-band resonance.
Fix: Increase your microcontroller’s PWM timer frequency to at least 20kHz (above human hearing). For steppers, implement micro-stepping or mechanical damping.
2. The Overheat (Thermal Shutdown)
Symptom: The motor runs for 30 seconds, stops abruptly, and the h-bridge IC is too hot to touch. It resumes after cooling down.
Cause: You are exceeding the continuous current rating, or you are using a BJT-based bridge (like the L298N) without adequate heatsinking. Alternatively, you are missing flyback diodes on an older discrete MOSFET design, and inductive kickback is punching through the silicon.
Fix: Modern ICs like the DRV8871 and TB6612FNG have integrated clamp diodes and thermal shutdown. If they overheat, your load is simply too heavy for the IC's Rds(on). Upgrade to a higher-current module like the BTS7960, or add active cooling. Never bypass the thermal shutdown.
3. The Stall and Microcontroller Brownout
Symptom: When the motor encounters a load and tries to draw peak current, the motor stalls, and your Arduino/ESP32 randomly reboots or throws I2C errors.
Cause: Voltage sag. The motor’s inrush current is collapsing the voltage on the shared power rail, causing a brownout on the microcontroller's logic line.
Fix: Separate your logic and motor power supplies, or use a high-current BEC (Battery Eliminator Circuit) for the logic rail. Add a large bulk capacitor (e.g., 1000μF low-ESR) directly across the motor's VM and GND terminals to supply the instantaneous inrush current locally.
Final Verdict: Default Part Recommendations
Do not get paralyzed by the sheer volume of driver boards on the market. Based on bench testing, thermal performance, and component availability in 2026, here are the default h-bridge motor controllers you should buy for your next build:
- For dual low-power DC loads (up to 1.2A per channel): Buy the TB6612FNG. It is vastly superior to the L298N, runs cool, and fits easily on a breadboard. Expect to pay around $5 to $8 for a carrier board.
- For single medium-power DC loads (up to 3.6A): Buy the TI DRV8871. It requires minimal external components, handles 45V, and costs about $3 to $5 for the bare IC or $8 for a breakout.
- For high-current brute force (10A to 30A continuous): Buy a BTS7960 module. It features opto-isolated logic inputs, massive screw terminals, and built-in heatsinks. Expect to pay $12 to $18.
Match the stall current, respect the decoupling capacitors, and keep your PWM above 20kHz. Wire it up and test it under load.






