Arduino + Sensor ACS712 : Detektor Nyala Mesin dengan Sensor Arus ACS712 - Elang Sakti
Download Ebook Belajar Arduino PDF, Arduino untuk pemula
Jasa Pembuatan Program Arduino, pemrograman Arduino
# Hack Your Skills! to be Professional Mechatronics

Arduino + Sensor ACS712 : Detektor Nyala Mesin dengan Sensor Arus ACS712

Tidak ada komentar
Mendeteksi Aktivitas Mesin Produksi dengan Sensor Arus ACS712 dan Arduino
Salah satu implementasi dari sensor arus
Hello friends, :) kali ini kita akan membahas tentang sensor arus ACS712 dan Arduino. Pembahasan pada artikel ini akan difokuskan pada bagaimana menjadikan sensor ACS712 sebagai detektor aktivitas mesin. Aktivitas yang dimaksud yaitu apakah sebuah alat atau mesin sedang menyala atau tidak. Studi kasus yang kita angkat ini adalah salah satu pengembangan project yang dikerjakan oleh kami untuk membuat timer switch controller mesin produksi yang terdiri dari 2 buah mesin produksi dan 2 buah motor pompa di suatu pabrik. Akan tetapi, kita hanya akan membahas bagaimana menjadikan sensor arus ACS712 sebagai pemicu apakah mesin harus nyala atau tidak.

Dengan demikian, yang akan kita ulas adalah bagaimana rangkaian sensor ACS712 untuk tegangan AC serta bagaimana cara memprogramnya. Selain itu, kita akan membahas sedikit tentang tegangan RMS dan beberapa hal penting lainnya. Mari kita mulai dengan skema sensor ACS712 buatan Allegro ini.

Rangakaian Sensor ACS712

Rangkaian ini adalah rangkaian yang kami anggap stabil. Sebelumnya kami sudah mencoba rangkaian yang disarankan oleh Allegro pada dokumen ACS712, hanya saja output yang diharapkan kurang stabil. Entah itu karena memang dari sananya begitu atau komponen yang saya gunakan kurang bagus. Anda boleh mencoba keduanya. :)
Rangkaian sensor acs712
Rangkaian dasar ACS712
modifikasi skema sensor acs712
Modifikasi rangkaian ACS712

Berdasarkan datasheetnya, jika kita menggunakan ADC pada arduino dengan analogRead(), maka output dari ACS712 ini standarnya adalah 512. Akan tetapi dalam praktek, komponen yang kita pakai akan sangat mempengaruhi sehingga bisa saja keluaran dari sensor berkisar antara 511-513. Dalam kasus ini, kita tidak akan terlalu merepotkan hal tersebut karena tujuan dari controller ini bukanlah untuk mengukur arus, tapi menentukan apakah ada arus yang mengalir atau tidak.

Output ACS712 dibaca dengan analogRead() arduino
Jika keluaran sensor jauh dari angka 512, maka ada dua kemungkinan: (1) sensornya rusak, (2) ada rangkaian yang tidak benar, terputus, atau renggang (jika menggunakan project board). Angka 512 berarti tidak ada arus yang mengalir. Jika angka lebih dari 512 (misal 520) berarti ada arus maju yang lewat, tapi jika angka lebih kecil dari 512 (misal 492) berarti ada arus mundur yang lewat.

Dalam tegangan DC, arusnya searah. Sehingga sensor akan menunjukkan angka di atas 512 atau di bawah 512 dengan stabil. Tapi jika pada tegangan AC, maka output sensor akan naik-turun karena arusnya bergerak bolak-balik. Intulah kenapa pada gambar di atas kita tampilkan output maksimal dan minimal. Silakan dicoba untuk lebih memahaminya. :)

Berikut ini adalah program yang kami gunakan untuk menampilkan data sensor pada LCD seperti di atas. Silakan pin sensor dan LCD-nya disesuaikan.

#include <LiquidCrystal.h>

// coder haripinter, elangsakti.com
// ACS 712
const byte sensor = A0;

// Settingan  LCD RS E D4 D5 D6 D7
LiquidCrystal lcd(8,9,10,11,12,13);

void setup() {
    pinMode(sensor, INPUT);
    lcd.begin(16,2);
}

void loop() {
    sensor_listener();
}

int acs_ref_data = 512;
int acs_data = 512;
int acs_data_max = acs_ref_data;
int acs_data_min = acs_ref_data;

unsigned long delay_now = 0;
unsigned long delay_last = 0;
unsigned long delay_limit = 1000;

void sensor_listener(){
    acs_data = analogRead(sensor);
    // nilai tertinggi
    if(acs_data > acs_data_max){
      acs_data_max = acs_data;
    }
    // nilai terendah
    if(acs_data < acs_data_min){
      acs_data_min = acs_data;
    }
    
    if(millis() - delay_last >= delay_limit){
      lcd.setCursor(0,0);
      lcd.print("Min: ");
      lcd.print(acs_data_min);
      lcd.print("  ");
      
      lcd.setCursor(0,1);
      lcd.print("Max: ");
      lcd.print(acs_data_max);
      lcd.print("  ");
      
      delay_last += delay_limit;

      acs_data_min = acs_ref_data;
      acs_data_max = acs_ref_data;
    }
}


Detektor Nyala Mesin / Alat

Berdasarkan karakteristik sensor ACS712 dalam mendeteksi arus AC, maka kita bisa menggunakan 2 cara dalam menentukan apakah alat atau mesin sedang menyala atau tidak. Pertama, kita bisa menggunakan konsep output minimum-maksimum atau sering diterapkan pada tegangan RMS. Kedua, kita bisa menggunakan nilai output minimum saja atau maksimum saja. Dalam alat controller mesin produksi yang kami buat yaitu menggunakan konsep minimum-maksimum karena kita anggap bisa lebih "valid" dalam aplikasinya.

Yang kita hitung adalah selisih antara minimum maksimum, tapi tetap menggunakan angka 512 sebagai referensi. Inti logikanya seperti ini:

Jika (Minimum < 512) DAN (Maksimum > 512) DAN (Maksimum-Mininum > LIMIT)
    Berarti Mesin Nyala
Jika tidak
    Mesin Tidak Nyala

LIMIT bernilai antara (2-1020) digunakan untuk mengatur responsifitas detektor. Nilai LIMIT menentukan batas minimal arus yang akan menjadi acuan detektor. Jika alat yang akan dideteksi mengkonsumsi arus yang rendah, maka nilai LIMIT bisa dikecilkan. Sedangkan jika alat yang akan dideteksi mengkonsumsi arus yang besar, nilai LIMIT bisa dinaikkan. Berikut ini sketch arduino untuk simulasi. Pada simulasi ini, alatnya yang dideteksi adalah kipas angin 220VAC 35W.

#include <LiquidCrystal.h>

// coder haripinter, elangsakti.com
// ACS 712
const byte sensor = A0;

// Settingan  LCD RS E D4 D5 D6 D7
LiquidCrystal lcd(8,9,10,11,12,13);

int acs_ref_data = 512;
int acs_data = 0;
int acs_data_max = acs_ref_data;
int acs_data_min = acs_ref_data;
int acs_selisih = 0;

int LIMIT = 5;

unsigned long delay_now = 0;
unsigned long delay_last = 0;
unsigned long delay_limit = 1000;

void setup() {
    pinMode(sensor, INPUT);
    lcd.begin(16,2);
}

void loop() {
    sensor_listener();
}

void sensor_listener(){
    acs_data = analogRead(sensor);
    // nilai tertinggi
    if(acs_data > acs_data_max){
      acs_data_max = acs_data;
    }
    // nilai terendah
    if(acs_data < acs_data_min){
      acs_data_min = acs_data;
    }
    
    if(millis() - delay_last >= delay_limit){
      lcd.setCursor(0,0);
      lcd.print("Min: ");
      lcd.print(acs_data_min);
      lcd.print("  ");
      
      lcd.setCursor(0,1);
      lcd.print("Max: ");
      lcd.print(acs_data_max);
      lcd.print("  ");

      lcd.setCursor(10,0);
      lcd.print("Stat:");
      lcd.setCursor(10,1);

      // untuk detektor
      acs_selisih = acs_data_max-acs_data_min;
      if( (acs_data_min < acs_ref_data) && 
          (acs_data_max > acs_ref_data) && 
          (acs_selisih > LIMIT)){
        lcd.print("ON ");
      }else{
        lcd.print("OFF");
      }


      delay_last += delay_limit;
      acs_data_min = acs_ref_data;
      acs_data_max = acs_ref_data;
    }
}

Analisis sensor acs712 dan arduino
Kondisi saat kipas mati

contoh program sensor arus acs712
Kondisi saat kipas nyala.
Untuk lebih jelasnya, bisa cek di video berikut ini:



Proteksi Sensor ACS712 dari Noise

Sensor ACS712 menggunakan hall-effect untuk mendeteksi arus, artinya sensor ini mendeteksi induksi elektromagnet untuk menentukan besar arus arus yang dikonsumsi. Oleh sebab itu, sensor akan berperilaku aneh jika dekat dengan benda-benda yang mengandung magnet atau elektromagnet. Misalnya relay, transformer, atau bahkan kabel listrik dengan induksi elektromaknet yang terlalu kuat.

Solusinya : (1) Jauhkan dari benda-benda atau komponen yang mengandung elektromagnet, jangan sampai elektromagnetnya mengenai penampang tengah IC. (2) Amankan sensor dengan penutup berupa lempengan berbahan besi pada bagian atas dan bawah PCB.

Itu dulu untuk materi kali ini, semoga bermanfaat dan selamat berkarya. :)



Written by Hari Santoso
Arduino + Sensor ACS712 : Detektor Nyala Mesin dengan Sensor Arus ACS712
Bahasan: Salah satu implementasi dari sensor arus Hello friends, :) kali ini kita akan membahas tentang ...
Published at Kamis, 01 September 2016, Updated at Kamis, 01 September 2016
Reviewed by dr. on
Rating: 4.7

Tidak ada komentar :

Poskan Komentar