Zbotic Logo Zbotic Logo
  • Home
  • Shop
  • Sale
  • 3D Print Service
  • PCB Service
  • B2B
  • Blogs
  • Contact Us
0 0

View Wishlist Add all to cart

0 0
0 Shopping Cart
Shopping cart (0)
Subtotal: ₹0.00

View cartCheckout

  • Shop
  • About Us
  • Contact Us
  • Reseller
  • Blogs
020 69134444
1800 209 0998
[email protected]
Help Desk
Facebook Twitter Instagram Linkedin YouTube
Zbotic Logo Zbotic Logo
0 0

View Wishlist Add all to cart

0 0
0 Shopping Cart
Shopping cart (0)
Subtotal: ₹0.00

View cartCheckout

All departments
  • 3D Print Service
  • 3D Printer
  • Batteries & Chargers
  • Development Boards
  • Drone Parts
  • EBike parts
  • Sensor Modules
  • Electronic Components
  • Electronic Modules
  • IoT and Wireless
  • Mechanical Parts and Workbench Tools
  • Motors & Drivers & Pumps & Actuators
  • DIY and Robot Kits
  • Show more
  • Home
  • Shop
  • Sale
  • 3D Print Service
  • PCB Service
  • B2B
  • Blogs
  • Contact Us
Return to previous page
Home Motors & Actuators

Best Motor Drivers: L298N vs L293D vs L9110S vs TB6612

Best Motor Drivers: L298N vs L293D vs L9110S vs TB6612

March 11, 2026 /Posted byJayesh Jain / 0

Every DC motor and stepper motor project that involves a microcontroller needs a motor driver — an intermediate circuit that lets a low-power Arduino or ESP32 control a motor that draws hundreds of milliamps or even amps. Without a motor driver, you would burn out your microcontroller instantly. The four most popular motor driver options for makers in India are the L298N, L293D, L9110S, and TB6612FNG. This guide breaks down how each one works, when to use it, and how to wire it up.

Table of Contents

  • Why You Need a Motor Driver
  • The H-Bridge Principle
  • L298N Motor Driver
  • L293D Motor Driver IC
  • L9110S Motor Driver
  • TB6612FNG Motor Driver
  • Full Comparison Table
  • Wiring Each Driver to Arduino
  • Arduino Code Examples
  • Which Motor Driver to Choose?
  • FAQ

Why You Need a Motor Driver

An Arduino Uno can source at most 40mA per GPIO pin and 200mA total from all GPIO pins combined. A typical DC gearmotor draws 100–500mA, and a stepper motor coil draws 500mA–2A. Connecting a motor directly to an Arduino GPIO would cause the voltage to collapse, the pin driver to overheat, and potentially destroy the microcontroller permanently.

A motor driver solves this by acting as a power switch controlled by the microcontroller’s logic signal. It has its own power supply path (the motor supply) and only uses the GPIO signal to decide which transistors to turn on. The microcontroller never carries motor current — it only carries the tiny signal current needed to switch the driver.

Motor drivers also enable bidirectional control — running a motor forwards and backwards — through an H-bridge circuit. Simple transistor switches can only switch power on and off; H-bridge circuits can reverse polarity across the motor, enabling full directional control.

The H-Bridge Principle

An H-bridge is a circuit with four transistor switches arranged in an H shape around the motor load. Two switches connect the motor to positive supply, and two connect it to ground. By closing different pairs of switches, you can send current through the motor in either direction:

  • Forward: Close switch 1 (left high side) and switch 4 (right low side) — current flows left to right through motor
  • Reverse: Close switch 2 (right high side) and switch 3 (left low side) — current flows right to left through motor
  • Brake: Close both low-side switches — motor terminals both connected to ground, creating dynamic braking
  • Coast: Open all switches — motor spins freely with no load

PWM speed control is achieved by rapidly switching the enable line of the H-bridge on and off. At 50% duty cycle, the motor receives average half voltage and runs at roughly half speed. Motor driver ICs like the L298N and TB6612 have dedicated enable/PWM inputs for this purpose.

L298N Motor Driver

The L298N is the most popular motor driver module in the Arduino ecosystem. It is based on the ST L298N dual full H-bridge driver IC, mounted on a module with screw terminals, voltage regulator, and LED indicators. It has been the default motor driver for maker projects for over a decade.

Specifications:

  • Supply voltage: 5V to 46V motor supply
  • Output current: 2A per channel (4A peak), dual channel
  • Logic supply: 5V (from onboard 7805 regulator if motor supply is 6–46V)
  • PWM control for speed, direction pins for each channel
  • Built-in protection diodes
  • Onboard voltage regulator can supply 5V to Arduino (no separate USB needed if motor supply is 6–12V)

Main limitations:

  • Uses bipolar junction transistors (BJTs) internally — voltage drop of 2–3V across the driver at rated current, wasting significant power as heat
  • Large heatsink required for sustained loads above 1A
  • Efficiency drops to around 60–70% at typical loads — a 12V motor effectively sees 9–10V from an L298N module
  • The large module footprint is not ideal for compact designs

Best for: Learning, first Arduino motor projects, when you have a 12V power supply and do not need efficiency. Most beginner kits in India include an L298N module.

Recommended: L293D Motor Driver Shield for Arduino — Full Arduino shield form factor using the L293D IC. Stacks directly on Arduino Uno/Mega, controls 4 DC motors or 2 stepper motors. Great for robot chassis projects with standard gear motors.

L293D Motor Driver IC

The L293D is a classic 16-pin DIP integrated circuit from Texas Instruments that contains four half-H-bridge drivers — effectively two full H-bridges. It was the industry standard motor driver for educational and hobby projects throughout the 1990s and 2000s.

Specifications:

  • Supply voltage: 4.5V to 36V motor supply
  • Output current: 600mA per channel (1.2A peak), dual H-bridge (4 channels)
  • Built-in clamping diodes (the D in L293D)
  • Can drive two DC motors bidirectionally or one bipolar stepper motor
  • TTL-compatible logic inputs

Main limitations:

  • Maximum 600mA continuous per channel limits it to small motors only
  • Same BJT-based voltage drop issue as L298N — lower efficiency
  • Gets hot quickly at sustained current near its rating
  • Older technology superseded by more efficient alternatives

Best for: Small hobby DC motors (under 500mA), educational projects, projects where you already have L293D chips in your parts bin. The Arduino Motor Shield (official) uses the L293D.

L9110S Motor Driver

The L9110S (also written as L9110 or HG7881) is a compact two-channel motor driver module designed for small robots and toy-grade motors. Unlike the L298N and L293D which are large ICs, the L9110S module is a tiny PCB roughly 3cm x 2cm, making it excellent for compact builds.

Specifications:

  • Supply voltage: 2.5V to 12V
  • Output current: 800mA per channel continuous, dual channel
  • Direct PWM control inputs
  • Built-in protection diodes
  • Can control 2 DC motors or 1 stepper motor
  • Very low quiescent current (good for battery-powered projects)

Main limitations:

  • 800mA maximum limits it to small motors (toy gear motors, small N20 motors)
  • No separate enable pin — direction controlled entirely by IN1/IN2 logic levels
  • Less documentation and community support than L298N

Best for: Small wheeled robots with N20 or BO gear motors (typically 100–300mA), compact line-following robots, battery-powered projects where size and current draw matter.

Recommended: L9110S DC Stepper Motor Driver Board H-Bridge — Compact, low-cost dual-channel motor driver for small robots and RC vehicles. Handles up to 800mA per channel with built-in flyback diodes for motor protection.

TB6612FNG Motor Driver

The TB6612FNG from Toshiba is the modern, efficient replacement for both the L298N and L293D. It uses MOSFET transistors instead of bipolar junction transistors, resulting in dramatically lower voltage drop (0.5V vs 2–3V), higher efficiency, less heat generation, and a smaller package. It is the motor driver used in the popular Adafruit Motor Shield v2 and Sparkfun Motor Driver modules.

Specifications:

  • Supply voltage: 4.5V to 13.5V motor supply, 2.7V–5.5V logic supply
  • Output current: 1.2A per channel continuous, 3.2A peak, dual channel
  • MOSFET-based H-bridge — very low on-resistance (~0.5 ohm)
  • Standby mode for power saving
  • Separate PWMA/PWMB and direction inputs for independent speed control
  • Built-in short-circuit and thermal shutdown protection

Main limitations:

  • Maximum 13.5V motor supply — not suitable for 24V motors
  • 1.2A continuous per channel — adequate for small to medium motors but not heavy-duty loads
  • Smaller module means more careful wiring needed compared to L298N’s large screw terminals

Best for: Any project where efficiency and heat management matter, battery-powered robots, projects running on 5V or 9V power supplies, replacing L298N when heat is an issue.

Recommended: TB6612FNG Dual Motor Driver Module for Arduino — Modern MOSFET-based motor driver, far more efficient than L298N. No heatsink needed at normal loads. Perfect for 2-wheel drive robots, small conveyor systems, and battery-powered designs.

Full Comparison Table

Feature L298N L293D L9110S TB6612
Technology BJT H-bridge BJT H-bridge BJT H-bridge MOSFET H-bridge
Voltage range 5V – 46V 4.5V – 36V 2.5V – 12V 4.5V – 13.5V
Current per channel 2A continuous 600mA continuous 800mA continuous 1.2A continuous
Channels 2 2 (4 half-H) 2 2
Voltage drop 2–3V (high loss) 2–3V (high loss) ~1.5V ~0.5V (very low)
Efficiency 60–70% 60–70% 75–80% 90–95%
Heatsink needed? Yes (>1A load) Yes (>400mA) No No
Size (module) Large (43x43mm) Medium (shield) Very small (30x22mm) Small (30x20mm)
Standby mode No No No Yes
Thermal protection No No No Yes
Approx. price (India) Rs. 50–80 Rs. 80–120 Rs. 30–50 Rs. 80–150
Best use case High-voltage motors, learning Small motors, shields Tiny compact robots Efficient portable robots

Wiring Each Driver to Arduino

L298N to Arduino Uno:

L298N Module    Arduino Uno
ENA         --> Pin 10 (PWM, Motor A speed)
IN1         --> Pin 9  (Motor A direction)
IN2         --> Pin 8  (Motor A direction)
IN3         --> Pin 7  (Motor B direction)
IN4         --> Pin 6  (Motor B direction)
ENB         --> Pin 5  (PWM, Motor B speed)
GND         --> GND
+5V         --> 5V (if motor supply 6-12V, use onboard regulator)
12V         --> External 12V power supply positive
GND (power) --> External power supply GND (common with Arduino GND)

TB6612FNG to Arduino Uno:

TB6612      Arduino Uno
PWMA    --> Pin 10 (PWM speed control for Motor A)
AIN1    --> Pin 9  (Motor A direction bit 1)
AIN2    --> Pin 8  (Motor A direction bit 2)
STBY    --> Pin 7  (Standby - HIGH to enable driver)
BIN1    --> Pin 6  (Motor B direction bit 1)
BIN2    --> Pin 5  (Motor B direction bit 2)
PWMB    --> Pin 4  (PWM speed control for Motor B)
VCC     --> 3.3V or 5V (logic supply)
VM      --> Motor supply (4.5V to 13.5V)
GND     --> GND

Arduino Code Examples

L298N: Control two motors forward/reverse with speed:

// L298N Motor Driver - Two motor control
int ENA = 10; // Motor A PWM speed
int IN1 = 9;  // Motor A direction
int IN2 = 8;
int ENB = 5;  // Motor B PWM speed
int IN3 = 7;  // Motor B direction
int IN4 = 6;

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

void motorA_forward(int speed) {
  analogWrite(ENA, speed); // 0-255
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
}

void motorA_reverse(int speed) {
  analogWrite(ENA, speed);
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
}

void motorA_stop() {
  analogWrite(ENA, 0);
}

void loop() {
  motorA_forward(180); // ~70% speed
  delay(2000);
  motorA_stop();
  delay(500);
  motorA_reverse(180);
  delay(2000);
  motorA_stop();
  delay(500);
}

TB6612: Same control with standby management:

// TB6612FNG Motor Driver
int PWMA = 10;
int AIN1 = 9;
int AIN2 = 8;
int STBY = 7; // Standby pin - must be HIGH to run

void setup() {
  pinMode(PWMA, OUTPUT);
  pinMode(AIN1, OUTPUT);
  pinMode(AIN2, OUTPUT);
  pinMode(STBY, OUTPUT);
  digitalWrite(STBY, HIGH); // Enable the driver
}

void forward(int speed) {
  digitalWrite(AIN1, HIGH);
  digitalWrite(AIN2, LOW);
  analogWrite(PWMA, speed); // 0-255
}

void reverse(int speed) {
  digitalWrite(AIN1, LOW);
  digitalWrite(AIN2, HIGH);
  analogWrite(PWMA, speed);
}

void brake() {
  digitalWrite(AIN1, HIGH);
  digitalWrite(AIN2, HIGH);
  analogWrite(PWMA, 0);
}

void loop() {
  forward(200);
  delay(2000);
  brake();
  delay(500);
  reverse(200);
  delay(2000);
  brake();
  delay(500);
}

Which Motor Driver Should You Choose?

Choose L298N if: You have motors that require 12V–24V, are learning motor control for the first time, already have an L298N module, or need the onboard 5V regulator to simplify your power wiring.

Choose L293D (Shield) if: You want a plug-and-play solution that stacks on Arduino, you are running very small motors, or you need to drive a stepper motor with a ready-made library.

Choose L9110S if: Your robot uses small gear motors (BO motors, N20 motors), you need the smallest possible footprint, or you are building on a tight budget for a simple line-following or obstacle-avoiding robot.

Choose TB6612 if: You are serious about efficiency, running on battery power, dealing with overheating issues on an L298N project, or need built-in thermal protection. The TB6612 is simply the better motor driver in almost every way except voltage range — if your supply is under 13.5V, use it.

Frequently Asked Questions

Q: Why does my L298N module get so hot?

The L298N uses bipolar junction transistors that have a voltage drop of 2–3V. At 2A load, that is 4–6W of heat dissipated in the IC. At sustained loads above 1A, always attach the heatsink (included with most modules). If it still overheats, consider switching to the TB6612FNG which has ~10x lower on-resistance and generates a fraction of the heat.

Q: Can I use these drivers for stepper motors?

Yes, but with limitations. The L298N, L293D, and L9110S can all drive bipolar stepper motors by controlling the two coil pairs. However, they lack microstepping capability and current regulation, which are essential for smooth, quiet stepper operation. For dedicated stepper control, use an A4988, DRV8825, or TMC2209 stepper driver which include hardware current limiting and microstepping.

Q: What is the difference between ENA/ENB and IN1/IN2/IN3/IN4 on the L298N?

IN1/IN2 set the direction of Motor A (HIGH/LOW = forward, LOW/HIGH = reverse, both same = brake). ENA is the enable/speed control pin — connecting it HIGH runs the motor at full speed; a PWM signal on ENA controls speed from 0 to 100%. By default on most L298N modules, ENA and ENB are connected to 5V via a jumper — remove the jumper and connect a PWM pin to control speed.

Q: Can I control 4 motors with one L298N module?

No — the L298N has two channels, so it controls two motors. For 4 motors, use two L298N modules (sharing the same power supply and microcontroller), or use the L293D shield which also controls 4 motors. Alternatively, use two TB6612 modules for a more efficient solution.

Shop Motor Drivers at Zbotic.in

Find L298N, L293D, L9110S, TB6612, and more motor drivers in stock with fast delivery across India.

Browse Motors

Tags: Arduino, H-bridge, L293D, L298N, L9110S, motor driver, TB6612
Share Post
  • Facebook
  • Linkedin
  • Whatsapp
Best ESP32 Projects for IoT Be...
blog best esp32 projects for iot beginners 594568
blog lidar sensor guide how it works best modules and interfacing with arduino 594571
LiDAR Sensor Guide: How It Wor...

Related posts

Svg%3E
Read more

Gear Motor Guide: N20, JGB37, and Planetary Motors Compared

April 1, 2026 0
When your project needs more torque than a bare DC motor can provide, a gear motor is the answer. By... Continue reading
Svg%3E
Read more

Miniature Pump Hydroponics: Automated Nutrient Dosing System

April 1, 2026 0
Hydroponics grows plants in nutrient-rich water instead of soil, and automating the nutrient dosing process with peristaltic pumps and Arduino... Continue reading
Svg%3E
Read more

Drone Motor Testing: Thrust Stand Build and KV Measurement

April 1, 2026 0
If you are building a drone, selecting the right motor-propeller combination is critical for flight performance. A drone motor thrust... Continue reading
Svg%3E
Read more

Pump Selection Guide: Peristaltic, Submersible, and Diaphragm

April 1, 2026 0
When your Arduino project needs to move liquid — whether for automated plant watering, hydroponics, aquarium management, or a coffee... Continue reading
Svg%3E
Read more

Solenoid Guide: Door Locks, Valves, and Automation Projects

April 1, 2026 0
A solenoid is an electromechanical device that converts electrical energy into linear motion. When you energise the coil, a plunger... Continue reading

Add comment Cancel reply

Your email address will not be published. Required fields are marked

Facebook Twitter Instagram Pinterest Linkedin Youtube

Get the latest deals and more.

Download on Google Play Download on the App Store

Call us: 020 69134444 / 1800 209 0998

Monday - Saturday 09:30 AM - 06:00 PM
For Technical Supports Email: [email protected]
For Sales / Enquiries Email: [email protected]

  • My Account

    • Cart

    • Wishlist

    • Checkout

    • My Orders

    • Track Order

    • My Account

  • Information

    • FAQs

    • Blogs

    • Career

    • About Us

    • Contact Us

    • Payment Options

  • Policies

    • Privacy Policy

    • Terms & Conditions

    • GST Input Tax Credit

    • Shipping Return Policy

    • E-Waste Collection Points

    • Our Sitemap

© Zbotic.in is registered trademark of Moxie Supply Pvt Ltd – All Rights Reserved
Login
Use Phone Number
Use Email Address
Not a member yet? Register Now
Reset Password
Use Phone Number
Use Email Address
Register
Already a member? Login Now