Modul sensor ini bisa digunakan untuk mengukur arus AC (alternate current) hingga 5 Amperesecara non-invasive(tidak mempengaruhi rangkaian elektronika yang diukur karena pengukuran dilakukan tanpa kontak elektrik langsung — juga dikenal dengan istilah "split core current transformer") dengan cara "penjepitan" (clamping) pada kabel pembawa arus.

Cara kerjanya dengan berfungsi sebagai koil induksi yang mendeteksi perubahan medan magnet yang terjadi di sekeliling konduktor pembawa arus. Dengan mengukur jumlah arus yang dibangkitkan oleh koil kita dapat menghitung jumlah arus yang melewati konduktor tersebut (prinsip medan magnet pada trafo / transformer).

Modul ini sudah memiliki resistor pembagi beban / load sampling resistor sebesar 200Ω yang mengubah arus menjadi tegangan terukur.

Karakteristik Elektrik
Perhatian: modul ini tidak bisa digunakan untuk mengukur arus searah / DC(arus searah tidak menyebabkan time-varying magnetic field yang dibutuhkan untuk pengukuran dengan metoda split-transformerseperti ini), untuk pengukuran arus searah dapat digunakan sensor berbasis efek Hall.

G= ground
S= analog output
N: Not Connected
// Contoh penggunaan dari Arduino
#define ELECTRICITY_SENSOR A0 // Analog input pin that sensor is attached to
 
floatamplitude_current; //amplitude current
floateffective_value; //effective current
 
voidsetup()
{
    Serial.begin(9600);
    pins_init();
}
voidloop()
{
    intsensor_max;
    sensor_max = getMaxValue();
    Serial.print("sensor_max = ");
    Serial.println(sensor_max);
    //the VCC on the Grove interface of the sensor is 5v
    amplitude_current=(float)sensor_max/1024*5/200*1000000;
    effective_value=amplitude_current/1.414;
    //minimum_current=1/1024*5/200*1000000/1.414=24.4(mA)
    //Only for sinusoidal alternating current
    Serial.println("The amplitude of the current is(in mA)");
    Serial.println(amplitude_current,1);//Only one number after the decimal point
    Serial.println("The effective value of the current is(in mA)");
    Serial.println(effective_value,1);
}
voidpins_init()
{
    pinMode(ELECTRICITY_SENSOR, INPUT);
}
/*Function: Sample for 1000ms and get the maximum value from the SIG pin*/
intgetMaxValue()
{
    intsensorValue; //value read from the sensor
    intsensorMax = 0;
    uint32_t start_time = millis();
    while((millis()-start_time) < 1000)//sample for 1000ms
    {
        sensorValue = analogRead(ELECTRICITY_SENSOR);
        if(sensorValue > sensorMax)
        {
            /*record the maximum sensor value*/
            sensorMax = sensorValue;
        }
    }
    returnsensorMax;
}