

The L293D is a dual H-Bridge motor driver IC manufactured by H BRIGE. It is designed to control the speed, torque, and direction of DC motors by varying the voltage and current supplied to the motor. This component is widely used in robotics, automation systems, and other applications requiring precise motor control. The L293D can drive two DC motors simultaneously, making it a versatile choice for projects involving multiple motors.








The L293D is a robust and reliable motor driver IC with the following key specifications:
| Parameter | Value |
|---|---|
| Supply Voltage (Vcc1) | 4.5V to 36V |
| Logic Voltage (Vcc2) | 4.5V to 7V |
| Output Current (per channel) | 600mA (continuous), 1.2A (peak) |
| Number of Channels | 2 (dual H-Bridge) |
| Control Logic Levels | Low: 0V, High: 5V |
| Operating Temperature | -40°C to +150°C |
| Internal Diodes | Yes (for back EMF protection) |
The L293D IC comes in a 16-pin DIP (Dual Inline Package). Below is the pin configuration:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | Enable 1,2 | Enables motor 1 (High = Enabled, Low = Disabled) |
| 2 | Input 1 | Logic input to control motor 1 direction (connected to microcontroller) |
| 3 | Output 1 | Output to motor 1 terminal |
| 4 | GND | Ground |
| 5 | GND | Ground |
| 6 | Output 2 | Output to motor 1 terminal |
| 7 | Input 2 | Logic input to control motor 1 direction (connected to microcontroller) |
| 8 | Vcc2 | Motor supply voltage (4.5V to 36V) |
| 9 | Enable 3,4 | Enables motor 2 (High = Enabled, Low = Disabled) |
| 10 | Input 3 | Logic input to control motor 2 direction (connected to microcontroller) |
| 11 | Output 3 | Output to motor 2 terminal |
| 12 | GND | Ground |
| 13 | GND | Ground |
| 14 | Output 4 | Output to motor 2 terminal |
| 15 | Input 4 | Logic input to control motor 2 direction (connected to microcontroller) |
| 16 | Vcc1 | Logic supply voltage (4.5V to 7V) |
Below is an example of how to control a DC motor using the L293D and an Arduino UNO:
// Define L293D pins connected to Arduino
const int enablePin = 9; // Enable pin for motor 1
const int input1Pin = 7; // Input 1 for motor 1
const int input2Pin = 8; // Input 2 for motor 1
void setup() {
// Set pin modes
pinMode(enablePin, OUTPUT);
pinMode(input1Pin, OUTPUT);
pinMode(input2Pin, OUTPUT);
// Initialize motor in stopped state
digitalWrite(enablePin, LOW); // Disable motor
digitalWrite(input1Pin, LOW); // Set input 1 to LOW
digitalWrite(input2Pin, LOW); // Set input 2 to LOW
}
void loop() {
// Rotate motor in one direction
digitalWrite(enablePin, HIGH); // Enable motor
digitalWrite(input1Pin, HIGH); // Set input 1 to HIGH
digitalWrite(input2Pin, LOW); // Set input 2 to LOW
delay(2000); // Run motor for 2 seconds
// Stop motor
digitalWrite(enablePin, LOW); // Disable motor
delay(1000); // Wait for 1 second
// Rotate motor in the opposite direction
digitalWrite(enablePin, HIGH); // Enable motor
digitalWrite(input1Pin, LOW); // Set input 1 to LOW
digitalWrite(input2Pin, HIGH); // Set input 2 to HIGH
delay(2000); // Run motor for 2 seconds
// Stop motor
digitalWrite(enablePin, LOW); // Disable motor
delay(1000); // Wait for 1 second
}
Motor Not Running:
Motor Running in the Wrong Direction:
Overheating:
No Response from the IC:
Q: Can the L293D drive stepper motors?
A: Yes, the L293D can drive stepper motors by controlling the sequence of inputs to the H-Bridge channels.
Q: Can I use the L293D with a 3.3V microcontroller?
A: The L293D requires a minimum logic voltage of 4.5V. Use a level shifter or a 5V microcontroller for compatibility.
Q: How many motors can the L293D control?
A: The L293D can control up to two DC motors or one stepper motor.