Strange ULN2003A behaviour - works when not grounded?! - Page 1
Forum section: electronics / projects

author: daxliniere
author_rank: Regular Contributor
timestamp: July 10, 2025, 03:48:33 pm
content: Hi everyone,I was trouble-shooting an audio switching circuit that has an Arduino driving several 12vDC relays via a ULN2003A IC. I was getting extraneous noise all of a sudden and during the process of bug-hunting, I tried everything that made sense to no avail. Then I desperately turned to trying the things thatdidn'tmake sense and in that process I lifted the GND and VCC pins on the two ULN2003A ICs.When I plugged in the device for testing, to my surprise I discovered the relays all still work!How is this even possible?I understand that the common (VCC) pin doesn'tneedto be connected as its just for the flyback diodes, but no ground path for the emitters?? If I had some complicated circuit, I could guess that perhaps the electrons are finding their way to ground via some circuitous path, but it is literally Arduino MEGA2560 pin -> base on ULN2003A -> relay -> +12v.Obviously it's best practice to have all pins connected, but I'd really love to know how this is possible. I'm happy to run any tests that you propose.All the best,Dax.

author: Ian.M
author_rank: Super Contributor
timestamp: July 10, 2025, 04:18:10 pm
content: See that diode clamping the input so it cant go (much) negative of Gnd?Your ATmega2560 must have *enough* outputs set low connected to the ULN2003A that it can sink the relay coil current for whichever output(s) are set high. This is a *BAD* idea that may blow your '2560 as the abs. max current per I/O pin is only 40mA and there is no guarantee the ground current is shared well between the low outputs.

author: jwet
author_rank: Frequent Contributor
timestamp: July 10, 2025, 04:23:54 pm
content: Stop- you're going to burn up your Arduino. These are called "sneak circuits" and show up especially in things with multiple supplies.There is one path visible if you look at the schematic of the ULN2003. If you drive the Arduino output high, it will drive the darlington, the ground terminal of the chip when disconnected will rise up until it gets on diode above the high output of the arduino. One side of the relay will be at plus 12 and the bottom will be at about 5v, this is 7v across the relay, if the 12 is a bit high it will be more. The only problem is the relay current is flowing through the driver and then though Arduino. Arduino outputs can drive 20 mA easily but can drive 40 mA on the verge of burning up.CMOS is famous for this. It can run off the current from inputs through protection diodes without supplies. There is a story of the first power up of the ARM chip at Acorn/BBC Micro in the 80 when the Vcc rail was left off accidentally. When Icc to the processor was measured, it appeared to be drawing no power, it was driven by all the inputs or'ed together. It all works unit all the inputs go to zero at the same time and "Vcc" disappears.I guess we were typing at the same time. Agree with Ian- he is more correct too.

author: daxliniere
author_rank: Regular Contributor
timestamp: July 10, 2025, 05:07:37 pm
content: Thanks @Ian.M and @jwet! I figured it was something sneaky, but wouldn't have guessed that's what it's been called!Because it was a bit of an anomaly, I did make sure to only have the device powered up for short bursts. And I think I got lucky as only 1 relay at a time is ever on, so it was probably (short-term) safe.Fascinating story about the ARM chip - I bet they were amazed at the efficiency until they realised the problem.

author: ozcar
author_rank: Frequent Contributor
timestamp: July 10, 2025, 11:06:06 pm
content: I'm reminded of a (non-graphic) video display board I made for a 6809 system over 40 years ago!My hand made PCB, laid out using the likes of Alfac, omitted to ground a 74LS373 8-bit latch. It worked. Well, for some characters, but some displayed as rubbish. It turned out it was data dependent, basically on how many bits were high vs how many low.