Component · Driver

TB6612FNG Motor Driver

The TB6612FNG is a MOSFET dual H-bridge that drives two DC motors while wasting almost no voltage—the efficient upgrade from an L298N.

What it is

The TB6612FNG is a dual H-bridge motor driver that does the same job as an L298N—standing between a microcontroller’s logic pins and motors that want far more current—but builds its output stage from MOSFETs instead of bipolar transistors. That one change is the whole story: a MOSFET switch drops a few tenths of a volt where the L298N’s stage drops around two.

On a 6 V battery driving 6 V motors, that difference is most of your speed. It is also most of your heat: the L298N wants a heatsink at sustained current, while a TB6612FNG carrier the size of a postage stamp runs merely warm.

Block diagram: a QTR-MD-08A reflectance array feeds an Arduino Nano over pins A0 to A7; the Nano drives a TB6612FNG using STBY, PWMA, PWMB and the four direction pins; the driver's outputs go to the left and right motors, and a separate motor battery feeds the driver's VM pin.
The whole drive chain for a line maze robot. Note that the motor battery reaches only VM—the Arduino's 5 V supplies logic, never motor current. Download SVG

How you control it

Each motor takes three signals, plus one shared pin for the chip:

  • Two direction pins (AIN1/AIN2 for motor A, BIN1/BIN2 for motor B) select forward, reverse, brake, or coast.
  • One PWM pin (PWMA or PWMB) sets speed. Unlike the L298N, where PWM rides on an enable pin, the TB6612FNG has a dedicated PWM input per channel that accepts up to 100 kHz—high enough to switch above the audible range so your robot stops whining.
  • One STBY pin, shared. Hold it LOW and both bridges are dead regardless of everything else.

That STBY pin is worth repeating, because it costs beginners an evening: a correctly wired TB6612FNG with STBY left floating or LOW does absolutely nothing, silently, with no error to read.

When to use it

Reach for the TB6612FNG when your motors are small and your battery is precious—which describes nearly every line follower and line maze robot. Small robots run at 6–7.4 V, exactly the range where the L298N’s 2 V tax hurts most, and they run on a battery you would rather not waste as heat.

Stay with the L298N when your motor supply exceeds 13.5 V, which the TB6612FNG cannot accept, or when you need more than about 1.2 A continuous per channel.

Wiring and gotchas

  • Drive STBY HIGH. The first thing your setup() should do after pinMode.
  • Two supplies, one ground. Motor battery to VM, Arduino 5 V to VCC, and all grounds tied together—Arduino, driver, sensor array, and battery negative. A missing common ground gives control signals no reference, and the failure is silent.
  • Respect 13.5 V. There is no on-board regulator and no headroom above the maximum motor supply. A 3S lithium pack at 12.6 V nominal will exceed it when freshly charged.
  • A motor spinning the wrong way is a two-second fix. Swap that motor’s two output wires, or invert its direction logic in firmware. Do this before you tune anything else, or you will chase a control bug that is really a wiring one.

Explore the graph

Used in these builds

Projects, learning paths, and simulators that include the TB6612FNG Motor Driver.

Compare

Alternatives

Questions

TB6612FNG Motor Driver FAQ

What is the TB6612FNG motor driver?

The TB6612FNG is a dual H-bridge motor driver built from MOSFETs rather than the older bipolar transistors. It takes low-power direction and PWM signals from a microcontroller and switches a separate motor supply to drive two DC motors independently, delivering 1.2 A continuously per channel with 3.2 A peaks.

Is the TB6612FNG better than the L298N?

For small robot motors, yes. The L298N's transistor output stage drops roughly 2 V before the motor sees anything, so a 6 V motor on a 6 V pack runs weak and the chip needs a heatsink. The TB6612FNG's MOSFET stage drops a few tenths of a volt, runs cool without a heatsink, and is far smaller. The L298N still wins when you need more than 13.5 V of motor supply, which the TB6612FNG cannot accept.

How do you wire a TB6612FNG to an Arduino?

Motor battery positive to VM, Arduino 5 V to VCC, and every ground tied together—Arduino, driver, sensors and battery negative. Then STBY to a digital pin, and per motor two direction pins (AIN1/AIN2 or BIN1/BIN2) plus one PWM pin (PWMA or PWMB). Motors connect to the AO1/AO2 and BO1/BO2 terminals.

What does the STBY pin do on a TB6612FNG?

STBY is a standby enable for the whole chip. Held LOW, both bridges are disabled and the motors coast no matter what the other pins say. You must drive it HIGH before anything moves—forgetting it is the single most common reason a freshly wired TB6612FNG does nothing at all.

How much current can a TB6612FNG handle?

1.2 A continuous per channel, with short peaks up to 3.2 A. That comfortably covers the small yellow gear motors and N20 motors used in line followers and maze robots. Larger motors that stall above 1.2 A will trip its thermal shutdown, so step up to a driver such as the DRV8871 or a proper brushed ESC instead.

Further reading

References