A CT (Current Transformers) sensor is a device used to measure alternating current.
A CT sensor, like other current transformers is made by a primary winding, a magnetic core and a secondary winding. The primary winding is often a single wire passing through the main core of the transformer. The seconday winding is used to sense the AC current passing through the primary winding wire. They are usually build to be clipped on the primary wire. As any other AC transformer the primary winding current produce a change in the magnetic field of the core. This change cause current on the secondary winding.
This library implements a way to read current using a CT sensor on ATmega.
It performs an RMS read on ADC, then computes the RMS voltage on ADC input.
So the primary current Ip is calculated by using the formula
Ip = V * Ns / Rburden
Ns = Turns on secondary coil, i.e. the CT sensor core turns
Rburden = Burden resistor of the CT sensor.
Vp = Voltage on primary
Vs = Voltage on secondary
Np = Turns on primary
Ns = Turns on secondary
Ip = Current on primary
Is = Current on seconday
CTratio = Np / Ns
From the Faraday’s Law
Vs/Vp = Ns/Np
And, due to conservation of energy
Vp*Ip = Vs*Is
Vp = (Np/Ns)*Vs
Vp = (Vs*Is)/Ip
CTratio*Vs = (Vs*Is)/Ip
Is = Ip * CTratio
Using the ADC of our microcontroller we can read voltages, so we need to “convert” the current output of the CT sensor to voltage. We can doing this using a resistor, the burden resistor.
Below the schematics used on the ATmega sample.
Notice the two biasing 10k resistors.
For more detail: CT Sensor on AVR ATmega