The L293DD motor driver is a classic dual full-bridge integrated circuit capable of driving two DC motors bidirectionally or one 4-phase stepper motor. Rated for 600mA continuous and 1.2A peak per channel across a 4.5V to 36V motor supply, it remains a staple in low-power robotics and DIY automation. The 'DD' suffix specifically denotes the SOIC-16 surface-mount package variant (often manufactured by STMicroelectronics), while the more common 'D' or 'N' suffixes refer to through-hole DIP-16 packages. Crucially, the 'D' in the part number indicates built-in flyback clamp diodes, saving you from having to wire external protection diodes across your motor terminals.

However, the L293DD is not a universal solution. Its bipolar junction transistor (BJT) H-bridge architecture introduces a significant voltage drop that beginners frequently miscalculate, leading to underpowered motors and overheated silicon. This guide breaks down exactly which motors fit this driver, how to wire it, and how to size your loads to avoid thermal shutdown.

Motor Compatibility: What the L293DD Can (and Cannot) Drive

A common mistake in embedded prototyping is treating all motor types as interchangeable loads. An H-bridge driver like the L293DD is designed specifically to reverse polarity and modulate voltage. It cannot generate the 3-phase commutation required for brushless motors, nor can it output the precise 50Hz pulse-width signals required by RC servos. Below is a breakdown of which motor profiles actually fit the L293DD's capabilities.

Motor Type Torque Curve Profile Control Needs Typical Cost L293DD Fit?
Brushed DC Flat torque until base speed, then drops PWM for speed, H-bridge for direction $2 - $12 Excellent (if <600mA)
Unipolar Stepper (e.g., 28BYJ-48) High holding torque, drops sharply at high RPM 4 sequenced high-side switches $3 - $6 Good (ULN2003 is cheaper/better)
Bipolar Stepper (e.g., NEMA 17) Consistent torque across low/mid RPM Dual H-bridge with sequenced logic $10 - $25 Poor (Most NEMA 17s exceed 1A)
RC Servo High torque at low speeds, positional 50Hz PWM signal (1-2ms pulse) $5 - $15 Incompatible (No H-bridge needed)
BLDC (Outrunner/Inrunner) High efficiency, flat torque curve 3-phase ESC, back-EMF sensing $20+ Incompatible (Requires 3-phase)

For DC motor control fundamentals, the L293DD is ideal for small toy motors, conveyor belts, and differential drive robot chassis using 3V to 12V brushed motors. If you are trying to drive a standard NEMA 17 bipolar stepper motor (which typically requires 1.5A to 2A per phase), the L293DD will immediately hit its current limit and thermally shut down. For those applications, you need a chopper driver like the A4988 or DRV8825.

Pro Tip: The Flyback Diode Advantage
When an inductive load like a DC motor is switched off, the collapsing magnetic field generates a reverse voltage spike that can destroy transistors. Because the L293DD includes internal clamp diodes, you do not need to solder external 1N4007 diodes across the output pins. If you are using the base L293 (without the 'D'), external diodes are strictly mandatory.

L293DD Pinout and Terminal Identification

Wiring the L293DD requires careful attention to its dual power supply architecture. The IC separates the logic voltage (which powers the internal AND gates and level shifters) from the motor voltage (which powers the output H-bridges). This allows you to run a 5V microcontroller on the logic side while driving a 24V motor on the output side.

Pin Number Symbol Function Wiring Destination
11,2ENEnable Channel 1MCU PWM pin (or VCC1 for always-on)
21AInput 1MCU Digital Pin
31YOutput 1Motor 1 Terminal A
4, 5, 12, 13GNDGround / HeatsinkCommon Ground (MCU + Motor Supply)
62YOutput 2Motor 1 Terminal B
72AInput 2MCU Digital Pin
8VCC2Motor Supply VoltagePositive terminal of Motor Battery/PSU
93,4ENEnable Channel 2MCU PWM pin (or VCC1 for always-on)
103AInput 3MCU Digital Pin
113YOutput 3Motor 2 Terminal A (or Stepper Coil)
144YOutput 4Motor 2 Terminal B (or Stepper Coil)
154AInput 4MCU Digital Pin
16VCC1Logic Supply Voltage5V from MCU (Must be 4.5V - 7V)

The most critical wiring detail on the L293DD is the ground plane. Pins 4, 5, 12, and 13 are all internally tied together and serve a dual purpose: they provide the electrical return path for the motor current, and they act as the primary thermal heatsink for the IC. When designing a PCB or wiring on perfboard, you must connect all four of these pins to a large copper pour or a heavy-gauge ground wire. Leaving even one of these ground pins floating will severely cripple the chip's ability to dissipate heat, leading to premature thermal shutdown.

Sizing Rules, Thermal Limits, and a Worked Load Example

The Texas Instruments L293 Datasheet lists the absolute maximum continuous current at 600mA per channel. However, designing a circuit to run at absolute maximum ratings is a recipe for failure.

The Sizing Rule of Thumb: For continuous operation without an active heatsink or forced air cooling, derate the L293DD to 60% of its maximum continuous rating. This means your target continuous load should not exceed 360mA per channel.

To understand why, we have to look at the physics of the BJT H-bridge. Unlike modern MOSFET-based drivers (like the DRV8871) which have an on-resistance ($R_{DS(on)}$) measured in milliohms, the L293DD uses bipolar transistors. These transistors have a fixed saturation voltage drop ($V_{CE(sat)}$). According to the STMicroelectronics L293 Specifications, the combined voltage drop across the high-side and low-side transistors is typically 1.4V, and can be as high as 2.0V at 1A.

Worked Load Example: 12V DC Gearmotor

Let's size a 12V nominal brushed DC gearmotor with the following specifications:

  • No-load current: 120mA
  • Loaded running current: 450mA
  • Stall current: 1.8A

1. Can the L293DD handle the running current?
The running current is 450mA. This is below the 600mA absolute max, but it exceeds our 360mA safe continuous derating rule. The chip will run, but it will get hot.

2. What voltage actually reaches the motor?
At 450mA, the BJT voltage drop is approximately 1.6V.
Motor Voltage = Supply Voltage - BJT Drop
Motor Voltage = 12V - 1.6V = 10.4V
Your 12V motor is only receiving 10.4V, which means it will run roughly 13% slower than its rated no-load speed.

3. How much heat is generated in the IC?
Power Dissipation = Voltage Drop × Current
Power = 1.6V × 0.45A = 0.72 Watts
The SOIC-16 package has a junction-to-ambient thermal resistance ($\theta_{JA}$) of roughly 80°C/W. A 0.72W dissipation causes a temperature rise of 57.6°C above ambient. In a 25°C room, the silicon junction will sit at roughly 82°C. This is safe (the thermal shutdown triggers around 150°C), but the chip will be too hot to touch. If you drive two such motors simultaneously, the combined 1.44W dissipation will push the junction temperature past 140°C, dangerously close to thermal shutdown.

4. What about the stall current?
The 1.8A stall current exceeds the 1.2A peak limit of the driver. If the motor mechanically jams, the L293DD's internal current limiting and thermal shutdown will trip, cutting power to protect the silicon. However, repeated stalling will degrade the IC over time. Always ensure your mechanical design prevents hard stalls, or add a fast-blow fuse on the VCC2 line.

Failure Signatures: Diagnosing Hum, Overheat, and Stall

When an L293DD circuit misbehaves, the symptoms usually manifest in three distinct ways. Understanding these signatures will save you hours of debugging with a multimeter.

1. The Audible Hum (Whining or Clicking)

If your motor emits a high-pitched whine or a low clicking sound without rotating, you are likely dealing with a PWM frequency issue or static friction.

  • PWM Frequency Too Low: If you are driving the Enable pins with a PWM signal below 15kHz, the motor coils will physically vibrate at the switching frequency, creating an audible whine. Fix: Increase your microcontroller's PWM frequency to at least 20kHz to push it above human hearing.
  • Static Friction Stall: If the PWM duty cycle is too low (e.g., 10%), the average voltage might be enough to energize the coils but not enough to overcome the motor's static friction (stiction). The motor hums but doesn't turn. Fix: Implement a 'kickstart' routine in your code: apply 100% duty cycle for 50 milliseconds to break stiction, then drop down to your desired lower PWM speed.

2. Overheat and Intermittent Shutdown

If your robot runs perfectly for two minutes, suddenly stops, and then starts working again five minutes later, you are triggering the L293DD's internal thermal shutdown protection.

  • Cause: You are pulling more than the 360mA derated continuous current, and the SOIC-16 package cannot shed the heat fast enough. Alternatively, you failed to connect all four central ground pins to a sufficient copper plane.
  • Fix: Measure the actual running current with a multimeter in series. If it exceeds 400mA, you must either upgrade to a MOSFET-based driver (like the TB6612FNG, which handles 1.2A continuous with a fraction of the voltage drop) or add a physical heatsink to the SOIC-16 package.

3. Stall Under Mechanical Load

The motor spins freely on your workbench, but the moment you attach wheels or a mechanical arm, it bogs down and stalls, even though your power supply is rated for high amperage.

  • Cause: This is the BJT voltage drop penalty in action. As the mechanical load increases, the motor draws more current. As current increases, the $V_{CE(sat)}$ across the L293DD's internal transistors also increases. At high loads, the voltage drop might reach 2.5V or more. If you are powering the VCC2 pin with a 6V battery pack, a 2.5V drop leaves only 3.5V for the motor—far below the threshold needed to generate torque under load.
  • Fix: Increase your VCC2 supply voltage to compensate for the drop. If your motor is rated for 6V, run it through the L293DD at 9V. The 2V to 3V drop across the driver will bring the actual voltage at the motor terminals right back into the 6V sweet spot under load.

By respecting the thermal limits, accounting for the inherent BJT voltage drop, and wiring the ground plane correctly, the L293DD remains a highly reliable, forgiving driver for small-scale DC and unipolar stepper applications.