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
- Tutorial Fuzzy logic controller
- Fuzzy Logic Controller Mamdani
- Cara Mendesain Fuzzyfikasi
- Mendesain Keanggotaan Fuzzy
- Implementasi Fuzzy Arduino
maaf ka mw nanyain gimna cara buat nodemcu yang bisa otomatis dan manual pake android,yang memakai algoritma fuzzy logic. minta pencerahaanya makasih
silahkan berkonsultasi dengan nomer wa 083821113634, terimakasih
saya sudah save nomernya, kok tidak ada dikontak wa ya ? apakah nomernya masih aktif ?
langsung aja mas, klik tombol wa yang ada di bawah kanan.
assalamualaikum bang, ingin bertanya kalau untuk suhu rumus else if (suhu >=30 && suhu <=45){dingin=(45-suhu)/15;} yang 15nya dapet dari mana ya? sama yang pwm juga 50nya dapet dari mana ya? mksh bang
dari selisih batas b – a
assalamualaikum min. kalau untuk metode mamdani gmna min? dari segi code apanya yang berbeda?
rule nya, kalo butuh jasa boleh pm
Adakah nomor yang bisa dihubungi untuk konsultasi?
bisa lewat telegram atau email
id telegram : @untul
email : anakkendali01@gmail.com
kalo untuk penyiram tanaman otomatis perintah outputnya bagai mana ya mas? dan nama variabelnya itu apa yah mas?
terimakasih
apakah mikrokontroler harus connect ke port terlebih dahulu baru bisa dirun pada arduino ide?