Disusun Oleh:
1110171023
3 D4 ELEKTRONIKA A
DEPARTEMEN ELEKTRO
2019 / 2020
PERCOBAAN 7
Kontrol Logika Fuzzy pada Pengaturan Kecepatan Motor DC
I. TUJUAN
Mahasiswa diharapkan memahami materi kontrol kecepatan dan aplikasinya pada pengaturan
kecepatan motor DC dengan menggunakan kontrol fuzzy
Metode yang akan digunakan dalam penelitian ini dalam menentukan output
kontroler pada eror dan derror tertentu yang kemudian diolah dengan menggunakan metode
kontroller Fuzzy untuk masing-masing motor.
Kontroller Fuzzy.
1) Fuzzifikasi
Proses fuzzifikasi merupakan proses untuk mengubah variable non fuzzy (variabel
numerik) menjadi variabel fuzzy (variabel linguistik). Nilai masukan- masukan yang masih
dalam bentuk variabel numeric yang telah dikuantisasi sebelum diolah oleh pengendali logika
fuzzy harus diubah terlebih dahulu ke dalam variabel fuzzy. Melalui fungsi keanggotaan yang
telah disusun maka dari nilai-nilai masukan tersebut menjadi informasi fuzzy yang berguna
nantinya untuk proses pengolahan secara fuzzy pula. Preses inilah disebut fuzzyfikasi.
Keanggotaan yang digunakan adalah (triangular).
* Triangular-function 3
Dengan kata lain fuzzifikasi merupakan pemetaan titik numeric (crisp points) x = (x1,…,xn)T
U ke himpunan fuzzy A di U. U merupakan semesta pembicaraan dan pemetaannya yaitu
:
Fuzzifikasi Singleton : A adalah fuzzy singleton dengan support x , artinya, A( x ’)
= 1 untuk x ’ = x dan A( x ’) = 0 untuk x ’ U yang lain dengan x ’ x
Proses untuk mendapatkan aksi keluaran dari suatu kondisi masukan dengan
mengikuti rules yang telah ditetapkan disebut inference atau reasoning (pengambilan
keputusan). Keputusan yang dihasilkan dari proses reasoning ini masih dalam bentuk fuzzy,
yaitu berupa derajat keanggotaan keluaran. Hasil ini harus diubah kembali menjadi variabel
numerik non-fuzzy melalui proses defuzzifikasi. Metode defuzzifikasi yang digunakan adalah
Centre of Area (COA) yang didefinisikan sebagai :
aturan-aturan kontrol sebagai acuan untuk menyatakan aksi kontroler. Aturan tersebut
disusun berdasarkan pengamatan atau perkiraan terhadap respon secara heuristik, dengan
(engineering science) ditentukan rule base kontroler logika fuzzy yang sesuai.
Respon sistem dibagi menjadi 4 area seperti ditunjukan pada Gambar 4.2 (a,b,c)
berikut. Indeks digunakan untuk menganalisa respon area dengan tujuan meningkatkan
resolusi dari tingkah laku sistem, identifikasi kecepatan dari respon sistem disekitar setpoint
yang ditunjukkan pada Gambar 4.2 didefinisikan sebagai berikut:
Indeks Crossover untuk mengindentifikasi slope dari respon sistem disekitar setpoint
m2
m1 m3
m4
Setpoin
m6 t
nb a2 a2 a2 m1 a3 a3 a3
nm a2 a2 a2 m2 a3 a3 a3
nk a2 a2 a2 m3 a3 a3 a3
nol c1 c2 c3 nol c4 c5 c6
pk a1 a1 a1 m4 a4 a4 a4
pm a1 a1 a1 m5 a4 a4 a4
pb a1 a1 a1 m6 a4 a4 a4
Aturan atau rule base kontroler logika fuzzy yang dirancang dengan logika “jika –
..........................................................................................................
Secara lengkap rule base kontroler logika fuzzy pada praktikum ini, yang diturunkan
nb nb nb nb nb nm nk nol
nm nb nb nm nm nk nol pk
nk nb nm nk nk nol pk pm
nol nb nk nm nol pk pm pb
pk nm nk nol pk pk pm pb
pm nk nol pk pm pm pb pb
pb nol pk pm pb pb pb pb
1) Struktur Dasar Sistem Pengendalian Logika Fuzzy
Kebanyakan proses di dalam sistem pengendalian merupakan proses yang komplek.
Proses-proses tersebut pada kenyataannya bisa dikontrol secara manual dengan hasil yang
cukup baik, oleh operator. Operator tersebut adalah tenaga terampil yang mengandalkan
pengalaman praktis, tanpa dilatarbelakangi teori-teori sistem pengendalian yang rumit.
Pengalaman tersebut diperoleh dalam waktu yang lama, sehingga pengendalian yang
dilakukan sepenuhnya bersifat intuitif. Untuk mendesain sistem pengendalian otomatis bagi
proses-proses tersebut, diperlukan motode khusus, dalam hal ini digunakan teori logika
fuzzy.
Kontroler fuzzy
-1
z
Data base
outpu
t
Fuzzification Control Rule Defuzzification
Bus System
Sensor
Gambar 4.5. Struktur sistem kontrol logika fuzzy dengan error dan delta error
PC digunakan untuk menjalankan menjalankan program fuzzy dan menerima data feedback
dari motor DC. Output dari fuzzy dipergunakan untuk menentukan frekuensi dari PWM
yang dihasilkan oleh mikrokontroller. Kecepatan motor ditentukan oleh berapa besar dutty
cycle dari PWM. Set point kecepatan motor adalah sekitar 91 rps.
Pembebanan perlu dilakukan pada motor, tujuannya adalah untuk mengetauhi kinerja dari
kontroller fuzzy. Apabila setelah dilakukan pembebanan kemudian kecepatan motor turun
sebentar dan kemudian kembali mendekati nilai set point maka kontroller fuzzy tealah bekerja
dengan baik. Pembebanan dilakukan dengan menggunakan potensiometer yang dipasang seri
dengan armatur motor. Sehingga apabila tahanan potensiometer R1 dan R2 dinaikkan maka
kecepatan motor akan turun. Rangkaiannya sebagai berikut :
R
medan
Dari persamaan yang ditunjukkan diatas maka kecepatan dapat diubah ubah dengan
mengatur variabel ;
Va = Tegangan input (V),
Ra = Tahanan armatur () dan f = Fluks motor
Sedangkan komponen pennyusun modul motor DC sebagai berikut :
Dari & ke PC
Motor
Microcontroller
Sinyal PWM
Driver Motor
Power Supply
Sinyal
PWM
MODUL MOTOR
Kabel Serial 4.9 Rangkaian modul praktikum
Gambar
PC uC
Berikut adalah tabel dan grafik kecepatan motorFeedBack
dc pada pemberian nilai PWM
yang berbeda dari 0 – 100 % :
Kecepatan Motor DC
100
Kecepatan (rps)
80
60
40
20
4. Uji coba dan berikan analisa pengaruh perubahan tabel aturan pada
performasi sistem kontrol fuzzy.
Praktikum Kontrol Cerdas 1
Desember 2019
Lab D-106
Anggota:
1. RIZKY MUHAMMAD PANJI (1110171023)
PERCOBAAN 7
Simulasi Logika Fuzzy pada Motor DC
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Fuzzy_Classification_CSharp
{
public partial class Form1 : Form
{
float segitiga;
float trapmin;
float trapplus;
float val_minimal;
float temp, sudutREM, tempf;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
float err, derr;
float[] mi = new float[25];
float[] rulef = new float[25];
/* Fuzzifikasi ERROR */
de_NB = float.Parse(textBox11.Text);
de_NS = Segitiga(kecepatan, -20, 0, 20);
Zero = Segitiga(kecepatan, 0, 20, 40);
de_PS = Segitiga(kecepatan, 20, 40, 60);
de_PB = Segitiga(kecepatan, 40, 60, 80);
textBox1.Text = Convert.ToString(de_NB);
textBox2.Text = Convert.ToString(de_NS);
textBox3.Text = Convert.ToString(Zero);
textBox4.Text = Convert.ToString(de_PS);
textBox5.Text = Convert.ToString(de_PB);
r1 = minimal(error_NB, error_NB);
r2 = minimal(error_NB, error_NS);
r3 = minimal(error_NB, error_ZR);
r4 = minimal(error_NB, error_PS);
r5 = minimal(error_NB, error_PB);
r6 = minimal(error_NS, error_NB);
r7 = minimal(error_NS, error_NS);
r8 = minimal(error_NS, error_ZR);
r9 = minimal(error_NS, error_PS);
r10 = minimal(error_NS, error_PB);
if (mi[i] > 0)
{
listBox1.Items.Add("Rule" + Convert.ToString(i) + "=" +
Convert.ToString(rulef[i]));
}
}
if (temp > 0)
{
sudutREM = tempf / temp;
}
else
{
textBox13.Text = "Tidak ada Hasil.";
}
textBox13.Text = Convert.ToString(sudutREM);
err = float.Parse(textBox15.Text);
derr = float.Parse(textBox14.Text);
fuzzy_func(err, derr);
}
return segitiga;
}
r1 = minimal(error_NB, error_NB);
r2 = minimal(error_NB, error_NS);
r3 = minimal(error_NB, error_ZR);
r4 = minimal(error_NB, error_PS);
r5 = minimal(error_NB, error_PB);
r6 = minimal(error_NS, error_NB);
r7 = minimal(error_NS, error_NS);
r8 = minimal(error_NS, error_ZR);
r9 = minimal(error_NS, error_PS);
r10 = minimal(error_NS, error_PB);
NB = -30;
NS = -10;
ZR = 0;
PS = 10;
PB = 30;
if (temporer != 0)
{
fuzzy = ((r1 * NB) + (r2 * NB) + (r3 * NS) + (r4 * PS) + (r5 * PB) + (r6 * NS)
+ (r7 * NS) + (r8 * ZR) + (r9 * PS) + (r10 * PB) + (r11 * NB) + (r12 * NS) +
(r13 * ZR) + (r14 * PS) + (r15 * PB) + (r16 * NS) + (r17 * NS) + (r18 * PS) +
(r19 * PB) + (r20 * PB) + (r21 * NS) + (r22 * PS) + (r23 * PB) + (r24 * PB) +
(r25 * PB)/ temporer);
}
textBox16.Text = Convert.ToString(fuzzy);
return fuzzy;
}
private float Trapmin(float u1, float a1, float b1)
{
if (u1 < a1)
{
trapmin = 1;
}
else if ((u1 >= a1) && (u1 < b1))
{
trapmin = ((b1 - u1) / (b1 - a1));
}
else if ((u1 > b1))
{
trapmin = 0;
}
return trapmin;
}
return val_minimal;
}
r6 = minimal(error_NS, error_NB);
r7 = minimal(error_NS, error_NS);
r8 = minimal(error_NS, error_ZR);
r9 = minimal(error_NS, error_PS);
r10 = minimal(error_NS, error_PB);
Lalu, untuk mendapatkan output dengan rumus minimal dari 25 rule contoh :
“r8 = minimal(error_NS, error_ZR);”
Dan nilai center dari output :
NB = -30;
NS = -10;
ZR = 0;
PS = 10;
PB = 30;
KESIMPULAN
Berdasarkan Analisa data dan percobaan yang dilakukan, maka dapat kita
simpulkan bahwa pada percobaan ini, kita dapat melakukan kontrol motor DC
menggunakan metode fuzzy. Maka kita harus memberikan input pada fuzzy
berupa Error dan DeltaError, yang bisa didapatkan dari sensor pada motor.
Kemudian akan difuzzykan sehingga menghasilkan nilai kecepatan yang akan
dikirimkan pada motor. Namun pada percobaan ini, ketika motor diberi
pembebanan, reaksi motor mempertahankan sesuai setpoint yang ditentukannya
lambat. Jadi kami belum bisa mendapat datanya, karena output yang ada pada
motor tidak lebih baik dari kontrol close loop sebelumnya yang merupakan
kontrol Proporsi saja.