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

L293D Motor Driver IC: Pinout, Circuit & H-Bridge Explained

L293D Motor Driver IC: Pinout, Circuit & H-Bridge Explained

March 11, 2026 /Posted byJayesh Jain / 0

The L293D motor driver IC is one of the most taught, most used, and most misunderstood components in the beginner electronics world. Every Arduino motor shield, every robotics kit, and virtually every introductory course on motor control features this little 16-pin DIP chip. And for good reason — it lets any microcontroller drive motors that draw far more current than the microcontroller’s GPIO pins can safely supply.

In this complete guide, we explain the H-bridge theory behind the L293D, walk through every pin of the IC, show you how to wire it for two DC motors and for a stepper motor, provide working Arduino code, and point out the most common wiring mistakes that destroy the chip.

Table of Contents

  1. What Is the L293D?
  2. H-Bridge Theory Explained
  3. L293D Pinout – All 16 Pins
  4. Wiring Two DC Motors
  5. Driving a Stepper Motor
  6. Arduino Code Examples
  7. L293D vs L298N
  8. Common Mistakes & Fixes
  9. Recommended Products
  10. FAQ

1. What Is the L293D?

The L293D is a quadruple half-H driver IC manufactured by STMicroelectronics and Texas Instruments. In plain language: it contains four independent transistor half-bridge circuits, which can be combined in pairs to form two full H-bridges — allowing bidirectional control of two DC motors, or combined for one stepper motor.

Key specifications:

  • Supply voltage (logic, VSS): 4.5 V – 36 V
  • Supply voltage (motor, VS): 4.5 V – 36 V
  • Output current per channel: 600 mA continuous, 1.2 A peak
  • Total package dissipation: 4 W (DIP-16, no heatsink)
  • Built-in flyback diodes: Yes (the "D" in L293D)
  • Logic input levels: TTL and CMOS compatible

The "D" suffix is critical. The L293 (without D) has no internal flyback diodes and requires external diodes to protect against inductive voltage spikes from motor coils. Always use the L293D for motor driving.

28BYJ-48 Stepper Motor

28BYJ-48 5V Stepper Motor

The classic starter stepper motor — pairs perfectly with the L293D for learning stepper control with Arduino. Low cost, widely available.

View on Zbotic

2. H-Bridge Theory Explained

To spin a DC motor in both directions, you need to reverse the voltage across its terminals. An H-bridge circuit does exactly this using four switches (transistors in practice) arranged in an H shape.

Imagine the motor in the middle of the letter H, and each of the four corners is a switch:

  • Forward: Close top-left and bottom-right switches → current flows left to right through motor
  • Reverse: Close top-right and bottom-left switches → current flows right to left through motor
  • Brake: Close both bottom switches → motor terminals shorted, motor brakes
  • Coast: All switches open → motor free-spins

The one thing you must NEVER do is close both switches on the same side (top-left + bottom-left) simultaneously. This shorts VCC to GND directly — a shoot-through fault that destroys the IC instantly. The L293D’s internal logic prevents this when input pins are driven correctly.

Speed control is achieved by PWM on the Enable pin. The L293D can switch at up to 5 kHz, making it compatible with any standard Arduino PWM frequency.

3. L293D Pinout – All 16 Pins

The L293D comes in a 16-pin DIP or SO package. The pinout is symmetrical — the left half controls Motor 1, the right half controls Motor 2.

Pin Name Description
1 Enable 1,2 Enable pin for channels 1 & 2 (Motor 1). HIGH = enabled. Connect to PWM for speed control.
2 Input 1 Direction control for Output 1. Connect to Arduino digital pin.
3 Output 1 Motor terminal A (Motor 1 +)
4, 5 GND Ground. Also acts as heat sink — connect both to GND and a copper pour or heatsink.
6 Output 2 Motor terminal B (Motor 1 –)
7 Input 2 Direction control for Output 2
8 VSS Motor power supply (4.5–36 V). This powers the motor side.
9 Enable 3,4 Enable pin for channels 3 & 4 (Motor 2). Same as pin 1 but for Motor 2.
10 Input 3 Direction control for Output 3
11 Output 3 Motor terminal A (Motor 2 +)
12, 13 GND Ground (heat sink side 2)
14 Output 4 Motor terminal B (Motor 2 –)
15 Input 4 Direction control for Output 4
16 VCC Logic supply voltage (4.5–36V). Powers the internal logic. Connect to 5V from Arduino.

Important: VCC (pin 16) is the logic supply for the IC’s internal gates. VSS (pin 8) is the power supply that goes to the motor. These can be different voltages — logic at 5 V, motor at 12 V, for example.

4. Wiring Two DC Motors

Here is the standard wiring for controlling two DC motors with an Arduino Uno and L293D:

  • Pin 16 (VCC) → Arduino 5V
  • Pin 8 (VSS) → External motor power supply (e.g., 9V battery or 12V adapter) positive
  • Pins 4, 5, 12, 13 (GND) → Common ground (Arduino + power supply ground)
  • Pin 1 (EN1,2) → Arduino digital pin 5 (PWM for Motor 1 speed)
  • Pin 2 (IN1) → Arduino digital pin 4
  • Pin 7 (IN2) → Arduino digital pin 3
  • Pins 3, 6 (OUT1, OUT2) → Motor 1 terminals
  • Pin 9 (EN3,4) → Arduino digital pin 10 (PWM for Motor 2 speed)
  • Pin 10 (IN3) → Arduino digital pin 9
  • Pin 15 (IN4) → Arduino digital pin 8
  • Pins 11, 14 (OUT3, OUT4) → Motor 2 terminals

Logic truth table for motor control:

EN IN1 IN2 Motor Action
HIGH HIGH LOW Forward
HIGH LOW HIGH Reverse
HIGH HIGH HIGH Brake
LOW X X Motor off (coast)

5. Driving a Stepper Motor

The L293D can drive a unipolar stepper motor like the 28BYJ-48 by using all four output channels. Connect the motor’s four coil wires to OUT1, OUT2, OUT3, OUT4 and tie the motor’s common wire(s) to the motor supply voltage (VSS, pin 8).

For the 28BYJ-48 specifically:

  • Red wire → VSS (5V motor supply)
  • Orange wire → OUT1 (pin 3)
  • Yellow wire → OUT2 (pin 6)
  • Pink wire → OUT3 (pin 11)
  • Blue wire → OUT4 (pin 14)

For full-step mode, energise the coils in sequence: 1010 → 0110 → 0101 → 1001 → 1010 (repeat).

For half-step mode (smoother, more positions): 1000 → 1010 → 0010 → 0110 → 0100 → 0101 → 0001 → 1001 → repeat.

6. Arduino Code Examples

Two DC Motors — Forward and Reverse

// L293D Motor Driver — Two DC Motors
// Motor 1: EN=5, IN1=4, IN2=3 | Motor 2: EN=10, IN3=9, IN4=8

#define EN1 5
#define IN1 4
#define IN2 3
#define EN2 10
#define IN3 9
#define IN4 8

void setup() {
  pinMode(EN1, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
  pinMode(EN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
}

void motorForward(int en, int in1, int in2, int spd) {
  analogWrite(en, spd);  // 0-255 for speed
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
}

void motorReverse(int en, int in1, int in2, int spd) {
  analogWrite(en, spd);
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
}

void motorStop(int en) {
  analogWrite(en, 0);
}

void loop() {
  motorForward(EN1, IN1, IN2, 200);   // Motor 1 forward, 78% speed
  motorForward(EN2, IN3, IN4, 200);   // Motor 2 forward
  delay(2000);
  motorReverse(EN1, IN1, IN2, 150);   // Motor 1 reverse, 59% speed
  motorReverse(EN2, IN3, IN4, 150);
  delay(2000);
  motorStop(EN1); motorStop(EN2);
  delay(1000);
}

28BYJ-48 Stepper Motor

#include <Stepper.h>
// 28BYJ-48: 2048 steps per revolution (in half-step mode)
const int stepsPerRevolution = 2048;
Stepper myStepper(stepsPerRevolution, 4, 6, 5, 7);

void setup() {
  myStepper.setSpeed(10); // RPM
}
void loop() {
  myStepper.step(2048);  // One full clockwise revolution
  delay(500);
  myStepper.step(-2048); // One full anticlockwise revolution
  delay(500);
}

7. L293D vs L298N

The L298N is the big brother of the L293D. Here is how they compare:

Feature L293D L298N
Max current per channel 600 mA / 1.2A peak 2A / 3A peak
Flyback diodes Built-in (D suffix) External (on module)
Voltage drop ~1.4 V per side ~2 V per side
Package DIP-16 (IC only) Module (with heatsink)
Best for Small motors, steppers up to 600 mA Larger DC motors, 2A stepper motors

For the 28BYJ-48 stepper and small DC gear motors, the L293D is ideal. For NEMA 17 stepper motors or motors drawing over 700 mA, use the L298N module or a dedicated stepper driver like the A4988 or TMC2208.

8. Common Mistakes & Fixes

Mistake 1: Connecting motor power and logic power to the same 5V rail

The Arduino’s 5V/3.3V pins can supply around 500 mA total. Even a single small DC motor can spike to 1A at stall. Result: Arduino resets, brownout, or permanent damage. Fix: use a separate power supply for the motor side (VSS, pin 8). Share only the ground.

Mistake 2: Forgetting to connect the Enable pins

If EN1,2 (pin 1) or EN3,4 (pin 9) are left floating or tied LOW, the corresponding outputs are permanently disabled regardless of the IN pins. Tie them HIGH for always-on, or connect to a PWM pin for speed control.

Mistake 3: Using L293D for NEMA 17 or large motors

The L293D’s 600 mA continuous rating is insufficient for most NEMA 17 motors (typically 1–2A). The IC will overheat and fail. Use an A4988 or TMC2208 instead.

Mistake 4: Not adding decoupling capacitors

Motor switching creates voltage spikes. Add a 100 µF electrolytic and a 100 nF ceramic capacitor between VSS (pin 8) and GND, close to the IC. This prevents logic glitches on the Arduino.

Mistake 5: Using L293 without the D

Without built-in flyback diodes, the L293 requires 8 external Schottky diodes (one per output, one per supply rail) to prevent voltage spikes from destroying the IC. This is rarely done correctly by beginners. Always specify L293D.

A4988 Stepper Motor Driver

A4988 Stepper Motor Driver Controller Board

When your project grows beyond the L293D’s 600 mA, the A4988 handles up to 2A for NEMA 17 motors with microstepping and adjustable current limiting.

View on Zbotic

9. Recommended Products

28BYJ-48 Stepper Motor

28BYJ-48 5V Stepper Motor

The ideal learning stepper motor to pair with an L293D — 5V operation, 28 teeth gear train, 64:1 reduction for precise position control.

View on Zbotic

25GA-370 12V Gear Motor

25GA-370 12V 12RPM DC Reducer Gear Motor

A compact geared DC motor perfect for robotics projects — runs at 12V and draws under 600mA running current, compatible with the L293D.

View on Zbotic

10. Frequently Asked Questions

Q: Can L293D control a BLDC motor?

No. Brushless DC motors require a 3-phase ESC controller with precise commutation timing. The L293D is designed only for brushed DC motors (2-wire), stepper motors, and solenoids. For BLDC motors, you need a dedicated ESC module.

Q: The L293D gets very hot. Is this normal?

Some warmth is normal due to the ~1.4V dropout voltage multiplied by current. If the chip is untouchably hot within seconds, the motor is drawing too much current (exceeding 600 mA), the chip is wired incorrectly, or there is a shoot-through condition. Reduce motor load, add a heatsink to the GND pins, or switch to the L298N for higher-current applications.

Q: What voltage can I use for the motor supply?

The motor supply (VSS, pin 8) can be anywhere from 4.5V to 36V, independent of the logic supply. For 5V motors like the 28BYJ-48, connect both VCC and VSS to 5V. For 12V motors, use 12V for VSS and 5V for VCC (logic).

Q: Can I use 3.3V logic (ESP32/Raspberry Pi) with L293D?

The L293D’s input high threshold is typically 2.3V, so 3.3V logic works reliably. Be aware that 3.3V systems often have lower current output capabilities — use logic-level shifting or buffer ICs if driving multiple pins simultaneously causes issues.

Q: Can I parallel two channels for more current?

Yes. If you only need one motor, you can parallel both H-bridges of the L293D (OUT1 with OUT3, OUT2 with OUT4 — same direction, same enable) to get up to 1.2A continuous. This requires careful symmetrical wiring to share current evenly.

Q: Does the L293D have PWM speed control?

Yes — connect the Enable pins to PWM outputs on your microcontroller. The duty cycle of the PWM signal controls the average voltage across the motor, which controls speed. The direction (IN1/IN2) pins remain static while the Enable pin is PWM-modulated.

Ready to Build Your Motor Circuit?

Shop motors, drivers, and electronics components at Zbotic — fast delivery across India for hobbyists, students and makers.

Shop Motor Drivers

Tags: DC motor driver, H-bridge motor driver, l293d arduino, l293d motor driver ic, stepper motor driver ic
Share Post
  • Facebook
  • Linkedin
  • Whatsapp
Low Cost Motor Driver Alternat...
blog low cost motor driver alternatives to l298n under 200 rupees 596780
blog 12v bo motor specifications speed current torque data india 596785
12V BO Motor Specifications: S...

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