Mengatasi Sensor Arus ACS712 Tidak Linear : Resolved Problem

Sensor ACS712 adalah merupakan sensor untuk mendeteksi arus. Penggunaan sensor arus ACS712 ini Kebanyakan memiliki kekurangan yakni nilai arus yang di dapatkan dari sensor tidak linear sehingga terkadang kita membutuhkan tingkat linear yang lebih tinggi. Sebelum membahas lebih lanjut, akan di jelaskan terlebih dahulu tentang sensor arus ACS712. ACS712 ini memiliki tipe variasi sesuai dengan arus maksimal yakni 5A, 20A, 30A. ACS712 ini menggunakan VCC 5V.

 Gambar 0 Sensor Arus ACS712 5A

Pada pembahasan kali ini sensor arus yang di gunakan adalah variasi ACS712 dengan nilai arus maksimal 5A buatan LC Electronics dengan menggunakan Arduino MEGA 2560 sebagai Microcontrollernya. Sensor Arus ACS712 - 5A ini memang memiliki karakteristik dapat dilihat dari cuplikan dari datasheet ACS712 - 5A di bawah ini :

Gambar 1 Karakteristik Sensor Arus ACS712 5A

dengan bentuk grafik perubahan Vout sensor terhadap arus yang di deteksi. Seperti di bawah ini :

Gambar 2 Output Voltage Vs Arus Sensor Arus ACS712 5A

Sangat Jelas bahwa dari kedua gambar di atas bisa kita analisa bahwa Nilai perubahan arus yang terjadi berdasarkan perubahan tegangan output sensor dengan range 180 - 190 mV/A dengan nilai ideal 185mV/A pada gambar 1. Analisa gambar 2 memiliki karakteristik nilai tegangan output sensor tanpa beban terdeteksi pada tegangan 2.5V dan perubahan tegangan setiap 185mV mengartikan 1A. disini yang akan kita gunakan adalah nilai idealnya.

Dari pemahaman sederhana tersebut, maka kita manfaatkan menjadi dasar untuk membuat sebuah algoritma program yang akan kita gunakan. sebagai berikut :
1. Pengambilan data dari sensor berupa tegangan simpan pada var Vo.
2. Mengurangi nilai Vo - 2.50 simpan pada var Voa dan di absolutkan.
3. Setelah di dapat Voa/0.185 simpan pada var Amp(A).
4. Nilai var Amp(A) dirubah ke nilai (mA) dengan Amp*1000.(Alasan merubah ke nilai mA, untuk memperdetil dalam pengkalibrasian)
5. Melakukan Proses kalibrasi.

Proses kalibrasi Sendiri memiliki algoritma sebagai berikut :
1. Jika waktu di bawah waktu tersetting melakukan penjumlahan Nilai var Amp(mA) secara berkala.
2. Jika di atas waktu tersetting, akan dilakukan pembagian nilai antara Jumlah total Amp(mA) yang telah di dapatkan di bagi dengan nilai waktu tersetting.
3. Sehingga didapatkan nilai rata-rata, di simpan pada var cal_value.

Nilai cal_value ini di gunakan untuk mengurangi ketidak stabilan pada output sensor arus ACS712.
sehingga di dapatkan nilai Arus fix dengan mengurangi nilai Amp(mA)-cal_value.

Berikut Code dari algoritma sederhana di atas :

double temp_amp=0.0; //gunakan tipe data double pada penampung penjumlahan arus sensor
float temps, adcVolt, cal_value;
unsigned long calTime=0, time_cal=600;
boolean on_calibrasi=false;

void setup(){
  Serial.begin(9600);
  Serial.println("Running System");
  Serial.print("Time Set :");
  Serial.println(time_cal);
}

void loop(){
   get_data();
   delay(500);
}

void get_data(){
  temps     = analogRead(A0) * (5.0 / 1023.0); //convert ke tegangan dari ADC
  adcVolt   = abs(temps - 2.50); //mengambil selisih tegangan pada zero point
  adcVolt  /= 0.185; //Arus dalam A
  adcVolt  *= 1000; //merubah Arus A ke mA

  //proses kalibrasi
  /*
    bagian if(calTime < time_cal) merupakan seleksi waktu. Digunakan sebagai
    pembatas satu kali kalibrasi, hal ini sangat di anjurkan untuk mengurangi
    kelebihan muatan pada var calTime dan temp_amp dimana jika tidak di batasi
    akan melakukan penambahan berulang-ulang.
  */
  if(calTime < time_cal){
    calTime++;
    Serial.print("Kalibrasi Time:");
    Serial.println(calTime);
    temp_amp += adcVolt; //penjumlahan arus output sensor
    on_calibrasi = true;
  }else if(on_calibrasi == true){
    cal_value = temp_amp/time_cal; //pembagian nilai keseluruhan dengan waktu
    on_calibrasi = false;
  }

  if(on_calibrasi == false){
    adcVolt -= cal_value;
    adcVolt = abs(adcVolt);
    Serial.println("Dalam");
    Serial.print(" mA :");
    Serial.println(adcVolt);
    adcVolt /= 1000;
    Serial.print(" A :");
    Serial.println(adcVolt);
    Serial.println(" ");
  }
}


akan dijelaskan secara singkat beberapa bagian yang belum di jelaskan pada bagian algoritma dari kode diatas. time_cal Merupakan nilai lama waktu pengambilan data, kode menggunakan 600 dengan delay waktu 500ms jadi sekitar 5menit dan on_calibrasi digunakan untuk membatasi 1 kali kalibrasi saja dengan perbandingan nilai time_cal, hal ini dapat anda manfaatkan ketika alat anda menyala pertama kali. fungsi abs() digunakan untuk meng-absolute-kan nilai output agar hasilnya hanya positif saja. dan var temp_amp gunakan tipe data double, untuk menanggulangi penjumlahan yang sangan besar.

Untuk pengujian ini dilakukan dua kali pengujian dengan kode di atas, pengujian pertama menggunakan konfigurasi hardware standart dan pengujian kedua konfigurasi hardware modif, Konfigurasi hardware modif menggunakan penambahan komponen setelah output sensor dengan dioda 1N4148 dan kapasitor 100nF di sarankan tipe keramik. Pengujian dua kali ini bertujuan agar anda dapat membandingkan penggunaan kode diatas dengan konfirgurasi standart dan konfigurasi modif.

Perhatian : Konfigurasi Modif merupakan rangakain Sesuai dengan pemahaman saya, dengan hasil yang sudah saya coba. Artikel ini hanya sebagai refrensi anda tanpa jaminan apapun selebihnya merupakan tanggung jawab anda :D

Konfigurasi Hardware Standart seperti ini :

Gambar 3 Penggunaan Skema Standart Sensor Arus ACS712 dengan Arduino

Akan menghasilkan output seperti ini pada console:

Gambar 4 Hasil Console dengan Konfigurasi hardware Standart

Tetapi jika menggunakan konfigurasi Hardware modif akan sedikit berbeda hasilnya :
Gambar 5 Penggunaan Skema Modif Sensor Arus ACS712 dengan Arduino

Didapatkan kira-kira nilai sebagainya berikut pada console :

Gambar 6 Hasil Console dengan Konfigurasi hardware modif

perbedaan antara hasil hardware modif dan standart tidak terlalu besar, tetapi pada konfigurasi hardware modif dapat memblock nilai hingga di sekitar 0.04~0.05A, tetapi jika menggunakan konfigurasi standart output yang didapatkan mencapai 0.07A. 

Kembali kepada anda, Anda dapat menggunakan salah satu di antara keduanya. :)
Berikut foto-foto Rangkaian:

Gambar 7 Pengujian Hardware Standart ACS712

Gambar 8 Pengujian Hardware Modif dengan Diode dan Kapasitor ACS712

 
 Gambar 9 Sensor Arus ACS71

Percobaan di atas merupakan pengujian tanpa beban, dengan menggunakan kalibrasi sederhana dengan sebagai pengkondisian nilai output yang sesuai. sehingga di harapkan mendapatkan nilai ideal 0A.

Link Download Source Code : https://github.com/JawaJava/Jawa-ACS712

Mohon untuk di koreksi jika ada kekeliruan, Terima Kasih. #indonesiaSudahMerdeka  
Jika Merasa Terbantu dengan Artikel ini Anda bisa Menshare artikel ini untuk teman-teman anda :)



Comments

  1. terimakasih banyak mas... bermanfaat banget, smoga ilmunya barokah... aamiiin

    ReplyDelete

Post a Comment

Popular Posts