Irms, Vrms does not match reported power value for CT4

I would need some input from you experts.

Im running the emonTxV3_4_Continous_Beta and the corresponding EmonLibCM.

I’ve got a couple of EmonTxv3.4’s; and I was in the procedure of calibrating them (following the instructions). In the calibration process, i hooked up all four CT’s on the same power cable, thus they are registering the same load. I also had an external voltage and current sensor, so I have a reference.

I calibrated all four CTs;so I saw that they all reported the same Irms, and Vrms. But then when looking at the reported power, the power from CT4 was just around 80% of what CT1-3 reported, despite they had the same current and volts.

What I can see from the code, the only difference between the treatment between the CTs/Channels is the EmonLibCM_phaseCal(x,y); where ct1-3 have values (y), less than one, and ct4 is at 1.25. However, when looking into that code, it does not seems to merit the difference, and does not explain why the current is correct, but power is too small.

Any input would be appreciated.


The CM library as originally published has some serious errors, and was withdrawn. So you should not rely on it. A replacement is presently on trial.

Can I find that trail in the git repo?

It will not be released until we are satisfied that everything is correct.

Ok, any ETA on that?

If not, any alternative to the firmware I was using; I need the continuous part, could the “emonTxV3_4_continuous_kwhtotals” be an viable alternative, as it does not seem to be based on the CM Library.

Hello Patikarlos,
I wrote the “continuous monitoring” code for use as my Mk2 PV Router. That code was then used by Open Energy Monitor as the basis for the emonTxV3_4_continuous_kwhtotals sketch. As you say, it does not use the emonLibCM library, and I believe it to be in a usable state - but the final version was not supplied by me.

If the burden resistor for CT4 is different than for the other three CTs, that will affect calibration. But once the correct cal values are in place, I would expect the Irms and real power values (V + I) to be correct.

Hello Calypso_rae,

Thanks for the information, my thought was that I messed up the calibration somehow; but apparently there are some other in that sketch…



I’ve used the ‘official’ firmware; and I’m still seeing a fairly large difference between the realPower values reported, after calibration.


Are the CTs grouped somehow; as CT1~CT2, and CT3~CT4 ?


I don’t understand what you mean when you say you calibrated the sketch and you are still seeing differences. The whole purpose of calibration is to ensure that all the inputs read the correct value.
CT1-3 are, or should be, identical within the limits of component tolerances. CT4 is a high sensitivity channel (18.33 A maximum using the standard shop CT, versus 100 A for the others).
I see you are using quite low currents - 560 W represents only about 2 A, which is actually outside the specified operating range of the standard CT, where accuracy is not specified. So I would expect the errors to be large.

Hello Robert,
I’ve increased the current, and I have three EmonTX (12 CTs) in sequence, monitoring the same current (and voltage). Perhaps a bit high for the CT4:s but, not massively.
I’ve gone through the calibration procedure, and this time I did not forget the phase_shift (omitted/forgot that one last time around).

So; Here is an example of output from the Ardurinos.
Loop Node: 7 ## CT1-3 has 10 loops, and CT4 8
Vrms = 230 [V].
Ir[0] = 28.38 Ir[1] =28.29 Ir[2]=28.25 Ir[3]=22.60 [A].
E[Ir[0]]= 28.27 E[Ir[1]]=28.20 E[Ir[2]]=28.17 E[Ir[3]]=22.54 [A].
AP[0] = 6532.89 AP[1] =6512.66 AP[2]=6502.92 AP[3]=5201.01 [A].
RP[0] = -6550.92 RP[1] =6516.87 RP[2]=-6496.61 RP[3]=4918.19 [A].

Loop Node: 8 ## CT1-3 has 10 loops, and CT4 8
Vrms = 230 [V].
Ir[0] = 28.31 Ir[1] =28.32 Ir[2]=28.34 Ir[3]=22.54 [A].
E[Ir[0]]= 28.31 E[Ir[1]]=28.31 E[Ir[2]]=28.32 E[Ir[3]]=22.52 [A].
AP[0] = 6506.89 AP[1] =6509.06 AP[2]=6515.29 AP[3]=5185.07 [A].
RP[0] = 6525.44 RP[1] =-6516.46 RP[2]=-6501.01 RP[3]=5180.06 [A].

Loop Node: 9 ## CT1-4 has 8 loops
Vrms = 229 [V].
Ir[0] =23.04 Ir[1] =23.05 Ir[2]=23.07 Ir[3]=22.99 [A].
E[Ir[0]]=23.12 E[Ir[1]]=23.12 E[Ir[2]]=23.12 E[Ir[3]]=22.99 [A].
AP[0] =5276.80 AP[1] =5282.50 AP[2]=5287.40 AP[3]=5273.37 [A].
RP[0] =5288.87 RP[1] =5294.41 RP[2]=5299.83 RP[3]=-5260.74 [A].

It seems that node 8 and 9 are working fine, as the Ir[1-4] for each Node is close to the expected value, 2.8A (x10 for node 8, x8 for node 9).
Here we also see that the Actual Power (AP) and Real Power (RP) are quite similar, between the CTs.

Now Node7 has a different behaviour; current wise they are equivalent to the node 8 (same loop counts). Comparing power values they are also
similar for the AP values; but for the RP this changes 5200 vs 4918 for CT4. While, CT1-3 do not exhibit the same difference.

Could there be some hardware difference between the nodes, that would motivate/explain the difference? From a software perspective, its the same
source code, build and uploaded on different ports. Only difference is the region containing the calibration factors.


This is a cause for concern. The CT4 input of an emonTx is limited to 18.33 A, or, as you’re using a multi-turn primary winding, 18.33 At. Any more ampere-turns than that will exceed the ADC input range and the measurement cannot be relied on. So your 22 A readings for CT4 cannot be believed - they mean the current would be 22 A rms if the shape of the wave was the same on the primary side as it is on the ADC input, and in all probability, that’s not the case.

How stable is the supply that you are using? If the voltage fluctuates between measurements, the current will also fluctuate, and the power will change by roughly twice the amount as you’re using a resistive load.

You have them in front of you! Have you looked and compared them? As far as I’m aware, there have been no design changes recently.

But don’t forget that tolerances of components like the bias supply will affect the readings once you are in an overload situation, whereas when everything is operating in the linear region, they are out of the calibration path (e.g. one half of the wave may clip before the other).