

The L293D is a Quadruple Half-H Driver IC manufactured by Texas Instruments. It is designed to provide bidirectional current control for DC motors and other inductive loads. The IC contains four independent half-H drivers, which can be used to control the direction and speed of up to two DC motors or a single stepper motor. The L293D is widely used in robotics, motor control systems, and other applications requiring efficient power switching.








The L293D is a robust and versatile 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) |
| Peak Output Current | 1.2A |
| Power Dissipation | 5W (maximum) |
| Operating Temperature Range | -40°C to 150°C |
| Input Logic Levels | Low: 0V to 1.5V, High: 2.3V to 7V |
| Output Voltage Drop | 1.4V (typical) |
The L293D is a 16-pin IC with the following pinout:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | Enable 1,2 | Enables output for channels 1 and 2 (active high) |
| 2 | Input 1 | Logic input for channel 1 |
| 3 | Output 1 | Output for channel 1 |
| 4 | GND | Ground (common for logic and motor supply) |
| 5 | GND | Ground (common for logic and motor supply) |
| 6 | Output 2 | Output for channel 2 |
| 7 | Input 2 | Logic input for channel 2 |
| 8 | Vcc2 (Motor) | Motor supply voltage (4.5V to 36V) |
| 9 | Enable 3,4 | Enables output for channels 3 and 4 (active high) |
| 10 | Input 3 | Logic input for channel 3 |
| 11 | Output 3 | Output for channel 3 |
| 12 | GND | Ground (common for logic and motor supply) |
| 13 | GND | Ground (common for logic and motor supply) |
| 14 | Output 4 | Output for channel 4 |
| 15 | Input 4 | Logic input for channel 4 |
| 16 | Vcc1 (Logic) | 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 channels 1 and 2
const int input1 = 8; // Input 1 for channel 1
const int input2 = 7; // Input 2 for channel 2
void setup() {
// Set pin modes
pinMode(enablePin, OUTPUT);
pinMode(input1, OUTPUT);
pinMode(input2, OUTPUT);
// Enable the motor driver
digitalWrite(enablePin, HIGH);
}
void loop() {
// Rotate motor in one direction
digitalWrite(input1, HIGH); // Set Input 1 high
digitalWrite(input2, LOW); // Set Input 2 low
delay(2000); // Run motor for 2 seconds
// Stop the motor
digitalWrite(input1, LOW); // Set Input 1 low
digitalWrite(input2, LOW); // Set Input 2 low
delay(1000); // Wait for 1 second
// Rotate motor in the opposite direction
digitalWrite(input1, LOW); // Set Input 1 low
digitalWrite(input2, HIGH); // Set Input 2 high
delay(2000); // Run motor for 2 seconds
// Stop the motor
digitalWrite(input1, LOW); // Set Input 1 low
digitalWrite(input2, LOW); // Set Input 2 low
delay(1000); // Wait for 1 second
}
Motor Not Running:
Overheating:
Erratic Motor Behavior:
Q: Can the L293D drive stepper motors?
A: Yes, the L293D can drive stepper motors by controlling the sequence of logic inputs. Each pair of half-H drivers can control one coil of the stepper motor.
Q: What is the difference between Vcc1 and Vcc2?
A: Vcc1 powers the logic circuitry of the IC (4.5V to 7V), while Vcc2 powers the motors or inductive loads (4.5V to 36V).
Q: Can I use the L293D with a 3.3V microcontroller?
A: The L293D requires a minimum logic voltage of 4.5V. You may need a level shifter to interface it with a 3.3V microcontroller.
Q: How many motors can the L293D control?
A: The L293D can control up to two DC motors or one stepper motor.