Motor Drivers Explained: L298N vs TB6612FNG
Every wheeled robot on this site has a motor driver between the Arduino and the motors. This guide explains what that board is actually doing, then settles the eternal beginner question: the ₹100 L298N everyone starts with, or the TB6612FNG everyone upgrades to?
Why you can’t drive motors from a pin
An Arduino pin supplies 5 V at a recommended 20 mA (40 mA absolute max). A yellow TT gear motor draws ~150–250 mA free-running and over 1 A when it stalls. Connect a motor to a pin and you get, at best, nothing; at worst, a dead pin. Motors are also inductive — they kick voltage spikes back when switched — and they need to run from a higher-voltage battery, not the 5 V logic rail. A motor driver solves all three problems: it switches heavy battery current using feather-light logic signals, and includes protection diodes for the spikes.
The H-bridge, in plain language
To reverse a DC motor you reverse the current through it. The circuit that does this is four electronic switches arranged like the letter H with the motor as the crossbar:
Your IN1/IN2 pins pick which diagonal pair closes (direction), and the EN pin — fed with PWM from analogWrite — rapidly connects and disconnects the whole bridge to set speed. Both boards below are dual H-bridges: two motors, one board.
The L298N: old, cheap, everywhere
The L298 chip dates from the 1980s and uses bipolar transistors, which drop roughly 2 V (more under load) inside the chip. Feed it 8 V and your motors see about 6 V; the lost energy becomes heat in that big heatsink. In exchange it is nearly indestructible, handles up to 2 A per channel and 12 V+ packs happily, has screw terminals (no soldering), and includes a handy 5 V regulator that can power your Arduino. For a first build those conveniences genuinely matter, which is why our robot car guide uses it.
The TB6612FNG: the modern pick
The TB6612 uses MOSFETs, dropping only ~0.2–0.5 V. Almost all of your battery reaches the motors: longer runtime, more torque, no heatsink, and a board a quarter of the size and weight. Costs: you usually solder header pins yourself, it needs a separate STBY pin held HIGH, its motor supply tops out around 13.5 V (1.2 A continuous, 3 A peak per channel), and there is no 5 V regulator on board. Wiring is near-identical: PWMA/PWMB replace ENA/ENB, AIN1/AIN2/BIN1/BIN2 replace IN1–IN4, so our drive() function ports unchanged.
Head-to-head comparison
| L298N | TB6612FNG | |
|---|---|---|
| Technology | Bipolar (1980s) | MOSFET (modern) |
| Voltage lost in the driver | ~2 V or more | ~0.2–0.5 V |
| Efficiency | Poor — big heatsink required | >90%, no heatsink |
| Current per channel | 2 A continuous | 1.2 A continuous, 3 A peak |
| Motor supply | Up to ~35 V (12 V typical hobby use) | 2.5–13.5 V |
| On-board 5 V regulator | Yes — can power the Arduino | No |
| Connectors | Screw terminals | Solder header pins |
| Size / weight | Large, heavy | Tiny, ~3 g |
| Indicative price | ₹90–180 | ₹150–250 |
| Best for | First builds, 12 V motors, no-solder classrooms | Battery efficiency, racing, small robots |
Prices shown are indicative online street prices in India as of mid-2026. They vary by seller and stock — treat them as a budgeting guide, not a quote.
Verdict: start on the L298N for the screw terminals and free 5 V rail; switch to the TB6612 the day you care about speed, runtime, or weight — your code will not change.
Common mistakes with either board
- No common ground between driver, battery, and Arduino. Motors twitch or do nothing.
- Forgetting the standby/enable: L298N EN jumpers removed but pins never driven; TB6612 STBY left floating. Symptom: perfect wiring, zero motion.
- Expecting 9 V-block miracles. The little PP3 battery cannot source motor current regardless of driver.
- Ignoring stall current. A wheel jammed against a wall pulls the motor’s stall current continuously; size your driver for it.
- PWM on the wrong pins. On an Uno use 3, 5, 6, 9, 10, 11 — and remember the Servo library steals 9 and 10.