Close

Meross EM16P - Accuracy LOG#1

A project log for Meross EM16P - Accuracy

Sniffing the accuracy of an energy meter that claims "high measurement accuracy with an error margin ±2%"

jesse-farrellJesse Farrell • 2 hours ago•0 Comments

Background

I’m continuing my Home Assistant journey with cheap and cheerful branch energy meter. Like other devices I’ve tinkered with, the Meross EM16P can be controlled locally, though it does offer some cloud features.

The EM16P includes 18 CT inputs along with 4 voltage inputs, the majority of those CT’s are rated for 60A, with 2 rated for 200A. As someone who’s deeply involved in energy metering at work, I can’t resist diving a bit deeper when I get my hands on a new shiny bit of gear, even if it’s consumer grade…

Meross’s website makes one accuracy claim we can use as our baseline for this accuracy test. “Professional-Grade Accuracy: Delivers high measurement accuracy with an error margin within ±2%.”

Test Plan

To verify this ±2% claim, I’ll be looking at instantaneous readings of voltage, current and real power, while varying one of voltage, current, power factor, or frequency.

These so called “accuracy sweeps” will include the following test points…

Sweep TypeCurrent [Arms]Voltage [Vln]Power FactorFrequency [Hz]
Test#1 - Current0.01 - 201200.99960
Test#2 - Voltage1.0100 - 2400.99960
Test#3 - Power Factor1.0120-0.999 - 0.99960
Test#4 - Frequency1.01200.99950 - 60

My reference is only rated for 20A, and most of the circuits the EM16P will measure are 15/20A anyhow. The voltage sweep is limited by the power supply of the EM16P, and same goes for the frequency sweep.

Automation

I ended up modifying the script I developed for the Tapo, P110M accuracy test awhile back. The EM16P exposes a HTTP API that can be used to get data from “Appliance.Control.ElectricityX”.

Wiring

Not much to say here... the CT's are all labeled Ax/Bx/Cx. I connected each CT to the corresponding phase of the Rotek 8000 source. For the 200A CT's I looped the current 3 times to give fairer readings, I don’t exactly expect a 200A CT to be particularly accuracy below 1A. Similarly, the voltages, which are also helpfully labeled, were connected to their corresponding phases on the Rotek.

It should be noted that the EM16P shares its voltage sense and power wires. Because of this my sources voltage phases will be loaded and a bit nosier than normal… 

Don’t judge my wiring too much this was just a quick sanity test.

Results

There’s a lot of data, too much to review all the graphs in this log… take a look in the attached files. One bug was found during this testing, listed at the bottom of this log. The overall summary is...

For a normal circuit greater than 0.1A (for the 60A CT), with a power factor greater than 0.8, the ±2% claim is reasonable. At higher current, unity power factor testing I saw accuracy well below 0.5%.

Current Sweep

Not much to report here. The meter is predictably bad on the low end, but what can you expect from 60A CT’s measuring milliamps. There’s an interesting “step” near 0.1A in the real power chart which I suspect is some sort of change in calibration around this point.

Voltage Sweep

Entirely uninteresting. The error stays locked near -0.1% during this sweep.

Frequency Sweep

Also uninteresting… No influence.

Power Factor Sweep

Now that’s a chart… Before getting too worked up though remember, we expect the error to stretch out to infinity as we approach the mythical “0PF”.

Why does error approach infinity? Consider the formula below… as the ideal power approaches zero any difference between the reference and the dut power gets amplified. As an example, here’s what a 5 us phase shift error on the DUT would look if all other measurements were ideal…. 

Nevertheless, this error is larger than I’m used to seeing, but it could be within reason for a device of this class.

__BUG__

The EM16P stops reporting current, power, and energy between power factors of -0.1 and 0. It’s an admittedly unrealistic load so I’m not too concerned about this. I’m using the latest firmware version 13.1.4.

Discussions