The L298N is a dual full-bridge motor driver capable of handling up to 2A continuous current (3A peak) per channel at voltages between 5V and 35V. When pairing an L298N motor driver Arduino setup, the most common point of failure isn't the code—it's the physics of the BJT (Bipolar Junction Transistor) H-bridge inside the chip. Unlike modern MOSFET drivers, the L298N suffers a significant internal voltage drop (typically 2V to 3V), which dictates exactly which motors you can use and how much supply voltage you actually need.
This guide cuts through the basic tutorials to give you the exact sizing rules, terminal wiring logic, and thermal limits you need to keep your L298N from going into thermal shutdown.
Motor Type Compatibility and Load Profiling
Not every motor belongs on the output terminals of an L298N. The module outputs raw, bidirectional DC voltage. It does not generate the specific signal profiles required by every actuator type. Below is the definitive compatibility matrix for common hobby and light-industrial motors.
| Motor Type | Torque Curve Profile | Control Needs | Typical Cost | L298N Compatibility |
|---|---|---|---|---|
| Brushed DC Gearmotor | High starting torque, drops as RPM increases | Simple PWM for speed, H-bridge for direction | $3 - $15 | Ideal. Best use case for OUT1-OUT4. |
| Bipolar Stepper (e.g., NEMA 17) | High holding torque, flat across low RPMs | Dual H-bridge with precise step sequencing | $12 - $30 | Good. Uses both channels. Requires high supply voltage to overcome BJT drop. |
| Unipolar Stepper | Moderate holding torque, lower than bipolar | 4-channel low-side switching (center-tapped) | $10 - $25 | Poor. L298N can drive it, but wastes half the motor's copper windings. |
| RC Servo (e.g., MG995) | Massive stall torque at specific angles | 50Hz PWM signal wire (internal H-bridge) | $5 - $20 | DO NOT USE. Servos need logic-level PWM, not raw H-bridge power. Will fry servo. |
| BLDC (Outrunner/Inrunner) | High efficiency, high RPM, low cogging | 3-phase commutation via ESC | $20 - $60+ | Incompatible. L298N is 2-channel; BLDC requires 3-channel ESC. |
L298N Sizing Rules and Terminal Wiring
The golden rule of the L298N is accounting for the saturation voltage drop. Because the chip uses older BJT Darlington pairs instead of modern MOSFETs, it drops between 1.8V and 3.0V across the internal transistors depending on the current draw. This lost voltage turns directly into heat. According to the STMicroelectronics L298N Datasheet, at 1.5A continuous, you will lose roughly 2.5V to the chip.
Here is how that voltage drop impacts real-world motor sizing:
| Motor Spec (Nominal / Stall) | Supply Voltage (VCC) | Actual Voltage at Motor Terminals | Heat Dissipated in L298N | Verdict |
|---|---|---|---|---|
| 6V TT Motor (1.2A stall) | 6.0V (4x AA) | ~3.5V (at 1A draw) | 2.5W | Fail. Motor stalls, chip overheats. |
| 12V Gearmotor (2.0A stall) | 12.0V (SLA/LiFePO4) | ~9.0V (at 1.5A draw) | 4.5W | Marginal. Runs, but requires active cooling. |
| 24V Wiper Motor (4.0A stall) | 24.0V | N/A | N/A | Fail. Exceeds 2A continuous / 3A peak limit. |
| NEMA 17 Stepper (1.5A rated) | 14.0V (Custom PSU) | ~11.5V (at 1.5A draw) | 3.75W | Good. Over-voltage supply compensates for drop. |
Worked Load Example: Sizing a 12V Chassis Motor
Suppose you are building a rover using two 12V DC gearmotors rated for 1.2A continuous and 2.5A stall. You want to use the L298N.
The Math: At 1.2A continuous, the L298N will drop about 2.2V. If you supply exactly 12V, the motor only sees 9.8V, reducing your top speed and torque. Furthermore, the chip dissipates $P = V_{drop} \times I = 2.2V \times 1.2A = 2.64W$ of heat per channel.
The Fix: Use a 3S LiPo (11.1V nominal, 12.6V fully charged) or a 14V power supply. This ensures the motor receives its rated ~12V after the BJT drop. Always ensure your power supply can deliver the combined continuous current of both motors plus a 20% margin (in this case, $1.2A \times 2 = 2.4A$, so use a 3A+ supply).
Terminal Identification and Wiring
Correct wiring prevents logic glitches and blown Arduino pins. Refer to Pololu's comprehensive motor driver guide for deeper H-bridge theory, but follow this exact pinout for the standard red L298N module:
- VCC (12V/24V terminal): Motor power supply positive. Accepts 5V to 35V.
- GND: Shared ground. Must be tied to the Arduino GND to complete the logic reference circuit.
- 5V Terminal: Output from the onboard 7805 linear regulator. Can power the Arduino if the VCC jumper is in place and VCC is under 12V.
- VCC Jumper (5V EN): If your motor supply is >12V, remove this jumper and power the logic side via the 5V pin or Arduino 5V. Leaving it in with a 24V supply will overheat and destroy the onboard 7805 regulator.
- ENA / ENB: Enable pins for Channel A and B. Remove the physical jumpers and connect to Arduino PWM pins (e.g., pins 5 and 6) for speed control via
analogWrite(). - IN1, IN2, IN3, IN4: Logic direction pins. Connect to standard Arduino digital pins. HIGH/LOW combinations dictate forward, reverse, coast, and brake states.
- OUT1 to OUT4: High-current motor outputs. Connect directly to motor terminals.
Failure Signatures: Hum, Overheat, and Stall
When an L298N circuit misbehaves, the symptoms are highly specific to the BJT architecture and the internal protection diodes. Here is how to diagnose the three most common bench failures.
1. The "Hum" Without Movement (Under-Voltage Stall)
Symptom: The Arduino sends the command, the motor vibrates or hums, but the shaft doesn't turn.
Cause: You are experiencing a stall condition caused by insufficient voltage reaching the motor coils. Because of the L298N's 2V+ drop, a 5V logic supply fed into VCC will only deliver ~3V to the motor. Most 6V gearmotors require at least 4V to overcome static friction and cogging torque.
Fix: Increase the VCC supply voltage. Do not attempt to bypass the L298N with a relay to "get full power" unless you are willing to lose all PWM speed control and directional reversal.
2. Sudden Shutdown and Overheat (Thermal Protection)
Symptom: The motors run fine for 30 seconds, then abruptly stop. The L298N chip is too hot to touch. After a minute, it starts working again.
Cause: The L298N features internal thermal shutdown at roughly 150°C junction temperature. The massive voltage drop ($V_{drop} \times I$) generates immense waste heat. The small glued-on heatsink on standard modules is often insufficient for continuous loads above 1A per channel in still air.
Fix: Add a small 5V brushless fan blowing directly across the heatsink, or reduce the continuous current draw. If you consistently need >1.5A per channel, the L298N is the wrong tool; upgrade to a MOSFET-based driver like the TB6612FNG (which has a voltage drop of only ~0.5V) or the BTS7960 for high-current loads.
3. Hard Stall and Logic Resets (Current Spike & Ground Bounce)
Symptom: The robot chassis hits a wall, the motors stall, and the Arduino instantly reboots or throws serial garbage.
Cause: When a DC motor stalls, it draws its maximum stall current (often 3x to 5x the running current). This massive current draw through the shared ground traces causes "ground bounce," momentarily pulling the Arduino's logic ground above 0V, corrupting the microcontroller. Additionally, the inductive kickback from the sudden stop can overwhelm the L298N's internal flyback diodes.
Fix: Never share the exact same ground wire path for high-current motors and sensitive logic. Use a star-ground topology where the battery negative, L298N GND, and Arduino GND all meet at a single, thick terminal block. Add external Schottky flyback diodes (like 1N5819) across the motor terminals if you are driving highly inductive loads.
When to Choose the L298N vs. Modern Alternatives
The L298N remains a staple in 2026 because it is rugged, widely available for under $4, and tolerates high voltages (up to 35V) that would instantly fry modern low-voltage MOSFET drivers. It is the correct choice for 12V-24V brushed DC applications where battery efficiency is secondary to cost and simplicity, or for driving high-impedance bipolar steppers where the voltage drop can be compensated by a higher supply rail.
However, if you are building a battery-powered autonomous robot where every milliamp-hour counts, the L298N's BJT inefficiency is a liability. In those scenarios, transition to the TB6612FNG (for 15V max, 1.2A continuous applications) or the DRV8871 (for single-channel, high-efficiency brushed DC control). Use the L298N when you need brute-force, high-voltage tolerance on a tight budget; use MOSFET drivers when you need thermal efficiency and compact PCB footprints.






