The L298N dual H-bridge motor driver module is one of the most widely used motor control boards in the Indian maker community. It is affordable, capable of driving two DC motors or one stepper motor, and well-supported by Arduino libraries. However, it is also one of the most frequently misused components — forums and maker groups are full of questions like “my motor is not running” or “the L298N gets extremely hot after 5 minutes”. This comprehensive troubleshooting guide covers every common L298N problem, its root cause, and the exact fix you need.
L298N Module Overview
The L298N IC is a bipolar H-bridge driver capable of driving two DC motors with up to 2A per channel (4A peak) at up to 46V. The blue module sold widely in India combines the L298N IC with a 78M05 voltage regulator (providing 5V from the motor supply for Arduino logic) and two sets of screw terminals for motor outputs and power inputs.
Key module pins and their functions:
- IN1, IN2: Direction control for Motor A (HIGH/LOW combinations)
- IN3, IN4: Direction control for Motor B
- ENA: Enable/PWM pin for Motor A (HIGH = full speed; PWM = variable speed)
- ENB: Enable/PWM pin for Motor B
- 12V: Motor supply (up to 46V, minimum ~6V)
- 5V: Logic supply out (or 5V in if jumper removed)
- GND: Common ground (critical!)
- OUT1, OUT2: Motor A outputs
- OUT3, OUT4: Motor B outputs
There are two small yellow jumpers on the module — ENA and ENB jumpers. When installed, they tie the enable pins permanently HIGH (full speed, no PWM). Remove them to control speed via PWM from Arduino. This single fact is responsible for a huge number of “my motor won’t spin” complaints.
Motor Not Running At All
This is the most common L298N complaint. Work through this checklist systematically:
1. Check the ENA/ENB jumpers
If you have connected ENA/ENB to Arduino PWM pins, you MUST remove the yellow enable jumpers. If the jumpers are installed and you connect a wire to ENA/ENB, you may be shorting your Arduino pin to 5V, which can damage the pin. Remove the jumpers before connecting ENA to Arduino.
If you are NOT using PWM (just want the motor to spin at full speed), leave the jumpers installed and do NOT connect ENA/ENB to Arduino. This is the simplest configuration: the motor runs at full speed whenever IN1/IN2 are set high/low.
2. Check motor supply voltage
The L298N requires a minimum of about 6–7V on the 12V terminal to drive motors. The module drops approximately 2V internally (1V per transistor, two transistors in series per channel). At exactly 5V supply, this leaves only 3V for the motor — barely enough to start rotating under any load. Use a 9V or 12V power supply for the motor terminal.
// Verify with a multimeter:
// Measure voltage between L298N GND and 12V terminal: should be 9-12V
// Measure voltage between OUT1 and OUT2 with motor disconnected
// and IN1=HIGH, IN2=LOW: should be approximately (supply - 2V)
3. Check common ground
This catches more than half of “motor not running” problems. The GND of the L298N, the GND of the Arduino, and the GND of the external power supply MUST all be connected together. If you are powering the L298N from a 12V adapter and the Arduino from USB, they have separate grounds. Connect a wire from the 12V adapter’s GND terminal to the Arduino’s GND pin. Without this, the IN1/IN2 signals from Arduino have no reference voltage and the L298N sees them as floating inputs.
4. Check the code logic
| IN1 | IN2 | Motor A Behaviour |
|---|---|---|
| HIGH | LOW | Runs forward |
| LOW | HIGH | Runs reverse |
| HIGH | HIGH | Brakes (stops hard) |
| LOW | LOW | Coasts (no braking) |
A common code mistake: setting both IN1 and IN2 HIGH (braking state) thinking this is “full power forward”.
5. Test with direct voltage
Disconnect the motor from OUT1/OUT2 and temporarily apply 9V directly to the motor terminals using wires from a battery. If the motor spins, the motor is fine — the problem is in the L298N wiring or code. If it does not spin, the motor is faulty.
Motor Only Runs in One Direction
If the motor runs in one direction but not the other, the most likely cause is a damaged transistor in one half of the H-bridge. This happens when the motor’s back-EMF causes voltage spikes that exceed the L298N’s ratings — usually because the motor supply voltage was too high, or the motor was started/stopped abruptly at high current.
Confirm by swapping OUT1 and OUT2 wires. If the motor now runs in the previously broken direction (and the other direction is broken), one transistor pair is dead — the L298N module needs replacement. If the issue follows the code pins rather than the hardware terminals, the problem is in the Arduino sketch.
A secondary cause: one of the IN pins is floating (not connected). An unconnected Arduino digital pin reads random values. Always explicitly set both IN pins in your code before calling analogWrite on ENA:
// Always set direction BEFORE enabling PWM
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, 150); // then apply speed
L298N Overheating
The L298N getting hot — sometimes too hot to touch within minutes — is the second most common complaint. There are three root causes:
Root cause 1: Motor current exceeds 2A
The L298N IC is rated 2A per channel continuous, 3A peak. DC gear motors in stall can draw 3–5× their rated current. A motor rated 1A drawing 3A stall current will push the L298N over its thermal limit. The IC’s internal protection will shut it down repeatedly, manifesting as the motor stopping randomly and the chip becoming burning hot.
Check: measure stall current of your motor with a multimeter in series. If it exceeds 2A, switch to a higher-rated driver (IBT-2 BTS7960, L298P, or Cytron MD30C).
Root cause 2: No heatsink
Some L298N modules ship with a small aluminium heatsink on the IC. If yours does not have one, add it — any small clip-on heatsink works. Apply a thin layer of thermal paste between the IC and heatsink. This reduces chip temperature by 20–40°C under equivalent load and significantly extends the module’s life.
Root cause 3: 2V voltage drop waste heat
The L298N’s bipolar transistor design inherently drops 2V across the output transistors. At 2A current: Power = V × I = 2V × 2A = 4W per channel. Four watts of heat in a small chip is significant. This is a fundamental limitation of the L298N technology — there is no fix other than accepting a heatsink or switching to a MOSFET-based driver (A4950, DRV8833, IBT-2) that drops less than 0.5V and generates far less heat.
At supply voltages above 12V or with high-current motors, the L298N will almost always overheat. For these applications, use the IBT-2 (BTS7960) module instead.
PWM Speed Control Not Working
PWM control requires removing the ENA/ENB jumpers and connecting those pins to Arduino PWM-capable pins. Arduino Uno PWM pins are: 3, 5, 6, 9, 10, 11. Pins 2, 4, 7, 8, 12, 13 are NOT PWM capable — analogWrite() on these pins will only output full HIGH or full LOW.
Common mistakes:
- ENA/ENB jumper still installed with a wire also connected → conflict
- ENA connected to a non-PWM pin (e.g., pin 4)
- Motor supply too low for the requested PWM duty cycle to spin the motor (motors have a minimum start voltage, typically 30–50% duty cycle at rated voltage)
// Correct L298N + Arduino DC motor control sketch
#define ENA 10 // MUST be PWM pin
#define IN1 8
#define IN2 9
void setup() {
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
// Remove ENA jumper from L298N module!
}
void setMotor(int speed) { // speed: -255 to +255
if (speed > 0) {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, speed);
} else if (speed < 0) {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, -speed);
} else {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
analogWrite(ENA, 0);
}
}
void loop() {
setMotor(200); // forward at ~78% speed
delay(2000);
setMotor(-150); // reverse at ~59% speed
delay(2000);
setMotor(0); // stop
delay(1000);
}
Voltage Drop and Motor Running Slow
The L298N drops approximately 2V between the motor supply and the motor terminals. A motor rated for 12V connected to a 12V supply via L298N actually sees only 10V. This reduces both speed and torque by approximately 17%.
Solutions:
- Increase supply voltage by 2V above the motor’s rated voltage (e.g., 14V for a 12V motor)
- Accept reduced performance (fine for most hobby applications)
- Switch to a MOSFET-based driver with sub-0.5V drop (A4950, DRV8833, IBT-2)
Also check that your power supply can deliver sufficient current. A USB power bank at 2A output powering a 12V motor via a boost converter — a common but ill-advised setup — will severely current-limit the motor. Use a proper 12V DC power adapter rated for at least the motor’s stall current.
Stepper Motor Issues with L298N
The L298N can drive a 4-wire bipolar stepper motor (NEMA17 or similar) using both H-bridge channels. Common stepper problems:
Stepper vibrates but does not rotate
Coil wires connected in wrong order. Identify the two coil pairs with a multimeter: coil pair 1 and coil pair 2. Each pair has ~1–5 Ω continuity between its two wires. Connect coil pair 1 to OUT1/OUT2, coil pair 2 to OUT3/OUT4. Wrong pair assignments cause the stator field to conflict rather than rotate.
Stepper skips steps or loses position
Current limit too low. The L298N at 12V can supply up to 2A per coil — more than enough for most steppers. But if you are using a low voltage motor supply or the L298N is thermally throttling, coil current drops below the motor’s rated value and torque is insufficient. Add a heatsink and ensure supply voltage is adequate.
Stepper runs hot even when stopped
Stepper motors hold current in their coils when stationary. Disable the enable pins (set ENA and ENB LOW) when the motor does not need holding torque. This reduces heat dramatically in both the motor and the L298N.
The Onboard 5V Regulator Problem
The L298N module’s onboard 78M05 regulator can supply the Arduino’s 5V rail — a convenient feature. However, it is only rated for 500 mA, and it dissipates power proportional to the voltage drop: at 12V input, each milliamp costs (12−5) = 7 mW. At 500 mA, that is 3.5W of heat on a tiny regulator, which will thermally shut down rapidly.
Do NOT power your Arduino and multiple sensors from the L298N’s 5V output under heavy motor load. Instead:
- Power Arduino from USB during development
- Use a separate small 5V buck converter module for the Arduino in final builds
- If using the onboard 5V for Arduino only (no sensors), keep motor supply below 18V to reduce regulator heat
Remove the onboard 5V jumper if you are powering the Arduino from USB or a separate supply — running two 5V sources simultaneously can damage both the regulator and the computer’s USB port.
Correct Wiring Reference
| L298N Pin | Arduino Pin | Notes |
|---|---|---|
| IN1 | 8 | Any digital pin |
| IN2 | 9 | Any digital pin |
| ENA | 10 | Must be PWM pin; remove jumper! |
| IN3 | 4 | Any digital pin |
| IN4 | 5 | Any digital pin |
| ENB | 6 | Must be PWM pin; remove jumper! |
| GND | GND | Common ground — critical! |
| 12V | External 9–12V supply + | Do NOT use Arduino 5V |
| 5V out | Arduino 5V (optional) | Only if NOT using USB power |
When to Replace L298N
The L298N is a good learning module but has real limitations. Consider upgrading when:
- Motor current >2A: Use IBT-2 (BTS7960, 43A peak), Cytron MD30C, or VNH5019
- Efficiency matters (battery-powered robots): L298N wastes 2V × current as heat. Use DRV8833 (0.5Ω Rdson) or TMC driver
- Microstepping for steppers: L298N supports full and half step only. Use A4988 or TMC2209 for 1/16 or 1/256 microstepping
- Higher voltage motors: Above 35V, use VNH5019 (41V rated) or BTS7960
- Smaller PCB footprint: DRV8833 (motor current 1.5A) in TSSOP package is tiny; TB6612FNG is popular for Arduino robots
NEMA17 5.6 kg-cm Stepper Motor
If L298N overheating is causing stepper issues, upgrade to an A4988 driver for proper microstepping and current control. Pair this NEMA17 with A4988 for best results.
A4988 Stepper Motor Driver Controller Board (Red)
Upgrade from L298N for stepper motor control. Adjustable current limiting prevents overheating, and microstepping gives smoother quieter motion. Best paired with NEMA17.
Frequently Asked Questions
Why does my L298N module get hot even with no motor connected?
The onboard 78M05 voltage regulator is generating heat. At 12V input, the regulator drops 7V while supplying current to Arduino and peripherals. Even at 100 mA load, that is 0.7W of heat from the regulator alone. This is normal behaviour but can be reduced by powering Arduino from USB instead and disabling the onboard 5V supply jumper.
Can I use L298N with 3.3V Arduino (ESP32, ESP8266)?
The L298N’s logic input threshold is 2.3V minimum for HIGH, so 3.3V signals from ESP32 GPIO pins are just barely sufficient. In practice, this usually works, but the lower noise margin makes it slightly less reliable than 5V. Use a level shifter for guaranteed reliable operation with ESP32 GPIO outputs.
My L298N module’s 5V output reads 4.2V instead of 5V — is it broken?
The 78M05 regulator output drops under load. If it is reading 4.2V, you are drawing more current than the regulator can supply efficiently. Reduce the load or use an external power supply. 4.2V is generally sufficient for Arduino but marginal for SD cards and some sensors.
I have two L298N modules. Can I daisy-chain them for more current?
Not directly in parallel — paralleling H-bridge outputs causes one driver to fight the other. Instead, drive each motor from its own L298N channel, or upgrade to a single higher-current driver. Two L298N modules running independent motors is perfectly fine.
Why does my L298N cause Arduino to reset when the motor starts?
Motor startup current causes a voltage dip on the shared power supply, pulling Arduino’s voltage below the reset threshold. Fix: add a 1000 µF capacitor across the motor supply lines (not the Arduino 5V rail). Ensure the power supply can deliver at least 2× the motor’s rated current without significant voltage sag.
Where can I buy L298N alternatives in India?
Zbotic.in stocks A4988 stepper drivers, which are an excellent upgrade for stepper motor control. For DC motors requiring more current than L298N can handle, check the full motors and drivers category for the latest available options.
Browse stepper drivers, DC motor drivers, and actuators at Zbotic Motors & Actuators. GST invoice on all orders, fast pan-India delivery.
Add comment