SISTEM CERDAS “ Aplikasi Perancangan Kontrol Cahaya Lampu dengan Logika Fuzzy pada Arduino dan Matlab”
OLEH: HENDRIANO DWI PUTRA
JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS ANDALAS PADANG 2015
LOGIKA FUZZY Logika fuzzy mempunyai nilai yang kontinu., Fuzzy dinyatakan dalam derajat dari suatu keanggotaan dan derajat dari kebenaran. Oleh sebab itu sesuatu dapat dikatakan sebagian benar dan sebagian salah pada waktu yang sama. Pada tugas kali ini yaitu mengenai pengontrolan bola lampu dengan inputan potensiometer yang ditejemahkan dalam logika fuzzy. 1. Perancangan Kontroler dengan Logika Fuzzy pada Matlab Pada perancangan ini , Pertama dilakukan sebuah design logika fuzzy dimana dalam perancangan, kami menggunakan basic fuzzy rulenya adalah jenis Sugeno, sehingga outputannya lebih sederhana dan mudah dibaca.
Gambar 1. Design Logika Fuzzy Terlihat pada gambar diatas dimana Inputan adalah Suhu dan Outputnya adalah Cahaya yang didesain kedalam fuzzy rule jenis sugeno.
Kemudian Perancangan ini menggunakan satu input, yang mana inputnya adalah potensiometer dengan jumlah rule sebanyak 5 buah. Ini artinya, fungsi keanggotaan input potensiometer (Suhu) dibuat sebanyak 5 buah. Pada fuzzy Suhu terdapat 3 fungsi keanggotaan berbentuk segitiga , yaitu LM, Mid, dan HM, dan 2 fungsi keanggotaan berbentuk trapezoid yaitu Low dan High. Rentang semesta pembicaraan dari Suhu diset bernilai 0 sampai 5.
Gambar 2 : Fungsi Keanggotaan Input Suhu Untuk outputnya (cahaya) diset dengan tiga keadaan, yaitu dimulai dari keadaan mati dengan nilai PWM 0, keadaan redup dengan nilai PWM 150, dan terang dengan nilai PWM 255. Maksudnya yaitu, ketika nilai PWM 0, maka lampu akan mati, dan pada saat nilai PWM 150, maka lampu akan redup, dan ketika nilai PWM dari cahaya adalah 255, maka lampu akan sempurna terangnya, karena dalam arduino nilai 255 merupakan nilai maksimal dari PWM nya.
Gambar 3. Fungsi Keanggotaan Output Cahaya
Gambar 4. Rule yang dihasilkan Gambar diatas menunjukkan implementasi Suhu (potensiometer) terhadap nilai PWM pada arduino, yang mana telah di set apabila
1.5 < Suhu < 3.5, maka lampu akan redup.
Sedangkan apabila Suhu ≤ 1.5, maka lampu akan mati dan Suhu ≥ 3.5, lampu akan terang.
Gambar 5. Fungsi logika untuk set Rule Gambar di atas merupakan rules yang telah di set di Fuzzy berdasarkan nilai keanggotaan. 2. Implementasi Logika Fuzzy ke dalam Program arduino
int sensorValue = 0; float bacaSuhu = 0; int outssr = 3; float cahaya = 0; int pinSuhu = A0; float totalZW, totalW; int W[5] = {0, 0, 0, 0, 0}; int Z[5] = {0, 0, 0, 0, 0};
float Suhu NB(float Suhu) { if (Suhu < 1.5) return 1; if (Suhu >= 1.5 && Suhu <= 2) return (2 - Suhu) / (0.5); if (Suhu > 2) return 0; } float Suhu NS(float Suhu) { if (Suhu < 1.5 && Suhu > 2.5)return 0; if (Suhu >= 1.5 && Suhu <= 2) return (Suhu - 1.5) / (0.5); if (Suhu > 2 && Suhu <= 2.5)return (2.5 - Suhu) / (0.5); } float Suhu Z(float Suhu) { if (Suhu < 2 && Suhu > 3)return 0; if (Suhu >= 2 && Suhu <= 2.5) return (Suhu - 2) / (0.5); if (Suhu > 2.5 && Suhu <= 3)return (3 - Suhu) / (0.5); } float Suhu PS (float Suhu) { if (Suhu < 2.5 && Suhu > 3.5)return 0; if (Suhu >= 2.5 && Suhu <= 3) return (Suhu - 2.5) / (0.5); if (Suhu > 3 && Suhu <= 3.5)return (3.5 - Suhu) / (0.5);
} float Suhu PB(float Suhu) { if (Suhu < 3) return 0; if (Suhu >= 3 && Suhu <= 3.5) return (Suhu - 3.5) / (0.5); if (Suhu > 3.5) return 1; } float mati(float output) { if (output >= 0 && output <= 1)return 255; } float redup(float output) { if (output >= 0 && output <= 1)return 150; } float terang(float output) { if (output >= 0 && output <= 1)return 0; } void setup() { Serial.begin (9600); pinMode (outssr, OUTPUT); } void inferensi () { W[0] = SuhuLow(bacaSuhu); W[1] = SuhuLM(bacaSuhu); W[2] = SuhuMid(bacaSuhu); W[3] = SuhuHM(bacaSuhu); W[4] = SuhuHigh(bacaSuhu); Z[0] = mati(W[0]); Z[1] = redup(W[1]); Z[2] = redup(W[2]); Z[3] = redup(W[3]); Z[4] = terang(W[4]); sensorValue = analogRead(pinSuhu);
bacaSuhu = 6 * sensorValue / 1023; analogWrite(outssr, cahaya); } void defuzzifikasi() { totalZW = (W[0] * Z[0]) + (W[1] * Z[1]) + (W[2] * Z[2]) + (W[3] * Z[3]) + (W[4] * Z[4]); totalW = (W[0] + W[1] + W[2] + W[3] + W[4]); cahaya = totalZW / totalW; Serial.print("dcPWM: "); Serial.println(cahaya); } void loop() { inferensi (); defuzzifikasi (); Serial.print("Desimal ="); Serial.println(sensorValue); Serial.print("Vinput ="); Serial.println(bacaSuhu); delay(1000); } 3. Pengujian alat Pada percobaan ini, alat yang digunakan yaitu, SSR, Lampu AC 15 watt, Arduino Uno, dan sebagai input digunakan Potensiometer(sebagai pengganti sensor suhu). Percobaan dilakukan dengan tiga kondisi yang telah ditentukan, yang pertama menguji dari Suhu bernilai 0 hingga Suhu bernilai 255. Pada saat Suhu bernilai 5, lampu terang sempurna. Sedangkan nilai PWM=nya bernilai 0. Hal ini dikarenakan nilai PWM pada arduino uno yang mana nilai maksimal PWM-nya adalah 0 dan nilai minimalnya adalah 255.
Gambar 6. Serial monitor inputan maksimum pada arduino Gambar pada serial monitor arduino untuk mengetahui nilai Suhu dan nilai DcPWM.
Gambar 7. keadaan saat lampu terang dengan nilai Suhu maksimum Pada saat 1.5 < Suhu < 3.5, maka lampu akan redup. Percobaan dilakukan pada saat Suhu bernilai 2, dab dapat dilihat lampu tidak terang sempurna (redup).
Gambar 8. serial monitor pada saat keadaan redup
Gambar 9. saat keadaan redup dengan nilai Suhu = 2 Dan pada saat Suhu benilai 0, maka lampu tidak menyala. Dan dapat dilihat PWM-nya bernilai 255.
Gambar 10. serial monitor pada saat keadaan mati
Gambar 11. Keadaan dimana lampu tidak menyala dengan nilai Suhu = 0
Daftar Pustaka Zaini, 2015. Aplikasi Kecerdasan Buatan dengan Matlab dan Arduino.Padang : Andalas University Press