Pada tutorial kali ini hanya akan dibahas untuk mengakses sensor Arus bolak-balik
menggunakan module ACS712 menggunakan mikrokontroler Arduino Uno.
Module ACS712 merupakan module yang difungsikan untuk mensensing arus pada suatu
rangkaian tegangan bolak balik.
Module ini mudah didapatkan di toko – toko elektronika maupun toko online seperti tokopedia,
bukalapak dengan harga yang terjangkau.
Dijual dalam bentuk package PCB dan IC only, dan saya sarankan membelinya yang sudah
package PCB sehingga tidak perlu repot-repot dalam hal pengkoneksiannya ke mikrokontroler.
Dipasaran banyak dijual sensor arus ini dalam bentuk modul, seperti gambar dibawah ini
Karakateristik ACS712
Arduino Uno
Komputer + Software IDE Arduino
Modul ACS712-5A
Breadboard
Kabel Jumper
Modul ACS712-5A merupakan modul sensor yang sudah dipackage dengan PCB sehingga
praktis dan mudah dalam penggunaannya. Berikut gambarnya :
Skema yang perlu dirangkaikan
Langkah – langkah dari mengakses sensor arus ini yang dimana sering mengalami ketidak
stabilan output maka dilakukan beberapa langkah sebagai berikut :
1. Data dari modul sensor ini yaitu tegangan analog yan akan simpan pada variabel data
misal “Voutput”
2. Setelah itu nilai variable Voutput – 2.50, dan kemudian disimpan pada variabel baru
“Voa” dan wajib diabsolutkan.
3. Setelah itu di dapat Voa/0.185 (sesuai dengan datasheet sensor) dan kemudian disimpan
pada var “Amp(A)”.
4. Nilai var Amp(A) diubah menjadi nilai (mA) dengan “Amp/1000” .(dikarenakan untuk
keperluan data dalam pengkalibrasian)
5. Proses terakhir yaitu proses kalibrasi.
1. Jikakalau waktu lebih kecil dibanding dengan waktu setting dalam proses penjumlahan
Nilai var Amp(mA) yang dilakukan 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 calibration
Nilai calibration ini di gunakan untuk mengurangi ketidak stabilan pada output sensor arus
ACS712. Sehingga di dapatkan nilai Arus fix dengan mengurangi nilai Amp(mA)-calibration.
double arus_temporary=0.0;
1
2
3 /* --- www.nyebarilmu.com --- */
4
5 double arus_temporary=0.0;
6 float adc_Volt, cal_value,temp;
7 unsigned long waktu_kalibrasi=0, kalibrasi=600;
8 boolean calibration=false;
9
10 void setup(){
11 Serial.begin(9600); //baud komunikasi serial monitor 9600bps
12 Serial.println("Sistem dimulai");
13 Serial.print("waktu kalibrasi :");
14 Serial.println(kalibrasi);
15 }
16
17 void data_olah(){
18 temp = analogRead(A0) * (5.0 / 1023.0); //konversi tegangan analog menjadi digital
19 adc_Volt = abs(temp - 2.50); //mengambil selisih tegangan pada zero point
20 adc_Volt /= 0.185; //Arus dalam A
21 adc_Volt *= 1000; //merubah Arus A ke mA
22
23 if(waktu_kalibrasi < kalibrasi){
24 waktu_kalibrasi++;
25 Serial.print("Waktu Kalibrasi:");
26 Serial.println(waktu_kalibrasi);
27 arus_temporary += adc_Volt; //penjumlahan arus output sensor
28 calibration = true;
29 }else if(calibration == true){
30 cal_value = arus_temporary/kalibrasi; //pembagian nilai keseluruhan dengan waktu
31 calibration = false;
32 }
33
34 if(calibration == false){
35 adc_Volt -= cal_value;
36 adc_Volt = abs(adc_Volt);
37 Serial.println("Satuan");
38 Serial.print(" mA :");
39 Serial.println(adc_Volt);
40 adc_Volt /= 1000;
41 Serial.print(" A :");
42 Serial.println(adc_Volt);
43 Serial.println(" ");
44 }
45 }
46
47 void loop(){
48 data_olah();
49 delay(500); //waktu tunda per data
50 }
51
Keterangan untuk nilai kenaikan tegangan output disesuaikan dengan tipe sensor yang
digunakan, untuk 5A (185mV), 20A (100mV), dan 30A (66mV).
Arduino Uno
Komputer + Software IDE Arduino
Modul ACS712-5A
LCD 16×2 dan PCF8574
Breadboard
Kabel Jumper
Rangkaian pendukung kestablian pembacaan (dioda 1n4148, dan capasito 100nF)
Rangkaian