The ULN2003A is a seven-channel Darlington transistor array that turns weak logic pins into 500mA open-collector switches. Pins 1–7 are the inputs, pins 10–16 the outputs, and pins 8 and 9 — ground and COM — are the two that get wired wrong.
Here's the trap we keep flagging (2025–2026): the repair threads keep showing the same two failures — COM left floating so relays click with no clamp protection, and boards that "work" with the ground pin disconnected. The EEVblog thread is titled exactly that: works when not grounded.
| Pin | Name | Type | Description |
|---|---|---|---|
| 1–7 | IN1–IN7 (1B–7B) | Input | 2.7kΩ series base resistor per channel, built for direct 5V TTL/CMOS drive. Logic high turns the channel on. |
| 8 | GND (E) | Power | Common emitter of all seven Darlingtons. Joins the logic ground and the load-supply ground. |
| 9 | COM | Clamp | Common cathode of the seven freewheeling diodes. Tie to the positive rail of the load supply. |
| 10–16 | OUT1–OUT7 (7C–1C) | Output | Open collectors: 500mA each, 50V max. Pin 16 = OUT1 (driven by pin 1); pin 10 = OUT7 (driven by pin 7). |
Two things the pin table hides. First, the channels mirror: input 1 sits on pin 1 and its output on pin 16, input 7 on pin 7 and its output on pin 10. Second, the outputs invert: a logic high sinks the output low.
The COM pin only matters with inductive loads. Tie it to the positive supply rail of whatever you're switching — +12V for relays, +5V for a 28BYJ-48 — and the internal freewheeling diodes catch the coil's kickback.
Leave COM floating and the diodes have no path home; the spike lands on the output pin instead. The Parallax forum puts it plainly: the COM pin must sit on the supply side of the load.
Pin 8 is the whole part's return. The EEVblog thread "works when not grounded" shows why floating it fails: the pin rises through the output path and the Darlington half-conducts — passing bench tests, failing in the field. Solder it to both grounds.
The ratings are easy to misread. 500mA is per channel (600mA peak per ST), and 50V is the output ceiling. The real limit is thermal: at 350mA the saturation drop is about 1.2V, so one channel burns 0.42W — fine. All seven? Almost 3W in one 16-pin package.
3.3V logic drives it, with margin you can read off the datasheet. The on-state input voltage is 2.4V at 200mA of collector current and 3.0V at 300mA — both under 3.3V — and the input pulls about 0.93mA. That's why ESP32 tutorials and Pi builds run 28BYJ-48 boards from GPIO.
Inputs need no resistors. The 2.7kΩ base resistor is inside the silicon; an MCU pin connects straight to IN1. That built-in resistor is also why a 12V PLC output needs nothing added — the input draws 1–1.45mA at 12V per the datasheet.
Parallel for inrush, not precision. The ST datasheet lists paralleled outputs among the features, and the solenoid thread on Electrical Engineering Stack Exchange asks exactly this for coil inrush. Sharing is uneven — saturation drops differ between channels — so parallel for peak headroom, not continuous doubling.
A: Pins 1–7 are inputs IN1–IN7, pin 8 is ground, pin 9 is COM, and pins 10–16 are outputs OUT7–OUT1. Inputs sit opposite their outputs: IN1 (pin 1) drives OUT1 (pin 16), IN7 (pin 7) drives OUT7 (pin 10).
A: Yes for inductive loads — tie COM to the positive rail of the load supply (+12V for relays). That rail is the return path for the seven built-in freewheeling diodes. The Arduino Forum relay thread says it straight: if the relays share one supply, connect COM to that supply. The Parallax forum's version: COM must sit on the supply side of the load. Leave it floating and the coil's kickback has nowhere to go but the output pin.
A: It doesn't really work — the floating ground pin rises through the conducting channel and the part half-conducts. That's exactly the behaviour in the EEVblog thread "Strange ULN2003A behaviour - works when not grounded?!" Wire pin 8 to both the logic ground and the load-supply ground; a "works on the bench" board fails in the field.
A: Yes — the datasheet's on-state input voltage is 2.4V at 200mA and 3.0V at 300mA, both below 3.3V, and the input draws about 0.93mA. That's why ESP32 tutorials and Pi builds run 28BYJ-48 boards from GPIO; toward 300mA the margin gets thin, so check the load.
A: Yes — the outputs are open-collector inverters: a logic high at the input sinks the output low and completes the load circuit to ground. The All About Circuits thread frames it as negative logic: "a 1 on the base = a 0 on the collector." Design around it, don't fight it.
A: Yes for peaks — the ST datasheet lists paralleled outputs as a feature, and the solenoid thread on Electrical Engineering Stack Exchange asks exactly this for coil inrush. Sharing is uneven because saturation drops differ between channels, so parallel for surge headroom, not a precise doubling of continuous current.
A: Channels and pins — the 2003A is seven channels in a 16-pin body, the 2803A eight channels in an 18-pin body. Electrically they're the same family: 500mA and 50V per channel, the same 2.7kΩ inputs, same COM-diode scheme. Pick by channel count.
A: Check the phase order first — the usual wiring is IN1-blue, IN2-pink, IN3-yellow, IN4-orange. Then check the library: guides note the built-in Arduino Stepper library doesn't suit the ULN2003 board's half-step sequence; use the four-step sequence or AccelStepper. A buzz is almost always wrong sequence, not a dead part.





