BAB IV PERANCANGAN DAN REALISASI PERANGKAT LUNAK 4.1. Spesifikasi Perancangan Perangkat Lunak Perangkat lunak pada wahana bertujuan untuk memudahkan proses interaksi antara
wahana
dengan
pengguna.
Pengguna
memasukkan
perintah
pengendalian wahana melalui perangkat lunak dalam komputer, Personal Computer / PC (host). Oleh perangkat lunak dalam PC tersebut, perintah disalurkan ke mikrokontroler melalui serial port yang kemudian diterima oleh perangkat lunak dalam mikrokontroler. Perangkat lunak dalam mikrokontroler akan memroses perintah tersebut untuk melaksanakan kegiatan berdasarkan perintah dari pengguna PC (misalnya menggerakkan servo).
Perancangan perangkat lunak pada tugas akhir ini dapat dibagi menjadi dua bagian dasar, yaitu: perangkat lunak yang berjalan pada PC dan perangkat lunak pada mikrokontroler. Perangkat lunak pada PC dirancang dalam lingkungan MATLAB sedangkan perangkat lunak pada mikrokontroler dibangun dalam perangkat lunak Code Vision AVR (CVAVR). Perangkat lunak (MATLAB) merupakan interface bagi pengguna PC untuk mengendalikan wahana dan perangkat lunak (CVAVR) merupakan perangkat lunak yang menjadi pemroses dalam mikrokontroler.
Teknik pembangunan perangkat lunak ini adalah dengan memadukan perintah pada MATLAB dengan kode program CVAVR. Supaya tidak terjadi kesalahan pemrosesan perintah, kedua program ini harus saling berhubungan dan dibangun berdasarkan komunikasi yang sama. Kecepatan pengiriman data melalui serial port (baudrate) yang ditetapkan pada kedua program harus sama dan tidak boleh ada kesalahan dalam penerjemahan data yang dikirim atau diterima. Selain itu, algoritma kedua program tersebut harus terjalin dan berhubungan satu sama lain sehingga perintah yang dikirim atau diterima, diproses sesuai dengan pelaksanaan perintah yang diinginkan dalam algoritma tersebut.
36
Spesifikasi akhir dari perangkat lunak yang digunakan adalah sebagai berikut: −
Program dalam MATLAB dapat berkomunikasi melalui serial port dan dapat mengirimkan perintah yang dapat diproses oleh program dalam mikrokontroler.
−
Kode program MATLAB dibangun dalam dua subsistem, yaitu: GUIDE dan SIMULINK. Kode program GUIDE MATLAB merupakan interface bagi pengguna PC untuk mengendalikan wahana secara statik. Kode program SIMULINK MATLAB dapat mengirimkan perintah simultan kepada wahana sehingga gerakan wahana menjadi suatu gerakan yang dinamik dan real time.
−
Kode program CVAVR yang dimasukkan ke dalam mikrokontroler harus dapat memroses perintah yang dikirim melalui serial port. Kode program ini juga harus mendukung mikrokontroler dalam melaksanakan perintah dari serial port tersebut. Kode program CVAVR ditulis dalam bahasa C yang diubah menjadi kode hex untuk dimasukkan dalam mikrokontroler. Kode hex tersebut berjalan di dalam mikrokontroler secara bebas (tidak terikat oleh CVAVR / dapat berjalan dengan atau tanpa komputer host menjalankan CVAVR).
−
Kode program CVAVR dibangun sedemikian rupa sehingga dapat mendukung aktifitas board DT-AVR low cost micro-system terutama aktifitas board sebagai subsistem pengendali wahana.
4.2. Batasan Perancangan Perangkat Lunak Batasan perancangan perangkat lunak wahana ini adalah sebagai berikut: −
Perangkat lunak (dalam mikrokontroler dan PC) dapat berkomunikasi melalui serial port COM1 dengan kecepatan baudrate 19200 Bits per second. Pemilihan kecepatan komunikasi sebesar 19200 Bits per second didasarkan pada kecepatan terbesar yang dapat didukung oleh board DTAVR low cost micro-system dengan kesalahan komunikasi yang paling kecil.
37
−
Perangkat lunak dalam PC dibangun dalam MATLAB untuk memudahkan pengembangan dan integrasi perangkat lunak yang lain. Perangkat lunak ini dapat mengirimkan perintah/fungsi yang menjadi dasar pergerakan wahana.
−
Perangkat lunak dalam mikrokontroler dapat mendukung pengendalian subsistem aktuator wahana, yaitu: pengendalian gerakan servo, dan pengendalian kecepatan dan arah putaran motor DC.
4.3. Arsitektur Sistem Perangkat Lunak Sistem perangkat lunak wahana merupakan integrasi pemrograman MATLAB dan CVAVR yang saling berhubungan satu sama lain. Kode program dalam MATLAB berjalan pada PC dan digunakan oleh pengguna sebagai interface USER INPUT subsistem pengendali wahana. Pada mikrokontroler berjalan perangkat lunak yang dibangun dalam lingkungan CVAVR untuk memroses perintah dan menyalurkannya ke subsistem aktuator wahana.
Gambar 4. 1. Arsitektur perangkat lunak wahana
38
Pada gambar 4. 1., pengguna memasukkan perintah (USER INPUT) melalui PC yang kemudian disalurkan ke dalam mikrokontroler untuk diproses oleh program dalam mikrokontroler. Secara sederhana, algoritma perangkat lunak baik di PC maupun di mikrokontroler dimulai dengan inisialisasi komunikasi antarperangkat lunak. Setelah itu, algoritma dilanjutkan dengan penerjemahan data yang dikirim atau diterima oleh perangkat lunak melalui serial port. Bagi mikrokontroler, data yang diterima dilanjutkan dengan proses pengendalian subsistem aktuator sedangkan bagi PC, data yang diterima merupakan feedback (umpan-balik) dari perintah USER INPUT yang dikirim melalui serial port.
Gambar 4. 2. Diagram algoritma perangkat lunak wahana (sederhana)
4.3.1. Perangkat Lunak dalam Mikrokontroler CVAVR merupakan sebuah perangkat lunak untuk membangun kode (hex) yang berjalan pada mikrokontroler. Dengan kata lain, CVAVR ini digunakan untuk melakukan pemrograman mikrokontroler. Program assembly yang dimasukkan ke dalam mikrokontroler, terutama mikrokontroler
ATMEL AVR, dibuat
berdasarkan bahasa C. Oleh CVAVR, bahasa tersebut diubah menjadi file dalam bentuk hex supaya dapat dimasukkan ke dalam mikrokontroler. File hex tersebut dapat dimasukkan ke dalam mikrokontroler melalui CVAVR atau program assembly lainnya, seperti ATMEL
AVR Studio 4. Kode program /
perintah yang terdapat pada CVAVR tersebut sesuai dengan bahasa pemrograman C dan disesuaikan dengan jenis mikrokontroler (jenis, board dan clock mikrokontroler) yang akan diprogram.
39
Gambar 4. 3. Pemrograman CVAVR
Algoritma perangkat lunak CVAVR wahana memiliki tiga bagian penting, yaitu: inisialisasi, main loop, dan interrupt. Algoritma inisialisasi meliputi penetapan komunikasi serial, penetapan I/O pin bagi masing-masing port mikrokontroler, dan penetapan kecepatan timer/counter mikrokontroler. Pada bagian main loop, dibangkitkan sinyal pulsa yang akan mengendalikan pergerakan shaft servo dan pada bagian interrupt, terdapat penerjemahan penerimaan dan pengiriman data dari dan ke PC melalui serial port.
Gambar 4. 4. Diagram algoritma perangkat lunak dalam mikrokontroler
Algoritma interrupt merupakan bagian algoritma yang selalu berhubungan dengan algoritma perangkat lunak dalam PC (perintah USER INPUT). Algortima interrupt mikrokontroler ini merupakan interrupt yang dijalankan jika terjadi perubahan keadaan pada serial port. Jika terjadi pengiriman atau penerimaan data di serial port, algoritma interrupt ini akan diproses oleh perangkat lunak mikrokontroler dan diteruskan ke algoritma main loop. Interrupt mikrokontroler dibangun menggunakan metode switch-case yang menerjemahkan data-data terkirim di serial port. Pada dasarnya, algoritma interrupt merupakan algoritma penerjemahan karakter yang ada dalam buffer
40
serial port. Karakter ini terdiri dari karakter angka dan huruf yang berbentuk data 8 bit. Karakter angka akan menentukan besarnya variabel konstanta dalam perangkat lunak dan karakter huruf menentukan subsistem aktuator yang akan diproses oleh mikrokontroler.
Gambar 4. 5. Algoritma interrupt mikrokontroler
4.3.2. Perangkat Lunak dalam PC Perangkat lunak di dalam PC yang dibangun dalam lingkungan MATLAB terdiri dari dua bagian, yaitu GUIDE dan SIMULINK. GUIDE merupakan interface USER INPUT untuk perintah pengendalian wahana yang statik. Maksud pengendalian statik adalah memberikan perintah sesaat kepada wahana untuk melalukan gerakan yang bersifat steady. Contoh gerakan tersebut adalah: (a) posisi shaft servo pada sudut tertentu, (b) kecepatan putaran motor DC yang konstan, (c) arah putaran motor DC. Perangkat lunak SIMULINK bertujuan untuk memberikan perintah pada mikrokontroler supaya wahana dapat bergerak secara dinamik. Dengan kata lain, wahana menerima perintah secara terus menerus dalam rentang waktu
41
tertentu dan bergerak sesuai dengan perintah di rentang waktu itu. SIMULINK juga mendukung pembentukan realtime workshop sehingga kode program yang dijalankan oleh SIMULINK dapat berjalan sesuai dengan perubahan waktu yang sebenarnya / sesuai dengan kenyataan. 4.3.2.1. GUIDE MATLAB GUIDE adalah GUI (graphical user interface) Layout Editor. Fasilitas ini merupakan bagian dari MATLAB untuk mempermudah pemrograman interface (antar-muka) dalam lingkungan MATLAB.
Pada prinsipnya, penggunaan GUIDE memiliki kesamaan dengan pemrogaman pada Microsoft Visual Basic (pengguna dapat melakukan drag-drop untuk meletakkan suatu objek) kecuali jenis perintah yang terdapat di dalamnya. Selain itu, objek dan M-file dalam GUIDE saling berhubungan melalui event callback. Event ini akan di-eksekusi jika terjadi perubahan properti objek dalam GUIDE (misalnya tombol ditekan).
Untuk melakukan pengendalian terhadap subsistem aktuator, program GUIDE yang dibuat harus dapat berkomunikasi dengan mikrokontroler melalui serial port. Hal ini sama dengan pemrograman m-file untuk melakukan koneksi dengan serial port. Perintah koneksi dapat dimasukkan dalam suatu event callback dari objek yang diinginkan (misal pushbutton).
Program GUIDE bagi wahana dapat dibagi menjadi dua bagian penting, yaitu: callback untuk pengendalian motor DC dan callback untuk pengendalian servo. Pengendalian motor DC terdiri dari pengendalian arah putaran dan pengendalian kecepatan putar sedangkan pengendalian servo hanya terdiri dari pengendalian sudut shaft servo.
42
Gambar 4. 6. GUIDE MATLAB pengendalian wahana Tabel 4. 1. Daftar objek GUIDE MATLAB perangkat lunak wahana: Kelompok
Objek uicontrol
GUIDE (Frame Servo1)
uicontrol
uicontrol
uicontrol
GUIDE (Frame Servo2)
uicontrol
uicontrol
Properti Style Tag Callback Style Tag Max Min Callback Style String Tag Callback Style Tag Callback Style Tag Max Min Callback Style String Tag Callback
Nilai Properti Edit s1_text servo('s1_text_Callback',gcbo,[],guidata(gcbo)) Slider s1_slider 500 0 servo('s1_slider_Callback',gcbo,[],guidata(gcbo)) Pushbutton Set s1_btn servo('s1_btn_Callback',gcbo,[],guidata(gcbo)) Edit s2_text servo('s2_text_Callback',gcbo,[],guidata(gcbo)) Slider s2_slider 500 0 servo('s2_slider_Callback',gcbo,[],guidata(gcbo)) Pushbutton Set s2_btn servo('s2_btn_Callback',gcbo,[],guidata(gcbo))
Keterangan
Objek pengendali servo wahana 1-2
Objek pengendali servo wahana 3-4
43
Tabel 4. 2. Daftar objek GUIDE MATLAB perangkat lunak wahana (lanjutan): Kelompok
Objek uicontrol
GUIDE (Frame Servo3)
uicontrol
uicontrol
uicontrol
uicontrol
GUIDE (Frame Motor DC)
uicontrol
uicontrol
uicontrol
uicontrol
uicontrol GUIDE (Umum) uicontrol
4.3.2.2.
Properti Style Tag Callback Style Tag Max Min Callback Style String Tag Callback Style Tag Callback Style Tag Max Min Callback Style String Tag Callback Style String Tag Callback Style String Tag Callback Style String Tag Callback Style String Tag Callback Style String Tag Callback
Nilai Properti Edit s2_text servo('s2_text_Callback',gcbo,[],guidata(gcbo)) Slider s2_slider 500 0 servo('s2_slider_Callback',gcbo,[],guidata(gcbo)) Pushbutton Set s2_btn servo('s2_btn_Callback',gcbo,[],guidata(gcbo)) Edit m_text servo('m_text_Callback',gcbo,[],guidata(gcbo)) Slider m_slider 500 0 servo('m_slider_Callback',gcbo,[],guidata(gcbo)) Pushbutton Set m_btn servo('m_btn_Callback',gcbo,[],guidata(gcbo)) Pushbutton Start CCW m_ccw_btn servo('m_ccw_btn_Callback',gcbo,[],guidata(gcbo)) Pushbutton Start CW m_cw_btn servo('m_cw_btn_Callback',gcbo,[],guidata(gcbo)) Pushbutton Stop m_stop_btn servo('m_stop_btn_Callback',gcbo,[],guidata(gcbo)) Pushbutton Stop stop_btn servo('stop_btn_Callback',gcbo,[],guidata(gcbo)) Pushbutton Exit exit_btn servo(‘exit_btn_Callback',gcbo,[],guidata(gcbo))
Keterangan
Objek pengendali servo wahana 5-6
Objek pengendali kecepatan putar motor DC wahana
Pengendalian arah putar (CCW) motor DC wahana Pengendalian arah putar (CW) motor DC wahana Perintah berhenti motor DC wahana Perintah berhenti seluruh servo wahana Penutup GUIDE
SIMULINK MATLAB SIMULINK wahana terdiri dari bagian fungsi dan bagian pengiriman data. Pada bagian fungsi, pengguna dapat mendefinisikan persamaan dinamik pergerakan 3DOF wahana (subsistem aktuator servo) sedangkan pada bagian pengiriman data, didefinisikan sebuah block untuk mengirim data ke serial port.
44
Block pengiriman data dibuat berdasarkan template s function level 1 yang terdapat pada SIMULINK. Di dalamnya didefinisikan perintah yang berasal dari bagian fungsi dan disalurkan ke serial port. Dengan demikian selama SIMULINK dijalankan, perintah yang berasal dari fungsi akan terus disalurkan ke mikrokontroler melalui block ini.
Penetapan komunikasi melalui serial port (nama port dan baud rate) dibangun pada callback SIMULINK. Pembukaan komunikasi ditetapkan pada callback StartFcn dan penutupannya ditetapkan pada callback StopFcn. Dengan demikian selama program SIMULINK wahana berjalan, komunikasi pada serial port akan terus terbuka dan memungkinkan pengiriman data secara terus-menerus ke mikrokontroler.
Bagian fungsi
Bagian pengirim data
Gambar 4. 7. SIMULINK wahana
45