Oleh:
MUHAMMAD SAHAL
1110171026
3 D4 TEKNIK ELEKTRONIKA A
I. TUJUAN
Mahasiswa diharapkan memahami materi kontrol kecepatan dan aplikasinya
pada pengaturan kecepatan motor DC dengan menggunakan kontrol fuzzy
32
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
Triangular – function didefinisikan sebagai berikut:
0 ua
u a
b a a u b
T (u; a, b, c ) =
(1)
c u
buc
c b
0 uc
Bentuk diagramatik Triangular-function ditunjukkan pada gambar 1
0.5
0 a b c
33
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 ’)
3) Defuzzyfikasi
Dalam sistem pengendalian secara umum, terdapat suatu hubungan sebab
akibat yang spesifik antara masukan dan keluaran sistem tersebut. Karakteristik
hubungan inilah yang membedakan satu sistem dengan sistem yang lain.
Sistem pengendalian dengan menggunakan logika fuzzy juga
membutuhkan spesifikasi hubungan antara masukan dan keluaran, yang secara
umum dinyatakan :
IF (A1) Then (B1)
34
(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 :
Vk v (Vk )
v k 1m (2)
v (Vk )
0
v0 = nilai keluaran
k 1
m = tingkat kuantisasi
Vk = elemen ke-k
v(Vk) = derajat keanggotaan elemen-elemen pada fuzzy set V
V= semesta pembicaraan
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:
35
a1 : e>0 dan e<0 a3 : e<0 dan e>0
a1 a2 a3 a4
Setpoint
C1
C2
C3
C4
C5
C6 Setpoint
36
Sedangkan indeks yang menyatakan perluasan overshoot dan undershoot
m2
m1 m3
m4 Setpoint
m5
m6
E/E nb nm nk nol pk pm pb
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
37
Aturan atau rule base kontroler logika fuzzy yang dirancang dengan logika
..........................................................................................................
Secara lengkap rule base kontroler logika fuzzy pada praktikum ini, yang
E/E nb nm nk nol pk pm pb
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
38
5) 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
z-1
Data base
output
Sensor
Gambar 4.5. Struktur sistem kontrol logika fuzzy dengan error dan delta error
39
Untuk keperluan ini, digunakan beberapa tahanan yang dihubungkan seri
dengan kumparan jangkar untuk starting. Dengan mengunakan tahanan- tahanan ini,
maka motor akan mencapai kecepatan nominal secar perlahan- lahan. Dengan car
ini, maka arus medan akan selalu di set-up pada harga maksimum untuk
memperoleh torsi starting maksimum. Semakin handle digerakkan ke kanan, maka
pengaruh elektromagnetik semakin kecil.
Pada saat motor berjalan, kecepatan dapat diatur. Kecepatan ini pada
dasarnya dikontrol dengan mengatur rasio waktu. Bila rasio waktunya bertambah
secara bekurang bolak balik, kecepatan juga menunjukkan pengulanggan dari
penambahan dan pengurangan. Dimana kecepatan motor DC dapt diatur dengan
mengubah- ubah besaran medan shunt (), Ra, atau Vt.
Secara garis besar, ada dua bagian utama yaitu PC sebagai kontroller
dan modul motor DC yang akan dikontrol. Blok diagramnya sebagai berikut :
Feedback FeedBack
40
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 :
Motor
Microcontroller
Sinyal PWM
Driver Motor
Power Supply
41
IV. PROSEDUR PRAKTIKUM
1. Buatlah rangkaian seperti gambar berikut :
Sinyal
PWM
PC MODUL MOTOR
Kabel Serial uC
FeedBack
Kecepatan Motor DC
120
100
Kecepatan (rps)
80
60
40
20
0
0 20 40 60 80 100 120
% PWM
42
'Fuzzifikasi Delta Error (-0,25 max rps s.d 0.25 max rps)
de_NB = trapmin(d_error, , )
de_NS = Segitiga(d_error, , , )
de_ZR = Segitiga(d_error, , , )
de_PS = Segitiga(d_error, , , )
de_PB = trapplus(d_error, , )
43
4. Uji coba dan berikan analisa pengaruh perubahan tabel aturan pada
performasi sistem kontrol fuzzy.
'Fuzzifikasi Delta Error (-0,25 max rps s.d 0.25 max rps)
de_NB = trapmin(d_error, , )
de_NS = Segitiga(d_error, , , )
de_ZR = Segitiga(d_error, , , )
de_PS = Segitiga(d_error, , , )
de_PB = trapplus(d_error, , )
If (u < a) Then
Segitiga = 0
ElseIf ((u >= a) And (u < b)) Then
Segitiga = ((u - a) / (b - a))
ElseIf ((u >= b) And (u < c)) Then
Segitiga = ((c - u) / (c - b))
Else
Segitiga = 0
End If
End Function
'Rule Base
'Error = setpoint - rps
'derror = error - errorlalu
r1 = Minimal(er_NB, de_NB)
r2 = Minimal(er_NB, de_NS)
r3 = Minimal(er_NB, de_ZR)
r4 = Minimal(er_NB, de_PS)
r5 = Minimal(er_NB, de_PB)
r6 = Minimal(er_NS, de_NB)
r7 = Minimal(er_NS, de_NS)
r8 = Minimal(er_NS, de_ZR)
r9 = Minimal(er_NS, de_PS)
r10 = Minimal(er_NS, de_PB)
'Edit disini
If temp <> 0 Then Fuzzy = ((r1 * NB) + (r2 * NB) + ........... (R25*ZR) / (temp)
End Function
End Function
If u1 < a1 Then
trapmin = 1
ElseIf ((u1 >= a1) And (u1 < b1)) Then
trapmin = ((b1 - u1) / (b1 - a1))
ElseIf u1 > b1 Then
trapmin = 0
End If
End Function
End Function
Praktikum Kontrol Cerdas 1
Desember 2019
Lab D-106
Anggota:
1. Alfaz Mahardika A (1110171030)
2. Rizky Muhammad P (1110171023)
3. Yogi A (1110171018)
PERCOBAAN 7
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();
}
/* Fuzzifikasi Kecepatan */
kecepatan = float.Parse(textBox11.Text);
sangatLambat = Segitiga(kecepatan, -20, 0, 20);
Lambat = Segitiga(kecepatan, 0, 20, 40);
cukup = Segitiga(kecepatan, 20, 40, 60);
cepat = Segitiga(kecepatan, 40, 60, 80);
cepatSelali = Segitiga(kecepatan, 60, 80, 100);
textBox1.Text = Convert.ToString(sangatLambat);
textBox2.Text = Convert.ToString(Lambat);
textBox3.Text = Convert.ToString(cukup);
textBox4.Text = Convert.ToString(cepat);
textBox5.Text = Convert.ToString(cepatSelali);
/* Fuzzifikasi Jarak */
jarak = float.Parse(textBox12.Text);
sangatDekat = Segitiga(jarak, -1, 0, 1);
agakDekat = Segitiga(jarak, 0, 1, 2);
sedang = Segitiga(jarak, 1, 2, 3);
agakJauh = Segitiga(jarak, 2, 3, 4);
jauhSekali = Segitiga(jarak, 3, 4, 5);
textBox6.Text = Convert.ToString(sangatDekat);
textBox7.Text = Convert.ToString(agakDekat);
textBox8.Text = Convert.ToString(sedang);
textBox9.Text = Convert.ToString(agakJauh);
textBox10.Text = Convert.ToString(jauhSekali);
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;
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 trapplus;
}
private void button2_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
textBox13.Text = string.Empty;
}
}
}
ANALISA
Dari percobaan dapat dianalisa bahwasanya untuk menentukan nilai pengereman maka
terdapat 2 input berupa kecepatan dan jarak yang akan mempengaruhinya. Setiap input dan
output memiliki membershipnya sendiri sendiri yaitu :
Input Kecepatan (Sangat lambat , lambat , cukup ,cepat ,cepat sekali)
Input Jarak ( Sangat dekat, Agak dekat , sedang , Agak jauh, Jauh sekali)
Output pengereman ( Penuh , Agak penuh , Injak sedang , sedikit , Sedikit sekali )
Kemudian untuk didapat beberapa rule base dimana didapat sebanyak 25 rule. Untuk rule
base bisa dilihat pada program diatas. Kemudian juga terdapat Membership error berupa
membership (Trapmin , Segitiga , Segitiga, Segitiga , Trapplus )
Dan nilai center dari output :
NB = -30;
NS = -10;
ZR = 0;
PS = 10;
PB = 30;
Sehingga rumus akhir untuk mendapat output fuzzy didapat :
‘output’ tempura = (r1 + r2 + r3 + r4 + r5 + r6 + r7 + r8 + r9 + r10 + r11 + r12 + r13 +
r14 + r15 + r16 + r17 + r18 + r19 + r20 + r21 + r22 + r23 + r24 + r25);
if (tempura != 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)/ tempura);
}
KESIMPULAN
Dalam merancang sistem kontrol dengan menggunakan logika fuzzy terdapat tiga proses
yaitu fuzzifikasi, evaluasi rule dan defuzzifikasi. Masing-masing proses tersebut akan
mempengaruhi respon sistem yang dikendalikan. Defuzzifikasi merupakan langkah terakhir
dalam suatu sistem logika fuzzy dengan tujuannya mengkonversi setiap hasil dari inference
engine yang diekspresikan dalam bentuk fuzzy set kesuatu bilangan real. Hasil konversi
tersebut merupakan aksi yang diambil oleh sistem kendali logika fuzzy. Karena itu, pemilihan
metode defuzzifikasi yang sesuai juga turut mempengaruhi sistem kendali logika fuzzy dalam
menghasilkan respon yang optimum