sistem kendali program matlab untuk kendali traffic light pada pc-link serial ppi
TRANSCRIPT
Minggu:
03 Sistem Kendali
Unismuh Makassar Program MATLAB Untuk Kendali Traffic Light Pada
PC-Link SERIAL PPI
Semester : V 01/10/2013 Jurusan Teknik Elektro Waktu : 2 Jam
1. PENDAHULUAN
Pada bagian ini akan dibahas contoh program komputer MATLAB untuk kendali lampu
lalu lintas dengan alat PC-Link SERIAL PPI. Umumnya traffic light ditempatkan pada
pada jalan- jalan persimpangan empat yang ramai lalu lintasnya, dalam hal ini tiang-tiang
sebelah utara dan selatan jalan umumnya ditempatkan lampu tanda merah, hijau, dan
kuning. Demikian juga jalan sebelah timur dan barat ditempatkan lampu lampu tanda
merah, hijau, dan kuning. Lampu rambu-rambu lalu lintas tersebut diatur nyalanya secara
bergantian, yakni jika lampu pada sisi utara-selatan jalan berwarna merah, maka lampu
pada sisi timur–barat harus hijau dan sebaliknya. Dengan bantuan program maka
pengaturan untuk memilih lampu-lampu yang harus nyala dan padam dapat dilakukan.
Program timer untuk mengatur durasi atau waktu hidup lampu merah, hijau, dan kuning
ditulis berbentuk subprogram atau m-file.
2. PROGRAM KOMPUTER UNTUK TRAFFIC LIGHT
Gambar 3.1
U
BT
S
mu
hu
ku
mb hb kbkt ht mt
ks
hs
ms
Perhatikan gambar 3.1 dan 3.2 lampu–lampu yang dipasang pada tiang sebelah utara jalan,
yaitu lampu merah, hijau dan kuning disimbolkan masing-masing dengan mu, hu, dan ku.
lampu pada sisi sebelah selatan, yakni merah (ms), hijau (hs), dan kuning (ks). Lampu
pada sisi sebelah timur, lampu merah (mt), hijau (ht), dan kuning (kt), dan akhirnya lampu
pada sisi sebelah barat, lampu merah (mb), hijau (hb), dan kuning (kb). Pin yang
digunakan pada Port 1 dan 2 modul PPI beserta nilai decimal yang dimasukkan dalam
program diberikan pada tabel di bawah. Diagram waktu pengaturan dari masing-masing
lampu diperlihatkan pada gambar 3.3
Utara
BaratTimur
Selatan
mu
ks
ku
mt
ht
kt
mb
hb
kb
hu
hs ms
+VCC 5 Volt
P1.5P1.4P1.6
P2.3P2.2P2.4
P1.3
P1.2
P1.1
P2.1
P2.0
P1.7
Gambar 3.2
Lampu (Led)
Pin /Port Logika Desimal Waktu hidup
Keterangan Lampu
mu bit 5 port 1,P1.5
0 1
74 75
tm Merah sebelah utara ON OFF
hu bit 4 port 1, P1.4
0 1
72 73
th Hijau ON OFF
ku bit 6 port 1, P1.6
0 1
76 75
tk Kuning ON OFF
ms bit 3
port 2, P2.3
0 1
86 87
tm Merah seb selatan ON
OFF hs bit 2
port 2, P2.2
0 1
84 85
th Hijau ON OFF
ks % bit 4 port 2, P2.4
0 1
88 89
tk Kuning ON OFF
mt bit 3
port 1, P1.3
0 1
70 71
tm Merah sebelah timur ON OFF
ht bit 2 port 1, P1.2
0 1
68 69
th Hijau ON OFF
kt bit 1 port 1, P1.1
0 1
66 67
tk Kuning ON OFF
mb bit 1
port 2, P2.1
0 1
82 83
tm Merah sebelah timur ON OFF
hb bit 0 port 2,P2.0
0 1
80 81
th Hijau ON OFF
kb bit 7 port 1, P1.7
0 1
78 79
tk Kuning ON OFF
Gambar 3.3
Contoh 3.1
Buatlah Program lampu lalu lintas dengan code MATLAB untuk rangkaian Led gambar
3.2 yang dihubungkan ke Port 1 dan 2 PPI Card. Dalam program, waktu pengaturan dari
masing-masing lampu sesuai gambar 3.3, gunakan waktu nyala lampu hijau 4 detik,
kuning 1 detik, dan merah (4+1=5) detik. Serial Port yang digunakan disesuiakan dengan
COM komputer yang dipakai.
Solusi
Untuk mengetahui nomor Port Serial komputer, buka Device Manager seperti gambar di
bawah. Pada Device Manager terlihat bahwa peralatan converter USB to Serial dikenali
sebagai COM 17. Selanjutnya MATLAB mengenali Port serial COM 17 sebagai jalur
komunikasi dengan PPI Card.
Utara-Selatan
Timur-Barat
Waktutm th tk
tm: Waktu lampu merah nyala
th: Waktu lampu hijau nyalatk: Waktu lampu kuning nyala
tm: th + tk
PROGRAM
% Pengaturan Lampu Lalu Lintas menggunakan MATLAB R2010a
% MODUL yang digunakan MODUL PPI 8255 Port serial
% Konveter USB to Serial
% Pin Yang terpakai untuk Port 1 dan 2 lihat file pdf data pin
% @copyright Abdul Hafid teknik ELEKTRO UNISMUH Makassar 2013
% Materi SISTEM KENDALI Semester V, Akses Bit Set/ Reset pada modul
% -------------------------- I---------------------------------
clear all
% inisialisasi serial com.
clc
%==============================================================
s = serial('COM17'); % assigns the object s to serial port
set(s, 'InputBufferSize', 128); %number of bytes in inout buffer
set(s, 'FlowControl', 'none');
set(s, 'BaudRate', 9600);
set(s, 'Parity', 'none');
set(s, 'DataBits', 8);
set(s, 'StopBit', 1);
set(s, 'Timeout',100);
%==============================================================
disp(get(s,'Name'));
prop(1)=(get(s,'BaudRate'));
prop(2)=(get(s,'DataBits'));
prop(3)=(get(s, 'StopBit'));
prop(4)=(get(s, 'InputBufferSize'));
disp (' Baud rate Data bit Stop bit Input buffer size')
disp([num2str(prop)]);
%============buka serial port=====================================
fopen(s); %opens the serial port
% Command untuk bit set/reset akan menulis /output salah satu bit dari
% dari PORT 1 dan 2 nyala, padam
% ubah baud rate jika perlu,sesuaikan dengn setting port pada control
% panel
%----------------------- setting tunda waktu--------------------------------------------------
% t_m = delay waktu untuk lampu merah pada rambu lampu lalu lintas
% t_h = delay waktu untuk lampu hijau pada traffic light
% t_k = delay waktu untuk lampu kuning pada traffic light
% t_m = t_h + t_k
t_k = 1; % Lampu Kuning 1 detik
t_h = 4; % Lampu Hijau 4 detik
t_m = t_h+t_k; % Lampu Merah 5 detik
disp(' Waktu Nyala Lampu Merah (detik)')
t_m
% -------------------------- II------------------------------------------------------------------------
% Lampu traffic Timur Barat (BT)
% Merah pin yang digunakan pin 3 port 1 dan pin 0 port 2
% Hijau pin yang digunakan pin 2 port 1 dan pin 1 port 2
% Kuning pin yang digunakan pin 1 port 1 dan pin 7 port 1
%
% Lampu traffic Utara Selatan (US)
% Merah pin yang digunakan pin 5 port 1 dan pin 3 port 2
% Hijau pin yang digunakan pin 4 port 1 dan pin 2 port 2
% Kuning pin yang digunakan pin 6 port 1 dan pin 4 port 2
%------------------ START -------------------------------------------------------------------
% -------------------------- III--------------------------------- ------------------------------
% H1 =====K1==== M1 pada traffic Timur Barat Hijau, kuning Merah
% M2======H2=====K2 pada traffic utara selatan
for x=1:20
%--------------- H1, M2== ON, K1, M1, H2, K2 ===OFF=================
fwrite(s,68 ); % bit 2 port 1 ON T-B Hijau H1
fwrite(s,80 ); % bit 0 port 2 ON T-B Hijau
%----------------------------------------------------------
fwrite(s,74 ); % bit 5 port 1 ON U-S Merah M2
fwrite(s,86 ); % bit 3 port 2 ON U-S Merah
%-----------------------------------------------------------
fwrite(s,67 ); % bit 1 port 1 OFF T-B Kuning K1
fwrite(s,79 ); % bit 7 port 1 OFF T-B Kuning
%----------------------------------------------------------
fwrite(s,71 ); % bit 3 port 1 OFF T-B Merah M1
fwrite(s,83 ); % bit 1 port 2 OFF T-B Merah
%----------------------------------------------------------
fwrite(s,73 ); % bit 4 port 1 OFF U-S Hijau
fwrite(s,85 ); % bit 2 port 2 OFF U-S Hijau H2
%----------------------------------------------------------
fwrite(s,77 ); % bit 6 port 1 OFF U-S Kuning
fwrite(s,89 ); % bit 4 port 2 Off U-S Kuning K2
%------------- Time ---------------------------------------
tunda(t_h); % delay hijau, lampu kuning star, lampu hijau off
% dan lampu merah pada tiang yang sama masih off, lampu
%--------------- K1, M2== ON, H1, M1, H2, K2 ===OFF
%-----------------------------------------------------------
fwrite(s,66 ); % bit 1 port 1 ON T-B Kuning K1
fwrite(s,78 ); % bit 7 port 1 ON T-B Kuning
%----------------------------------------------------------
fwrite(s,74 ); % bit 5 port 1 ON U-S Merah M2
fwrite(s,86 ); % bit 3 port 2 ON U-S Merah
%------------------------------------------------
fwrite(s,69 ); % bit 2 port 1 OFF T-B Hijau H1
fwrite(s,81 ); % bit 0 port 2 OFF T-B Hijau
%----------------------------------------------------------
fwrite(s,71 ); % bit 3 port 1 OFF T-B Merah M1
fwrite(s,83 ); % bit 1 port 2 OFF T-B Merah
%----------------------------------------------------------
fwrite(s,73 ); % bit 4 port 1 OFF U-S Hijau
fwrite(s,85 ); % bit 2 port 2 OFF U-S Hijau H2
%----------------------------------------------------------
fwrite(s,77 ); % bit 6 port 1 OFF U-S Kuning
fwrite(s,89 ); % bit 4 port 2 Off U-S Kuning K2
%------------- Time ---------------------------------------
tunda (t_k); % delay kuning, lampu merah star
%--------------- M1, H2== ON, H1, K1, M2, K2 ===OFF
% selang t_h, delay hijau
%----------------------------------------------------------
fwrite(s,70 ); % bit 3 port 1 ON T-B Merah M1
fwrite(s,82 ); % bit 1 port 2 ON T-B Merah
%----------------------------------------------------------
fwrite(s,72 ); % bit 4 port 1 ON U-S Hijau
fwrite(s,84 ); % bit 2 port 2 ON U-S Hijau H2
%------------------------------------------------
fwrite(s,69 ); % bit 2 port 1 OFF T-B Hijau H1
fwrite(s,81 ); % bit 0 port 2 OFF T-B Hijau
%-----------------------------------------------------------
fwrite(s,67 ); % bit 1 port 1 OFF T-B Kuning K1
fwrite(s,79 ); % bit 7 port 1 OFF T-B Kuning
%----------------------------------------------------------
fwrite(s,75 ); % bit 5 port 1 OFF U-S Merah M2
fwrite(s,87 ); % bit 3 port 2 OFF U-S Merah
%----------------------------------------------------------
fwrite(s,77 ); % bit 6 port 1 OFF U-S Kuning
fwrite(s,89 ); % bit 4 port 2 Off U-S Kuning K2
tunda (t_h); % delay hijau
%--------------- M1, K2== ON, H1, K1, M2, H2 ===OFF ================================
% selang t_k, delay kuning
%----------------------------------------------------------
fwrite(s,70 ); % bit 3 port 1 ON T-B Merah M1
fwrite(s,82 ); % bit 1 port 2 ON T-B Merah
%----------------------------------------------------------
fwrite(s,76 ); % bit 6 port 1 ON U-S Kuning
fwrite(s,88 ); % bit 4 port 2 ON U-S Kuning K2
%------------------------------------------------
fwrite(s,69 ); % bit 2 port 1 OFF T-B Hijau H1
fwrite(s,81 ); % bit 0 port 2 OFF T-B Hijau
%-----------------------------------------------------------
fwrite(s,67 ); % bit 1 port 1 OFF T-B Kuning K1
fwrite(s,79 ); % bit 7 port 1 OFF T-B Kuning
%----------------------------------------------------------
fwrite(s,75 ); % bit 5 port 1 OFF U-S Merah M2
fwrite(s,87 ); % bit 3 port 2 OFF U-S Merah
%----------------------------------------------------------
fwrite(s,73 ); % bit 4 port 1 OFF U-S Hijau
fwrite(s,85 ); % bit 2 port 2 OFF U-S Hijau H2
tunda (t_k)
end
%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%--------------- OFF pin--------------------------------------------------------------------
%===========PORT 1==========================================
fwrite(s,65 ); % bit 0
fwrite(s,67 ); % bit 1
fwrite(s,69 ); % bit 2
fwrite(s,71 ); % bit 3
fwrite(s,73 ); % bit 4
fwrite(s,75 ); % bit 5
fwrite(s,77 ); % bit 6
fwrite(s,79 ); % bit 7
%=========================PORT 2======================
fwrite(s,81 ); % bit 0
fwrite(s,83 ); % bit 1
fwrite(s,85 ); % bit 2
fwrite(s,87 ); % bit 3
fwrite(s,89 ); % bit 4
fwrite(s,91 ); % bit 5
fwrite(s,93 ); % bit 6
fwrite(s,95 ); % bit 7
tunda (0.1)
fclose(s);
delete(s)
Fungsi m-file untuk timer
function tunda(seconds)
% function pause the program
% seconds = delay time in seconds
tic;
while toc < seconds
end
end
Hasil Program pada modul
3. GUI MATLAB
A graphical user interface (GUI) adalah antar muka berupa gambar ( pictorial interface)
untuk sebuah program. Elemen dasar yang dibutuhkan untuk membuat program berbasis
GUI yaitu
Figure, komponen dalam GUI harus ditata dalan sebuah figure, dalam hal ini
figure adalah sebuah jendela pada layar yang nantinya diisi dengan komponen lain
seperti Static Text, Pushbutton, dan sebagainya. Dengan mengetikkan guide (the
GUI design environment) pada MATLAB maka muncul jendela seperti pada
gambar di bawah
Komponen Pushbutton, Static Text, Edit Text, List box, Sliders, dan sebagainya (lihat
gambar di atas) adalah komponen yang disediakan pada figure. Komponen komponen
tersebut jika ingin diintegrasikan dalam program maka dipindahkan dengan cara
mendrag/menekan mouse dari posisi komponen tersebut ditempatkan ke suatu posisi
dalam jendela figure yang dinginkan dengan jalan mendrop/melepas tekanan jari tangan
yang menekan mouse.
Push button
SliderRadio button
Check BoxEdit Text
Static Text
Pop-up Menu
ListboxToggle Button
TableAxes
Panel
ActiveX control
Button Group
Callback, jika user mengklik sebuah button maka even tersebut menyebabkan
MATLAB code mengimplentasikan fungsi dari button yang dieksekusi. Jadi
sebuah kode dieksekusi sebagai respons dari sebuah even disebut callback.
Contoh 3.2
Buatlah program lampu lalu lintas berbasis GUI MATLAB untuk contoh 3.1 dengan
tampilan sebagai berikut
Solusi
Komponen text 1 sampai text 8 adalah komponen Static Text yang berisi teks
seperti yang diperlihatkan pada gambar diatas. Untuk proses pengisian teks (
string) caranya klik 2 kali text tersebut maka muncul jendela property inspector
pada layar, kemudian pada inspector tuliskan teks yang dinginkan pada kolom
String seperti gambar di bawah
Komponen edit1 sampai edit4 adalah komponen Edit Text, klik 2 kali komponen
edit maka muncul jendela property inspector, kemudian pada kolom String
kosongkan seperti gambar di bawah
Komponen Push button1 dan Push button 2 adalah komponen button, klik 2 kali
komponen button maka muncul jendela property inspector, kemudian pada kolom
String Push button 1 beri nama Run dan pada kolom Tag isi dengan Btn_hitung.
Tuliskan teks yang
diinginkan
Kosongkan tulisan
Pada Push button 2 isi dengan nama Edit pada kolom String dan Btn_exit pada
kolom Tag
Pada m-file editor isikan di bawah baris function edit1_Callback(hObject,
eventdata, handles)
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
tunda_kuning=str2num(get(handles.edit1, 'String'));
handles.tunda_kuning=tunda_kuning;
guidata(hObject, handles);
Pada m-file editor isikan di bawah baris function edit2_Callback(hObject,
eventdata, handles)
function edit2_Callback(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) tunda_hijau=str2num(get(handles.edit2, 'String')); handles.tunda_hijau=tunda_hijau; guidata(hObject, handles)
Pada m-file editor isikan di bawah baris function Btn_hitung_Callback(hObject,
eventdata, handles)
Isikan Run dan
Btn_hitung
function Btn_hitung_Callback(hObject, eventdata, handles) % hObject handle to Btn_hitung (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %kode ini diekskusi jika kita menekan tombol hitung tunda_kuning=handles.tunda_kuning; tunda_hijau=handles.tunda_hijau; tunda_merah=tunda_kuning+tunda_hijau; siklus_run_alat=handles.siklus_run_alat; set(handles.edit3, 'string', tunda_merah);
dan seterusnya seperti pada program contoh 3.1
Pada m-file editor isikan di bawah baris function Btn_exit_Callback(hObject,
eventdata, handles)
function btn_exit_Callback(hObject, eventdata, handles) % hObject handle to btn_exit (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %untuk keluar dari apalikasi delete(handles.figure1)
Pada m-file editor isikan di bawah baris function edit4_Callback(hObject,
eventdata, handles)
function edit4_Callback(hObject, eventdata, handles) % hObject handle to edit4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) siklus_run_alat =str2num(get(handles.edit4, 'String')); handles.siklus_run_alat=siklus_run_alat; guidata(hObject, handles)
Untuk menjalankan program diatas, caranya klik tool dan run pada menu bar seperti
gambar di atas, selanjunya isikan nilai waktu nyala lampu kuning yang direncanakan pada
edit1 text, nilai waktu nyala lampu hijau yang direncanakan pada edit2 text, dan nilai
siklus alat bekerja pada edit 4 text. Sementara kolom edit3 text akan terisi dengan
sendirinya setelah program selesai, lihat gambar berikut. Setelah proses pengisian pada
kolom edit 1, edit 2, dan edit 4 selesai selanjutnya klik tombol Push button 1(Run).
Program MATLAB yang ditulis dengan fasilitas GUI jauh lebih menarik dibanding
program yang ditulis dalam bentuk script.
Hasil Program dengan GUI pada modul sama dengan contoh 3.1
Soal
1. Buatlah program traffic light seperti contoh 3.1 dalam bentuk Script file, dimana
waktu nyala dari lampu kuning, hijau, dan merah diatur sesuai kebutuhan.
Gunakan nilai COM sesuai komputer anda.
2. Sama dengan soal 1, akan tetapi program berbasis GUI MATLAB