You can only just see it in the photo in the Github link you posted, there’s just a single resistor in the primary circuit. By everyone’s reckoning, this is a dangerous thing to do as you’re relying on a single component that for my money might be rated for your 120 V, almost certainly isn’t good for my 254 V maximum. everyone else uses multiple resistors in series, so that even if one fails to a low value or a short circuit, there’s no immediate danger. We use a ZMPT101B in the emonVs (for use with the emonTx3 and emonPi2) and this is the circuit we use:

It’s designed for any voltage up to 254 V (our statutory maximum), and gives an output good for a 0.333 V rms (1 V peak-peak) input, and as it runs at a much higher current than the module, it gives a much lower phase error.

For you, it would run at approx. 2 mA, so you’d need a 150 Ω resistor for R9 in order to get 150 mV rms (a little under 0.5 V peak - peak). You can adjust the burden resistor value within limits (< 200 Ω) to suit the ADC ranges available to you. I wouldn’t worry about not using the full range of the ADC input - this is far more important for current because the current range is 0 - maximum, whereas the voltage is essentially constant, varying only ±10% from the design value. (You probably have better resolution on the voltage at half the full range than you have with the current on normal loads.)
If you make this up on stripboard or similar, make sure you have adequate clearance between all tracks - there might be 350 V peak between two tracks if you have an open-circuit resistor and it’s connected between two legs or if it is connected line-neutral and the neutral falls off.
1 Like