EmonTX Calibration and RF Transmission

Hi All,

Hoping for some advice/ideas in relation to two issues I am having with my EmonTX.

Firstly, I'm a little green to the arduino, so please forgive in advance any glaring or stupid errors I may have.


The first issue I have is in relation to the accuracy of the EmonTX CT. Im using the blue SCT CT as supplied, together with a 9va mains transformer with two secondary windings - one going to a rectifier to power my TX and the other going to the TX to measure voltage. I bought it in Maplin. This area of the Emon is working welll, with voltages in comparison to my multimeter within approx 0.1 to 0.5v on the Emon. However the current is not as accurate for me - at low amperages 2-5a, when I calibrate the Emon all is well, however with the same calibration figures the Emon CT reading at higher amperages (i.e. cooker on at 18A) the Emon reads over 1.5-2a out (generally lower). Going back to 2-4A all is well again.

If I then calibrate for say 18A - using this value now and measuring lower currents again in the 2-4A region, I find that the Emon reading is 0.5-1A out. I'm wondering is this a function of the tolerances of my parts - or an inherent feature of the device. Any ideas on how I can improve things. Note Im still using the 15R burden resistor. Would it help matters if I go to an 18R as per the latest design?


The second issue related to the transmission of the readings. I'm also monitoring some DS sensors and have included these in the RF payload. When I observe the values via the EmonTX serial port, all values look well and seem correct. However once these reach my Nanode board some have negative numbers, and are not at all correct. Looking more closely at the code for the EmonTX I noticed that a portion of the code takes the emon reading (i.e. volts) and multiplies this by 100. I assume this is because the variable for the voltage in the RF payload is set as integer, and this removes issues with decimal points (I could be wrong here!). Base on this, I added lines for all my other values (multiplying my real and apparent power by 1000, my voltage and DS sensor readings by 100) before transmission. Now my nanode values look ok for voltage and temp sensors, but the real and apparent power readings still do not add up. For example, the apparent power, which should be V*I does not actually equate to the V and I values.

I attach here my EmonTX code - if anybody cares to take a look.

Finally, thanks for a fantastic project and resource - it has been very informative (and sometimes head-wrecking!) getting things working, but always in any case been informative and fun.

I look forward to any ideas on my issues - probably self-inflicted.

Thanks in advance.



alpav's picture

Re: EmonTX Calibration and RF Transmission

Hi Ger,

I'm quite new to the project as well, but I am experiencing some similar issues as you (refer to the thread I have opened http://openenergymonitor.org/emon/node/1357).

I've started asking me why the power recorded by my emonGLCD is different from the same power recorded in emoncms (more than 10% of error). Then I realized that I didn't calibrate my emonTx so I started from there.

I found today the same issue than you regarding the current reading. I have not a wide range of instruments to test it, but I've found a very good accuracy in the range of 2-3 A and worse around 7-8 A. Again, I'm in doubt with the voltage as well as I did calibrate under load but I wonder if it was better to do it over no load.

I have noticed negative values on my base as well but, honestly, I didn't focus on that yet as I want to proceed step-by-step.


Robert Wall's picture

Re: EmonTX Calibration and RF Transmission

Dealing with the current readings first. At very low currents, the voltages developed by the burden resistor are small and swing over only a few counts of the ADC converter. So it is very hard to maintain accuracy. But at 1 A, the reading should be correct to within around 5%. The actual mechanism by which this happens is quite straightforward.  Trystan did some wonderful animated pages a few months ago demonstrating how the errors vary here, here and here, as well as this

The RF payload. The values transmitted are indeed integers. So as you correctly deduce, temperature is multiplied by 100, so as to give two decimal places when divided again. The maximum temperature is likely to be less than 327°C, so this fits into a signed integer (-32768 - +32767).  But the powers are transmitted as Watts, so there is no need to multiply those, and now that you have, they overflow the integer if greater than 327.67 W - and that is very likely. Voltage is already multiplied by 100, so if you have multiplied by 100 again, you have the same overflow problem again.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.