Circuit Protection Monitoring

Hi Guys,

Back Story --> The other day, something chewed through one of the my power cables to a 12 volt light which unfortunately shorted out the whole system. To stop this happening again i made a power distribution board using a bunch of PTC's (one for each light) and some LED's to indicate the shorted channel. This got me thinking about monitoring each channel with the Arduino Board.

Actual Question --> How can i monitor the state of a power supply using an Arduino? I don't need to know the actual voltage, just whether it is Active or Shorted. Can i just use a transistor? (12v into the transistor, 5v out to a digital channel and check whether its HIGH/LOW?)

Thanks Heaps Guys, Alex

First, the easy-to-build method: use a ULN2004 (like a ULN2003, but for 9-15V logic) and a couple of 10K SIP resistor packs. On the input side, use the SIP to pull the inputs low. On the output, use it for pullups.

If any of your 12V supplies gets disconnected by its PTC, the input resistor will pull the corresponding pin low, and the output will go high.

Because of the pinout of the ULN2004, you can quickly build it on a piece of stripboard, or one of those "IC perfboards" with 3 pads per pin, just by inserting the SIPs next to the chip.

Alternatively, you can use a CD4049 or CD4050, which were designed to work as level-shifters between early CMOS circuits that sometimes ran off 9V or 15V and TTL. No need for an output pullup, but there's more wiring to do.


Hey Ran, please let me know if i miss altogether, i am completely out of my depth. i have draw up a circuit that i think is what you meant, i am i close?

Thanks Again, Alex

If the UNL1 is a darling driver then it would work except I would put a series resistor in line with the input of 10K. Otherwise you are going to get 1.4V on the input and that won't be enough to light up the LED. However I would simply go for a transistor like you said in the origional posting:- 5V - 10K - collector + arduino input emitter ground base 10K - 12V rail

Mike: the ULN2004 has an on-chip 10K base resistor.

I'd go with a discrete transistor for a single circuit, too, but I read the original question to mean that there were several "branches" to be monitored separately, so the ULN2004 becomes a cheap and easy way to put several transistors on the board.

And interesting question comes up, looking at the schematic: can the LED and its resistor be relied upon as a pull-down? Since the ULN2004's turn-on threshold is about 5V, it wouldn't matter if the input were only pulled down to 2V or so. But I've never looked into how LEDs act with really tiny currents, so I don't know whether the voltage drop would be the same as it is when it's lit.

Alex: yes, that's just what I was thinking about (assuming you're monitoring more than one circuit). Do you want separate signals to the Arduino for each circuit? Or would one signal saying "at least one branch is shorted" be preferable?


Hey Ran, The plan is to monitor about 8 channels so using the ULN2004 becomes an easy solution. It's interesting what you said about the LED as a pull-down, I have ordered a couple of the ic's so i'll try it out and let you guys now how it goes.

Thanks again guys, Alex