Interferences :(

Hi !

I’m using 60 ZHT-103 sensors with the emonlib library to monitor current use in my house.

This works quite well but for a few of the current lines that interfere with each other resulting in false positives (I’m only checking if current is passing by, I don’t need to be more precise than that).

Actually, those current lines are in corrugated plastic sheaths and are running // to each other for something like 6 meters and it seems to be the source of my problems …

I absolutely don’t have this problem with lines that don’t run next to each other.

Is there any kind of shielding that I could install to fix that ? (without opening the corrugated plastic sheaths nor cutting the lines if possible …).

Thanks a lot for your help !!

Better would be a ‘software solution’

Here’s the arduino code I’m using (15x ZHT-103 / Arduino) :

    for (int i = 0; i < 15; i++) {
      double Irms = emonSensors[i].calcIrms(636);
      jsonPayload += "\"ZHT_1_" + String(i) + "\":\"" + String(Irms, 2) + "\",";
    }

Raising the 636 to 1240 doesn’t change anything but slowing the system.

Welcome back to the forum.

Can you explain what you mean by

Are these the wires carrying the current you want to measure, or the wires between the c.t. and the Arduino?

And what are you using for the interface between the c.t. and the Arduino?

Sorry, in french we say ‘ligne de courant’ which was badly translated (in my mind) as ‘current line’.

It is actually ‘electric line’ that I should have used :slight_smile:

The setup is as follow :

15x ZHT-103 sensors are installed on a board (see attached file)
Arduino is attached to the board too

Electric lines are passing through the ZHT-103 sensors.

This setup is reproduced 4 times (60 electric lines).

The goal is only to know if current is passing by the line or not (lamp is on or something is using current on the wall outlet), I don’t need any calculation. It works very well but for a bunch of electric lines that are following the same path (// for a few meters) and seem to interfere with each other resulting in false positives.

Thanks a lot in advance !

Now I am really confused:

  1. Why are you showing temperature-variable resistors with a value of 10 kΩ for R1, R2 etc? They should not be thermistors.
  2. The ZHT-103 is a current transformer. The output is 5 mA at the rated current of 5 A but you do not show a burden resistor. Is this correct - you have no burden on any of the c.t’s?

If you do not have a burden resistor of definite value, the c.t. is unbelievably sensitive, because its burden is the input impedance of the ADC - probably megohms. This means it will need only a very small current to give enough voltage to show the full output from emonLib. You need to add a resistor in parallel with each c.t. You calculate the value from the current you want to detect flowing in the circuit, divided in the same ratio as the c.t. (i.e. 5 A : 5 mA) and then this current (let’s say you want full output at 1 A in the circuit, so the c.t. output current is 1 mA) flows in the burden. If you want 1.6 V to appear at the ADC input (the maximum allowed), the resistor value is 1.6 V / 1 mA = 1.6 kΩ.

If interference is still a problem, I suggest you change the input circuit (c.t, R1, R2, C1 etc) to be like the second diagram “Configuration used in the emonTx4 and the emonPi2” here: CT Sensors - Interfacing with an Arduino — OpenEnergyMonitor 0.0.1 documentation
This arrangement is less susceptible to interference from switched-mode power supplies.
Note: your burden then becomes the resistor you have connected across the ct. in parallel with R1 and R2 in parallel. This means the 1.6 kΩ I calculated will become 2.35 kΩ (i.e. 2.35 kΩ, 10 kΩ & 10 kΩ all in parallel give you 1.6 kΩ).

Hi Robert,

Actually, my electronics knowledge is near 0 … So I reproduced what I found on the Internet without really understanding what it was all about … :cry: Looks like it wasn’t such a good idea :slight_smile:

At the light of your post, it seems that the resistor that are used aren’t the correct ones. Changing those would be a real pain (because all this is in ‘production’ and cabling is done as you will see on the pictures). But it is probably possible to add some burden resistor somewhere … soldering them ‘in place’ … It is also possible to dismantle everything but would be a lot of work and would require cutting the cables which I would like to avoid …

I need the sensors to be ‘relatively’ precise as I have some circuits that are powering only a few LED’s.

Based on the pictures here under, may I ask you to tell me, if it it even possible, what kind of resistor I should add and where ?

Image 1 : actual setup in production (complete view) a 4th board + Arduino is located in another closet.

Image 2 : zoom on 1 board + arduino

Image 3 : naked board

(part 1 as I reached the media by post limitation).

Image 4 : naked board (close up)

Image 5 : naked board (rear close up)

Be sure that I really appreciate the help.

If I do understand the following image, extracted from the webpage you pointed me to :

It seems that I should solder some burden resistor (that seem to be a ‘normal’ resistor but gets its name because of it’s use, correct me if i’m wrong) behind the boards, between the 2 connectors of the c.t.
Bad new lol as I can’t reach it without disassembling everything … :frowning:

The final result would be something like : (please excuse the childish style drawing …) :

If it’s correct, which I hope you will be able to confirm, I now have to understand how to define the exact type of burden resistor I have to use … considering that I need to detect the current when LED’s as low as 5 watts are powered which means something like 0.02A and a max of 20A.

If I do understand (which I’m absolutely not sure of …) :

Burden Resistor (ohms) = (AREF * CT TURNS) / (2√2 * max primary current)

(2.5 * 636) / (2√2 * 20A) = 28.11

Which would require installing 27ohm resistor ? Correct ? What would you recommend as resistor watts ?

Thanks a lot, again !

Sorry, but I’m afraid this is correct.

The resistors look right in the photo - but without a parts list, I was looking at the circuit diagram. You have drawn a thermistor (temperature-dependent resistor), not a fixed resistor. I suggest you change the diagram (like my diagram in ‘Learn’) so as not to mislead everyone.

This is not good - you will get a very small signal from your c.t. because of the current from the magnetic field around the cable which touches the c.t. on the outside, if it is carrying a large current.

This is exactly where I would put them - directly on the pins of the c.t.
‘Burden’ is the function of the resistor. In the days before electronic instruments, you would use a moving iron ammeter with a 5 A movement, and a c.t. with a 5 A secondary winding. The ammeter is the c.t’s burden or load (like a packhorse - cheval de bât - carries its load/weight - poid).

A normal metal film resistor exactly like the ones you use for R1 & R2. A power rating of 0.1 W is enough (the actual power at 15 A max load, that’s 15 mA burden current & 1.6 V, is 24 mW).

NO! The value, from what you write, is clearly not correct. Disregard that formula, all the numbers are wrong for what you are doing.
To read 5 A rms and assuming you have a “well-behaved” load - which might or might not be true - your burden resistor will be as I wrote earlier: 1.6 V ÷ 5 mA = 320 Ω. To read 0.5 A rms maximum, your burden will be 3200 Ω. And so on.

Are all your c.t’s the same: 5 A : 5mA?

There’s a Niederlands data sheet 5A AC current sensor module | Customers rate us with a 9/10! which claims it is good to 15 A with a 100 Ω burden, but you cannot expect it to be accurate above this.

Give me a list of the powers and type of load for each circuit, and I will try to estimate the value of burden resistor you need. I need to know the type of load so that I can make a better guess at the peak current it will take. If you need to read over a range of 100 ×, you will certainly need different values of burden resistor according to the current each wire carries.

Hi Robert,

Thanks again and a lot for your answers and your valuable time !

All the CT’s are identical (5A / 5mA : https://datasheet.lcsc.com/lcsc/2201121700_ZHT-ZHT103_C2935356.pdf)

I needed a bit of time to make the inventory of what was powered by each line, but here it is.

Please do remember that the main goal is to ‘see’ if the device/lamp connected to the electric line that passes through the CT is ON or not. No need to be more ‘precise’.

Here’s the list : https://bit.ly/3MHiuDI

Thanks a lot !

Can you post the list here please.

sure, but it’s quite ‘long’ :slight_smile:

Board / Arduino n° CT N° Device Watts qty total Watts
1 1 LED SPOT 4,9 2 9,8
1 2 LED SPOT 4,9 1 4,9
1 3 LED SPOT 4,9 3 14,7
1 4 LED SPOT 4,9 9 44,1
1 5 LED BULB 6,5 3 19,5
1 6 LED STRIP (m) 9,6 5,5 52,8
1 7 LED SPOT 4,9 2 9,8
1 8 LED SPOT 4,9 6 29,4
1 9 LED CEILING 24 1 24
1 10 LED STRIP (m) 9,6 1,5 14,4
1 11 LED STRIP (m) 9,6 4,5 43,2
1 12 LED LAMP 47 1 47
1 13 LED STRIP (m) 14,4 10 144
1 14 LED LAMP 11 3 33
1 15 LED LAMP 3,8 3 11,4
2 1 LED NOT DEFINED 20 1 20
2 2 LED SPOT 4,9 6 29,4
2 3 LED SPOT 4,9 8 39,2
2 4 LED STRIP (m) 9,6 2,8 26,88
2 5 LED STRIP (m) 20 15 300
2 6 LED STRIP (m) 9,6 5 48
2 7 LED 56 1 56
2 8 LED BULB 11 1 11
2 9 LED SPOT 4,9 2 9,8
2 10 LED SPOT 4,9 3 14,7
2 11 LED STRIP (m) 14,4 4,2 60,48
2 12 LED 24 1 24
2 13 LED SPOT 4,9 2 9,8
2 14 LED 24 1 24
2 15 LED SPOT 4,9 2 9,8
0
3 1 LED SPOT 4,9 7 34,3
3 2 LED SPOT 4,9 3 14,7
3 3 LED CEILING 24 3 72
3 4 LED CEILING 200 2 400
3 5 Led BULB 20 2 40
3 6 LED LAMP 50 1 50
3 7 LED BULB 11 3 33
3 8 HEATING ELEMENT 800 1 800
3 9 AIR EXTRACTOR 20 1 20
3 10 AIR EXTRACTOR 20 1 20
3 11 AIR EXTRACTOR 15 1 15
3 12 AIR EXTRACTOR 15 1 15
3 13 LED FLOOD LIGHT 300 1 300
3 14 LED FLOOD LIGHT 300 1 300
3 15 FREE / UNUSED 0
0
4 1 LED SPOT 4,9 1 4,9
4 2 LED SPOT 7,9 10 79
4 3 LED SPOT 4,9 4 19,6
4 4 LED SPOT 4,9 3 14,7
4 5 LED SPOT 4,9 1 4,9
4 6 LED SPOT 4,9 2 9,8
4 7 LED SPOT 4,9 2 9,8
4 8 AIR EXTRACTOR 15 1 15
4 9 LED SPOT 4,9 2 9,8
4 10 AIR EXTRACTOR 15 1 15
4 11 LED SPOT 4,9 4 19,6
4 12 LED SPOT 4,9 12 58,8
4 13 LED SPOT 4,9 1 4,9
4 14 LED SPOT 4,9 1 4,9
4 15 FREE / UNUSED 0

What I’ve done is copied that list into a spreadsheet, and added a few columns.

The first is a guess at the power factor of the load. I’ve taken a LED lamp below 16 W as 0.6; 16W up to 30 W as 0.75; and above this as 0.9. Those values are probably wrong but they get us closer to what the actual current might be. I’ve taken the extractors as 0.7.
The next column is the current assuming a 230 V supply. I plotted this as columns to get a quick and easy overview of the range of values.

All currents

There’s a clear division at 0.75 A, so here are the circuits below this, expanded

Currents to 0.75 A

The minimum you want to measure is a single LED lamp at about 35 mA. If this represents 10% of the current range that can be measured with reasonable accuracy, the upper limit is 350 mA
Doing the same again but putting the highest current of 3.5 A at 90% of the measurement range, the 10% lower limit comes to 390 mA.

Those numbers make me think its reasonable to have just two values of burden resistor,
Taking the high range first, a 390 Ω burden will give an upper limit of approx. 4.1 A, and 350 mA is 8.5% of this - that’s lower than I hoped but good enough.
The burden for the low range needs to be 4.57 k - 4.7 kΩ will give an upper limit of 340 mA.

My recommendation is to use a 4.7 kΩ burden on the circuits running below 340 mA, and a 390 Ω burden resistor for the remainder. If you then consider any reading in software > 5% as being “ON”, hopefully you will get useful and more accurate data.

Here’s my version of your table, with additions:

Board / Arduino n° CT N° Device Watts qty total Watts assumed p.f. assumed current “high” current circuit
1 1 LED SPOT 4.9 2 9.8 0.6 0.071
1 2 LED SPOT 4.9 1 4.9 0.6 0.036
1 3 LED SPOT 4.9 3 14.7 0.6 0.107
1 4 LED SPOT 4.9 9 44.1 0.6 0.320
1 5 LED BULB 6.5 3 19.5 0.6 0.141
1 6 LED STRIP (m) 9.6 5.5 52.8 0.6 0.383 High
1 7 LED SPOT 4.9 2 9.8 0.6 0.071
1 8 LED SPOT 4.9 6 29.4 0.6 0.213
1 9 LED CEILING 24 1 24 0.75 0.139
1 10 LED STRIP (m) 9.6 1.5 14.4 0.6 0.104
1 11 LED STRIP (m) 9.6 4.5 43.2 0.6 0.313
1 12 LED LAMP 47 1 47 0.9 0.227
1 13 LED STRIP (m) 14.4 10 144 0.6 1.043 High
1 14 LED LAMP 11 3 33 0.6 0.239
1 15 LED LAMP 3.8 3 11.4 0.6 0.083
 
2 1 LED NOT DEFINED 20 1 20 0.75 0.116
2 2 LED SPOT 4.9 6 29.4 0.6 0.213
2 3 LED SPOT 4.9 8 39.2 0.6 0.284
2 4 LED STRIP (m) 9.6 2.8 26.88 0.6 0.195
2 5 LED STRIP (m) 20 15 300 0.75 1.739 High
2 6 LED STRIP (m) 9.6 5 48 0.6 0.348 High
2 7 LED 56 1 56 0.9 0.271
2 8 LED BULB 11 1 11 0.6 0.080
2 9 LED SPOT 4.9 2 9.8 0.6 0.071
2 10 LED SPOT 4.9 3 14.7 0.6 0.107
2 11 LED STRIP (m) 14.4 4.2 60.48 0.6 0.438 High
2 12 LED 24 1 24 0.75 0.139
2 13 LED SPOT 4.9 2 9.8 0.6 0.071
2 14 LED 24 1 24 0.75 0.139
2 15 LED SPOT 4.9 2 9.8 0.6 0.071
 
3 1 LED SPOT 4.9 7 34.3 0.6 0.249
3 2 LED SPOT 4.9 3 14.7 0.6 0.107
3 3 LED CEILING 24 3 72 0.75 0.417 High
3 4 LED CEILING 200 2 400 0.9 1.932 High
3 5 Led BULB 20 2 40 0.75 0.232
3 6 LED LAMP 50 1 50 0.9 0.242
3 7 LED BULB 11 3 33 0.6 0.239
3 8 HEATING ELEMENT 800 1 800 1 3.478 High
3 9 AIR EXTRACTOR 20 1 20 0.7 0.124
3 10 AIR EXTRACTOR 20 1 20 0.7 0.124
3 11 AIR EXTRACTOR 15 1 15 0.7 0.093
3 12 AIR EXTRACTOR 15 1 15 0.7 0.093
3 13 LED FLOOD LIGHT 300 1 300 0.9 1.449 High
3 14 LED FLOOD LIGHT 300 1 300 0.9 1.449 High
3 15 FREE / UNUSED
 
4 1 LED SPOT 4.9 1 4.9 0.6 0.036
4 2 LED SPOT 7.9 10 79 0.6 0.572 High
4 3 LED SPOT 4.9 4 19.6 0.6 0.142
4 4 LED SPOT 4.9 3 14.7 0.6 0.107
4 5 LED SPOT 4.9 1 4.9 0.6 0.036
4 6 LED SPOT 4.9 2 9.8 0.6 0.071
4 7 LED SPOT 4.9 2 9.8 0.6 0.071
4 8 AIR EXTRACTOR 15 1 15 0.7 0.093
4 9 LED SPOT 4.9 2 9.8 0.6 0.071
4 10 AIR EXTRACTOR 15 1 15 0.7 0.093
4 11 LED SPOT 4.9 4 19.6 0.6 0.142
4 12 LED SPOT 4.9 12 58.8 0.6 0.426 High
4 13 LED SPOT 4.9 1 4.9 0.6 0.036
4 14 LED SPOT 4.9 1 4.9 0.6 0.036
4 15 FREE / UNUSED

Hi Robert,

You really are a blessing !

I will order the needed resistors and disassemble everything.

Even if it isn’t something I’m happy to do, the fact that I’ll get rid of those false positives is really a nice perspective.

If you ever come to Belgium, please ping me, I’d be happy to invite you to show you what you valuably participated in and offer you a Tripel Karmeliet (probably the best blond beer in the world despite what Carlsberg says) :slight_smile:

Thanks a lot, again !

1 Like