I am trying to build an EMF detector or non-contact voltage detector based on an Arduino to be used as a prop. The detected EMF value should be read from an analog input and based on the level, 1-5 LEDs should light up. I found two circuit designs which didn't look too complicated.

The first "circuit" basically consists of a floating pin / wire which is pulled to ground with a high value resistor (1 or 3.3 MΩ).

Basic EMF detector circuit

However this design didn't work for me, I was able to detect turned on lamps, extension cords somehow. But the circuit wasn't very reliable. Often it triggered once and stopped after that or turned on randomly. I tried various resistor values and "antenna" types like copper plates, long wires and coils.

I had much better results with the following circuit. First I didn't use the Arduino at all and it worked perfectly, although the range was very limited. I also didn't use the 1 MΩ and 100 kΩ resistors and I don't really understand the purpose of them. Limit the current to avoid accidental triggering?

Transistor voltage detector

Now, instead of turning on a LED with the second circuit, I want to somehow measure the current at the third transistor. My first idea was to remove the LED and measure the voltage at the 220 Ω resistor in reference to ground. This didn't work at all, I always measured 5 V, which makes sense I guess. Do I need two resistors instead to create a voltage divider?

  • 2
    \$\begingroup\$ It doesn't help to show us circuits that you did not use. Draw a schematic of the actual circuit you built, with values for resistors and part numbers for transistors. Show exactly how it is connected to the Arduino. \$\endgroup\$ Jul 23, 2021 at 20:57
  • 1
    \$\begingroup\$ Also, be aware that you are detecting electrical noise which will be mainly mains frequency with random noise superimposed on it. Feeding this into an ADC will give you numbers that jump all over the place. You won't get a nice reading off "EMF = 2.03 today". The LED circuit works because your eyes can't see the flicker due to the eye's persistence of vision. \$\endgroup\$
    – Transistor
    Jul 24, 2021 at 8:49
  • \$\begingroup\$ @ElliotAlderson That is my question. I don't know how to connect the Arduino to the second circuit I posted. \$\endgroup\$ Jul 26, 2021 at 20:49
  • \$\begingroup\$ @Transistor Thank you for your explanation. I don't really need an accurate reading, distinguishing between no noise and maybe a low and high noise value would be enough for my purpose. \$\endgroup\$ Jul 26, 2021 at 20:53

1 Answer 1


The purpose of the high value resistors is essential to this circuit. Together with the transistor stages, they provide a very high amplification of the signal that is received on the copper strip.

You do not need to remove the LED. You should be able to measure the voltage of the node between the resistor and the LED with an Arduino. But you would need a 5V instead of 9V supply, because the Arduino ADC can only handle voltages up to 5V.

  • \$\begingroup\$ What kind of resistor should I use when I don't need the LED? Can I measure the voltage between a 1 kΩ resistor for example and the third transistor? \$\endgroup\$ Jul 26, 2021 at 20:47
  • 1
    \$\begingroup\$ The LED acts like a constant voltage source with 2.1V. If you remove that, and at the same time change the supply from 9 to 5 Volts, then you might keep the 220 ohms or adjust it slighly, e.g. to 270 ohms. Your measurement nodes for the Arduino will be GND and the node between last transistor and 270ohms. \$\endgroup\$ Jul 27, 2021 at 15:44
  • \$\begingroup\$ If the transistor circuit and the Arduino share the same GND and 5 V supply voltage, can I simply connect an analog input to the node between the last transistor and the resistor? The measured voltage should be in reference to the common GND, right? \$\endgroup\$ Jul 27, 2021 at 19:26
  • 1
    \$\begingroup\$ Yes, exactly. This is the way to go. \$\endgroup\$ Jul 27, 2021 at 19: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.