Anda di halaman 1dari 10

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

Anda mungkin juga menyukai