L298N Motor Driver: Wiring, Heat, and Better Alternatives

L298N Motor Driver: Wiring, Heat, and Better Alternatives

Quick answer: The L298N (Rs.180) drives two DC motors at up to 2A per channel, but its BJT output stage drops about 1.8V at 1A, rising to roughly 4.6V at 2A — lost as heat and torque. For small motors the L293D is cheaper; for cooler, stronger running, the MOSFET-based Cytron MDD3A is the real upgrade.

L298N Motor Driver Module - the part this guide is about, in stock at Compoden
L298N Motor Driver Module — the actual part this guide describes, photographed from our own stock.

Written and fact-checked by Compoden's engineering team, India. Every spec, price and pin below is read from our live catalogue record for the exact part named. Published 19 August 2026 · Last updated 19 August 2026.

The L298N is the motor driver almost every beginner robot uses, mostly because it was the first one everyone's tutorial used. It works, and at Rs.180 it is cheap — but it is built around 1990s bipolar output transistors, and that choice has a real, measurable cost every time current flows through it. Understanding that cost is what tells you whether to keep using it or spend more on something built with modern MOSFETs instead.

L298N and its two catalogue alternatives — records checked August 2026
Spec L298N L293D Shield Cytron MDD3A
Price (India, COD) Rs.180 Rs.150 Rs.1,130
Output stage BJT (bipolar) BJT (bipolar) MOSFET
Current per channel 2A cont. / 3A peak 0.6A cont. / 1.2A peak 3A cont. / 5A peak
Motor voltage range 5–35V 4.5–12V 4–16V
Heatsink required Yes No (low current) No
Form factor Standalone module Arduino Uno/Mega shield Standalone module

Verdict in one line: the L298N is the reasonable default for a first robot on a budget, the L293D is enough for genuinely small motors and nothing more, and the Cytron MDD3A is what you buy once heat or torque actually becomes a problem.

Why does the L298N run hot and lose torque?

Because of the physics of its output transistors, not a manufacturing flaw. Our own record documents the measured drop directly: about 1.8V at 1A, rising to roughly 4.6V at 2A. That voltage never reaches the motor — it is dropped across the L298N's internal BJTs and turned into heat. Feed the module 12V at 2A and the motor only sees about 7.4V, which is why our record separately notes "high voltage drop reduces motor torque at low battery": as the battery sags under load, the drop eats a larger share of an already-shrinking supply. This is also why the datasheet and our record both call a heatsink required rather than optional — that missing voltage has to go somewhere, and it goes into the metal tab on top of the chip.

L298N voltage drop across its output stage, at 1A and 2A The L298N's bipolar output stage drops about 1.8 volts at 1 amp of motor current, rising to about 4.6 volts at 2 amps. That voltage is lost as heat instead of reaching the motor. Voltage lost to heat inside the L298N — drawn to scale At 1A1.8V dropped At 2A4.6V dropped Bar widths proportional: 100px per volt, so 1.8V = 180px and 4.6V = 460px. On a 12V supply at 2A, the motor sees only about 7.4V — the rest becomes heat in the chip. Figures are the measured drop stated in our own catalogue record for this part.
The L298N's voltage drop roughly doubles-plus between 1A and 2A rather than staying flat, which is why it runs noticeably hotter — and loses more torque — the harder you push it. Figures read from our catalogue record's measured values.

How do you wire an L298N to an Arduino Uno?

Six signal wires plus power. IN1 and IN2 set motor A's direction, IN3 and IN4 set motor B's direction, and ENA/ENB take PWM to control each motor's speed. Motor supply (typically a battery pack, 5–35V) goes to the module's VS terminal, not through the Arduino.

L298N to Arduino Uno — wiring
L298N pin Arduino Uno pin Note
ENA D9 (PWM) Motor A speed. Remove the ENA jumper first, or this pin is ignored.
IN1, IN2 D8, D7 Motor A direction — plain digital pins.
ENB D10 (PWM) Motor B speed. Remove the ENB jumper first.
IN3, IN4 D12, D11 Motor B direction. D11 also does PWM but is used here as a plain output.
GND GND Common ground — Arduino GND, L298N GND and motor supply GND must all meet here.
5V (module output) Do not connect to Uno 5V if VS > 12V Onboard 78M05 regulator only works below 12V — see below.

Why did my motors start spinning the instant I powered the board?

The ENA/ENB jumpers are still in place. Our record states this plainly as a known issue: "enable jumpers must be removed for PWM control; otherwise motors run at full speed" — and the matching failure symptom is "motor runs continuously even with no input signal." The two small jumper caps on ENA and ENB tie those pins permanently HIGH, which is a full-speed-always behaviour convenient for a first smoke test but wrong the moment you want analogWrite() to actually do anything. Pull both jumpers before wiring ENA/ENB to Arduino PWM pins.

What code drives two motors on an L298N?

No library required — digitalWrite() for direction, analogWrite() for speed. The sketch below was written for this guide and has not been compiled by us.

// L298N: motor A forward at half speed, motor B reverse at full speed.
// Wiring: ENA->D9, IN1->D8, IN2->D7, ENB->D10, IN3->D12, IN4->D11.
// Remove the ENA/ENB jumpers first, or PWM speed control is ignored.

const int ENA = 9, IN1 = 8, IN2 = 7;
const int ENB = 10, IN3 = 12, IN4 = 11;

void setup() {
  pinMode(ENA, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
  pinMode(ENB, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
}

void loop() {
  // Motor A: forward, ~50% speed.
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  analogWrite(ENA, 128);

  // Motor B: reverse, full speed.
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  analogWrite(ENB, 255);
}

When should you skip the L298N and buy something else?

Two directions, both real. Going smaller: our L293D shield record calls the L298N "undersized for stall-heavy motors" the other way around — meaning if your motors draw well under 0.6A continuous each and never stall hard, the L293D shield is cheaper, plugs straight onto an Uno with no separate wiring, and skips the L298N's heat problem entirely because there is so much less current to drop voltage across. Going stronger or cooler: the Cytron MDD3A uses a MOSFET output stage, and our record states it directly — "very low voltage drop and cooler running than L298N." It also does more current, 3A continuous against the L298N's 2A, at 4–16V rather than the L298N's wider 5–35V range. The cost is real: Rs.1,130 against the L298N's Rs.180, over six times the price. That premium buys back the voltage this whole post has been about losing.

Which motor driver should you actually buy?

For a first robot, two hobby DC gear motors, and a budget that matters, the L298N Motor Driver Module (Rs.180) is the sensible default — just add the heatsink it already ships with and remove the ENA/ENB jumpers. For small motors under 0.6A and an Uno you don't want extra wiring on, the L293D Motor Driver Shield (Rs.150). Once heat, torque loss or higher current genuinely matter, the Cytron MDD3A (Rs.1,130) is the upgrade that actually fixes the problem rather than working around it. All available cash on delivery across India.

What should you read next?

Putting the L298N to work? Our line follower robot build wires one up for real, and the Arduino Uno pinout reference is worth checking before you claim D7-D12 for something else.

Not sure which driver your motors need? Open Soldr, describe the motors and how they'll be powered, and it will pick the driver and generate the wiring.

Frequently asked questions

L298N motor driver ko Arduino se kaise jodein?

Chhe signal taar: ENA aur ENB ko PWM pins par (jaise D9, D10) speed ke liye, IN1-IN4 ko digital pins par (jaise D7, D8, D11, D12) direction ke liye. Motor ki power supply seedhe module ke VS terminal par jaati hai, Arduino se nahi. Sabse zaroori: ENA/ENB jumpers nikaal dein, warna motor hamesha full speed par chalega chahe code kuch bhi kahe.

Why does my L298N get so hot?

Its bipolar output transistors drop a real amount of voltage as current rises — our record measures about 1.8V at 1A, climbing to roughly 4.6V at 2A. That lost voltage turns into heat in the chip, which is why a heatsink is required, not optional. If it stays hot at low current or your fingers can't bear to touch it for more than a second, check the motor supply is under 12V or that the onboard 5V regulator is disabled for a higher supply, since our record also flags the regulator itself as prone to overheating under high logic load above that threshold.

What is a good alternative to the L298N?

Depends on the direction you need. For smaller motors under 0.6A, the L293D shield is cheaper and simpler. For less heat and more current, the Cytron MDD3A uses a MOSFET output stage that our record describes as having very low voltage drop and running cooler than the L298N, delivering 3A continuous against the L298N's 2A — for about six times the price.

Why do my motors run at full speed no matter what I set in code?

The ENA and ENB jumpers are still on the board. They tie those pins permanently HIGH, which our record documents as the expected cause of "motor runs continuously even with no input signal." Remove both small jumper caps before wiring ENA and ENB to PWM pins, or analogWrite() has no effect.

What is the price of an L298N motor driver in India?

At Compoden, the L298N Motor Driver Module is Rs.180, the L293D Motor Driver Shield is Rs.150, and the Cytron MDD3A Dual Channel DC Motor Driver is Rs.1,130. All available with cash on delivery across India. Prices checked August 2026.

Back to blog

Open this project in the Soldr app → What is Soldr.ai → parts, wiring and code for what this guide builds