ULN2003A Relay Driver: Saturation Voltage, Flyback, and Thermal Budget
Seven Darlington pairs in one package look like seven free relay drivers. They are not: each channel drops 0.9–1.6 V, and the package has one thermal budget for all of them.
Quick Answer
- Drop: VCE(sat) is 0.9 V typical at 100 mA, 1.2 V at 350 mA, up to 1.6 V at 350 mA worst case.
- Thermal: SOIC-16 is 88.6 °C/W. Seven channels at 80 mA dissipate 0.5 W → about +45 K.
- Current: 500 mA per channel is a silicon rating; at 350 mA only two channels fit in the thermal budget at once.
- Drive: the 2.7 kΩ input works from 3.3 V (0.7 mA) and is marginal at 1.8 V (0.15 mA).
- Flyback: COM must connect to the coil supply, or the internal clamp diodes have nowhere to dump the spike.
1. What the part is
| Parameter | Value | What it means in practice |
|---|---|---|
| Channels | 7 Darlington pairs | Common emitter, open collector |
| Output voltage | 50 V max | Relays up to 48 V are fine |
| Current | 500 mA per channel | Thermal limit arrives far earlier |
| Input resistor | 2.7 kΩ (ULN2003A) | TTL and 5 V CMOS compatible |
| Clamp diodes | Per channel, common cathode | Requires COM wired to coil supply |
| Junction limit | 150 °C absolute, 125 °C recommended | Use 125 °C as the design target |
2. The saturation voltage is the design constraint
The ULN2003A is available in PDIP, SOIC, SOP, TSSOP and SOT packages, all 16 pins with the same pinout. The package changes only the thermal resistance — the die and the Darlington drop are the same. That is convenient for layout, and dangerous for thermal assumptions: a SOT-16 replacement for a PDIP-16 is not a drop-in from a heat perspective.
The 2.7 kΩ input is what makes it "logic compatible". The ULN2004A uses 10.5 kΩ for CMOS at 6–15 V, and the ULN2002A adds a Zener for 14–25 V PMOS drive. Mixing them up is a common BOM error: the 2004A needs more input voltage, the 2002A expects a higher drive level.
The Darlington output is two VBE drops plus the driver's saturation, and the datasheet gives three current points:
That drop appears directly in series with the load. For a 5 V relay drawing 80 mA:
Vcoil = 5.0 - 0.9 = 4.1 V Pchannel = 0.9 x 0.08 = 0.072 W
A relay specified for 5 V typically has a must-operate voltage around 3.5–3.75 V, so 4.1 V works. But check the must-operate number, not the nominal coil voltage: a relay with a 4.2 V threshold will chatter on a 5 V rail through this part.
Darlington versus MOSFET drop, in numbers
The reason people still use the ULN2003A is convenience: one part, seven channels, built-in clamps, resistor inputs. The reason people replace it is the drop.
| Load current | ULN2003A drop | ULN power | Logic-level FET (RDS 0.1 Ω) |
|---|---|---|---|
| 80 mA | 0.9 V | 0.072 W | 0.008 V / 0.6 mW |
| 200 mA | 1.0 V | 0.20 W | 0.02 V / 4 mW |
| 350 mA | 1.2 V | 0.42 W | 0.035 V / 12 mW |
At relay currents the difference is tolerable; at solenoid or motor currents it decides the topology. A 350 mA channel at 1.2 V loses 0.42 W in a package with a 0.96 W budget — two such channels and the chip is at its thermal limit, while the same load through a 0.1 Ω FET would dissipate 12 mW.
3. Thermal: one budget for seven channels
The package thermal resistance is the second constraint, and it is shared:
| Package | RθJA | Budget at 40 °C (to 125 °C) |
|---|---|---|
| PDIP-16 | 66.7 °C/W | 1.27 W |
| SOIC-16 | 88.6 °C/W | 0.96 W |
| SOP-16 | 95.0 °C/W | 0.89 W |
| TSSOP-16 | 114.1 °C/W | 0.75 W |
| SOT-16 | 123.1 °C/W | 0.69 W |
7 channels x 80 mA x 0.9 V = 0.50 W SOIC-16: 0.50 x 88.6 = 44 K -> Tj = 84 C at 40 C ambient SOT-16: 0.50 x 123.1 = 62 K -> Tj = 102 C
At 80 mA, all seven channels can run at once, even in SOT-16. The picture changes at higher current:
350 mA, VCE 1.2 V: 0.42 W per channel SOIC-16 budget 0.96 W -> 2 channels, not 7
Two derating habits make the table useful in practice. First, use the highest ambient the product will see inside its enclosure, not the lab temperature — a sealed box adds 15–20 °C. Second, if the outputs switch continuously (relays held on), treat the dissipation as steady state; if they are pulsed, use the transient thermal impedance curve instead, which allows higher peak power for short duty cycles.
4. Driving the input from 3.3 V
The 2.7 kΩ series resistor sets the input current, which sets the base drive:
Iin ≈ (Vlogic - 1.4 V) / 2.7 kOhm 3.3 V: 0.70 mA 5.0 V: 1.33 mA 1.8 V: 0.15 mA
A Darlington with roughly 1000 hFE turns 0.7 mA into ample collector current. At 1.8 V the input current falls to 0.15 mA, which may not saturate a 500 mA load — the transistor works, but in the linear region, and it heats.
Two practical notes. First, the input is a resistor to a Darlington base, so a 3.3 V GPIO sees about 0.7 mA — well within any MCU pin. Second, the input has no pull-down; if the driving pin floats during reset, the output can turn on. Add a 10 kΩ pull-down at the input for anything that must stay off.
Switching speed is not the strength
The ULN2003A turns on and off in the low microseconds, not nanoseconds. That is fine for relays and lamps, and wrong for PWM brightness control or stepper microstepping at high rates.
If you need PWM, the options are a logic-level MOSFET (fast, but no clamp diode) or a dedicated driver IC. Driving a 20 kHz PWM into a ULN2003A produces a slow, lossy transition and audible noise from the load.
5. The COM pin and inductive loads
Each output has a clamp diode with its cathode on the COM pin. The diodes only work if COM connects to the same supply as the load:
The clamp voltage is the supply plus one diode drop, so a 12 V coil is clamped near 13.2 V — safe for a 50 V output. The current circulates through the coil and diode until it decays; the driver sees only the coil's resistance drop.
If COM goes to a 5 V rail while the coil runs from 12 V, the diode is reverse-biased by the fault and does nothing. This is a common wiring mistake on multi-rail boards, and the symptom is a driver that fails only on the channel with the 12 V relay.
Mixed supplies on one package
The clamp diodes share a common cathode, so every channel's COM must be able to source the current from its own coil supply. If one package drives both 5 V and 12 V relays, COM cannot be connected to both rails through the internal diodes.
Two acceptable solutions: use separate packages per rail, or add external clamp diodes per channel and leave COM unconnected (or tie it to the highest rail and accept that the lower-rail channels no longer clamp internally). The first is simpler and cheaper than debugging a destroyed driver.
This is also why relay boards often group outputs by coil voltage rather than by function: the package is a shared thermal and electrical domain, not seven independent drivers.
6. What fails in the field
Case 1: relay chatter on a 5 V rail
The relay pulls in, the coil heats, resistance rises, the voltage across the coil falls, and the armature drops out. The driver is innocent; the 0.9 V drop removed the margin. Check the relay's must-operate and must-release voltages, not just "5 V coil".
Case 2: "the ULN gets hot with only two relays"
Two 12 V relays at 120 mA each: 2 × 0.12 × 1.0 = 0.24 W — not hot. The usual real cause is a third channel driving a load that was not accounted for, or a solenoid at 400–500 mA on one channel (0.6–0.8 W alone). Measure per-channel current instead of assuming the relay datasheet.
Case 3: driver dies when the relay releases
COM left floating, or the clamp diode not connected to the coil supply. The coil's stored energy finds a path through the Darlington, and the 50 V rating is exceeded on the first release. This is the most common destructive failure of this part.
Case 4: stepper driver that "works but cooks"
A unipolar stepper driven through ULN2003A at 400 mA per phase is a common hobby design. Four phases at 1.2 V drop is 1.9 W — double the SOIC budget. The board runs, the motor turns, and the driver fails in summer. The fix is either a lower current, a heatsink with the DIP package, or a dedicated stepper driver.
That case is worth remembering because it passes every functional test: the outputs switch, the motor steps, nothing looks wrong until the ambient rises.
7. Alternatives by requirement
| Option | Fits when | Avoid when |
|---|---|---|
| ULN2003A | 5–12 V relays at 50–150 mA, 3.3–5 V logic | >250 mA per channel; 1.8 V logic |
| ULN2803A | Same, but 8 channels needed | Same thermal limits per channel |
| Logic-level MOSFET | >0.5 A, or low drop needed | No per-channel clamp; add diodes |
| Solid-state relay | AC loads, long life, no contact wear | Cost; leakage current; heat sinking |
Who should not use the ULN2003A: designs with 1.8 V logic; any channel above 250 mA continuous in a sealed box; loads that need a low-side drop under 0.5 V; and boards where COM cannot reach the coil supply.
If you need more thermal headroom in the same footprint, the PDIP version doubles the budget by halving RθJA. If the board is sealed, treat the SOIC number as optimistic and derate by 20 %.
Our PDIP-16 version is stocked for through-hole builds; the SOIC-16 version is the volume part. For date-code and authenticity checks on drivers, see our traceability process.
8. Verification
Bench checklist
| Check | Pass | If it fails |
|---|---|---|
| VCE(sat) at working current | ≤ 1.1 V at 100 mA | Check base drive and input voltage |
| Coil voltage | Above must-operate with margin | Use a lower-threshold relay or a FET |
| Package temperature, 20 min | Stable, < 90 °C | Reduce channels or change package |
| Collector spike at turn-off | Clamped near Vs + 1.2 V | COM not connected to coil supply |
| Input high level at the pin | ≥ 2.4 V (for 3.3 V logic) | Add pull-down only, not pull-up |
- Measure VCE(sat) at the actual load current and compute per-channel power.
- Add all active channels and check against the package budget for the worst-case ambient.
- Scope the collector at turn-off: with COM connected, the spike should clamp near Vs + 1.2 V.
- Check the relay's must-operate voltage against Vcoil = Vs − VCE(sat).
- Confirm the logic high at the input pin during operation, not just at the MCU pin.
For the low-side MOSFET version of the same problem, see the 2N7002 gate-drive guide; for the supply side of a relay board, the TP4056 thermal arithmetic uses the same method.
9. Design review in three questions
Worked example: four-channel 12 V relay board
Four 12 V relays at 90 mA, 3.3 V logic, SOIC-16, sealed enclosure at 55 °C ambient:
P per channel = 90 mA x 0.95 V = 0.086 W Total = 4 x 0.086 = 0.34 W dT = 0.34 x 88.6 = 30 K Tj = 55 + 30 = 85 C (limit 125 C) Coil sees = 12 - 0.95 = 11.05 V Verdict: comfortable. COM to 12 V, one 10 kOhm pull-down per input.
Now swap in 5 V relays at 90 mA on the same board, keeping the 12 V supply and adding a 5 V regulator: coil voltage becomes 4.05 V, and the relay's must-operate must be below that. Thermally nothing changes, which is why this mistake survives testing and fails in the field.
- What is the sum of I × VCE(sat) across all active channels? Compare it with the package budget in Table 2.
- What voltage does the relay actually see? Subtract the saturation drop before checking must-operate.
- Where does the coil current go at turn-off? If COM is not on the coil supply, the answer is "through the driver".
10. FAQ
Can the ULN2003A drive a 12 V relay from a 3.3 V GPIO?
Yes. The input resistor draws about 0.7 mA at 3.3 V, which is enough to saturate the Darlington for relay currents in the 50–150 mA range. The output side sees 12 V, which is within the 50 V rating.
Why is my relay only getting 4.1 V from a 5 V supply?
Because the driver drops 0.9 V typical at 80 mA. If the relay's must-operate voltage is close to 4.2 V, it will be marginal. Either use a 5 V relay with a lower threshold or a MOSFET with a lower drop.
How many channels can I use at once?
At 80 mA, all seven, in any package. At 200 mA the SOIC-16 budget allows about four; at 350 mA only two. Compute the sum, not the per-channel rating.
Do I need external flyback diodes?
No, if COM is connected to the coil supply. If COM cannot be connected, or the load is not a simple coil, add external diodes.
Does it work with 1.8 V logic?
Marginally. The input current falls to about 0.15 mA, which may not saturate a heavy load. Use a level shifter or a logic-level MOSFET instead.
Why does the output turn on during reset?
The input is a resistor to the base with no internal pull-down. A floating MCU pin can turn the channel on. Add a 10 kΩ pull-down at each input that must stay off.
Can I parallel two channels for more current?
Not recommended. The Darlingtons do not share current evenly, and each channel has its own VCE(sat) and thermal path. Use a MOSFET or a driver rated for the current.
Is the ULN2003A the same as the ULN2003V12?
No. The V12 variant is a lower-voltage, lower-drop device designed for 3.3 V and 5 V relay drive. Check the input resistor and output ratings before substituting either way.
11. Sources
- Texas Instruments, ULN200x, ULQ200x High-Voltage, High-Current Darlington Transistor Arrays — VCE(sat) points, 2.7 kΩ input, RθJA per package, 125 °C design limit.
- Texas Instruments, ULN2003V12 datasheet — 7-channel relay and inductive load sink driver reference.
- Electronics StackExchange, Controlling a 12 V relay from 3.3 V logic.
- Electronics StackExchange, Relay contact sticking and driver issue.
Sizing a relay driver?
Send the coil voltage, coil current and how many channels run at once. We will compute the drop and the junction temperature before you layout.