A Darlington transistor array integrates multiple high-gain Darlington pairs into a single IC package, serving as a robust bridge between low-voltage microcontroller logic (3.3V/5V) and high-current inductive loads up to 500mA per channel. The ULN2003A (7-channel) and ULN2803A (8-channel) are the undisputed safe defaults for 5V systems, featuring built-in base resistors and flyback diodes. If you need to switch relays, solenoids, or unipolar stepper motors without frying your GPIO pins, this is the component you reach for.
Unlike discrete MOSFETs that require careful gate-drive planning, these arrays are designed for direct-logic interfacing. However, their high saturation voltage and thermal limits mean you must calculate power dissipation carefully. Below is the complete bench-to-jobsite guide for selecting, wiring, and testing these workhorse ICs.
Safe Default Part Numbers and Ratings
When sourcing a Darlington transistor array, stick to the proven industry standards. The 'A' revision (e.g., ULN2003A) indicates updated thermal and electrical characteristics over the original 1970s designs. Below are the safe defaults you should keep in your component bins.
| Part Number | Channels | Logic Compatibility | Max Ic (per ch) | Vce(sat) @ 250mA | Package Power Limit |
|---|---|---|---|---|---|
| ULN2003A (TI/ST) | 7 | 5V TTL / CMOS | 500 mA | 1.1V (typ) | ~2.5W (DIP-16) |
| ULN2803A | 8 | 5V TTL / CMOS | 500 mA | 1.1V (typ) | ~2.5W (DIP-18) |
| TD62003APG (Toshiba) | 7 | 5V TTL / CMOS | 500 mA | 1.0V (typ) | ~2.5W (DIP-16) |
| UDN2981 (Source Driver) | 8 | 5V Logic | 500 mA | N/A (High Side) | ~2.5W |
Pinout, Internal Symbol, and Operation Regions
The standard ULN2003A comes in a 16-pin DIP package. Understanding the internal schematic is critical for troubleshooting and knowing why external components are (or aren't) needed.
16-Pin DIP Pinout Description
- Pins 1-7 (IN1 to IN7): Logic inputs. Internally connected to a 2.7kΩ series base resistor.
- Pin 8 (GND): Ground reference for the internal logic and emitters of the output transistors.
- Pins 10-16 (OUT1 to OUT7): Open-collector outputs. These sink current to ground when the corresponding input is HIGH.
- Pin 9 (COM): Common cathode for the internal flyback diodes. Must be tied to the positive supply of inductive loads.
Internal Symbol per Channel
Each channel consists of two NPN transistors in a Darlington configuration. The input signal passes through a 2.7kΩ resistor into the base of the first transistor (Q1). The emitter of Q1 drives the base of the second, larger transistor (Q2). A clamping diode is wired with its anode at the output (Q2 collector) and its cathode at the COM pin.
Operation Regions Table
Darlington arrays are strictly used as switches, not linear amplifiers. Here is how they behave across different input states:
| Region | Input Voltage (Vin) | Output State | Vce(sat) / Vout | Power Dissipation |
|---|---|---|---|---|
| Cutoff (OFF) | < 1.5V | High Impedance (Open) | Vout = Load VCC | Negligible |
| Active (Linear) | 1.5V - 2.4V | Partially Conducting | 2.0V - 10.0V | EXTREME (Avoid) |
| Saturation (ON) | > 2.4V (up to 5V) | Low Impedance (Closed) | 0.9V - 1.6V | Moderate (Ic × Vce) |
How to Bias and Select the Right Array
Biasing a Darlington transistor array is remarkably simple because the manufacturer has already integrated the base resistors. However, selecting the right array requires understanding logic thresholds and thermal derating.
Biasing for 5V vs 3.3V Logic
The internal 2.7kΩ resistor is optimized for 5V logic. When you apply 5V to the input, the voltage drop across the two base-emitter junctions is roughly 1.4V (0.7V each). This leaves 3.6V across the 2.7kΩ resistor, yielding a base current of about 1.3mA. With a typical DC current gain (hFE) of 1000, this provides more than enough drive to saturate the output at 500mA.
If you are using 3.3V logic (like an ESP32 or Raspberry Pi), the base current drops to roughly 0.7mA. This is still sufficient to saturate the transistor for loads up to 250mA, but for heavier loads, the Vce(sat) will increase, generating more heat. For 3.3V systems driving heavy loads, consider a logic-level MOSFET array (like the TPL7407L) instead.
Selection Criteria: The Thermal Trap
According to Texas Instruments' ULN2003A datasheet, the maximum allowable power dissipation for a standard DIP package at 25°C ambient is roughly 2.5W. To select the right array, calculate your total package dissipation:
P_total = (Number of ON channels) × (Load Current) × (Vce_sat)
If you are driving four 300mA relays simultaneously: 4 × 0.3A × 1.2V = 1.44W. This is safely under the 2.5W limit. If you need to drive seven 500mA loads at once, you must use multiple ICs or add a heatsink, though DIP packages are notoriously difficult to cool effectively.
Complete Application Circuit: Driving 12V Solenoids
Let's build a reliable 4-channel 12V solenoid driver controlled by an Arduino Uno. This circuit handles the inductive kickback internally and provides clean switching.
Components Required
- 1x ULN2003A (DIP-16)
- 4x 12V DC Solenoids (rated at 250mA each)
- 1x 12V 2A DC Power Supply
- 1x 100µF Electrolytic Capacitor (bulk decoupling)
- 1x 0.1µF Ceramic Capacitor (high-frequency decoupling)
- Arduino Uno (or compatible 5V microcontroller)
Wiring Steps
- Power the IC: Connect the 12V PSU positive rail to a breadboard power rail. Connect the PSU ground to the breadboard ground rail. Connect ULN2003A Pin 8 (GND) to the ground rail.
- Decouple the Supply: Place the 100µF electrolytic capacitor and 0.1µF ceramic capacitor in parallel across the 12V and GND rails near the IC to suppress voltage spikes when the solenoids fire.
- Wire the COM Pin: Connect ULN2003A Pin 9 (COM) directly to the 12V positive rail. This is critical; it routes the inductive flyback energy back to the supply instead of frying the silicon.
- Connect the Loads: Connect the positive terminal of all four solenoids to the 12V rail. Connect the negative terminals of the solenoids to ULN2003A Pins 16, 15, 14, and 13 (OUT1 through OUT4).
- Connect Logic Inputs: Run jumper wires from Arduino digital pins 8, 9, 10, and 11 to ULN2003A Pins 1, 2, 3, and 4 (IN1 through IN4).
- Verify and Test: Power the 12V supply first, then power the Arduino. Set an Arduino GPIO HIGH to energize the corresponding solenoid. Measure the voltage at the output pin; it should read ~12V when OFF, and ~1.1V when ON.
Failure Modes and Multimeter Testing
Darlington arrays rarely fail without a reason. Understanding how they die helps you test them accurately on the bench. As noted in All About Circuits' guide on Darlington pairs, the primary vulnerability is the high saturation voltage leading to thermal runaway.
Common Failure Modes
- Thermal Overload: Exceeding the 2.5W package limit causes the silicon die to overheat, melting the bond wires or cracking the die. The IC will read as an open circuit.
- Inductive Kickback (Missing COM connection): If the COM pin is left floating while switching inductive loads, the collapsing magnetic field generates hundreds of volts, punching through the collector-emitter junction (secondary breakdown). The output will short to ground permanently.
- Overcurrent Short: Connecting a load that draws more than 500mA (or a dead short to VCC) will melt the internal emitter metallization.
Step-by-Step Multimeter Testing (Diode Mode)
You can verify the health of a ULN2003A without powering it on. Remove the IC from the circuit and set your digital multimeter (DMM) to Diode Test mode.
- Test the Flyback Diodes: Place the Red probe on Pin 9 (COM) and the Black probe on Pin 16 (OUT1). The DMM should read between 0.600V and 0.800V. Reverse the probes (Black on COM, Red on OUT1); it should read 'OL' (Open Loop). Repeat for all output pins.
- Test the Base-Emitter Junctions: Place the Red probe on Pin 1 (IN1) and the Black probe on Pin 8 (GND). Because there are two base-emitter junctions in series, you should read roughly 1.2V to 1.5V. If it reads 'OL', the internal bond wire is blown. If it reads near 0.0V, the input is shorted.
- Check for Output Shorts: Set the DMM to continuity/resistance mode. Measure between Pin 8 (GND) and any Output pin. It should read 'OL'. If it reads near 0Ω, the output transistor has suffered secondary breakdown and the IC is trash.
Frequently Asked Questions
Can I use a ULN2003 Darlington transistor array with 3.3V logic like the ESP32?
Yes, but with caveats. The ULN2003A will turn on with 3.3V logic because the 1.4V threshold of the two base-emitter junctions is easily met. However, the lower base drive current means the output transistor won't saturate as deeply. For loads under 200mA, it works perfectly. For loads approaching 500mA, the Vce(sat) will rise significantly, causing excess heat. For high-current 3.3V applications, swap to a logic-level MOSFET array or use a level shifter to drive the ULN2003A with 5V.
Do I need external flyback diodes when using a Darlington array for relays?
No, as long as you wire the COM pin (Pin 9) to the positive supply rail of the relay coils. The ULN2003A has internal clamp diodes specifically designed to absorb the inductive kickback of relays and solenoids. Adding external diodes is redundant unless you are switching extremely large contactors where the internal diode's surge current rating (typically 500mA to 1A peak) might be exceeded.
Why is my Darlington transistor array getting too hot to touch?
Darlington pairs inherently suffer from a high collector-emitter saturation voltage (Vce_sat), typically around 1.1V to 1.6V. Unlike a MOSFET which might drop 0.05V, the Darlington array dissipates power as heat equal to Load_Current × Vce_sat. If you are pulling 300mA through a channel, it generates 0.3A × 1.2V = 0.36W of heat per channel. If multiple channels are active, the cumulative heat quickly approaches the 2.5W package limit. To fix this, reduce the load current, switch fewer channels simultaneously, or transition to a low-Rds(on) MOSFET driver.
What is the switching speed limit of a Darlington transistor array?
Darlington arrays are slow. The typical turn-on time is around 1µs, but the turn-off time can be 2µs to 5µs because there is no active mechanism to pull charge out of the base of the second transistor. This limits practical PWM frequencies to roughly 1kHz - 5kHz. If you attempt to run 20kHz PWM for motor speed control, the switching losses will overheat the IC and the waveform will distort. For high-frequency PWM, use MOSFETs.






