Tutorial Fuzzy Logic Controller dengan Arduino (Rule)

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

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.

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 ?

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

chaerul

View Comments

  • hello.... saya sangat senang dan juga penasaran dengan penjelasan tentang fuzzy logic dari penulis.

    saya mau bertanya soal artikel yang ditulis, saya beru pertama belajar tentang arduino jadi saya buat suatu project sederhana tentang suhu dan cahaya.

    nahh.... pertanyannya : se-pengertian saya apa yang ada pada bagian "void setup" biasanya hanya berjalan sekali saat program di upload(dijalankan). pada bagian "void loop" biasanya program selalu mengulang apa yang didapat oleh sensor.

    kenapa pada bagian "void loop" tidak diisi ?? apakah program akan berjalan hanya selaki ??

    Terimakasih :)

  • Kak mau tanya, kalo inputnya ada 2, input1 dan input2, berarti rule nya gimana yaaa? misal inputnya ditambah lembab, hitung rule nya seperti apa?
    Terima kasih.
    Salam.

Recent Posts

Panduan Lengkap: Cara Menyiapkan Klaster Kubernetes pada Ubuntu 22.04 LTS

Pendahuluan Dalam dunia pengembangan perangkat lunak yang terus berkembang, Kubernetes telah muncul sebagai alat kunci dalam orkestrasi…

1 week ago

AplikasiAkademik.com: Solusi Terbaik untuk Manajemen Sekolah yang Efisien

Mengelola sebuah sekolah atau lembaga pendidikan adalah tugas yang kompleks dan penuh tantangan. Dengan berbagai…

7 months ago

Cara Mudah Menginstal OpenVPN Server di Ubuntu 20.04 di Huaweicloud Panduan Langkah demi Langkah

Selamat datang di artikel kami tentang cara menginstal OpenVPN server di Ubuntu 20.04 di HuaweiCloud!…

12 months ago

Install Docker Portainer dan Nginx Proxy Manager Ubuntu Server

Dalam dunia pengembangan aplikasi, salah satu hal yang menjadi penting adalah mengelola dan memonitor kontainer…

1 year ago

Tutorial led blinking lengkap, Wiring & Code

Tutorial led blinking. LED (Light Emitting Diode) merupakan salah satu komponen elektronik yang paling umum…

1 year ago

Tutorial LCD Display Lengkap dengan wiring & code untuk pemula

Tutorial LCD Display, ini merupakan salah satu komponen yang sering digunakan dalam project elektronika sebagai…

1 year ago