The Essential H Bridge for Arduino Quick Reference
When building robotics, RC vehicles, or automated actuators, selecting the right H bridge for Arduino is the critical bridge between low-power microcontroller logic and high-current electromechanical actuation. An H-bridge allows you to control both the speed (via PWM) and direction (by reversing polarity) of a DC motor. However, the market is flooded with legacy BJT-based boards and modern MOSFET-based alternatives, each with distinct thermal profiles, voltage drops, and failure modes.
This 2026 quick-reference guide bypasses the fluff, delivering exact specifications, real-world pricing, and deep troubleshooting insights for the most common motor drivers used in the maker community.
Motor Driver IC Comparison Matrix (2026 Market Data)
Choosing the wrong driver leads to wasted battery life, overheated silicon, or fried GPIO pins. Below is a technical comparison of the four most ubiquitous H-bridge modules available for Arduino projects.
| Module / IC | Topology | Cont. Current | Voltage Drop (at 1A) | Logic Level | Avg. Price (USD) |
|---|---|---|---|---|---|
| L298N | BJT (Bipolar) | 2.0A per ch | ~1.8V - 2.2V | 5V TTL | $3.00 - $5.00 |
| TB6612FNG | MOSFET | 1.2A per ch | ~0.5V | 2.7V - 5.5V | $4.00 - $7.00 |
| DRV8871 | MOSFET | 3.6A (1-ch) | ~0.15V (Rds_on) | 3.3V / 5V | $5.00 - $9.00 |
| BTS7960 (IBT-2) | MOSFET | 20A+ (with cooling) | < 0.05V | 3.3V / 5V | $12.00 - $18.00 |
Hardware & Selection FAQs
Why can't I just drive a small motor directly from an Arduino GPIO pin?
The ATmega328P (Arduino Uno/Nano) and ESP32 have strict current limitations. A standard Arduino GPIO pin has an absolute maximum rating of 40mA, with a recommended operating current of just 20mA. Furthermore, the total current drawn from all VCC/GND pins combined must not exceed 200mA. Even a tiny 130-size N20 gear motor can draw 150mA to 300mA under load, and its stall current can easily exceed 1A. Connecting it directly will instantly destroy the microcontroller's internal silicon traces. An H-bridge acts as a high-current relay controlled by your low-current logic pins.
Is the L298N still viable for battery-powered robots in 2026?
Generally, no. The L298N utilizes older Bipolar Junction Transistor (BJT) technology. According to the STMicroelectronics L298N datasheet, the saturation voltage drop across the internal transistors is typically 2V at 1A. If you power a 6V motor with a 7.4V 2S LiPo battery, the L298N will waste nearly 30% of your battery's energy as heat, leaving only ~5.4V for the motor. For mains-powered or heavy-duty 12V+ applications, the L298N remains a cheap, robust choice, but for battery-operated rovers, the MOSFET-based TB6612FNG or DRV8871 is vastly superior due to minimal voltage drop and higher efficiency.
Can I safely power my Arduino from the L298N's onboard 5V pin?
This is a common trap. The standard L298N breakout board includes a 78M05 linear voltage regulator. If you supply 12V to the motor terminal and draw 200mA from the 5V logic pin to power an Arduino Nano and a few sensors, the regulator must dissipate the excess voltage as heat: (12V - 5V) × 0.2A = 1.4 Watts. The TO-220 package on cheap clone boards lacks adequate heatsinking and will trigger thermal shutdown within minutes, causing your Arduino to randomly reboot. Best Practice: Use a dedicated $2 buck converter (like the LM2596 or MP1584EN) to step down your battery voltage to 5V for the logic circuit.
Wiring, Grounding, and Edge Cases
Why does my Arduino reset every time the motor changes direction?
This is almost always caused by ground bounce or Back-EMF voltage spikes. DC motors are inductive loads. When the H-bridge abruptly cuts power or reverses polarity, the collapsing magnetic field generates a massive reverse voltage spike. While modern drivers like the TI DRV8871 have internal clamp diodes and snubber circuits, cheap opto-isolated clones often lack adequate bulk capacitance.
- The Fix: Solder a 1000µF to 2200µF electrolytic capacitor directly across the motor's power input terminals on the H-bridge. This acts as a local energy reservoir to absorb Back-EMF spikes and prevent voltage sag on the main power rail.
- Star Grounding: Never daisy-chain your logic grounds. Connect the Arduino GND, the H-bridge logic GND, and the battery negative terminal to a single, central 'star' point to prevent high motor currents from inducing noise into the MCU's reference ground.
The BTS7960 (IBT-2) Opto-Isolator Bottleneck
The BTS7960 is legendary for handling 20A+ continuous current for heavy actuators and e-bike motors. However, the popular 'IBT-2' breakout boards include PC817 opto-isolators on the logic inputs to protect the MCU. The problem? These opto-isolators have slow rise and fall times, effectively bottlenecking your PWM frequency to roughly 500Hz. Pushing standard Arduino PWM (490Hz/980Hz) through them causes severe signal degradation, leading to MOSFETs lingering in their linear (high-resistance) region, resulting in massive overheating even at low loads. Pro-Tip: For high-frequency PWM, bypass the opto-isolators on the IBT-2 board and wire the 3.3V/5V logic directly to the MOSFET gate driver pins, ensuring you share a common ground.
PWM & Code Troubleshooting Matrix
Writing the code to drive an H-bridge is simple using analogWrite(), but the underlying hardware timers often cause unexpected physical behaviors. Below is a quick-reference troubleshooting matrix for common PWM-related motor issues.
| Symptom | Underlying Cause | Technical Solution |
|---|---|---|
| Audible high-pitched whine from motor at low speeds. | Arduino default PWM on pins 4, 9, 10, 11 is 490Hz; pins 3, 5, 6 are 980Hz. This falls squarely in the human hearing range and causes mechanical resonance in the motor windings. | Reconfigure Timer1 or Timer2 prescalers to output ultrasonic PWM (e.g., 31.25 kHz). See the Arduino PWM Secrets guide for register manipulation code. |
| Motor stutters or 'cog' at very low duty cycles (e.g., 10-30). | Static friction (stiction) of the motor and gearbox requires a higher initial voltage spike to break inertia than what is required to keep it moving. | Implement a 'kickstart' routine in your code: send a 100% duty cycle PWM signal for 20-50 milliseconds before dropping down to your target low-speed PWM value. |
Motor behaves erratically when using Servo.h library simultaneously. |
The standard Arduino Servo library hijacks Timer1, which disables PWM functionality on pins 9 and 10. If your H-bridge ENA/ENB pins are connected here, you lose speed control. | Move your H-bridge PWM inputs to pins 3, 5, or 6 (controlled by Timer2), or use the hardware-timer-based PWM.h library instead of the blocking Servo library. |
| H-bridge gets incredibly hot, but motor current is well below rated limits. | Operating the H-bridge in the 'coast' vs 'brake' mode incorrectly, or PWM frequency is too high for the gate capacitance of the MOSFETs, causing excessive switching losses. | Ensure you are using the correct decay mode (Fast Decay vs Slow Decay). For most DC motors, Slow Decay (braking) provides better low-speed torque and reduces IC thermal load. |
Final Wiring Checklist Before Powering Up
- Verify Logic Voltage: Ensure the H-bridge VCC (logic) pin matches your MCU. Feeding 5V into an ESP32's 3.3V GPIO pin via a misconfigured bidirectional level shifter or direct connection will fry the ESP32.
- Common Ground: The Arduino GND and the H-bridge Logic GND must be connected. Without this, the control signals have no reference voltage, resulting in floating pins and erratic motor spinning.
- Flyback Diodes: If using a bare IC (like a raw DRV8871 chip) rather than a breakout module, verify if external Schottky flyback diodes (e.g., SS34) are required across the motor terminals. Modules usually include them, but custom PCB designs often miss this critical protection.
- Current Sensing: If your application requires stall detection, route the motor's ground return through a low-value shunt resistor (e.g., 0.1Ω, 2W) and read the voltage drop via the Arduino's ADC to calculate real-time current draw using Ohm's Law.
Expert Insight: In 2026, the availability of genuine Texas Instruments and STMicroelectronics motor driver ICs has stabilized, but the market remains saturated with counterfeit clones on budget marketplaces. Counterfeit TB6612FNG chips often lack internal thermal shutdown circuitry. Always purchase motor driver breakouts from reputable electronics distributors or verified maker brands to ensure the silicon matches the datasheet specifications.






