The L298N Reality Check: What It Actually Drives

The L298N is a dual full-bridge motor driver built on bipolar junction transistor (BJT) technology. While it is the most common module in beginner robotics kits, its specifications are frequently misunderstood. The chip is rated for 2A continuous current per channel (3A peak), but because it uses BJTs instead of modern MOSFETs, it suffers from a saturation voltage drop (Vce sat) of roughly 2V to 2.5V.

The direct answer: The L298N is strictly suited for 7V–12V brushed DC motors drawing under 1.5A continuous, or basic low-speed bipolar steppers. If you are driving 3.3V/5V logic motors, high-current loads, or precision steppers, the L298N is the wrong tool, and you should upgrade to a MOSFET-based driver like the TB6612FNG or a chopper driver like the DRV8825.

Sizing Rule of Thumb and Worked Load Example

When sizing a motor for the L298N, you must account for the internal voltage drop and thermal dissipation. The rule of thumb: Never exceed 1.5A continuous draw without active cooling, and ensure your supply voltage is at least 2.5V higher than your motor's nominal rating.

Consider a standard 12V brushed DC gearmotor with a 1A nominal draw and a 3A stall current:

  • Running at nominal load (1A): The L298N drops ~2V. The motor receives 10V. The power dissipated as heat in the L298N is P = V × I = 2V × 1A = 2W. The onboard heatsink can handle this, but the chip will run warm (~50°C).
  • During startup/stall (3A): The voltage drop increases to ~3V. The power dissipation spikes to P = 3V × 3A = 9W. The L298N's internal thermal shutdown will trigger in seconds, cutting power to protect the silicon.

This is why you cannot simply look at the "2A max" rating on the STMicroelectronics L298N datasheet and assume it will handle a 2A motor. The 2A rating assumes ideal heatsinking and ignores the massive thermal penalty of the BJT voltage drop.

Motor Type Matrix: Matching the Load to the Driver

Not all motors behave the same way under PWM control. Treating steppers and servos as interchangeable with brushed DC motors is a fast track to burned-out drivers. Here is how the L298N stacks up against common hobbyist motor types.

Motor Type Torque Curve & Control Needs Typical Cost L298N Suitability
Brushed DC High starting torque, drops at speed. Requires simple PWM for speed, H-bridge for direction. $3 - $15 Good. Ideal for 7-12V DC gearmotors under 1.5A.
Bipolar Stepper High holding torque, zero at high speed. Requires phased sequencing (step/direction or dual H-bridge). $10 - $25 Fair. Works for basic NEMA 17 positioning, but runs very hot and lacks microstepping.
RC Servo High positional torque. Requires 50Hz PWM pulse (1-2ms width) for angle, NOT an H-bridge. $4 - $20 None. Do not use. Connect directly to Arduino 5V/GND and a PWM GPIO pin.
Brushless DC (BLDC) High efficiency, high speed. Requires 3-phase commutation and back-EMF sensing or Hall sensors. $20 - $60+ None. Requires a dedicated 3-phase ESC (Electronic Speed Controller).

Wiring and Terminal Identification for the L298N

The standard red L298N module found on Amazon and AliExpress includes the chip, flyback diodes, a 5V linear regulator, and screw terminals. Getting the logic and motor power boundaries wrong is the most common cause of bricked Arduinos.

Terminal Pinout

  • 12V (VCC): Motor power supply input. Accepts 5V to 35V (though >18V requires removing the 5V jumper).
  • GND: Common ground. Must be shared with your Arduino's GND.
  • 5V (Logic Out): Output from the onboard 7805 voltage regulator. Can power the Arduino if the jumper is engaged.
  • ENA / ENB: PWM enable pins for Motor A and Motor B. Remove the physical jumpers to connect to Arduino PWM pins for speed control.
  • IN1, IN2, IN3, IN4: Logic direction pins. 5V/3.3V tolerant. Set one HIGH and one LOW for direction; set both LOW to coast, both HIGH to brake.
  • OUT1/OUT2 & OUT3/OUT4: High-current motor outputs.
The 7805 Regulator Trap: The module has a jumper cap near the 12V terminal. If left ON, the board uses a linear 7805 regulator to drop the motor voltage down to 5V for the logic chip. If you supply more than 12V to the motor terminal with this jumper ON, the 7805 will overheat and fail, potentially sending raw motor voltage into your Arduino's 5V rail and destroying the microcontroller. Rule: If motor VCC > 12V, remove the jumper and power the logic 5V pin separately.

Failure Signatures: Hum, Overheat, and Stall

When an L298N circuit fails, it rarely does so silently. Diagnosing the physical symptoms on the bench will tell you exactly where the electrical mismatch is occurring.

1. The Motor Hums but Won't Turn

Cause: Insufficient voltage reaching the motor coils, or PWM frequency is too low.
Fix: Measure the voltage at OUT1/OUT2 while the Arduino commands full speed. If you are feeding 7V into the 12V terminal, the L298N drops 2V, leaving only 5V for a motor that might need 6V to overcome static friction. Increase supply voltage to 9V or 12V. Alternatively, check your Arduino analogWrite() PWM frequency; if it is below 1kHz, the motor coils may audibly whine or hum without generating enough rotational force.

2. The Heatsink is Too Hot to Touch (>60°C)

Cause: Continuous current exceeds 1.5A, or the motor is frequently stalling.
Fix: The L298N is fundamentally inefficient. At 1.5A, it is burning nearly 3W of heat. If you need to touch the heatsink and pull away, you are nearing the 150°C internal junction thermal shutdown threshold. You must either reduce the mechanical load on the motor, add a forced-air fan, or abandon the L298N for a MOSFET driver.

3. Arduino Brownouts and Random Resets

Cause: Motor inrush current dragging down the shared 5V logic rail.
Fix: When a DC motor starts, it draws stall current (often 5x to 10x nominal). If you are powering the Arduino from the L298N's 5V terminal, this voltage sag will brownout the ATmega328P or ESP32. Always use separate power supplies for high-inertia motors and logic, or add a large bulk capacitor (e.g., 1000µF 25V) across the motor supply terminals to absorb the inrush spike.

The Decision Tree: L298N vs. Modern Alternatives

The L298N is a legacy chip from the 1990s. While it is cheap and robust against accidental shorts, modern MOSFET and chopper drivers offer vastly superior efficiency. Use this decision path to select the exact part number for your next build.

If Your Load Profile Is... Then Choose This Driver Why It Wins
12V Brushed DC, <1.5A, simple prototyping L298N Module Cheap ($3), screw terminals are easy for thick wires, built-in 5V regulator for low-power logic.
3.3V/5V Logic (ESP32/Pi), or >1.5A DC TB6612FNG (Pololu Carrier) MOSFET-based. Only ~0.5V drop. Handles 1.2A continuous (3.2A peak). Supports 2.7V-5.5V logic natively without level shifters.
Single high-current DC motor (up to 3.6A) DRV8871 Single H-bridge, handles up to 45V and 3.6A. Extremely low Rds(on) means minimal heat. Requires no logic voltage rail.
NEMA 17 Stepper for CNC, 3D Printers, or Robotics DRV8825 or TMC2209 L298N cannot microstep. The DRV8825 offers 1/32 microstepping; the TMC2209 offers silent StealthChop operation and UART tuning.

Final Recommendation: If you are building a basic 12V obstacle-avoidance rover with an Arduino Uno and 1A gearmotors, buy the L298N. It is forgiving and requires minimal wiring. However, if you are designing a permanent installation, using an ESP32 (which requires 3.3V logic compatibility), or driving motors that pull more than 1.5A, bypass the L298N entirely and wire up a TB6612FNG or DRV8871. The reduction in heat and voltage drop will immediately solve the stalling and brownout issues that plague legacy BJT drivers.