I need some help, because I am complete lost at the moment.
Main question first: Did everyone hear or have a SCT013 100A CT sensor that has a internal burden of ~100Ω?
If you check the attached picture, you can see the sensor. It does not say SCT013-000 it just says SCT013 100A 50mA. But it has an internal burden resistor, so the print on the sensor is wrong.
To check I turned the measured cable 5 times around the coil, so now I have a 5:2000. And I could measure an AC voltage at the sensor (nothing else attached than the multimeter. With this and a (estimated) current of 8.7A (2kW water kettle at 230V) it gives a 7.6V output. But with 107Ω and 5:2000 turns it should give only 2.3V. So maybe the no. of turns in this specific CT is not 2000 as well????
Same on a second CT sensor I bought, with the same printing on it.
I have no chance to get an SCT013-000 at my location. So if anybody has any information about the sensor I have (SCT013 100A 50mA) it would be appreciated. Some help how to figure out the specs of this CT with minimal equipment (multimeter only, no osci, no regulated power supply or current supply, difficult to get any electronic components at my place (Philippines)) would be appreciated.
Here my story:
My project is to build up an energy monitor for a solar panel (1kW) with an Arduino Uno or Arduino Yun.
Target is to measure current coming from the solar panel and measure complete house consumption (and optional Lux measuring close to the solar panels to see performance).
Started with the tutorial here (CT sensors - Interfacing with an Arduino) how to connect and setup a SCT013-000 CT sensor to measure current. As a burden resistor I used a 47 Ohm, as I could not get any other value. I adjusted the calibration value to (141.4 A / 0.0707A) / 47Ω = 42.55. Analog input is channel 0.
emon1.current(0, 42.55);
I attached the schematics. I used the sketch provided with the tutorial.
But the readings are complete off. The measured current seems to be complete wrong.
I several times checked the hardware, measured all connections, all is fine. Finally I measured the burden resistor (without the Arduino attached and found surprisingly a value of 33Ω. Measured the burden resistor again (detached from the board) and it was 48Ω.
Then I measured the CT sensor (which should not have an internal burden, according to the datasheet). I measured 107Ω??????
To make sure I am not crazy, I attached to CT sensor to a load (2kW water kettle) and measured the current on the outputs of the CT sensor. This should be 0 if there is no burden, but I got a 7.6V AC signal (with 5 turns on the primary side of the CT sensor).
So I tried to adapt to the situation and changed the proto and the sketch. I removed my 47Ω burden and changed the calibration value to 18. Primary turns on the CT are 1 only. But now the measurement shows around 5 times of the expected current (~47A instead of ~8.7A).
Not sure how to go on from here without access to proper test equipment.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
Your picture looks like an SCT-013-000 to me. The clue is in the name - CURRENT transformer, and the printing on it 100 A : 50 mA. The output is not a voltage, it is current. Measuring the voltage with a voltmeter means nothing. Go away and measure the ac current, and I think you will find that you have sensible numbers - you should measure 4.35 mA with your kettle as your load. Don't worry about short-circuiting a current transformer, when you do it is actually under no-load and it's perfectly safe. It is NOT safe to open-circuit it - you might (but not with the SCT range) get dangerous voltages if you do not have the correct burden.
If you don't have a mA scale on your meter, measure the voltage across your 47 Ω burden, you should measure 204 mV.
The secondary winding of the CT has a resistance of about 100 Ω so that is what you measure with your multimeter. In parallel with a 47 Ω burden, that should measure about 32 Ω which indeed it did. The winding's own resistance is not an internal burden resistor. So nothing wrong there either.
The current calibration constant you should be using is 42.55, so you are correct there.
So what are you reading when you say "But the readings are complete off. The measured current seems to be complete wrong." There remains one possibility - the sketch that you are using. The code on that page is set up to print apparent power at 230 V. Is that what you're seeing?
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
Hi Robert,
Thanks for the quick reply. Long time since engineering school. And I was concentrating on digital hardware and software there which gives me some headaches now with this AC stuff.
I understand your explanation about the 100Ω resistance I measure on the sensor.
"Go away and measure the ac current" - my multi meter doesn't offer AC current measure, So I will try to measure the voltage over the 47Ω burden resistor, but still I need to upgrade my equipment. The current one offers 200V AC as the smallest value, so completely useless.
"So what are you reading when you say "But the readings are complete off.". I use the following script:
This should give me the current and the power. Anyway, the voltage here in Philippines is 230V (+-10% I think).
I will prepare some outputs tomorrow (midnight here already) and post them here.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
If you're upgrading your multimeter, there's a page in Building Blocks about multimeter accuracy, which you might find useful.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
First of all, thank you again for your assistance.
I got some sleep, changed the test board back to 47Ω and started testing.
Maybe the overnight rest or the re-soldering on the test board changed something, because I get now more consistent readings:
1) no load on the wire:
first two values are weird, then it settles on a value between 0.13A to 0.19A
2) 30W solder iron (I know, very low value)
Again the first 2 readings are weird, then it settles between 0.18A to 0.20A
3) 2000W water kettle
First value is the highest then it settles between 7.84A to 7.95A
3) 1600W electric stove
Again, the first value is slightly higher, then it settles between 6.89A to 6.97A
No idea what changed to my first tests, but it seem to work now. Of course with a 100A CT I get bad values at small currents. And I saw this: "Accuracy of emonPi ?" Seems I have the same kind of noise influence.
As with a 1kW solar panel I should never get more than 7A on the line, I would be interested in clipping everything above 10A and spread the measurement over the range of 0-10A.
Just to confirm with you (the expert), to do this, I change the burden resistor?
I found the following formulas to calculate the burden resistor and calibration value:
So I would change to
Do you see any risks? Like current spikes generating voltages higher than 5V on the ADC input?
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
I had the same issue.
What I did to resolve the issue with first several measurment is following:
In section void setup() I added cycle with 5 measurements
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
I have the same problem and i do not know what to do with this.
It might be significant error in the long run without load
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
What you are both seeing, and it only happens at switch-on or on reset, is the high pass software filter settling. You can either give the filter time to settle by ignoring the first few readings as Mel did (but you must let the readings continue or the filter won't move!) or you can use the 'low pass' filter in the more recent version of emonLib, which is initialised to close to the final value and exhibits only a minimal disturbance at switch-on.
Beegee:
You can increase the burden as you suggest, but if possible it would be better to run as many turns of wire as possible through the CT so that you have a multi-turn primary winding. This in effect reduces the internal errors in the magnetics of the CT. Then you calculate your burden resistor on that basis. Transformers work on Ampere turns, normally the primary winding is 1 turn and 100 A, but say you have 5 turns, then 10 A gives you 50 At and you do the burden calculation for a current of 50 A. You know the current ratio for the CT, hence you calculate the secondary (the burden) current.
Then the easy way to calculate the burden value is to forget all about peak values and √2 and reckon to have 1.1 V rms (for an emonTx), or 1.5 V (for 5 V Arduino) across the burden. Those values allow some headroom for component tolerances.
Spikes are always a problem. No-one has ever reported a blown-up input, if you're concerned then you can clamp the input to the supply rails with Schottky diodes, then put a 1 kΩ series resistor to limit the current into the analogue input.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
Robert, could you suggest some measures in order to minimise errors/deviation in results without load
Thanks
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
I'm guessing that you're using an Arduino and a breadboard front-end, and you are looking at rms current.
Two problems: Anecdotally, we see a lot more complaints about residual noise in Arduino builds, and secondly, the rms rectifier rectifies the noise as well as the signal, and then there's no way to remove it, other than subtracting your 'best guess' for the value.
Two solutions: Pay a lot of attention to the front-end layout and grounding, use an Arduino that includes filtering between Vcc and AVcc, and feed it with a well-regulated clean power supply. That's because we believe a lot of the noise gets onto the ADC reference via the power supply.
Second, if you want power, use an ac adapter and calculate real power. That way the noise isn't rectified so half of it gives positive power and half gives negative, so most of it gets cancelled.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
Do you know which Arduino boards have filtering between Vcc and AVcc? I am using a Arduino Yun. The Yun should be the final board, because I want to get the values over WiFi and I need the Linux part for storing recorded data over a long time on the sd-card.
On the Yun the AVcc is directly connected to VCC, so I guess I get a lot of noise coming in. Specially because the second controller with the WiFi and Ethernet is on the same Ground and I do not see any filter or decoupling between the two.
So I might have to live with the noise level.
I will try to get an ac adapter to measure voltage in addition and check the results.
Thanks for your support.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
I don't know anything about the Arduino range. There may be differences even between allegedly the same boards from different manufacturers. But I think I've seen it reported somewhere. Have you searched the forums?
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
I think the Leonardo has the filter. I've also got spectacular low-level A/D performance from Arduinos that lack the filter by paying careful attention to Robert's list above.... especially the supply. I've not played with a Yun, but looking at its details briefly now, I could imagine it could be pretty noisy down there. Before you give up on it as your front-end processor, you might want to experiment with the simple sketch posted in this thread: http://openenergymonitor.org/emon/node/10111. You might need to tweak it a bit to make it work with your wifi chip, but it'll show you a picture of the noise, which is often a good first step in determining the source. If it shows a lot of 50Hz component, then you might consider experimenting with different 5V supplies. How are you sourcing the 5V at the moment?
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
Thanks dBC for the link about noise on Arduino boards and relation to power supply.
The Yun doesn't have a 5V power regulator on board, so I can power only through USB or build up a regulated 5V power supply and connect through Vin.
I used the idea of your sketch and adapted it into my own sketch (by using a modified "double EnergyMonitor::calcIrms(unsigned int Number_of_Samples)" taken from EmonLib.cpp), recording min and max readings from the ADC port over a long time. The test measured every 2 secs, makes 1480 readings every time and runs about hour.
The changes in the Emon function are only 2 lines which saves min and max values in 2 global variables:
if (sampleI < min) min = sampleI;
if (sampleI > max) max = sampleI;
Results:
Arduino YUN
- USB power from PC read over serial - min 502, max 546, diff 44
- USB power from PC read over WiFi - min 501, max 546, diff 45
- Samsung tablet charger (2A) USB out - min 453, max 573, diff 120
- Huawei media station supply (2A) USB out - min 504, max 528, diff 24
Arduino Uno
- USB power from PC - min 503, max 518, diff 15
- 12V DC supply from a modem - min 511, max 512, diff 1
- 9V DC supply from a portable radio - min 511, max 512, diff 1
So the Arduino Uno shows good results with a good power supply. The Arduino Yun has bigger problems. Next step is to get a good 5V supply for the Yun and see if it can be as good as the Uno.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
Your wide variation in peak-to-peak noise under various YUN power source options is a good starting clue. Using the best one there (Huawei media station supply), I'd enable INSPECT_SIGNAL in my sketch and then plot the waveform. That'll tell you whether there's still some 50Hz ripple (in which case you can keep pursuing better and better 5V supplies) or whether it's all much higher frequency stuff (in which case it may be as good as it gets).
Peak-to-peak values are useful, but seeing what the waveform looks like is even more useful, and your Arduino makes for a reasonable rudimentary scope; and a particularly well positioned scope since it's the noise the Arduino AtoD sees that you care about.
Depending on how well they've designed their power and ground planes, it's conceivable that even with a pure zero-ripple 5V lab supply, there'll be noise on Vcc at various points on the board... especially given they've got that high speed MIPS processor and wifi stuff to power.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
I tried to do something like you in your sketch:
But the results look quite different:
1st sample with the CT clamped around a wire with no load.
2nd sample with the CT open.These were taken on the Arduino Yun (700 samples is the max, not enough memory to do more). And I am not sure about the sampling rate, because I think the Yun is clocked with 12MHz only.
Anyway, that does not look like a 50Hz ripple, more like some HF noise coming from the Yun. I used the Huawei power supply for this, which showed the smallest max and min values.
I will still try to get my hands on a better power supply and check if it improves anything.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
If you time how long that first for loop takes (the capture one), you'll have a pretty good idea of the timebase. To rule out noise that's arriving at the CT terminals, it might make sense to disconnect the CT for the capture. Provided you have an on-board burden that should be sufficient to terminate the disconnected input. If you're using external burdens (i.e. burdens inside the CT) then after you unplug the CT you might want to short out the inputs to stop it acting as an antenna.
[EDIT] P.S. The Yun schematic shows them having a bet each way on that AVCC filter. They've conveniently placed a 0R resistor (R112) between AVCC and VCC. That's probably to give them (and you) options. If your soldering skills are up to it, you could probably replace that resistor with a ferrite bead and add a cap to ground. That would give you the Atmel suggested filter on AVCC (see the datasheet for the exact details). On that part, the datasheet calls for a separate LC network on each of the two AVCC input pins which you won't be able to do, but replacing R112 with an LC filter might be an interesting experiment.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
dBC, thanks for the tips.
I recorded again, this time the CT completly disconnected. I still see a lot of noise in it.
Then I thought I have a look on Vcc. I put VCC on a resistor divider with 10uF between mid-point and GND.
But I do not see anything that looks like 50Hz.
For now waiting for a better power supply for the Yun before I continue.
For the LC filter on AVcc, I cannot get my hands on SMD parts and I don't want to ruin my Yun.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
"Then I thought I have a look on Vcc. I put VCC on a resistor divider with 10uF between mid-point and GND."
If you want to see the noise on Vcc, you put the capacitor between Vcc and the input, thereby coupling the alternating component of whatever is on Vcc into the input.
(In fact, with your right-hand circuit, you should only see ~ 1.35 mV peak-peak with 1 V rms (yes, one whole volt!) 50 Hz sine wave on Vcc, because the divider-capacitor network acts as a low-pass filter with a corner frequency of about 0.068 Hz.)
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
For now waiting for a better power supply for the Yun before I continue.
OK, worth a try I guess, but keep in mind my paragraph above starting "Depending on how well they've designed their power and ground planes...".
Noise you find on Vcc isn't necessarily coming from the supply. It may be you've already found an excellent supply (and it's clearly way better than some of the others you tried).
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
Besides of external noise, anybody has an idea how to implement the "ADC Noise Reduction Mode" on the Arduino? I searched on the internet, but couldn't find a code example for the Arduino boards.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
You need to read sections 23.6 for the general procedure, and section 11 (interrupts) of the data sheet. Basically, you can't set "Noise Canceler" mode and then use the straightforward analogRead( ), nor emonLib, so it's not a simple process. I found a lot of links using "ADC Noise Canceler" (the one occasion where bad spelling is helpful!) as the search term, and this one might help: http://forum.arduino.cc/index.php?topic=45949.0
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
Thanks for the link, I was there before, but didn't read long enough. Found now the code how to do the noise reduction. Actually not that difficult.
And the results are looking promising. Measured again the CT input circuit without CT attached and the noise is reduced. Still not perfect, but it gets better.
Interesting thing, the cycle time for the readings reduced from 220us (analogRead) to less than 20us (rawAnalogReadWithSleep).
The sketch I used on the Yun to read the above graphs is in the attachment, including the "int rawAnalogReadWithSleep( int channel )" function which I got from member "Coding Badly" from his post in this thread.
I have already changed my own sketch to read the CT and can see some improvments. I took the "calcIrms" and integrated the changed version directly into my code. Will connect the CT tomorrow and check how the measurements look like.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
and the noise is reduced. Still not perfect, but it gets better.
Interesting. I've never found it makes much difference, but I've also never tried it on a ATmega32u4, so whatever works for you I guess. There are a lot of graphs above, and not much labelling. Can you show us just two graphs please, one using the normal analogRead() and the other using your rawAnalogReadWithSleep() with no other changes.
Interesting thing, the cycle time for the readings reduced from 220us (analogRead) to less than 20us (rawAnalogReadWithSleep).
I think if you timed it with a wall clock it would take exactly the same time. When you're in ADCNRM sleep mode CLKio won't be running, so timer0 won't be running, so all the micros() and millis() stuff that is based on it will be frozen in time.
My gut feel is that your primary source of switching noise will be that honking great 400MHz MIPS processor running Linux, complete with an ethernet switch, MAC, PHY, wifi etc. All of that runs at 3.3V and gets its power from your 5V rail via that buck converter (U10). That thing is going to have a very nasty current draw (probably close to a square wave) on your 5V rail, and you're left with C96 and C97 to try and smooth it out. Are they ceramics?
It looks like you might be able to power down that entire side of the board by temporarily grounding TP51. It would be interesting to see what that does to your AVR noise levels, but you'd lose your comms abilities to report it. If you're really keen, you could potentially knock up a sketch that captures the PtoP noise level in AVR EEPROM, and then displays it after the board comes back up, complete with the Linux half of the board.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
@dBC,
regarding the conversion time, I forgot that the clocks will be down in sleep mode. It just felt faster.
Difference is not big, just 2 or 3 digits less noise. Not worth to put another diagram here.
I accepted that I will have no good readings at low currents. Thinking now more about looking for a CT sensor for the range I need. That would be 0-10A spread over the 5V measurement range of the ADC.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
Excuse me if i reopen this post but from a day i'm becoming crazy.
I'm using normally SCT013-000 100A with an arduino or an attiny and with a burden of 220ohm and it works with my calibration and write correct .<
Now i've bought some new sensors and arrive me SCT013 100A 50mA.
With the same hardware if i put a power switch 2000ma as load my hardware give me 2910w (!!!!), 12,65 Ah !!!!!
and if i use a 1000w load it gives me 12kw :P
Please someone can help me ? i must work only with calibration or i must change something in hardware ?
thanks
Dario
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
From where did you buy your SCT013-000 100A?
As far as I know, YHDC make 10 versions of the SCT-013. The two that you might have are the SCT-013-000 and the SCT-013-000V. The SCT-013-000V is a new addition to the range. I have not come across an SCT013 100A.
A current transformer is a current source: the secondary (output) current is proportional to the primary current. For the SCT-013 basic transformer, for 100 A of primary current in, you get 50 mA out. The burden resistor changes this current into a voltage for your Arduino to measure. The difference between the -000 and the -000V is that you supply the burden resistor for the -000, and it is already built into the casing of the -000V.
Unfortunately, I cannot check your numbers because powers in watts or kilowatts mean nothing unless I know the voltage at the time.
An SCT-013-000 with a 220 Ω burden and an Arduino running at 5 V implies that you intend to measure a maximum current of 14.5 A. The current calibration coefficient for that should be 9.09.
I do not know what 14.5 A means in kW without knowing your voltage. The unit "Ah" is a measure of the capacity of a battery - I think you are confused there.
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
Yes i'm very confused but i've solved...
I've open the sct013-000 and sct013-030 and the only difference is a burden resistor of 62ohm (and i don't know if transformer is the same but it seems so).
So i've put two 33ohm in series and it works...without 220ohm burden
Thanks
Dario
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
Hi Dario, I've an SCT013-000 but i cannot make it works good... can you help me with wiring and code?
Thanks!
Enrico
Re: SCT013 100A 50mA -- different to SCT013-000 100A type ???
That is a silly question because you do not tell us what you are doing when it does not work, or what you are seeing. You should follow the diagrams in Resources > Building Blocks. It will then work correctly. If you still have a problem, read the FAQ page or the Forum Sticky to see what you must tell us so that we can help you.