Tutorial Fuzzy Logic Controller dengan Arduino (Rule)

Daftar Isi

Hello Sahabat Anak Kendali.
Pada kesempatan kali ini saya akan melanjutkan Tutorial Arduino tentang Fuzzy Logic Controller untuk Membuat aturan fuzzy. dimana sebelumnya saya sudah menulis artikel tentang Fuzzy Logic bagian Fuzzifikasi. kita akan melanjutkan ke bagian Rule dengan kasus yang sama yaitu kita mempunyai satu Input dan satu Output. yaitu berupa SUHU dan PWM motor. anggap saja kita akan membuat Fuzzy Logic yang akan di terapkan pada kipas angin cerdas terdapat sensor suhu sebagai umpan balik, dan motor sebagai aktuatornya. untuk langkah membuat fuzzy logic controller kita terlebih dahulu membuat design himpunan fuzzy atau fuzifikasi.
untuk itu terlebih dahulu baca postingan tentang tutorial fuzzy logic sebelumnya, supaya bisa lebih paham. Arduino, Tutorial Fuzzy Logic Controller dengan Arduino (Fuzzifikasi)

kita mempunyai parameter Input berupa suhu dimana variable linguistiknya yaitu : Dingin, Hangat, Panas
dan juga parameter motor DC dengan variable linguistiknya yaitu : Lambat, Sedang, Cepat
kemudian Rule fuzzy yang akan kita tetapkan sebagai berikut :

  • Jika Suhu Dingin maka Motor Lambat
  • Jika Suhu Hangat maka Motor Sedang
  • Jika Suhu Panas maka Motor Cepat
Baca Juga :  Arduino, Tutorial PID untuk Air Heater dengan Sensor LM35 tanpa Library (Pengujian)

dari rule diatas kita akan membuat persamaan untuk menentukan nilai sebenarnya dari keanggotaan motor berdasarkan keanggotaan suhu tiap rule nya.

Coba kita lihat kembali masing masing himpunan fuzzy berikut, sangat penting memahami himpunan fuzzy untuk menentukan aturan fuzzy yang akan kita buat.

Arduino, Tutorial Fuzzy Logic Controller dengan Arduino (Rule)
Tutorial Fuzzy Logic Controller dengan Arduino (Rule)

Rule pertama, Jika Suhu Dingin maka Motor Lambat. maka untuk rumus nya sebagai berikut :

Rule1 =  150 – (dingin*50);

Rule kedua, Jika Suhu Hangat maka Motor Sedang, karena bentuk grafik himunanya segitiga maka rumusnya ada dua, sebagai berikut :

Rule2a = 100 + (hangat*50);
Rule2b = 200 – (hangat*50);

Rule ketiga, Jika Suhu Panas maka Motor Cepat, maka untuk rumusnya sebagai berikut :

Rule3 = 150 + (panas*50);

setelah kita mengetahui rumusnya, selanjutnya kita akan membuatnya dalam sebuah program.
berikut adalah program Arduino nya.

Code Rule Fuzzy Arduino

float suhu, pwm, out;
float dingin,hangat,panas;
float Lambat,Sedang,Cepat;
float rule1, rule2a, rule2b, rule3;
unsigned char suhuDingin(){
  if (suhu <= 30){dingin =1;}
  else if (suhu >=30 && suhu <=45){dingin=(45-suhu)/15;}
  else if (suhu >= 45){dingin =0;}
  return dingin;
}
unsigned char suhuHangat(){
  if (suhu <= 30){hangat =0;}
  else if (suhu >=30 && suhu <=45){hangat=(suhu-30)/15;}
  else if (suhu >=45 && suhu <=60){hangat=(60-suhu)/15;}
  else if (suhu >= 60){hangat =0;}
  return hangat;
}
unsigned char suhuPanas (){
  if (suhu <=45 ){panas =0;}
  else if (suhu >=45 && suhu <=60){panas=(suhu-45)/15;}
  else if (suhu >= 60){panas =1;}
  return panas;
}
unsigned char pwmLambat(){
  if (pwm <= 100){Lambat =1;}
  else if (pwm >=100 && pwm <=150){Lambat=(150-pwm)/50;}
  else if (pwm >= 150){Lambat =0;}
  return Lambat;
}
unsigned char pwmSedang(){
  if (pwm <= 100){Sedang =0;}
  else if (pwm >=100 && pwm <=150){Sedang=(pwm-100)/50;}
  else if (pwm >=150 && pwm <=200){Sedang=(200-pwm)/50;}
  else if (pwm >= 200){Sedang =0;}
  return Sedang;
}
unsigned char pwmCepat (){
  if (pwm <= 100){Lambat =1;}
  else if (pwm >=150 && pwm <=200){Cepat=(pwm-150)/50;}
  else if (pwm >= 200){Cepat =0;}
  return Cepat;
}
//Fuzzifikasi
void fuzzifikasi(){
  suhuDingin();
  suhuHangat();
  suhuPanas();
  pwmLambat();
  pwmSedang();
  pwmCepat();
}
// Rule
void fuzzy_rule (){
  fuzzifikasi();
// jika suhu dingin maka motor lambat
rule1 = 150 - (dingin*50);
// jika suhu hangat maka motor sedang
rule2a = 100 + (hangat*50);
rule2b = 200 - (hangat*50);
// jika suhu panas maka motor cepat
rule3 = 150 + (panas*50);
}
void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
suhu = 32; // contoh kita memasukan nilai suhu 54 derajat
fuzzy_rule(); // memanggil fungsi fuzzifikasi untuk menghitung keanggotaan masing2 variable
Serial.print("dingin : ");
Serial.print(dingin);
Serial.print("t");
Serial.print("hangat : ");
Serial.print(hangat);
Serial.print("t");
Serial.print("panas : ");
Serial.println(panas);
Serial.print("Rule1 : ");
Serial.println(rule1);
Serial.print("Rule2a : ");
Serial.println(rule2a);
Serial.print("Rule2b : ");
Serial.println(rule2b);
Serial.print("Rule3 : ");
Serial.println(rule3);
}
void loop() {
  // put your main code here, to run repeatedly:
}

jika di jalan kan maka outputnya akan tampil seperti berikut :

Apa maksudnya dari hasil diatas ?

Baca Juga :  Tutorial Arduino Kontrol Dot Matrix 8x8 Max7219 Bluetooth Android

hasil diatas ya dari aturan aturan yang kita buat,, kemudian di bagian defuzifikasi kita akan menggunakan data dari hasil diatas untuk menentukan output defuzifikasinya.
defuzifikasi akan di jelaskan pada artikel berikutnya. untuk itu selalu berkunjung di www.anakkendali.com

jika ada pertanyaan ataupun terdapat kesalahan dalam menulis rumus tolog berikan masukan nya melaluin komentar di bawah. karena saya juga masih belajar dan akan terus belajar.

Selanjutnya Baca : Arduino, Tutorial Fuzzy Logic Controller dengan Arduino (Defuzzifikasi)

Keyword

  1. Cara Membuat Aturan Fuzzy
  2. Membuat Aturan Fuzzy Arduino
  3. Rule Fuzzy Arduino
  4. Fuzzy Logic Arduino Rule
  5. Desain Rule Fuzzy Logic
  6. Fuzzy Rule Arduino

(Visited 1.070 times, 1 visits today)