I was having trouble calculating the burden resistor necessary for my 5 current sensors. I have 2 200-Amps on the mains coming into the house (I live in north-america), 2 100-Amps floating on different individual breakers and 1 30-Amps also floating.
Each sensor type has a different number of turns on the secondary coil. These figures are not published. I could guess the turn-ratio based on max current output from the manufacturers site. For example, the SCT-013-000 outputs a maximum current of 33 milli-Amp at 100 Amps. In theory. I have two of those, and they have different readings for a given current.
To calculate the burden resistor value for each sensor, I used a known amperage value load, from the reading of a Kill-A-Watt (two 400-Watts lamps) giving me 6.88 Amps.
So for the 200-Amps: I want to be able to monitor total energy usage for the whole house. In my home, each branch coming into the house can supply 100 Amps (for 200-Amps total). I want to maximize the sensitivity on the analog-to-digital pin of the Arduino. This is the key. If a 100 Amps current passes through the sensor, I want the analog pin to read 1024 (this is the maximum value that an analog pin can report, at 5 volts. The circuit suggested in these pages uses a voltage divider (two 10K resistors). So if no current passes through the sensor, you can expect to read 512 on the analog pin. To measure this reading on the analog pin, I used this piece of code in my energy monitor program:
tmpRead = analogRead(analog-pin-for-this-sensor);
if(tmpRead > maxRead)
maxRead = tmpRead;
where tmpRead and maxRead are integers
Since I want to measure a maximum of 100 Amps, I use 6.88/100 * 512 = 35. So I should choose a resistor that will give me a reading of 547 on the analog pin. Let’s look at the formula:
D = Amp / max-Amp * analogRead(no-load)
know-amp-value-from-Kill-a-watt / maximum-amperage-expected-on-this-wire * mid-range-point-from-voltage-divider. So, in this case, a deflection of 35 on the analog pin corresponds to 6.88 Amps on the wire, related to an expected maximum of 100 Amps.
In practice, using the code above, I choose an analog pin and measure the idle value with any burden resistor (try any between 50 and 1000 Ohm). The value on the analog pin (maxRead above) should be close to 512 but can vary because of resistor precision in the voltage divider). I then use a known amperage (hence the Kill-A-Watt) and read the analog pin again. I choose a resistor that will give me a deflection of 35 (for my sensor) using a simple division.
As you can see, this is independent of the type of sensor used. Of course, you have to plan to measure a maximum amperage within the range of your sensor, and I would recommend a safety margin so you don’t overload the analog pin.