Table of Contents
- Introduction
- DRV8871 Overview
- Key Features & Specifications
- Pinout Explained
- How the DRV8871 Works
- DRV8871 vs L298N: Key Differences
- Wiring with Arduino
- Arduino Control Code
- Practical Applications
- Design Tips & Gotchas
- Frequently Asked Questions
- Conclusion
Introduction
Texas Instruments has long been the gold standard for motor driver ICs, and the DRV8871 is one of their most capable and practical chips for single brushed DC motor applications. While many Arduino tutorials default to the ubiquitous L298N module, the DRV8871 offers a dramatically better package — higher efficiency, higher current capability, integrated current sensing, and robust protection features — all in a compact SOT-23-style package that can be soldered onto a small breakout board.
In this guide, we explain every aspect of the DRV8871: how it works, what makes it better than older H-bridge ICs, how to wire it with an Arduino, and what practical applications it excels at. If you are designing a custom motor controller PCB or evaluating a compact motor driver IC, the DRV8871 belongs on your shortlist.
DRV8871 Overview
The DRV8871 is a single H-bridge motor driver designed and manufactured by Texas Instruments (TI). It is specifically designed for brushed DC motors and can be used for bidirectional motor control (forward, reverse, coast, brake) with PWM speed control. The IC is available in a compact 8-pin HSOP package with exposed thermal pad — enabling impressive current handling in a tiny footprint.
Key positioning: the DRV8871 targets applications needing 3.6A peak current in a compact, efficient design with built-in current limiting — making it ideal for power tools, toys, industrial actuators, and robotics applications where space and efficiency matter.
Key Features & Specifications
| Parameter | Specification |
|---|---|
| Supply Voltage (VM) | 6.5V to 45V |
| Output Current (peak) | 3.6A |
| Output Current (continuous, with heatsink) | ~2A (PCB-dependent) |
| Control inputs | IN1, IN2 (PWM compatible) |
| Current limiting | External resistor (ISEN pin) |
| Internal current limit | ~3.6A fixed internal clamp |
| PWM frequency support | Up to 200 kHz |
| H-bridge type | N-channel MOSFETs (N-N) |
| Protection features | OVP, UVP, OCP, OTP, MOSFET fault |
| Logic supply (VCC) | 3.3V or 5V (compatible with both) |
| Package | 8-pin HSOP with thermal pad |
| Operating temperature | -40°C to +150°C |
Protection features explained:
- OVP (Overvoltage Protection): Shuts down if VM exceeds ~48V
- UVP (Undervoltage Protection): Shuts down if VM drops below ~6V to prevent erratic operation
- OCP (Overcurrent Protection): Limits output current at ~3.6A via internal clamp. You can also set a lower limit via external ISEN resistor.
- OTP (Over-Temperature Protection): Thermal shutdown if junction temperature exceeds ~150°C, auto-recovers when cooled
Pinout Explained
The DRV8871 has an 8-pin HSOP package plus a thermal pad on the bottom. On a breakout board, the pins typically come out on two sides:
| Pin | Name | Function |
|---|---|---|
| 1 | VCP | Charge pump capacitor positive terminal |
| 2 | IN1 | Control input 1 (direction/PWM) |
| 3 | IN2 | Control input 2 (direction/PWM) |
| 4 | GND | Signal and power ground |
| 5 | ISEN | Current sense / limit resistor to GND |
| 6 | OUT2 | H-bridge output 2 (motor terminal B) |
| 7 | OUT1 | H-bridge output 1 (motor terminal A) |
| 8 | VM | Motor supply voltage input |
| EP | Thermal pad | Connect to GND plane on PCB (critical for heat dissipation) |
How the DRV8871 Works
H-Bridge Operation
The DRV8871 contains four N-channel MOSFETs arranged in a full H-bridge configuration. The term “H-bridge” comes from the circuit shape — two MOSFETs on each side, resembling the letter H, with the motor connected across the middle.
By turning on specific pairs of transistors, current flows through the motor in either direction — achieving bidirectional control. The four operating modes, controlled by IN1 and IN2, are:
- Forward (IN1=PWM, IN2=0): Current flows from OUT1 to OUT2 through the motor
- Reverse (IN1=0, IN2=PWM): Current flows from OUT2 to OUT1
- Coast/Float (IN1=0, IN2=0): Both low-side switches open; motor coasts freely
- Brake (IN1=1, IN2=1): Both low-side switches closed; motor terminals shorted together — active braking
N-N H-Bridge Advantage
Unlike older drivers that used P-channel MOSFETs on the high side (like the L298N’s bipolar transistors), the DRV8871 uses N-channel MOSFETs throughout — including the high side, driven by an internal charge pump (VCP pin). N-channel MOSFETs have much lower RDS(on) (drain-source on-resistance), meaning significantly less power is wasted in the driver as heat. This is why the DRV8871 is dramatically more efficient than the L298N.
Current Limiting via ISEN
Connect a resistor from the ISEN pin to GND. The DRV8871 monitors current flow through the H-bridge and limits it to: I_limit = 1.32V / ISEN_resistance. For a 0.464Ω resistor: I_limit = 1.32 / 0.464 = 2.84A. This allows you to set a precise current ceiling below the IC’s absolute internal limit, protecting connected motors from overcurrent damage.
DRV8871 vs L298N: Key Differences
| Feature | DRV8871 | L298N |
|---|---|---|
| H-bridge type | N-channel MOSFET | Bipolar (NPN/PNP) |
| Voltage drop | ~0.5V at 2A | ~2V (significant loss) |
| Max motor supply | 45V | 46V |
| Number of motors | 1 | 2 |
| Peak current | 3.6A | 2A continuous, 3A peak |
| Built-in current limiting | Yes (external resistor) | No |
| Thermal protection | Yes (auto shutdown) | No (burns if overheated) |
| 3.3V logic compatible | Yes | Marginal |
| Size | Very small (IC) | Large module |
| Cost | Moderate (breakout boards available) | Very low |
The DRV8871 wins on efficiency, protection, size, and current capability. The L298N wins on price, availability as a pre-made module, and driving two motors from a single IC. For a custom PCB design, the DRV8871 is the better choice for single-motor applications.
Wiring with Arduino
For prototyping, use a DRV8871 breakout board (available from electronics suppliers). The wiring is straightforward:
DRV8871 VM → 12V supply positive DRV8871 GND → 12V supply negative AND Arduino GND (common ground) DRV8871 IN1 → Arduino D9 (PWM pin) DRV8871 IN2 → Arduino D8 DRV8871 OUT1 → Motor terminal A DRV8871 OUT2 → Motor terminal B DRV8871 ISEN → 0.47Ω resistor → GND (sets ~2.8A limit) Arduino 5V (or 3.3V on ESP32) → DRV8871 VCC (if breakout has logic supply separate) Note: Many breakout boards power logic internally — check your board's schematic.
Decoupling capacitors: Place a 100µF electrolytic + 100nF ceramic capacitor as close as possible to the VM and GND pins. This absorbs the switching transients from the H-bridge and prevents noise on your logic supply.
Arduino Control Code
// DRV8871 Motor Control - Zbotic.in
// IN1 on D9 (PWM), IN2 on D8
const int IN1 = 9; // PWM-capable pin
const int IN2 = 8;
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
Serial.begin(9600);
}
// Speed: -255 (full reverse) to +255 (full forward), 0 = brake
void setMotor(int speed) {
if (speed > 0) {
analogWrite(IN1, speed); // PWM forward
digitalWrite(IN2, LOW);
} else if (speed < 0) {
digitalWrite(IN1, LOW);
analogWrite(IN2, -speed); // PWM reverse
} else {
// Active brake: both HIGH
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
}
}
void coastMotor() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
}
void loop() {
// Ramp up forward
for (int s = 0; s = -255; s -= 5) {
setMotor(s);
delay(20);
}
delay(2000);
// Coast stop
coastMotor();
delay(1000);
}
Note the key difference in PWM control strategy: for the DRV8871, you apply PWM on one input while holding the other LOW. Both HIGH is active brake. Both LOW is coast. This is the “lock-antiphase” or “sign-magnitude” drive mode.
Practical Applications
The DRV8871 shines in applications that need a compact, efficient, robust single-motor driver:
- Robotics actuators: Driving a single gripper, lifting mechanism, or linear actuator motor with current protection to prevent damage on stall
- Power tool speed control: Small drills, fans, or oscillating tools where efficiency at medium speeds matters
- Camera sliders and gimbals: Where quiet, efficient operation without excessive heat is essential in a confined housing
- Pump control: 12V submersible pump speed control with soft-start to reduce pressure spikes
- Custom PCB designs: The DRV8871’s compact package makes it ideal for custom PCBs where an L298N module is too large
- Electric lock/door actuators: Where current limiting prevents mechanical damage if the door or lock jams
Design Tips & Gotchas
- Thermal pad must connect to GND pour: The exposed thermal pad on the bottom of the IC is essential for heat dissipation. On a custom PCB, pour a large copper GND fill under and around the IC, connected with multiple thermal vias. Without this, the IC will thermally shut down at moderate currents.
- Charge pump capacitor (VCP): Connect a 0.1µF capacitor between VCP and VM. This bootstraps the gate driver for the high-side N-channel MOSFETs. The TI datasheet specifies the exact type and placement.
- ISEN resistor placement: Place the ISEN resistor physically close to the IC with a short, direct trace to GND. This minimises measurement error due to PCB resistance.
- PWM frequency recommendation: TI recommends 20–100 kHz PWM frequency for optimal efficiency and reduced audible noise. Arduino’s default PWM frequency on pins 9/10 is ~490 Hz — audible whine will occur. Use a timer prescaler change to increase PWM frequency to 31.4 kHz on pins 9/10.
- Catch diodes: The DRV8871 has integrated freewheeling diodes — do not add external diodes across OUT1/OUT2 in parallel. They are not needed and can cause issues.
Frequently Asked Questions
Q: Can I use the DRV8871 with an ESP32 or Raspberry Pi Pico?
Yes. The DRV8871 logic inputs are compatible with 3.3V logic — both ESP32 and RP2040 GPIO (3.3V) will drive IN1/IN2 correctly. No level shifter needed.
Q: How do I increase continuous current beyond ~2A?
Improve PCB thermal management: larger copper pour, more thermal vias, and add an external heatsink on top of the IC package if possible. Some DRV8871 breakout boards include a thermal pad. With good thermal design, continuous current up to 3A is achievable.
Q: Can I use two DRV8871 ICs to drive a two-motor robot?
Absolutely — use one DRV8871 per motor. Share the VM supply but keep the control signals independent. This is exactly what TI recommends for dual-motor applications.
Q: What is the difference between DRV8871 and DRV8833?
The DRV8833 is a dual H-bridge (drives two motors from one IC) rated at 1.5A per channel at lower voltages (up to 10.8V). The DRV8871 is a single H-bridge rated for higher voltages (45V) and higher peak current (3.6A). Choose DRV8833 for two small motors at low voltage; DRV8871 for one higher-power motor in a wider voltage range.
Q: My DRV8871 keeps going into thermal shutdown — what can I do?
Common causes: the thermal pad is not connected to GND copper, insufficient copper fill, high ambient temperature, or running at a current above what your PCB can dissipate. Solutions: improve PCB layout, add a heatsink, reduce ISEN resistor value to lower the current limit, or add forced air cooling.
Conclusion
The DRV8871 from Texas Instruments is a modern, efficient, well-protected single brushed DC motor driver that outperforms older alternatives like the L298N in nearly every technical dimension — except ease of use as a ready-made through-hole module. For custom PCB designers and engineers who need compact, high-efficiency motor control with robust protection, the DRV8871 is an excellent choice that handles 6.5–45V supplies and peaks at 3.6A with built-in overcurrent and thermal protection.
Understanding the DRV8871’s architecture — N-channel MOSFET H-bridge, charge pump, ISEN current limiting — gives you the foundation to use it effectively in your projects and debug issues confidently when they arise.
Shop Motor Drivers & Controllers at Zbotic
Zbotic stocks a curated range of motor driver modules and ICs for every project level — from beginner L298N modules to precision stepper drivers. Fast shipping across India.
Add comment