Earth Notes: Monitoring 16WW Mains Voltage

Updated 2024-01-27.
Looking for sags and surges, to defer boosting our hot water and when the PV is pumping up the jam... #voltage
Mains voltage seems pretty steady here at suburban London EOU HQ, but that is not everyone's experience. Why might it matter?

Potential Issues

Enphase Envoy S

When mains electricity is delivered to your house is intended to be at a particular (AC) voltage: 230V +10% / -6%. This is harmonised with the Continent and we continue in practice to run in the UK at about 240V and there at 230V, but it then is in spec for appliances to run anywhere.

It is important for many appliances to operate efficiently, and to be able to be put together at a reasonable price, that mains voltage (or "potential") is fairly steady within the narrow range given for their country of use.

A higher voltage would make old incandescent lamps burn brighter and hotter (and burn out sooner) and your electric oven heat up quicker, and your dishwasher and washing machine heat the water quicker. But other than than the old lamps, the thermostats in the rest will not let the devices actually get any hotter nor draw any more energy overall.

Modern electronics is designed to be so tolerant of voltage that it can often run anywhere from ~90V up to over ~250V, to work anywhere in the world (notably the US at ~110V and Europe at ~230V).

Likewise a lower mains voltage will make water heating in appliances slower. More seriously, it may also make motors struggle and overheat.

If the grid is having a bad hair hour and is short of generation, distribution voltage may be dropped a little to slow the immediate draw from electric heating (eg of water) with simple resistive heating elements, but not so low as to hurt other things.

"Voltage Optimisers"

For large sites, eg industrial, regulating voltage can make sense, and there are legitimate products out there to help with it.

For the home, unless you have extraordinary issues, less so. And some of the domestic products offered seem to be outright scams, ie basically empty boxes. Do not waste your money on an empty box!

Sags and Highs

Your local DNO (Distribution Network Operator) aims to keep your mains voltage in the legal range. But what might throw things off?

Lots of heavy loads at once may may voltage drop or "sag". Everyone cooking their Sunday roast or evening meal might do it, or millions of people flicking on their kettles for tea during a "TV pickup" at half-time of a big football match or after a TV soap finishes.

A new factor is people charging their electric vehicles (EVs) since their demand can be much higher than even a 3kW electric kettle. Regulations in the UK from force a small random delay into starting/stopping charging. That smears demand changes over a few minutes such as when a cheap pricing period starts.

On the other side, noon to mid-afternoon on a sunny day in an area with lots of solar PV installations (especially on the very end of a weakish grid connection) may see voltage rise as they pump in power. PV inverters are designed to cut out if the voltage gets too high for safety, but that represents a failure and a wasted opportunity.


My Enphase battery system monitors mains voltage, and I added it to parameters that I log every few minutes at the end of January 2022. A tweet (ever thought about logging the voltage of your mains supply? Aiui voltage can rise locally on sunny days in areas with a lot of PV as inverters compete to drive their power into the local network (indicating a good time to run loads!) Would love to see monitoring...) prompted me to start analysing this data!

I get entries logged such as (see the trailing consumption.rmsVoltage):

20220523T11:38Z consumption.readingTime 1653305878 -176.212 111.072 production.wNow 287.284 storage.percentFull 100 storage.wNow -13 storage.readingTime 1653305459 storage.whNow 4960 consumption.rmsVoltage 249.012
20220523T11:43Z consumption.readingTime 1653306179 -119.836 123.816 production.wNow 243.652 storage.percentFull 100 storage.wNow -13 storage.readingTime 1653305459 storage.whNow 4960 consumption.rmsVoltage 248.824

Picking out the appropriate value can be done like this:

% cat .../Enphase/2022????.log | awk '$18 == "consumption.rmsVoltage" {print $1, $19}'
20220129T21:53Z 245.256
20220129T21:58Z 245.585
20220129T22:03Z 247.699
20220129T22:08Z 247.863
20220129T22:13Z 245.523
20220523T11:28Z 247.695
20220523T11:33Z 248.588
20220523T11:38Z 249.012
20220523T11:43Z 248.824
20220523T11:48Z 248.456

Some initial crude stats:

% ... | awk '$18 == "consumption.rmsVoltage" {time=$1; V=$19; ++n; sum+=V; if(""==min || min>V) {min=V;mint=time} if(""==max || V>max) {max=V;maxt=time}} END {print "n="n, "mean="(sum/n), "min="min"@"mint, "max="max"@"maxt}'
n=32669 mean=247.342 min=241.254@20220306T12:33Z max=252.939@20220430T12:38Z

Examining ~33k samples from 2022-01-29 to 2022-05-23 inclusive, the minimum and maximum RMS voltage samples seen are ~241V and ~253V respectively, with a mean of ~247V.

Minimum and maximum samples were about around solar noon.

Extracting a month's archive data (2022-04, 8639 records) for graphing with gnuplot:

gzip -d < data/16WWHiRes/Enphase/202204.log.gz | awk '$18 == "consumption.rmsVoltage" {print $1, $19}' > ...
202204 16WW mains Vrms
16WW mains voltage (RMS) over 2022-04, as measured by the Enphase system.

(The relevant archives are files of the form data/16WWHiRes/Enphase/YYYYMM.log.gz.)

Looking at the first seven days only:

202204 first week 16WW mains Vrms
16WW mains voltage (RMS) over first week of 2022-04, as measured by the Enphase system.

Looking at 2022-04-07 only, with its rather interesting sag:

20220407 16WW mains Vrms
16WW mains voltage (RMS) for 2022-04-07, as measured by the Enphase system.

Inspection of these graphs and the data suggests setting a threshold of 243V to 245V to stop eddi divert and/or boost to help out the grid a little. Mains voltage is below 245V ~2.5% (208/8639) of the time.

% gzip -d < data/16WWHiRes/Enphase/202204.log.gz | awk '$18 == "consumption.rmsVoltage"' | wc -l
% ... | awk '$18 == "consumption.rmsVoltage" && $19 < 243' | wc -l
% ... | awk '$18 == "consumption.rmsVoltage" && $19 < 244' | wc -l
% ... | awk '$18 == "consumption.rmsVoltage" && $19 < 245' | wc -l
% ... | awk '$18 == "consumption.rmsVoltage" && $19 < 246' | wc -l
% ... | awk '$18 == "consumption.rmsVoltage" && $19 < 247' | wc -l
% ... | awk '$18 == "consumption.rmsVoltage" && $19 < 248' | wc -l

(2022-05-23: I have adjusted heat battery boost from mains to be avoided below 245V; the threshold was 240V and thus unlikely to have ever triggered.)

(2023-01-29: I have again adjusted the threshold ERMSVMIN from 244V to 242V from observing transients and triggers this morning.)

Compare With Spill To Grid

If the grid connection is not very 'stiff' it might be reasonable to expect to see voltage rise as 16WW exports/spills excess generation to grid.

Adding to the data the negation of allows that to be graphed:

% gzip -d < data/16WWHiRes/Enphase/202204.log.gz | awk '$18 == "consumption.rmsVoltage" {print $1, $19, -$5}'

Looking at the first seven days of April again, with exports also:

202204 16WW mains Vrms and exports
16WW mains voltage (V, RMS) and exports (W) over first week of 2022-04, as measured by the Enphase system.

Not blindingly obvious here, though it may be so in May/June/July with more exports once all storage has filled up.

With PV Generation

Adding in PV generation with:

gzip -d < data/16WWHiRes/Enphase/202204.log.gz | awk '$18 == "consumption.rmsVoltage" {print $1, $19, -$5, $9}'
202204 16WW mains Vrms and exports and gen
16WW mains voltage (V, RMS) exports (W) and PV generation (W) over first week of 2022-04, as measured by the Enphase system.

It is getting messy, but maybe there is some relationship between voltage and local PV generation, even when not exporting/spilling, possibly because my PV generation is a proxy for others around me locally and regionally...


To do: