I'm trying to figure out how to notify an Arduino controller that there's been a momentary interruption to a 120V AC circuit that is normally powered. When a spring-loaded switch is pressed, it opens the AC circuit until the switch is released (typically about 0.1 to 0.3 seconds in duration). I don't care about measuring the current, I just need to know if the circuit has power or not.

At first I was thinking a relay would be appropriate, but it seems like most relays are designed to let low voltages control higher voltages, not the other way around.

Using a CT may be a possibility but it's a somewhat cramped area, so it may be difficult to fit a CT in and get it wrapped around the line I need to watch.

What other options might I have?

  • \$\begingroup\$ You could try a basic capacitive coupling sensor, there are many basic circuits around that use e.g. a CMOS gate for wireless mains detection. Here's an example. Rather than the coil mentioned a wire/plate along the cable will do. \$\endgroup\$
    – Oli Glaser
    Feb 6, 2013 at 23:31
  • 1
    \$\begingroup\$ Similar to this: electronics.stackexchange.com/questions/9351/… I'd probably go the with optocoupler approach, personally. \$\endgroup\$
    – HikeOnPast
    Feb 7, 2013 at 2:46
  • \$\begingroup\$ @HikeOnPast: This had to get put on hold for a while but I ended up running with a hall effect sensor as a result of your recommendation. If you care to submit your comment above as an answer, I'll accept it. Regardless, thanks for the help! \$\endgroup\$
    – jon
    Jun 27, 2013 at 16:51

1 Answer 1


Get a 5V transformer, put a bridge rectifier on it, connect it to a digital input, add a 10k resistor in series and a 5V zener diode across to protect the input from overvoltage as transformer will probably give you greater than 5V peaks.

In arduino firmware set up an external interrupt on said digital input. You should be getting interrupts 100 or 120 times per second. On every interrupt record a timestamp. In the main loop check if last recorded timestamp is older than 0.1 second.

  • \$\begingroup\$ You could just AC filter the stepped down value and either put that to an A2D channel. Or when low enough it regsiters as off on a digital input. \$\endgroup\$
    – mpflaga
    Feb 6, 2013 at 23:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.