Interfacing Sensor Arus ACS712 Dengan Arduino

Spread the love

Sekilas Tentang ACS712

ACS712 merupakan sebuah modul sensor untuk mengukur arus baik arus AC maupun arus DC yang menggunakan teknologi Hall Effect. Yang dimaksud dengan Hall Effect yaitu mengalirkan jalur beban yang diukur melalui suatu media konduksi tembaga untuk menghasilkan medan magnet.

Medan magnet tersebut kemudian diubah menjadi tegangan yang proporsional terhadap arus yang mengalir oleh sebuah IC Hall. Modul sensor ACS712 mempunyai 3 varian, yaitu :

  • ACS712-05B untuk pengukuran arus dalam rentang -5A sampai 5A
  • ACS712-20A untuk pengukuran arus dalam rentang -20A sampai 20A
  • ACS712-30A untuk pengukuran arus dalam rentang -30A sampai 30A

Gambar berikut ini menunjukan Typical Application dari modul sensor ACS712.

ACS712 typical Application

Dengan tingkat akurasi yang tinggi, harga yang terjangkau dan ukuran yang kecil, menjadikan modul ACS712 sangat cocok untuk digunakan pada berbagai aplikasi maupun project antara lain :

  • Kontrol motor
  • Deteksi dan managemen arus beban
  • Switching Power Supply
  • Proteksi gangguan arus berlebih
  • dll
ACS712 Sensitivity Graphics

Pada gambar diatas merupakan datasheet grafik sensitivitas dari masing-masing sensor ACS712 5A, ACS712 20A dan ACS712 30A. Dari grafik linier tersebut bisa diambil kesimpulan yaitu :

  • Offset tegangan output = 2,5V
  • ACS712 5A mempunyai sensitivitas 185 mV/A
  • ACS712 20A mempunyai sensitivitas 100 mV/A
  • ACS712 30A mempunyai sensitivitas 66 mV/A

Oleh karena data sensitivitas masing-masing ACS712 yang berbeda-beda, maka untuk pemrograman nya juga harus disesuaikan dengan tipe ACS712 yang digunakan dengan mengacu pada data sensitivitas tersebut.

Sedangkan contoh program pada artikel ini digunakan ACS712 20A, jika menggunakan tipe ACS712 yang lain, silahkan diganti rumusnya mengacu data sensitivitas dari ACS712 yang digunakan supaya hasil pengukurannya tepat.

Spesifikasi ACS712

Berikut ini adalah spesifikasi dan feature dari sensor ACS712 :

  • Low-noise analog signal path
  • Device bandwidth is set via the new FILTER pin
  • 5 μs output rise time in response to step input current
  • 80 kHz bandwidth
  • Total output error 1.5% at TA = 25°C
  • Small footprint, low-profile SOIC8 package
  • 1.2 mΩ internal conductor resistance
  • 2.1 kVRMS minimum isolation voltage from pins 1-4 to pins 5-8
  • 5.0 V, single supply operation
  • 66 to 185 mV/A output sensitivity
  • Output voltage proportional to AC or DC currents
  • Factory-trimmed for accuracy
  • Extremely stable output offset voltage
  • Nearly zero magnetic hysteresis
  • Ratiometric output from supply voltage

Hardware Yang Dibutuhkan

Hardware yang diperlukan pada contoh program ACS712 dengan Arduino pada tutorial ini antara lain :

  • Modul Sensor Arus ACS712 5A / ACS712 20A / ACS712 30A
  • Arduino UNO / Arduino Nano / Arduino Pro Mini atau lainnya
  • Beberapa kabel jumper M-F / F-F
  • Beban / Load bisa menggunakan Lampu / Bor / Power Supply + Kabel

Rangkaian / Wiring Diagram

Berikut ini adalah koneksi rangkaian antara modul ACS712 dengan Arduino

Modul ACS712Arduino
VCC+5V
GNDGND
OUTA0

Kode Program

  • Pengukuran Arus DC
/*
Measuring DC Current Using ACS712 - www.nn-digital.com 
*/
const int analogIn = A0;
int mVperAmp = 100; // 185 = ACS712 5A, 100 = ACS712 20A, 66 = ACS712-30A
int RawValue= 0;
int ACSoffset = 2500; 
double Voltage = 0;
double Amps = 0;

void setup(){ 
     Serial.begin(9600);
     pinMode(analogIn, INPUT);
}

void loop(){
     RawValue = analogRead(analogIn);
     Voltage = (RawValue / 1023) * 5000; // Voltage ( mV )
     Amps = ((Voltage - ACSoffset) / mVperAmp);
    // Display the Value to Serial Monitor Window
    Serial.print("Raw Value = " ); // shows pre-scaled value
    Serial.println(RawValue);
    Serial.print("mV = "); // shows the voltage measured
    Serial.println(Voltage,3); // display 3 digits after decimal point
    Serial.print("Amps = "); // shows the voltage measured
    Serial.println(Amps,3); // display 3 digits after decimal point
    delay(2500);
 }
  • Pengukuran Arus AC
/*
Measuring AC Current Using ACS712 - www.nn-digital.com 
*/ 
const int analogIn = A0;
int mVperAmp = 100; // 185 = ACS712 5A, 100 = ACS712 20A, 66 = ACS712-30A
int ACSoffset = 2500; 
double Voltage = 0;

float amplitude_current;               //amplitude current
float effective_value;       //effective current 

void setup() 
{
     Serial.begin(9600);
     pinMode(analogIn, INPUT);
}

void loop() 
{
     int sensor_max;
     sensor_max = getMaxValue();

     Serial.print("Sensor_max = ");
     Serial.println(sensor_max);

     Voltage = (sensor_max / 1023) * 5000; // Voltage ( mV )
     amplitude_current = ((Voltage - ACSoffset) / mVperAmp); 
     effective_value = amplitude_current / 1.414;

     Serial.print("Current Max (A) : ");
     Serial.println(amplitude_current,6);//6 number after the decimal point
     Serial.print("Current RMS (A) : ");
     Serial.println(effective_value,6);
     Serial.println();
}

/*
Function: Sampling 5000ms and get the maximum value from A0 pin
*/
int getMaxValue()
{
     int sensorValue;             //value read from the sensor
     int sensorMax = 0;
     uint32_t start_time = millis();
     while((millis()-start_time) < 5000)
     {
         sensorValue = analogRead(analogIn);
         if (sensorValue > sensorMax) 
         {
             //record the maximum sensor value
             sensorMax = sensorValue;
         }
     }
     return sensorMax;
}

Setelah sketch program diatas diupload ke board Arduino, buka Serial Monitor pada Baudrate 9600 dari Arduino IDE untuk melihat hasil pembacaan arus yang diukur.

Selain Modul ACS712, ada beberapa modul elektronik lainnya yang bisa kita gunakan untuk pengukuran arus listrik yaitu modul INA219 dan PZEM-004T. Untuk mengetahui lebih detail mengenai kedua modul tersebut beserta contoh programnya, silahkan buka artikel berikut :

Demikian tutorial kita kali ini mengenai pemrograman modul sensor arus AC – DC ACS712 dengan menggunakan Arduino.

++++++++ Semoga Bermanfaat ++++++++

3 Komentar

  1. Maaf pak ingin bertanya, ini untuk satuan ampere ya pak? jika ingin melihat dalam satuan mikroAmpere seperti apa ya pak?
    kalau tidak bisa, apakah ada saran untuk mengganti sensornya?
    Terima kasih

Leave a Reply

Alamat email Anda tidak akan dipublikasikan.


*