Tutorial Fuzzy Logic Controller Arduino (Fuzzifikasi)

Hello temen-temen anakkendali.com.
Pada kesempatan kali ini saya akan menulis artikel tentag Arduino, Tutorial Fuzzy Logic Controller dengan Arduino (Fuzzifikasi). Fuzzy Logic Controller juga termasuk bagian dari AI ( artificial intelligence ) atau kecerdasan buatan, dilihat dari hasil algoritma fuzzy ini sangat mirip dengan pola pikir manusia. pada tutorial ini kita akan membuat implementasi fuzzy pada arduino

Tutorial Lengkap Fuzzy Mamdani dengan Arduino baca di Tutorial Lengkap Fuzzy Logic Arduino Mamdani

Jika komputer hanya memiliki dua keadaan yaitu 0 atau 1, benar atau salah, true or false maka fuzzy ini dibuat untuk mencari nilai antara 0 dan 1 nya,

Contoh logika fuzzy dalam kehidupan sehari hari antara lain :

  • saat manusia mengendarai sepeda motor
  • saat manusia mengendarai mobil
  • dan banyak sekali contoh lainya yang di terapkan oleh manusia itu sendiri.

dan salah satu contoh logika fuzzy yang diterapkan pada hardware atau mesin yaitu :

Mesin Cuci Fuzzy
AC Fuzzy
Vaccum Cleaner Fuzzy
dan sebagainya.

Arti fuzzy itu sendiri menurut bahasa adalah Samar / Kabur dan adapun lawan dari fuzzy adalah Crisp yang berarti Tegas.
pada artikel ini saya akan menjelaskan tahap awal dalam membuat fuzzy controller dengan menggunakan mikrokontroler yang sangat populer yaitu Arduino. tahap awal membuat Logika Fuzzy adalah Fuzzifikasi. dimana kita akan menentukan dua variable satu Input satu Output dimana keduanya akan kita cari terlebih dahulu nilai keanggotaanya.

contoh dalam artikel ini kita menggunakan Parameter SUHU (Input) dan Motor DC (Output)
dimana parameter suhu ini memiliki variable linguistik Dingin, Hangat dan Panas. sedangkan untuk varibel dari parameter Motor DC yaitu Lambat, Sedang dan Cepat.
lihat gambar dibawah ini :

      Variable Dingin akan di anggap benar benar dingin saat nilai keanggotaanya (u)= 1. pada gambar diatas nilai u=1 saat suhu <= 30 dan 30 – 45 nilai kenggotaanya di tentukan dengan rumus pada di gambar. begitu juga untuk variable Hangat, dan Panas.   untuk membuat code dari rumus rumus yang didapatkan diatas seperti ini contoh codenya :  

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;
}

gambar diatas adalah gambar keanggotaan untuk masing masing variable linguistik dari parameter PWM.

dan berikut contoh program nya berdasarkan gambar diatas :

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;
}

Code Fuzzy Logic (Fuzzyfikasi)

Dan berikut adalah program Arduino untuk bagian FUZZIFIKASI pada tutorial FUZZY LOGIC CONTROLLER.

float suhu;
float dingin,hangat,panas;
float pwm;
float Lambat,Sedang,Cepat;
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;
}
void fuzzifikasi(){
  suhuDingin();
  suhuHangat();
  suhuPanas();
  pwmLambat();
  pwmSedang();
  pwmCepat();
}
void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
suhu = 54; // contoh kita memasukan nilai suhu 54 derajat
pwm = 104; // contoh kita memasukan nilai pwm 104
fuzzifikasi(); // 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("lambat : ");
Serial.print(Lambat);
Serial.print("t");
Serial.print("sedang : ");
Serial.print(Sedang);
Serial.print("t");
Serial.print("cepat : ");
Serial.println(Cepat);
}
void loop() {
  // put your main code here, to run repeatedly:
}

silahkan ditunggu untuk tutorial FUZZY LOGIC selanjutnya.  karena terlelu banyak jika di jelaskan dalam satu artikel. semoga bermanfaat dan jangan lupa untuk mengikuti anakkendali.com
Bagikan artikel ini dan jangan lupa berkomentar.

Selanjutnya Tutorial Fuzzy Logic Controller dengan Arduino (Rule)

Keyword

  1. Tutorial Fuzzy logic controller
  2. Fuzzy Logic Controller Mamdani
  3. Cara Mendesain Fuzzyfikasi
  4. Mendesain Keanggotaan Fuzzy
  5. Implementasi Fuzzy Arduino
chaerul

View Comments

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…

5 days 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