PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
TUGAS AKHIR APLIKASI PENGENALAN OBJEK UNTUK LENGAN ROBOT PEMISAH BENDA BERDASARKAN BENTUK BENDA Diajukan untuk memenuhi salah syarat memperoleh gelar Sarjana Teknik pada Program Studi Teknik Elektro Fakultas Sains dan Teknologi Universitas Sanata Dharma
disusun oleh : IRVAN HASAN Nim : 115114018
PROGRAM STUDI TEKNIK ELEKTRO JURUSAN TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2015
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
TUGAS AKHIR APLIKASI PENGENALAN OBJEK UNTUK LENGAN ROBOT PEMISAH BENDA BERDASARKAN BENTUK BENDA Diajukan untuk memenuhi salah syarat memperoleh gelar Sarjana Teknik pada Program Studi Teknik Elektro Fakultas Sains dan Teknologi Universitas Sanata Dharma
disusun oleh : IRVAN HASAN Nim : 115114018
PROGRAM STUDI TEKNIK ELEKTRO JURUSAN TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2015
i
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
FINAL PROJECT OBJECT IDENTIFICATION APPLICATION FOR ROBOTIC ARM OBJECT SEPARATOR BASED ON OBJECT SHAPE In partial fulfilment of the requirements for the degree of Sarjana Teknik in Electrical Engineering Study Program Faculty of Science and Technology Sanata Dharma University
IRVAN HASAN Nim : 115114018
ELECTRICAL ENGINEERING STUDY PROGRAM ELECTRICAL ENGINEERING DEPARTEMENT FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2015 ii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
HALAMAN PERSETUJUAN TUGAS AKHIR
APLIKASI PENGENALANI OBJEK UT{TUK LENGAN ROBOT PEMISAH BENDA BERDASARKAN BENTUK BENDA
(OBJECT IDE ROBOTIC
IRVAN HASAN NIM : 115114018
Pembimbing
r /1 ,t^ .rv:?-
ranggar,
Dr. Linggo Sumarno
ilt
b
ru
/-(f
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
HALAMAN PENGESAHAN TUGAS AKHIR
APLIKASI PENGENALAN OBJEK UNTUK LENGAN ROBOT PEMISAH BENDA BERDASARKAI\ BENTUK BEI\DA (OBJECT IDENTIFICATION APPLICATION FOR ROBOTIC ARM OBJECT SEPARATOR BASED ON OBJECT SHAPE) Oleh : IRVAN HASAN
NIM:115114018 Telah dipertahankan di depan panitia penguji pada tanggal: dan dinyatakan memenuhi syarat
susunan panitia
Nama lengkap
Ketua
:
Ir. Th. Prima Ari Setiyani, M. T.
Sekertaris
:
Dr. Linggo Sumarno
Anggota
:
Dr.Iswanjono Yogyakmta. 21
Afichrr-
Fakultas Sains dan Teknologi iversitas Sanata Dharma
iv
ZotS
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
PERNYATAAI\ KEASLTAI\ KARYA Saya menyatakan dengan sesungguhnya bahwa tugas akhir yatrg berjudul
*APLIKASI PENGENALATI OBJEK UNTUK LENGAI[ ROBOT PEMISAH BENDA BERDASARKAI{ BENTUK BENDA' tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.
Apabila dikemudian hari ditemukan indikasi plagiatisme dalam naskah ini, maka saya bersedia menanggung segala sanksi sesuai peraturan perundang-undangan yang berlaku.
Yogyakarta, 27
lunt20l5
W
Irvan Hasan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP MOTTO : “Tidak ada orang yang terlahir dengan kepintaran yang luar biasa, melainkan orang terlahir dengan semangat juang yang luar biasa”
Skripsi ini kupersembahkan untuk :
Tuhan Yesus Kristus penyelamatku Bunda Maria dan Malaikat pelindungku… Papa dan Mama tercinta, untuk doanya, serta dukungannya secara moral maupun materi Almamaterku Teknik Elektro Universitas Sanata Dharma Yogyakarta
vi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
HALAMAN PERNYATAAN PERSETUJUAI\ PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS Yang bertandatangan di bawah ini, saya mahasiswa Universitas Sanata Dharma
Nama
:
:
IRVAN HASAN
NomorMahasiswa : 115114018
Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul
:
APLIKASI PENGENALAI\ OBJEK UNTUK LENGAN ROBOT PEMISAH BENDA BEDA.SARKAN BENTUK BENDA
beserta perangkat yang dipedukan (bila ada). Dengan demikian saya memberikan kepada
Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam
bentuk media lain, mengelolanya dalam bentuk pangkalan datq mendistribusikan secara terbatas, dan mempublikasikannya
tanpa perlu meminta
ijin dari
di internet atau media lain untuk kepentingan akademis
saya maupun memberikan royalti kepada saya selama tetap
mencantumkan nama saya sebagai penulis. Demikian pernyataan
ini yang
saya buat
dengan setenarnya.
Yogyakarta, 27 Juni 2015
Irvan Hasan
vii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI INTISARI Perkembangan dunia teknologi sangat berpengaruh bagi kehidupan manusia. Perkembangan teknologi dapat mempermudah kinerja manusia dan meningkatkan efisieni tenaga dan waktu untuk mendukung proses operasional suatu usaha. Salah satunya adalah lengan robot untuk mengenali bentuk benda agar dapat mengambil dan memisahkan benda berdasarkan bentuk dengan menggunakan teknologi image processing. Proses pemisahan benda menggunakan lengan robot masih banyak dilakukan secara manual atau dioperasikan oleh operator. Hal ini dirasa kurang efisien dan memerlukan waktu yang lama. Berdasarkan hal tersebut, dibutuhkan adanya lengan robot yang dapat mengenali bentuk benda secara otomatis agar dapat mengambil dan memisahkan benda secara otomatis tanpa dioperasikan operator. Urutan pengenalan bentuk benda yaitu citra RGB benda diubah menjadi citra grayscale untuk mempermudah proses pengenalan. Kemudian memproses citra grayscale menjadi citra biner, proses pemotongan citra (croping), resizing, menjumlahkan nilai citra biner, dan pengenalan bentuk benda berdasarkan range jumlah nilai citra biner berdasarkan masing-masing bentuk benda. Lengan robot digerakan oleh motor servo yang dikendalikan ATmega32 menggunakan fasilitas interrupt dan komunikasi serial antara komputer dengan ATmega32 menggunakan komunikasi serial USART yang diprogram menggunakan CodeVision AVR. Hasil dari penelitian ini adalah sistem dapat membedakan 4 macam bentuk benda secara realtime serta lengan robot dapat mengambil dan memisahkan benda berdasarkan bentuk. Setelah melakukan percobaan sebanyak 40 kali, sistem dan lengan robot dapat bekerja 100% dengan toleransi kemiringan benda 10o dan tata peletakan benda sesuai dengan batasan masalah. Namun apabila tidak sesuai dengan batasan masalah, maka sistem dan lengan robot tidak dapat bekerja secara baik. Hal ini disebabkan gripper tidak dapat menjangkau objek untuk proses pemindahan. Kata kunci: Image Processing, Lengan Robot, Metode Citra Biner.
viii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ABSTRACT The development of the technology very influential for human life. Technology development to simplify the human pershapeance and increase efficient of time and energy to support the process of operational a business. One is robotic arm for acquainted object shape in ordet to take and separate object base on object shape using image processing technology. Object separation process using robotic arm still operation with manually or operated by operator. This is not efficient and need more time. This is less efficient and requires a long time. Based on this, it takes the robot arm that can automatically recognize the shape of the object in order to extract and separate objects automatically without operator operated. Object shape identification step is RGB image of object change to grayscale image for facilitate identification process. After that processing grayscale image to binary image, cropping process, resizing, counting binary image value, and identification object shape based on range binary image value for respectively object shape. Robotic arm movement by servo motor controlled ATmega32 using interrupt facilities and serial communication between computer and ATmega32 using USART serial communication programed with CodeVision AVR. The results of the research is the system can dicrimination four kinds of realtime objects and the robotic arm can pick up and separate objects based on shape. After experimenting as much as 40 times, system and the robotic arm can work 100% with a tolerance of 10o tilt objects and layout objects laying in accordance with problem definition. But, if the problem is not in accordance with the limits, then the system and the robotic arm can not work properly. This is due to the gripper can not reach the object to the moving process. Keywords: Image Processing, Robotic Arm, Binary Image Method.
ix
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
KATA PENGANTAR Puji dan Syukur penulis panjatkan kepada Tuhan Yang Maha Esa atas segala berkat dan rahmat-Nya, sehingga penulis dapat menyelesaikan tugas akhir ini dengan baik. Penulis menyadari bahwa banyak pihak yang telah memberikan doa, dukungan, perhatian serta bantuan kepada penulis sehingga dapat menyelesaikan tugas akhir ini. Oleh karena itu, penulis mengucapkan terima kasih yang sebesar-besarnya kepada: 1) Paulina Heruningsih Prima Rosa, S.Si., M.Sc selaku dekan Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta. 2) Petrus Setyo Prabowo, S.T.,M.T., Ketua Program Studi Teknik Elektro Universitas Sanata Dharma Yogyakarta. 3) Theresia Prima Ari Setiyani S.T., M.T selaku dosen pembimbing akademik yang telah mendampingi dan membimbing penulis selama perkuliahan. 4) Dr. Linggo Sumarno, dosen pembimbing yang dengan penuh pengertian, sabar dan ketulusan hati memberi bimbingan, kritik, saran, serta motivasi dalam penulisan tugas akhir ini. 5) Ibu Theresia Prima Ari Setiyani S.T., M.T dan Bapak Dr.Iswanjono selaku dosen penguji yang telah bersedia memberikan masukan, bimbingan, dan saran dalam memperbaiki tugas akhir ini. 6) Bapak/ Ibu dosen yang telah mengajarkan banyak hal selama penulis menempuh pendidikan di Program Studi Teknik Elektro, Fakultas Sains dan Teknologi, Universitas Sanata Dharma. 7) Kedua orang tua tercinta, papah Hasan Hamdan dan mamah Rina Wati atas kasih sayang, dukungan dan doa yang tiada henti. 8) Adik-adik tercinta Erwin Kristiawan Hasan, Aldo Alfonsus Hasan, dan Putri Juliana Hasan yang selalu mendukung dan mendoakan saya, sehingga dapat menyelesaikan tugas belajar dengan baik. 9) Angeline Syahputri Fransiskus sebagai teman, sahabat, dan kekasih yang selalu menyemangati dan mendukung penulis sampai terselesaikannya tugas akhir ini. 10) Staff sekretariat Teknik Elektro yang telah membantu dalam hal administrasi.
x
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ll)Staff dan petugas
laboratorium Teknik Elektro yang telah membantu banyak hal
untuk kelancaran tugas-tugas perkuliahan. 12) Teman-teman seperjuangan angkatan 2011
Teknik Elektro yang selalu mendukung
dan menyemangati saya dalam menyelesaikan tugas akhfu ini. 13) Semua
pihak yang tidak dapat disebutkan satu persatu atas semua dukungan yang
telah diberikan dalam penyelesaian tugas akhir ini.
Penulis menyadari bahwa datam penulisan tugas akhir
ini masih banyak
kekurangan, kelemahan dan jauh dari sempurna. Oleh sebab itu, dengan segala kerendahan
hati, penulis mengharapkan kdtik dan saran yang membangun untuk penyempwnaan tugas akhir ini. Dan semoga tugas akhir ini dapat bernranfaat sebagaimana mestinya.
Yogyakarta 27 Juni 2015
W Penulis
Irvan Hasan
xi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR ISI HALAMAN JUDUL ............................................................................................... i HALAMAN PERSETUJUAN ............................................................................... iii HALAMAN PENGESAHAN ................................................................................ iv PERNYATAAN KEASLIAN KARYA ................................................................. v HALAMAN PERSEMBAHAN DAN MOTTO HIDUP ..................................... vi HALAMAN PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS ............................................. vii INTISARI ................................................................................................................ viii ABSTRACT ............................................................................................................ ix KATA PENGANTAR ............................................................................................ x DAFTAR ISI ........................................................................................................... xii DAFTAR TABEL ................................................................................................... xv DAFTAR GAMBAR .............................................................................................. xvi BAB I PENDAHULUAN 1.1. Latar Belakang ............................................................................................. 1 1.2. Tujuan dan Manfaat ..................................................................................... 2 1.3. Batasan Masalah .......................................................................................... 2 1.4. Metodologi Penelitian ................................................................................. 3 1.5. Sistematika Penulisan .................................................................................. 4 BAB II DASAR TEORI 2.1. Lengan Robot .............................................................................................. 5 2.2. Torsi/Momen Gaya ...................................................................................... 7 2.3. Motor Servo ................................................................................................. 7 2.4. Mikrokontroler AVR ATmega32 ................................................................ 8 2.4.1. Arsitektur AVR ATmega32 ............................................................... 9 2.4.2. Deskripsi Mikrokontroler ATmega32 ................................................ 9 2.4.3. Organisasi Memori AVR ATmega32 ................................................. 10 2.4.4. Interupsi .............................................................................................. 11 2.4.5. Timer/Counter .................................................................................... 11 2.4.6. Komunikasi Serial USART ................................................................ 13 2.5. LCD 16x2 .................................................................................................... 18 2.6. Regulator ic 78xx dan Transistor Penguat Arus .......................................... 20
xii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2.7. Photodioda ................................................................................................... 22 2.8. Infrared ........................................................................................................ 25 2.9. Transistor Sebagai Saklar ............................................................................ 25 2.10. Relay .......................................................................................................... 26 2.11. Webcam ..................................................................................................... 26 2.12. Benda Tiga Dimensi .................................................................................. 27 2.13. Pengolahan Citra Digital ........................................................................... 27 2.14. Pemrosesan Citra ....................................................................................... 28 2.14.1. Citra Grayscale ............................................................................... 28 2.14.2. Cropping ......................................................................................... 29 2.14.3. Citra Biner ...................................................................................... 29 2.14.4. Resizing ........................................................................................... 30 2.15. Metode Pengenalan Benda ........................................................................ 30 BAB III PERANCANGAN PENELITIAN 3.1. Proses Kerja dan Mekanisme Lengan Robot ............................................... 31 3.2. Perancangan Mekanik Lengan Robot .......................................................... 32 3.3. Perancangan Perangkat Keras ..................................................................... 34 3.3.1. Minimum System ATmega32 + LCD 16x2 ........................................ 34 3.3.1.1. Minimum System ATmega32 .................................................. 34 3.3.1.2. Rangkaian Konfigurasi LCD 16x2 ......................................... 35 3.3.2. Perhitungan Torsi Motor Servo ....................................................... 36 3.3.3. Motor Servo ..................................................................................... 38 3.3.4.
Regulator ic 7805 dan Penguat Arus ............................................... 40
3.3.5. Webcam ............................................................................................ 40 3.3.6. Sensor Photodioda dan Transistor Sebagai Saklar ........................... 41 3.3.7. Benda Tiga Dimensi ........................................................................ 42 3.4. Perancangan Perangkat Lunak ..................................................................... 43 3.4.1. Flowchart Program Interrupt Lengan Robot ................................... 45 3.4.2. Flowchart Program Pengenalan Bentuk Benda Pada MATLAB ......................................................................................... 49 3.4.3. Perancangan GUI MATLAB ........................................................... 50 3.4.4. Perubahan m-file Menjadi exe file ................................................... 51 3.4.5. Flowchart Menghitung Jumlah Benda yang telah Terdeteksi ......... 54
xiii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB IV HASIL PENGAMATAN DAN PEMBAHASAN 4.1. Bentuk Fisik dan Sistem Kerja Lengan Robot ............................................ 56 4.2. Hasil Data Pengujian dan Pembahasan ....................................................... 58 4.2.1. Sudut Motor Servo ....................................................................... 58 4.2.2. Pengujian Nilai Citra Biner Bentuk Benda .................................. 61 4.2.3. Tata Peletakan Benda ................................................................... 62 4.2.4. Pengujian Keberhasilan Sistem Mendeteksi Bentuk Benda ............................................................................................ 63 4.2.5. Pengujian Keberhasilan Lengan Robot Saat Mengambil dan Memindahkan Benda ............................................................. 68 4.2.6. Pengujian Sistem Dalam Proses Pengenalan Benda dan Proses Pemindahan Benda ........................................................... 68 4.2.6.1. Menggunakan Lopping .................................................. 68 4.2.6.2. Tidak Menggunakan Lopping ........................................ 69 4.3. Analisa dan Pembahasan Perangkat Lunak ................................................. 69 4.3.1. Aplikasi CodeVision AVR ............................................................ 69 4.3.1.1. Pengendali Sensor Photodioda ....................................... 69 4.3.1.2. Pengendali Komunikasi USART ................................... 70 4.3.1.3. Pengendali Motor Servo ................................................. 71 4.3.1.4. Subrutin Program Utama ............................................... 74 4.3.2. Aplikasi MATLAB ...................................................................... 76 4.3.2.1. Tampilan Gui MATLAB ............................................... 76 4.3.2.2. Inisialisasi Komunikasi Serial ........................................ 77 4.3.2.3. Inisialisasi Webcam ........................................................ 77 4.3.2.4. Proses Pengolahan Citra ................................................. 78 4.3.2.5. Proses Pengenalan Bentuk Benda .................................. 78 Kesimpulan dan Saran ........................................................................................... 80 Daftar Pustaka ........................................................................................................ 81 Lampiran ................................................................................................................. L1
xiv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR TABEL Tabel 2.1. Hubungan PIN dan Interupsi ................................................................. 11 Tabel 2.2. Penentuan Ukuran Karakter ................................................................... 17 Tabel 2.3. Operasi Dasar LCD 16x2 ....................................................................... 19 Tabel 2.4. Konfigurasi Pin LCD 16x2 .................................................................... 19 Tabel 2.5. Konfigurasi Setting LCD 16x2 .............................................................. 20 Tabel 2.6. Karakteristik Regulator Tegangan ic 78xx ............................................ 20 Tabel 2.7. Hubungan Arus Dengan Hambatan ....................................................... 24 Tabel 3.1. Perhitungan Torsi Motor Servo ............................................................. 37 Tabel 3.2. Perhitungan Nilai OCR .......................................................................... 39 Tabel 3.3. Pemberian sudut motor servo ................................................................ 45 Tabel 4.1. Perhitungan Lebar Pulsa Motor Servo Towerpro MG946R .................. 60 Tabel 4.2. Data Citra Biner Masing-Masing Bentuk Benda ................................... 61 Tabel 4.3. Pengujian Keberhasilan Sistem Mendeteksi Bentuk Benda .................. 63 Tabel 4.4. Pengujian Keberhasilan Lengan Robot Mengambil dan Memindahkan Benda ...................................................................... 68 Tabel 4.5. Pemberian Nilai OCR ............................................................................ 72
xv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR GAMBAR Gambar 2.1. Manipulator Pada Lengan Robot ...................................................... 5 Gambar 2.2. Contoh Gripper ................................................................................. 6 Gambar 2.3. Model Fisik Motor Servo .................................................................. 7 Gambar 2.4. Cara Pengontrolan Motor Servo ....................................................... 8 Gambar 2.5. Konfigurasi Pin Mikrokontroler ATmega32 .................................... 9 Gambar 2.6. Mode Phase Correct PWM ............................................................... 12 Gambar 2.7. Mode fast PWM ................................................................................ 13 Gambar 2.8. Register UDR .................................................................................... 14 Gambar 2.9. Register UCSRA ............................................................................... 14 Gambar 2.10. Register UCSRB ............................................................................... 16 Gambar 2.11. Register UCSRC ............................................................................... 17 Gambar 2.12. Contoh LCD 16x2 ............................................................................. 18 Gambar 2.13. Rangkaian Umum Regulator 78xx .................................................... 21 Gambar 2.14. Rangkaian Catu Daya Dengan Penguat ............................................ 21 Gambar 2.15. Simbol Dan Bentuk Photodioda ........................................................ 23 Gambar 2.16. Respon Relatif Spektral Untuk Si, Ge, Dan Selenium Dibandingkan Dengan Mata Manusia ...................................................................... 23 Gambar 2.17. Hubungan Iλ Dengan Fc Pada Photodioda ....................................... 23 Gambar 2.18. Rangkaian Sensor Photodioda .......................................................... 24 Gambar 2.19. Aplikasi Sensor Photodioda .............................................................. 24 Gambar 2.20. Contoh Rangkaian Transistor Sebagai Saklar ................................... 25 Gambar 2.21. Bentuk Fisik Relay ............................................................................ 26 Gambar 2.22. Contoh Webcam ................................................................................ 27 Gambar 2.23. Contoh Benda Tiga Dimensi ............................................................. 27 Gambar 2.24. Contoh Koordinat Citra Digital ........................................................ 28 Gambar 2.25. Citra Skala Keabuan ......................................................................... 29 Gambar 2.26. Contoh Citra Biner ............................................................................ 29 Gambar 2.27. Aplikasi Citra Biner .......................................................................... 30 Gambar 3.1. Blok Diagram Sistem ........................................................................ 32 Gambar 3.2. Anatomi Lengan Robot ..................................................................... 32 Gambar 3.3. Komponen 1 ...................................................................................... 33 Gambar 3.4. Komponen 2 ...................................................................................... 33
xvi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 3.5. Komponen 3 ...................................................................................... 33 Gambar 3.6. Gripper Tampak Atas ....................................................................... 33 Gambar 3.7. Peletakan Seluruh Komponen ........................................................... 34 Gambar 3.8. Rangkaian Osilator ATmega32 ......................................................... 35 Gambar 3.9. Rangkaian Reset ATmega32 ............................................................. 35 Gambar 3.10. Skematik LCD 16x2 ......................................................................... 36 Gambar 3.11. Setting Port LCD ............................................................................... 36 Gambar 3.12. Konstruksi Lengan Robot ................................................................. 36 Gambar 3.13. Rangkaian Pin Motor Servo .............................................................. 38 Gambar 3.14. Lebar Pulsa Motor Servo .................................................................. 39 Gambar 3.15. Rangkaian Regulator 7805 Dengan Penguat Arus ............................ 40 Gambar 3.16. Rangkaian Sensor Photodioda .......................................................... 41 Gambar 3.17. Rangkaian Transistor Sebagai Saklar dan Relay .............................. 42 Gambar 3.18. Benda Tiga Dimensi ......................................................................... 42 Gambar 3.19. Flowchart Keseluruhan Sistem ......................................................... 44 Gambar 3.20. Flowchart Program Interrupt Lengan Robot Saat Posisi Siaga ........ 46 Gambar 3.21. Flowchart Program Interrupt Lengan Robot Saat Mengambil Benda ................................................................................................ 46 Gambar 3.22. Flowchart Program Interrupt Lengan Robot Saat Meletakan Benda Kubus ..................................................................................... 47 Gambar 3.23. Flowchart Program Interrupt Lengan Robot Saat Meletakan Benda Balok ...................................................................................... 47 Gambar 3.24. Flowchart Program Interrupt Lengan Robot Saat Meletakan Benda Tabung ................................................................................... 48 Gambar 3.25. Flowchart Program Interrupt Lengan Robot Saat Meletakan Benda Bola ........................................................................................ 48 Gambar 3.26. Flowchart Pengenalan Bentuk Benda Pada MATLAB .................... 50 Gambar 3.27. Perancangan GUI pada MATLAB .................................................... 51 Gambar 3.28. Langkah Pertama exe File ................................................................. 52 Gambar 3.29. Langkah Kedua exe File ................................................................... 52 Gambar 3.30. Langkah Ketiga exe File ................................................................... 53 Gambar 3.31. (Lanjutan) Langkah Ketiga exe File ................................................. 53 Gambar 3.32. Langkah Keempat exe File ................................................................ 53
xvii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 3.33. (Lanjutan) Langkah Keempat exe File ............................................. 54 Gambar 3.34. Flowchart Menghitung Jumlah Benda yang Telah Terdeteksi ......... 55 Gambar 4.1. Conveyor ........................................................................................... 56 Gambar 4.2. Minimum System ............................................................................... 56 Gambar 4.3. Regulator ........................................................................................... 56 Gambar 4.4. Benda ................................................................................................ 57 Gambar 4.5. Lengan Robot .................................................................................... 57 Gambar 4.6. Tempat Peletakan Benda ................................................................... 57 Gambar 4.7. Sudut 0o ............................................................................................. 59 Gambar 4.8. Sudut 10o ........................................................................................... 59 Gambar 4.9. Sudut 20o ........................................................................................... 59 Gambar 4.10. Sudut 30o ........................................................................................... 59 Gambar 4.11. Sudut 40o ........................................................................................... 59 Gambar 4.12. Sudut 50o ........................................................................................... 59 Gambar 4.13. Sudut 60o ........................................................................................... 59 Gambar 4.14. Sudut 70o ........................................................................................... 59 Gambar 4.15. Sudut 80o ........................................................................................... 59 Gambar 4.16. Sudut 90o ........................................................................................... 59 Gambar 4.17. Sudut 100o ......................................................................................... 59 Gambar 4.18. Sudut 110o ......................................................................................... 59 Gambar 4.19. Sudut 120o ......................................................................................... 60 Gambar 4.20. Sudut 130o ......................................................................................... 60 Gambar 4.21. Sudut 140o ......................................................................................... 60 Gambar 4.22. Sudut 150o ......................................................................................... 60 Gambar 4.23. Sudut 160o ......................................................................................... 60 Gambar 4.24. Sudut 170o ......................................................................................... 60 Gambar 4.25. Sudut 180o ......................................................................................... 60 Gambar 4.26. Grafik Data Citra Biner ..................................................................... 62 Gambar 4.27. Peletakan Benda Kubus .................................................................... 62 Gambar 4.28. Peletakan Benda Balok ..................................................................... 62 Gambar 4.29. Peletakan Benda Tabung ................................................................... 63 Gambar 4.30. Peletakan Benda Bola ....................................................................... 63 Gambar 4.31. Pengujian Benda Balok ..................................................................... 64
xviii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 4.32. Pengujian Benda Kubus .................................................................... 65 Gambar 4.33. Pengujian Benda Tabung .................................................................. 66 Gambar 4.34. Pengujian Benda Bola ....................................................................... 67 Gambar 4.35. Listing Program ADC ....................................................................... 69 Gambar 4.36. Listing Program Pengendali Conveyor ............................................. 70 Gambar 4.37. Listing Program Komunikasi USART .............................................. 70 Gambar 4.38. Listing program pengendali sudut putar motor servo ....................... 71 Gambar 4.39. Pemberian Nilai OCR Motor Servo .................................................. 71 Gambar 4.40. Listing Program Gerakan Mengambil Benda ................................... 72 Gambar 4.41. Listing Program Memindahkan Benda Kubus .................................. 73 Gambar 4.42. Listing Program Memindahkan Benda Balok ................................... 73 Gambar 4.43. Listing Program Memindahkan Benda Tabung ................................ 74 Gambar 4.44. Listing Program Memindahkan Benda Bola ..................................... 74 Gambar 4.45. Subrutin Program Utama .................................................................. 75 Gambar 4.46. Tampilan GUI MATLAB ................................................................. 76 Gambar 4.47. Inisialisasi Komunikasi Serial ........................................................... 77 Gambar 4.48. Inisialisasi Webcam ........................................................................... 77 Gambar 4.49. Proses Pengolahan Citra ................................................................... 78 Gambar 4.50. Listing Program Pengenalan Bentuk Benda ..................................... 79
xix
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB I PENDAHULUAN 1.1.
Latar Belakang Pada masa kini teknologi memiliki peranan penting dalam aktivitas yang dilakukan
manusia untuk mempermudah melakukan pekerjaan. Salah satu hasil perkembangan teknologi yaitu adanya teknologi yang dinamakan lengan robot [1] dan computer vision [2]. Lengan robot atau biasa disebut robot manipulator adalah gabungan dari beberapa segmen dan joint yang secara umum dibagi menjadi tiga bagian yaitu arm, wrist, dan gripper [1]. Sedangkan computer vision merupakan bidang pengetahuan yang berfokus pada bidang sistem kecerdasan buatan dan berhubungan dengan akuisisi data dan pemrosesan citra [2]. Lengan robot memiliki banyak fungsi diantaranya yaitu untuk memindahkan material, benda, alat, atau peralatan tertentu lewat pergerakan yang terprogram untuk melakukan berbagai macam tugas [1] seperti pada penelitian terdahulu yang dilakukan oleh Arismarjito[3] mengenai lengan robot pemisah benda berdasarkan warna menggunakan sensor warna TCS3200. Dari penelitian tersebut dan berdasarkan manfaat lengan robot serta computer vision, maka peneliti memiliki gagasan membuat lengan robot untuk memisahkan benda berdasarkan bentuk dengan menggunakan webcam sebagai sensor. Cara kerja lengan robot secara keseluruhan yaitu mula-mula benda diletakan diatas conveyor yang akan membawa benda ke arah webcam untuk diproses dan dikenali bentuknya. Setelah benda dikenali, maka lengan robot akan mengambil benda tersebut kemudian meletakan pada tempat yang telah ditentukan.
1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 1.2.
2
Tujuan dan Manfaat Tujuan penulisan tugas akhir ini yaitu membuat lengan robot yang dapat
membedakan 4 macam bentuk benda secara realtime. Manfaat dari penulisan tugas akhir ini adalah untuk membantu pekerjaan manusia, khususnya memisahkan beberapa jenis benda yang memiliki bentuk berbeda. Pengembangan dari pembuatan tugas akhir ini yaitu lengan robot industri otomatis untuk memisahkan benda-benda maupun material tertentu yang memiliki bentuk berbeda secara otomatis.
1.3. Batasan Masalah Pada perancangan alat ini, penulis berfokus pada pembuatan lengan robot beserta programnya dengan menggunakan codevision AVR dan image processing menggunakan software MATLAB. Sedangkan untuk hardware berupa webcam, conveyor, dan USB to TTL converter menggunakan modul yang sudah jadi dan tersedia di pasaran. Penulis menetapkan beberapa batasan masalah pada perancangan ini, yaitu sebagai berikut: 1) Masukan berupa empat buah benda yaitu kubus, balok, tabung, bola yang terbuat dari styrofoam. 2) Benda disusun secara acak diatas conveyor dengan jarak antara masing-masing benda yaitu +10 cm. 3) Posisi peletakan benda sesuai dengan batasan penulis yaitu maksimal toleransi sudut kemiringan benda sebesar 10o. 4) Menggunakan webcam untuk mengidentifikasi bentuk benda yang terhubung dengan software MATLAB melalui “Image Processing Toolbox”. 5) Menggunakan webcam logitech c270h yang diletakan 24 cm diatas benda. 6) Lengan robot dan gripper terbuat dari bahan akrilik dengan tebal 3mm yang di desain dengan menggunakan google sketchup. 7) Lengan robot terdiri dari empat buah servo standar yang diprogram menggunakan codevision AVR melalui ATmega32. 8) Komunikasi antara laptop dengan ATmega32 menggunakan komunikasi serial USART yang dihubungkan dengan modul yang sudah tersedia di pasaran yaitu modul USB to TTL converter.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
3
9) Benda berada 15cm didepan lengan robot dan tempat peletakan benda berada disamping lengan robot. Terdapat empat buah tempat untuk meletakan benda yaitu tempat untuk benda berbentuk kubus, tempat untuk benda berbentuk balok, tempat untuk benda berbentuk tabung, dan tempat untuk benda berbentuk bola yang telah ditetapkan tempatnya pada saat perancangan. 10) Keluaran berupa nama benda yang terdeteksi pada LCD 16x2. 11) Terdapat tampilan GUI pada MATLAB sebagai user interface agar dapat melihat data benda yang akan dikenali, dan jumlah benda yang terdeteksi.
1.4.
Metodologi Penelitian
Langkah-langkah yang dilakukan dalam pengerjaan tugas akhir ini yaitu : 1) Pengumpulan bahan-bahan referensi berupa buku dan jurnal ilmiah yang membahas mengenai image processing dengan MATLAB, lengan robot, pemrograman dengan code vision AVR, ATmega32, serta buku-buku pendukung lainnya. 2) Perancangan hardware dan software Tahap ini merupakan perancangan desain lengan robot beserta skema-skema rangkaian pendukung dan pembuatan flowchart untuk memprogram Atmega32 dan MATLAB. 3) Pembuatan hardware dan software. Tahapan ini berisi tentang pembuatan alat sesuai dengan desain lengan robot yang telah dirancang beserta program-program yang mengacu pada flowchart yang telah dibuat pada perancangan. 4) Proses pengambilan data. Teknik pengambilan data dilakukan dengan mencari data pada masing-masing benda, melihat tanggapan sistem dalam mendeteksi benda, sudut motor servo pada lengan robot, dan keakuratan lengan robot saat memisahkan benda. 5) Analisa dan penyimpulan hasil percobaan. Analisa dan penyimpulan hasil percobaan dapat dilakukan dengan melihat persentase error alat saat mendeteksi benda, dan tingkat keberhasilan lengan robot saat memisahkan benda.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 1.5.
4
Sistematika Penulisan
Sistematika penulisan tugas akhir ini adalah sebagai berikut :
BAB I: PENDAHULUAN Bab ini berisi latar belakang masalah, tujuan dan manfaat, batasan masalah, metodologi penelitian dan sistematika penulisan.
BAB II : DASAR TEORI Bab ini berisi teori-teori yang mendukung kerja sistem dan teori yang digunakan dalam perancangan lengan robot.
BAB III : PERANCANGAN PENELITIAN Bab ini berisi penjelasan alur perancangan lengan robot serta flow chart program pendukung.
BAB IV : HASIL PENGAMATAN DAN PEMBAHASAN Bab ini berisi pengamatan dan pembahasan data yang diperoleh, berupa data tingkat keberhasilan sistem mendeteksi benda, data motor servo dan tingkat keberhasilan keseluruhan sistem lengan robot.
BAB V : KESIMPULAN DAN SARAN Bab ini berisi ringkasan hasil penelitian yang telah dilakukan dan usulan yang berupa gagasan-gagasan untuk perbaikan atau pengembangan terhadap penelitian yang telah dilakukan.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB II DASAR TEORI Pada bab ini akan dibahas mengenai landasan-landasan teori yang digunakan dalam pembuatan tugas akhir “Aplikasi Pengenalan Objek Untuk Lengan Robot Pemisah Benda Bedasarkan Bentuk Benda”.
2.1. Lengan Robot Lengan robot atau biasa disebut robot manipulator adalah gabungan dari beberapa segmen dan joint yang secara umum dibagi menjadi tiga bagian yaitu arm, wrist, dan gripper. Konfigurasi robot biasanya digunakan untuk mengklasifikasikan robot-robot idustri. Konfigurasi robot mengarah pada bentuk geometri dari manipulator robot, yaitu informasi hubungan dari setiap joint pada manipulator [1]. Sistem lengan robot memiliki empat komponen dasar, yaitu: manipulator, end effector, aktuator, dan kontroler.
a. Manipulator Manipulator pada robot lengan memiliki tiga bagian, yaitu bagian dasar (base), bagian lengan (arm), dan bagian pergelangan (wrist). Bagian-bagian manipulator pada lengan robot dapat dilihat pada gambar 2.1.
Pergelangan (wrist) Lengan (arm)
Dasar (base)
Gambar 2.1. Manipulator Pada Lengan Robot Bagian dasar (base) manipulator bisa secara paten terpasang pada dasar area kerja ataupun terpasang pada rel. Bagian lengan (arm) berfungsi untuk memposisikan end-
5
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
6
effector, dan bagian pergelangan (wrist) berfungsi untuk mengatur orientasi dari end effector. Bagian ujung pada robot lengan terpasang end effector atau yang sering disebut dengan gripper yang berfungsi sebagai alat mencengkram pada lengan robot.
b. End Effector End effector dapat ditemukan hampir di semua aplikasi robot, walaupun keberadaannya bukan merupakan komponen dasar dari sistem robot. End effector berfungsi sebagai bagian terakhir yang menghubungkan antara manipulator dengan objek. Sebagai contoh efektor dapat berupa peralatan las, penyemprot cat ataupun hanya berupa pencekam objek[2].
Gambar 2.2. Contoh Gripper [2]
c. Kontroler Kontroler merupakan otak dari sistem robot sehingga keberadaannya sangat penting. Kontroler menyimpan informasi yang berkaitan dengan data-data robot, dalam hal ini data gerakan robot yang telah diprogram sebelumnya. Kontroler berfungsi untuk mengontrol pergerakan dari manipulator. Kontroler sendiri diatur oleh sebuah informasi atau program yang diisikan dengan menggunakan bahasa pemrograman tertentu. Informasi tersebut kemudian disimpan didalam memori. Data dalam memori dapat di keluarkan atau di edit sesuai dengan yang dibutuhkan.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
7
2.2. Torsi / Momen Gaya Momen Gaya (Torsi (τ)) adalah kemampuan gaya F memutar/merotasi benda terhadap poros diam. Sehingga semakin besar torsi (τ) maka gaya F memutar benda pun semakin besar [4]. Rumus : τ = F r sin ϴ
(2.1)
keterangan : τ = Torsi (N-m) r = Jarak dari titik pangakal gaya sampai sumbu putar F = Gaya (N), F = m x g ϴ = Derajat sumbu putar
2.3. Motor Servo Motor servo merupakan motor DC yang seudah dilengkapi dengan sistem kontrol didalamnya. Pada aplikasinya, motor servo sering digunakan sebagai kontrol loop tertutup, sehingga dapat menangani perubahan posisi secara tepat dan akurat [1].
Gambar 2.3. Model Fisik Motor Servo [5] Bentuk fisik motor servo dapat dilihat pada gambar 2.3. sistem pengkabelan motor servo terdiri dari tiga bagian, yaitu Vcc, Gnd, dan Kontrol (PWM). Penggunaan PWM pada motor servo berbeda dengan penggunaan PWM pada motor DC. Pada motor servo, pemberian nilai PWM akan membuat motor servo bergerak pada posisi tertentu lalu berhenti (kontrol posisi) [1].
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
8
Motor servo terdiri dari dua macam, yaitu motor servo standar dan motor servo continuous. Motor servo standar yaitu motor servo yang hanya bergerak mulai dari 0o sampai dengan 180o, sedangkan motor servo continuous merupakan motor servo yang dapat berputar 360o sehingga memungkinka untuk bergerak rotasi seperti pada motor DC pada umumnya.
Gambar 2.4. Cara Pengontrolan Motor Servo [5]
Prinsip utama pengontrolan motor servo yaitu dengan memberikan nilai PWM pada kontrolnya. Perubahan duty cycle akan menentukan perubahan posisi dari motor servo. Motor servo memiliki frekuensi sebesar 50 Hz sehingga pulsa yang dihasilkan yaitu setiap 20 ms. Lebar pulsa akan menentukan posisi motor servo yang dikehendaki seperti contoh pada gambar 2.4 yaitu jika ingin menggerakan servo pada sudut 180o, maka lebar pulsa yang diperlukan yaitu 1ms. Artinya yaitu dengan memberikan pulsa high selama 1ms dan kemudian diberikan pulsa low selama 19ms[1].
2.4. Mikrokontroler AVR ATmega32 AVR (Alf and Vegard’sRiscProcessor) merupakan seri mikrokontroler CMOS 8-bit yang diproduksi oleh Atmel berbasis arsitektur RISC (Reduced Instruction Set Computer). Chip AVR yang digunakan untuk tugas akhir ini adalah ATmega32. Hampir semua instruksi dieksekusi dalam satu siklus clock dan mempunyai 32 register general-purpose, timer/counter fleksibel dengan mode compare, interupsi internal dan eksternal, serial UART, programmable Watchdog Timer, dan power saving mode. AVR juga mempunyai ADC, PWM internal dan In-System Programmable Flash on-chip yang mengijinkan memori program untuk diprogram ulang [6].
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
9
2.4.1. Arsitektur AVR ATmega32 Mikrokontroler ATmega32 memiliki arsitektur sebagai berikut : a. Saluran IO sebanyak 32 buah, yaitu Port A, Port B, Port C dan Port D b. ADC 10 bit sebanyak 8 Channel c. Tiga buah timer/counter yaitu Timer 0, Timer 1, dan Timer 2 d. Watchdog Timer dengan osilator internal e. SRAM sebanyak 512 byte f. Memori Flash sebesar 32 kb g. Sumber Interupsi internal dan eksternal h. Port SPI (Serial Pheriperal Interface) i. EEPROM on board sebanyak 512 byte j. Komparator analog k. Port USART (Universal Shynchronous Ashynchronous Receiver Transmitter)
2.4.2. Deskripsi Mikrokontroler ATmega32 Konfigurasi Pin Mikrokontroller ATmega32 dengan kemasan 40 pin DIP (dual inline package) dapat dilihat pada Gambar 2.5. Untuk memaksimalkan performa dan paralelisme, AVR menggunakan arsitektur Harvard (dengan memori dan bus terpisah untuk program dan data). Ketika sebuah instruksi sedang dikerjakan maka instruksi berikutnya diambil dari memori program [6].
Gambar 2.5. Konfigurasi Pin Mikrokontroler ATmega32 [6]
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
10
Mikrokontroler ATmega32 memiliki konfigurasi Pin sebagai berikut: a. VCC (power supply) b. GND (ground) c. Port A (PA7..PA0) Port A berfungsi sebagai input analog pada ADC (analog digital converter). Port A juga berfungsi sebagai suatu Port I/O 8-bit dua arah. d. Port B (PB7..PB0) Port B adalah suatu Port I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih untuk beberapa bit). e. Port C (PC7..PC0) Port C adalah suatu Port I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih untuk beberapa bit). f. Port D (PD7..PD0) Port D adalah suatu Port I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih untuk beberapa bit). g. RESET (Reset input) h.
XTAL1 (Input Oscillator)
i. XTAL2 (Output Oscillator) j. AVCC adalah pin penyedia tegangan untuk Port A dan ADC. k. AREF adalah pin referensi analog untuk ADC. Port A berfungsi sebagai input analog pada A/D Konverter (ADC) dan port I/O 8bit dua arah. Port B, Port C, Port D adalah suatu port I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih untuk beberapa bit). Pada rangkaian reset, waktu pengosongan kapasitor dapat dihitung dengan persamaan 2.9 [7]. T=RxC
(2.9)
2.4.3. Organisasi Memori AVR ATmega32 Arsitektur AVR mempunyai dua ruang memori utama, yaitu ruang memori data dan memori program. ATmega32 juga memiliki fitur EEPROM Memori untuk penyimpanan data [6].
Memori Program Kode program disimpan dalam flash memory, yaitu memori jenis non-volatile yang tidak akan hilang datanya meskipun catu daya dimatikan [7]. Dalam ATmega32 terdapat 8Kbyte On-Chip di dalam sistem Memory Flash Reprogrammable untuk penyimpanan program. Untuk keamanan perangkat lunak, flash memori dibagi menjadi dua bagian, yaitu boot program dan bagian aplikasi program [6].
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
11
Memori Data Memori data adalah memori RAM (Random Access Memory) yang digunakan untuk keperluan program. Memori data terbagi menjadi empat bagian yaitu 32 General Purphose Register adalah register khusus yang bertugas untuk membantu eksekusi program oleh ALU (Arithmatich Logic Unit). Dalam istilah processor komputer sehari-hari GPR dikenal sebagai “chace memory”. I/O register dan Aditional I/O register adalah register yang difungsikan khusus untuk mengendalikan berbagai pheripheral dalam mikrokontroler seperti pin, port, timer/counter [6].
2.4.4. Interupsi Interupsi adalah suatu kondisi dimana mikrokontroler akan berhenti sementara dari program utama untuk melayani instruksi-instruksi pada interupsi kemudian kembali mengerjakan instruksi program utama setelah instruksi-instruksi pada interupsi selesai dikerjakan. Table 2.1. Hubungan PIN dan Interupsi [6] Jenis interupt PIN pada ATmega32 INT0
PORTD.2
INT1
PORTD.3
INT2
PORTB.2
ATmega32 menyediakan tiga interupsi eksternal yaitu, INT0, INT1, dan INT2. Masing-masing interupsi tersebut terhubung dengan pin ATmega32 seperti ditunjukan pada Tabel 2.1. Interupsi eksternal bisa dilakukan dengan memberikan logika 0 atau perubahan logika (rissing edge dan falling edge) pada pin interupsi yang bersangkutan [6].
2.4.5. Timer/Counter Timer/Counter pada mikrokontroler AVR dapat digunakan untuk melakukan pencacahan waktu seperti pada jam digital maupun untuk menghasilkan sinyal PWM (Pulse Width Modulation) yakni sinyal kotak dengan frekuensi dan duty cycle yang nilainya bisa diatur. ATmega32 memiliki tiga unit Timer/Counter yaitu Timer/Counter 0 (8 bit), Timer/Counter 1 (16 bit), dan Timer/Counter 2 (8 bit) [7].
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
12
TIMER/COUNTER 0 Fitur-fitur yang dimiliki: 1. Satu buah unit Compare Counter (Unit ini akan meng-count dan meng-compare) 2. Clear timer pada saat compare match (Auto reload) 3. Phase Correct PWM yang bebas glitch 4. Frequency generator 5. External event counter 6. Prescaler clock hingga 10 bit 7. Membangkitkan interupsi saat timer overflow dan atau compare match Perhitungan overflow interrupt sebagai pembangkit PWM ditunjukan pada persamaan 2.2, 2.3, dan 2.4 berikut [6]. (2.2) (2.3) (2.4) Keterangan : f
= frekuensi yang digunakan untuk eksekusi program
T
= periode
N
= prescaller yang digunakan
OCR = nilai cacahan pulsa Pulse = lebar pulsa Berikut merupakan mode-mode operasi timer [7]: a)
Mode normal, timer digunakan untuk menghitung saja, membuat delay, dan mengitung selang waktu.
Gambar 2.6. Mode Phase Correct PWM [6]
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
13
b) Mode phase correct PWM (PCP), digunakan untuk menghasilkan sinyal PWM dimana nilai register counter (TCNT0) yang mencacah naik dan turun secara terus menerus akan selalu dibandingakan dengan register pembanding OCR0. Hasil perbandingan register TCNT0 dan OCR0 digunakan untuk membangkitkan sinyal PWM yang dikeluarkan pada OC0 seperti ditunjukan Gambar 2.6. c)
CTC (Clear timer on compare match), register counter (TCNT0) akan mencacah naik kemudian di-reset atau kembali menjadi 0x00 pada saat nilai TCNT0 sama dengan OCR0. Sebelumnya OCR diset dulu, karena timer 0 dan 2 maksimumnya 255, maka range OCR 0-255.
d) Fast PWM, mode ini hampir sama dengan mode phase correct PWM, hanya perbedaannya adalah register counter TCNT0 mencacah naik saja dan tidak pernah mencacah turun seperti terlihat pada Gambar 2.7.
Gambar 2.7. Mode Fast PWM [6]
2.4.6. Komunikasi Serial USART Komunikasi data adalah perpindahan data antara dua atau lebih peranti, baik yang berjauhan maupun yang berdekatan. Perpindahan data antara dua atau lebih peranti dapat dilaksanakan secara paralel atau seri. Komunikasi seri dapat dibedakan menjadi dua macam, yaitu komunikasi dara seri sinkron dan komunikasi data asinkron. Dikatakan sinkron jika sisi pengirim dan sisi penerima ditabuh (clocked) oleh penabuh (clock) yang sama, satu sumber penabuh, data dikirim beserta penabuh. Dikatakan asinkron jika sisi pengirim dan sisi penerima ditabuh oleh penabuh yang terpisah dengan frekuensi yang hampir sama, data dikirim disertai informasi sinkronisasi [6].
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
14
Pada proses inisialisasi ini setiap perangkat yang terhubung harus memiliki baudrate yang sama. Beberapa fasilitas yang disediakan USART AVR adalah sebagai berikut: a) Operasi full duplex (mempunyai register receive dan transmit yang terpisah) b) Mendukung kecepatan multiprosesor c) Mode kecepatan berorde Mbps d) Operasi asinkron atau sinkron e) Operasi master atau slave clock sinkron f) Dapat menghasilkan baud-rate (laju data) dengan resolusi tinggi g) Modus komunikasi kecepatan ganda pada asinkron
Inisialisasi USART Pada mikrokontroler AVR untuk mengaktifkan dan mengeset komunikasi USART dilakukan dengan cara mengaktifkan register-register yang digunakan untuk komunikasi USART. Register-register yang digunakan untuk komunikasi USART antara lain:
USART I/O Data Register (UDR) UDR merupakan register 8 bit yang terdiri dari dua buah dengan alamat yang sama, yang digunakan sebagai tempat untuk menyimpan data yang akan dikirimkan (TXB) atau tempat data diterima (RXB) sebelum data tersebut dibaca [6].
Gambar 2.8. Register UDR [6]
USART Control and Status Register A (UCSRA)
Gambar 2.9. Register UCSRA [6]
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
15
Penjelasan bit penyusun UCSRA [6]: a)
RXC (USART Receive Complete) Bit ini akan set ketika data yang masuk ke dalam UDR belum dibaca dan akan berlogika nol ketika sudah dibaca. Flag ini dapat digunakan untuk membangkitkan interupsi RX jika diaktifkan dan akan berlogika nol secara otomatis bersamaan dengan eksekusi vektor interupsi yang bersangkutan.
b) TXC (USART Transmit Complete) Bit ini akan set ketika data yang dikirim telah keluar. Flag ini akan membangkitkan interupsi TX jika diaktifkan dan akan clear secara otomatis bersamaan dengan eksekusi vektor interupsi yang bersangkutan. c)
UDRE (USART Data Register Empty) Flag ini sebagai indikator isi UDR. Jika bernilai satu maka UDR dalam keadaan kosong dan siap menerima data berikutnya, jika flag bernilai nol berarti sebaliknya.
d) FE (Frame Error) Bit ini sebagai indikator ketika data yang diterima error, misalnya ketika stop bit pertama data dibaca berlogika nol maka bit FE bernilai satu. Bit akan bernilai 0 ketika stop bit data yang diterima berlogika nol. e)
DOR (Data OverRun) Bit ini berfungsi untuk mendeteksi jika ada data yang tumpang tindih. Flag akan bernilai satu ketika terjadi tumpang tindih data.
f)
PE (Parity Error) Bit yang menentukan apakah terjadi kesalahan paritas. Bit ini berfungsi jika ada kesalahan paritas. Bit akan berlogika satu ketika terjadi bit parity error apabila bit paritas digunakan.
g) U2X (Double the USART Transmission Speed) Bit yang berfungsi untuk menggandakan laju data manjadi dua kalinya. Hanya berlaku untuk modus asinkron, untuk mode sinkron bit ini diset nol. h) MPCM (Multi Processor Communication Mode) Bit untuk mengaktifkan modus multi prosesor, dimana ketika data yang diterima oleh USART tidak mengandung informasi alamat akan diabaikan.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
16
USART Control and Status Register B (UCSRB)
Gambar 2.10. Register UCSRB [6]
Penjelasan bit penyusun UCSRB [6]: a)
RXCIE (RX Complete Interrupt Enable) Bit pengatur aktivasi interupsi penerimaan data serial, akan berlogika satu jika diaktifkan dan berlogika nol jika tidak diaktifkan.
b) TXCIE (TX Complete Interrupt Enable) Bit pengatur aktivasi pengiriman data serial, akan berlogika satu jika diaktifkan dan berlogika nol jika tidak diaktifkan. c)
UDRIE (USART Data Register Empty Interrupt Enable) Bit ini berfungsi untuk mengaktifkan interupsi data register kosong, berlogika satu jika diaktifkan dan sebaliknya.
d) RXEN (Receiver Enable) Bit ini berfungsi untuk mengaktifkan pin RX saluran USART. Ketika pin diaktifkan maka pin tersebut tidak dapat digunakan untuk fungsi pin I/O karena sudah digunakan sebagai saluran penerima USART. e)
TXEN (Transmitter Enable) Bit ini berfungsi untuk mengaktifkan pin TX saluran USART. Ketika pin diaktifkan maka pin tersebut tidak dapat digunakan untuk fungsi pin I/O karena sudah digunakan sebagai saluran pengirim USART.
f)
UCSZ2 (Character Size) Bit ini bersama dengan UCSZ1 dan UCSZ0 dalam register UCSRC digunakan untuk memilih tipe lebar data bit yang digunakan.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
17
Tabel 2.2. Penentuan Ukuran Karakter [6] UCSZ[2..0] 0 1 10 11 100-110 111
Ukuran Karakter dalam bit 5 6 7 8 Tidak dipergunakan 9
g) RXB8 (Receive Data Bit 8) Bit ini digunakan sebagai bit ke-8 ketika menggunakan format data 9-10 bit, dan bit ini harus dibaca dahulu sebelum membaca UDR. h) TXB8 (Transmit Data Bit 8) Bit ini digunakan sebagai bit ke-8 ketika menggunakan format data 9-10 bit, dan bit ini harus ditulis dahulu sebelum membaca UDR.
USART Control and Status Register C (UCSRC)
Gambar 2.11. Register UCSRC [6]
Penjelasan bit penyusun UCSRC [6]: a)
URSEL (Register Select) : Bit ini berfungsi untuk memilih register UCSRC dengan UBBRH, dimana untuk menulis atau membaca register UCSRC maka bit harus berlogika satu.
b) UMSEL (USART Mode Select) Bit pemilih mode komunikasi serial antara sinkron dan asinkron. c)
UPM[1…0] (Parity Mode) Bit ini berfungsi untuk memilih mode paritas bit yang akan digunakan. Transmittter USART akan membuat paritas yang akan digunakan secara otomatis.
d) USBS (Stop Bit Select) Bit yang berfungsi untuk memilih jumlah stop bit yang akan digunakan.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI e)
18
UCSZ1 dan UCSZ0 Merupakan bit pengatur jumlah karakter serial Bit yang berfungsi untuk memilih lebar data yang digunakan dikombinasikan dengan bit UCSZ2 dalam register UCSRB.
f)
UCPOL (Clock Parity) Bit yang berguna hanya untuk modus sinkron. Bit in berhubungan dengan perubahan data keluaran dan sampel masukkan, dan clock sinkron (XCK).
2.5. LCD 16x2 LCD merupakan salah satu perangkat penampil yang sekarang ini banyak digunakan. Kontruksi LCD yaitu memanfaatkan silikon atau galium dalam bentuk kristal cair sebagai pemendar cahaya. Kelebihan LCD 16x2 yaitu [8] : 1. Dapat menampilkan karakter ASCII, sehingga dapat memudahkan untuk membuat program tampilan. 2. Mudah dihubungkan dengan port I/O karena hanya menggunakan delapan bit data dan tiga bit kontrol. 3. Ukuran modul yang proporsional. 4. Daya yang digunaka relatif kecil. Operasi dasar pada LCD 16x2 terdiri dari empat, yaitu instruksi mengakses proses internal, instruksi menulis data, instruksi membaca kondisi sibuk, dan instruksi membaca data [8]. Operasi dasar LCD 16x2 dapat dilihat pada tabel 2.3.
Gambar 2.12. Contoh LCD 16x2
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Tabel 2.3. Operasi Dasar LCD 16x2 [8] Operasi
RS
R/W
0
0
Input instruksi ke LCD
0
1
Membaca status flag (DB7) dan alamat counter (DB0-DB6)
1
0
Menulis data
1
1
Membaca data
Tabel 2.4. Konfigurasi Pin LCD 16x2 [8] Pin No. Keterangan Konfigurasi hubung 1
GND
Ground
2
VCC
Tegangan +5Vdc
3
VEE
Ground
4
RS
Kendali RS
5
RW
Ground
6
E
Kendali E/Enable
7
D0
Bit 0
8
D1
Bit 1
9
D2
Bit 2
10
D3
Bit 3
11
D4
Bit 4
12
D5
Bit 5
13
D6
Bit 6
14
D7
Bit 7
15
A
Anoda (+5Vdc)
16
K
Katoda (Ground)
19
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
20
Tabel 2.5. Konfigurasi Setting LCD 16x2 [8] Pin Bilangan biner Keterangan 0
Inisialisasi
1
Data
0
Tulis LCD/W (Write)
1
Baca LCD/R (Read)
0
Pintu data terbuka
1
Pintu data tertutup
RS
RW
E
2.6. Regulator IC 78xx dan Transistor Penguat Arus Pengatur tegangan (voltage regulator) berfungsi menyediakan suatu tegangan keluaran dc tetap yang tidak dipengaruhi oleh perubahan tegangan masukan. Salah satu tipe regulator tegangan tetap adalah 78xx. Regulator tegangan tipe 78xx adalah salah satu regulator tegangan tetap dengan tiga terminal, yaitu terminal Vin, GND dan Vout. Regulator tegangan 78xx dirancang sebagai regulator tegangan tetap, meskipun demikian keluaran dari regulator ini dapat diatur tegangan dan arusnya melalui tambahan komponen eksternal. Spesifikasi ic regulator seri 78xx dapat dilihat pada tabel 2.6. Tabel 2.6. Karakteristik Regulator Tegangan ic 78xx [9] VIN (Volt) Type
VOUT (Volt)
7805 7806 7808 7810 7812 7815 7818 7824
5 6 8 10 12 15 18 24
Min
Maks
7,3 8,3 10,5 12,5 14,6 17,7 21 27,1
20 21 23 25 27 30 33 38
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
21
Gambar 2.13. Rangkaian Umum Regulator 78xx [9] Nilai komponen c1 dan c2 difungsikan sebagai filter capasitor yang bertujuan untuk menghilangkan tegangan ripple agar tegangan keluaran menjadi lebih stabil. Untuk mendapatkan nilai capasitor yang sesuai, dapat mengacu pada persamaan 2.5 dan 2.6 [9]. (
)
(2.5)
√ (
)
(2.6)
Komponen eksternal yang digunakan yaitu transistor 2N3055 karena kemampuan arus maksimal adalah 15 A [10]. Untuk gambar rangkaian lengkap dengan ic regulator dapat ditunjukan gambar 2.14.
Gambar 2.14. Rangkaian Catu Daya Dengan Penguat [10] Dari gambar 2.14, maka diperleh persamaan-persamaan sebagai berikut [10] : VB = Vreg + VD
(2.7)
Tegangan keluaran rangkaian menjadi, Vo = Vreg – VBE
(2.8)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
22
Jika VD VBE, maka Vo = Vreg
(2.9)
Tegangan diantara kolektor dan emittor transistor 2N3055 adalah, VCE = VIN – VR1
(2.10)
Disipasi daya transistor NPN 2N3055 adalah, PD
= VCE x IC
(2.11)
Untuk nilai penguatan arus diperoleh dengan persamaan dibawah ini [9] : Ic = β IB
(2.12)
Ie = (β+1) IB
(2.13)
2.7. Photodioda Photodioda adalah dioda yang bekerja berdasarkan intensitas cahaya, jika photodioda terkena cahaya maka photodioda bekerja seperti dioda pada umumnya, tetapi jika tidak mendapat cahaya maka photodioda akan berperan seperti resistor dengan nilai tahanan yang besar sehingga arus listrik tidak dapat mengalir. Photodioda merupakan sensor cahaya semikonduktor yang dapat mengubah besaran cahaya menjadi besaran listrik. Photodioda merupakan sebuah dioda dengan sambungan p-n yang dipengaruhi cahaya dalam kerjanya. Cahaya yang dapat dideteksi oleh photodioda ini mulai dari cahaya infra merah, cahaya tampak, ultra ungu sampai dengan sinar-X. Karena photodioda terbuat dari semikonduktor p-n junction maka cahaya yang diserap oleh photodioda akan mengakibatkan terjadinya pergeseran foton yang akan menghasilkan pasangan electron-hole dikedua sisi dari sambungan. Ketika elektronelektron yang dihasilkan itu masuk ke pita konduksi maka elektron-elektron itu akan mengalir ke arah positif sumber tegangan sedangkan hole yang dihasilkan mengalir ke arah negatif sumber tegangan sehingga arus akan mengalir di dalam rangkaian. Besarnya pasangan elektron ataupun hole yang dihasilkan tergantung dari besarnya intensitas cahaya yang diserap oleh photodioda [9]. Photodioda digunakan sebagai penangkap gelombang cahaya yang dipancarkan oleh infrared. Besarnya tegangan atau arus listrik yang dihasilkan oleh photodioda tergantung besar kecilnya radiasi yang dipancarkan oleh infrared.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
23
Gambar 2.15. Simbol dan Bentuk Photodioda
Gambar 2.16. Respon Relatif Spektral Untuk Si, Ge, dan Selenium Dibandingkan Dengan Mata Manusia.[9]
Gambar 2.17. Hubungan Iλ Dengan Fc Pada Photodioda[9]
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
24
Grafik pada gambar 2.17 menunjukan bahwa arus maksimal pada sensor photodioda adalah sebesar 800 µA, sehingga untuk penentuan nilai hambatan agar arus sensor photodioda tidak terlalu besar yaitu [9]: (2.14) Sehingga nilai hambatan untuk sensor photodioda dengan asumsi bahwa Vcc = 5 Volt dapat dilihat pada tabel 2.7. Tabel 2.7. Hubungan Arus Dengan Hambatan ARUS (µA) 200 400 600 800
HAMBATAN (KΩ) 25 12,5 8,33 6,25
Rangkaian umum sensor photodioda dapat ditunjukan pada gambar 2.18.
Gambar 2.18. Rangkaian Sensor Photodioda
Gambar 2.19. Aplikasi Sensor Photodioda [9]
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
25
2.8. Infrared Infrared merupakan suatu komponen elektronika yang merupakan sumber cahaya dengan panjang gelombang 750nm-1000nm dan arus maksimal sebesar 100 mA [8]. Aplikasi infrared biasa dijumpai pada modul sensor yang berhubungan dengan cahay seperti photodioda dan photo transistor. Menurut gambar 2.19, infrared merupakan sumber cahaya yang paling baik untuk sumber sensor cahaya. Penentuan nilai hambatan untuk infrared dengan asumsi Vcc = 5 Volt yaitu : sehingga, R=
= 50 Ω
Agar aman, maka digunakan resistor sebesar 100 Ω yang bertujuan untuk membuat infra red tidak berlebihan arus.
2.9. Transistor Sebagai Saklar Keluaran dari op-amp memiliki arus yang kecil, oleh karena itu biasanya dipergunakan suatu penguat untuk menguatkan arus keluaran dengan menggunakan transistor atau ic penguat. Contoh rangkaia dapat dilihat pada gambar 2.20 [11].
Gambar 2.20. Contoh Rangkaian Transistor Sebagai Saklar [11]
Transistor dapat digunakan sebagai saklar elektronika dengan membuat transistor tersebut berada dalam kondisi cut-off (saklar terbuka, arus tidak mengalir) atau saturasi (saklar tertutup, sehingga arus mengalir). Dengan menggunakan persamaan dibawah, maka
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
26
kita dapat menghitung nilai masing-masing komponen agar transistor tersebut dapat mendrive komponen lain yang membutuhkan arus yang besar [11]. IB(saturasi) = IC(saturasi)/βDC
(2.15)
Untuk memastikan bahwa transistor sudah saturasi, diperlukan setidaknya arus overdrive 4 sampai 10 kali dari IB(saturasi), sehingga [11]: IB = (di isi angka 4 sampai 10) x IB(saturasi)
(2.16)
Dengan diperolehnya IB, maka hambatan basis dapat dihitung dengan persamaan [11]: RB = (Vin-VBE)/IB
(2.17)
2.10. Relay Relai
merupakan
suatu
komponen
elektronika
yang
berfungsi
untuk
menghubungkan atau memutuskan aliran arus listrik yang dikontrol dengan memberikan tegangan dan arus tertentu pada koilnya. Ada dua macam relay berdasarkan tegangan untuk menggerakan koilnya yaitu AC dan DC [8]. Pada dasarnya relay adalah sebuah kumparan yang dialiri arus listrik, sehingga kumparan mempunyai sifat seperti magnet. Magnet sementara tersebut digunakan untuk menggerakan suatu sistem saklar yang terbuat dari logam sehingga pada saat relay dialiri arus listrik maka kumparan akan terjadi kemagnetan dan menarik logam tersebut. Saat arus listrik diputus, maka logam akan kembali pada posisi semula [8].
Gambar 2.21. Bentuk Fisik Relay [8]
2.11. Webcam Web camera atau biasa disingkat webcam adalah kamera video digital kecil yang dihubungkan ke komputer melalui port USB atau serial. Fungsi webcam yang paling populer saat ini yaitu untuk melakukan video conference melalui internet. Dalam perkembangan selanjutnya, webcam tidak hanya difungsikan sebagai video conference tetapi juga untuk home monitoring atau memantau rumah selama 24 jam [12]. Contoh webcam ditunjukan gambar 2.22 yaitu webcam Logitech c270h.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
27
Gambar 2.22. Contoh Webcam [13]
2.12. Benda Tiga Dimensi Benda 3 dimensi merupakan benda yang memiliki ruang atau volume sehingga benda akan tampak lebih nyata. Benda 3 dimensi memiliki ukuran panjang, lebar, dan tinggi. Contoh benda 3 dimensi dapat dilihat pada gambar 2.23.
Gambar 2.23. Contoh Benda Tiga Dimensi [14]
2.13. Pengolahan Citra Digital Pengolahan citra atau Image Processing adalah suatu sistem dimana proses dilakukan dengan masukan (input) berupa citra (image) dan hasilnya (output) juga berupa citra (image). Pada awalnya pengolahan citra ini dilakukan untuk memperbaiki kualitas citra, namun dengan berkembangnya dunia komputasi yang ditandai dengan semakin meningkatnya kapasitas dan kecepatan proses komputer, serta munculnya ilmu-ilmu
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
28
komputer yang memungkinkan manusia dapat mengambil informasi dari suatu citra, maka image processing tidak dapat dilepaskan dengan bidang computer vision [2]. Sebuah citra dapat didefinisikan sebagai fungsi dua dimensi f(x,y), dimana x dan y adalah koordinat spasial dan amplitude dari f. Citra digital terdiri dari sejumlah elemen tertentu, setiap elemen mempunyai lokasi dan nilai tertentu. Elemen–elemen ini disebut picture element, image element, pels dan pixels. Sumber noise pada citra digital bisa terjadi sejak pengambilan atau transmisi citra. Kinerja dari sensor citra atau kamera dipengaruhi oleh banyak faktor seperti kondisi lingkungan selama pengambilan citra dengan kamera webcam, level pencahayaan dan suhu sensor adalah faktor utama yang mempengaruhi tingkat noise pada citra yang dihasilkan [15].
Gambar 2.24. Contoh Koordinat Citra Digital
2.14. Pemrosesan Citra 2.14.1. Citra Grayscale Proses awal yang banyak dilakukan dalam image processing adalah mengubah citra berwarna (citra RGB) menjadi citra grayscale, hal ini bertujuan untuk menyederhanakan model citra tersebut karena citra berwarna terdiri dari tiga layer matrik yaitu Red- layer, Green-layer dan Blue-layer. Sehingga untuk melakukan proses-proses selanjutnya tetap harus memperhatikan tiga layer di tersebut. Bila setiap proses perhitungan dilakukan menggunakan tiga layer, berarti dilakukan tiga perhitungan yang sama, sehingga konsep itu diubah dengan mengubah tiga layer di atas menjadi satu layer matrik grayscale dan hasilnya adalah citra grayscale. Dalam citra ini tidak ada lagi warna, yang ada adalah derajat keabuan yang memiliki nilai 0-255.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
29
Citra grayscale merupakan citra digital yang hanya memiliki suatu nilai kanal pada setiap piksel. Warna yang dimiliki adalah keabuan, hitam dan putih. Citra hitam putih mempunyai nilai kuantisasi derajat keabuan sampai tingkatan ke 256 artinya mempunyai skala abu dari 0 sampai 255 atau selang [0 255]. Citra ini membutuhkan 1 byte (8 bit) untuk representasi setiap pikselnya (256 =28) [3]. Gambar 2.25 menunjukkan contoh citra skala keabuan [15].
Gambar 2.25. Citra Skala Keabuan [16]
2.14.2. Cropping Cropping citra merupakan salah satu langkah dalam pengolahan citra yang dilakukan untuk memotong satu bagian dari citra tertentu untuk memperoleh bagian yang diinginkan untuk diolah. Hal ini dilakukan untuk mendapatkan data yang tepat sehingga memudahkan dalam proses pengolahan data.
2.14.3. Citra Biner Citra biner adalah citra digital yang hanya memiliki dua kemungkinan nilai piksel yaitu hitam dan putih. Citra biner juga bisa disebut sebagai citra B&W (black and white) atau citra monokrom. Hanya dibutuhkan 1 bit untuk mewakili nilai setiap piksel dari citra biner. [15] Citra biner sering kali muncul sebagai hasil dari proses pengolahan seperti segmentasi, pengambangan, morfologi, ataupun dithering. Contoh citra biner dapat dilihat pada gambar 2.26.
Gambar 2.26. Contoh Citra Biner
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
30
2.14.4. Resizing Rezising citra adalah mengubah besarnya ukuran citra dalam piksel. Tampilan citra tidak ada yang berubah tetapi hanya ukuran pixel dan matriksnya yang dirubah. Ukuan resizing menentukan kualitas gambar yang akan diproses.
2.15. Metode Pengenalan Benda Untuk dapat mengenali suatu citra atau gambar, maka diperlukan suatu metode yang digunakan untuk melihat perbedaan data atau nilai yang dimiliki oleh masing-masing citra atau gambar yang akan dikenali. Metode yang digunakan yaitu dengan melihat data nilai citra biner dari masing-masing bentuk benda. Langkah untuk mengenalinya yaitu dengan terlebih dahulu mengamati dan melihat nilai citra biner dari masing-masing citra yang akan dikenali. Setelah mendapatkan data yang diinginkan, maka dibuat sebuat range data yang merepresentasikan citra dari masingmasing benda yang akan dikenali. Gambar 2.27 akan menjelaskan penerapan citra biner saat pengenalan citra digital.
Gambar 2.27. Aplikasi Citra Biner Dari gambar 2.27 dapat diperhatikan bahwa huruf “Y” memiliki jumlah angka 0 sebanyak 10 buah. Angka 0 tersebut membentuk huruf “Y” sehingga dapat disimpulkan bahwa warna hitam merepresentasikan nilai 0 dan putih merepresentasikan nilai 1.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB III PERANCANGAN PENELITIAN Dalam bab III ini akan dibahas mengenai perancangan perangkat keras dan perancangan perangkat lunak. Pembahasan ini meliputi : a) Proses kerja dan mekanisme lengan robot b) Perancangan mekanik lengan robot c) Perancangan perangkat keras (hardware) d) Perancangan perangkat lunak (software)
3.1. Proses Kerja dan Mekanisme Lengan Robot Pada pembuatan tugas akhir ini, akan dibuat sebuah lengan robot yang dapat mengenali empat macam benda dan meletakan pada suatu tempat yang telah ditentukan. Komponen yang digunakan dalam pembuatan tugas akhir ini meliputi webcam untuk mendeteksi dan mengenali benda, aktuator berupa motor servo standar untuk menggerakan lengan robot, conveyor untuk membawa benda, regulator sebagai sumber tegangan, USB to TTL converter, dan rangkaian minimum system ATmega32. Cara kerja lengan robot yaitu mula-mula benda diletakan pada conveyor yang akan membawa benda mendekati webcam. Webcam akan mendeteksi benda, kemudian akan diproses oleh laptop melalui software matlab untuk mengenali bentuk benda. Setelah objek dikenali, maka laptop melalui MATLAB akan mengirimkan kode benda yang dikomunikasikan secara serial kepada minimum system ATmega32 menggunakan modul USB to TTL untuk menggerakan motor servo pada lengan robot. Lcd 16 x 2 digunakan sebagai penampil bentuk benda yang terdeteksi oleh webcam. Gambar 3.1 merupakan diagram blok sistem.
31
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
32
Gambar 3.1. Blok Diagram Sistem
3.2. Perancangan Mekanik Lengan Robot Pada tahap ini dilakukan perancangan mekanik dari robot tersebut, antara lain mendesain ukuran robot, penggunaan bahan dasar untuk lengan robot yaitu akrilik setebal 3mm. Pendesainan robot menggunakan software Google SketchUp. Lengan robot terdiri dari lima bagian utama yaitu poros, gripper, komponen 1, komponen 2, komponen 3. Gambar 3.2 menunjukan anatomi lengan robot secara keseluruhan. Berikut adalah gambar detail dari bagian-bagian lengan robot, yaitu: komponen 1 ditunjukan Gambar 3.3, komponen 2 ditunjukan Gambar 3.4, komponen 3 ditunjukan Gambar 3.5, gripper tampak atas ditunjukan Gambar 3.6.
Gambar 3.2. Anatomi Lengan Robot
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Gambar 3.3. Komponen 1
Gambar 3.4. Komponen 2
Gambar 3.5. Komponen 3
Gambar 3.6. Gripper Tampak Atas
33
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
34
Gambar 3.7. Peletakan Seluruh Komponen
3.3.
Perancangan Perangkat Keras (hardware) Ada beberapa komponen dalam perancangan subsistem perangkat keras lengan
robot pemisah benda, diantaranya yaitu : a) Minimum System ATmega32 + LCD 16x2 b) Motor servo c) Regulator ic 7805 + penguat arus d) Webcam Logitech seri C270h e) Sensor photodioda f) Benda
3.3.1. Minimum System ATmega32 + LCD 16x2 3.3.1.1. Minimum System ATmega32 Rangkaian minimum system berfungsi sebagai I/O untuk mengontrol atau mengendalikan sudut putar motor servo yang telah diprogram dalam mikrokontroler ATmega32 pada lengan robot serta sebagai pengolah data serial yang dikirimkan dari komputer melalui USB to TTL converter. Mikrokontroler membutuhkan minimum system yang terdiri dari rangkaian eksternal yaitu rangkaian osilator dan rangkaian reset.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
35
Untuk rangkaian osilator digunakan crystal dengan frekuensi sebesar 11,0592 MHz dan menggunakan kapasitor 22 pf pada pin XTAL1 dan XTAL2 di mikrokontroler. Rangkaian osilator ini berfungsi sebagai sumber clock bagi mikrokontroler. Pemberian kapasitor bertujuan untuk memperbaiki kestabilan frekuensi yang diberikan oleh osilator eksternal. Gambar 3.8 menunjukan rangkaian osilator.
Gambar 3.8. Rangkaian Osilator ATmega32 [6] Perancangan rangkaian reset bertujuan untuk memaksa proses kerja pada mikrokontroler dapat diulang dari awal. Saat tombol reset ditekan maka mikrokontroler mendapat input logika rendah, sehingga akan me-reset seluruh proses yang sedang dilakukan mikrokontroler. Gambar 3.9 adalah rangkaian reset untuk ATmega32.
Gambar 3.9. Rangkaian Reset ATmega32 [6] Pada gambar 3.9 terdapat resistor yang memiliki resistansi sebesar 4,7 KΩ yang difungsikan sebagai pull up. Resistor pull-up eksternal dapat digunakan untuk menjaga agar pin RESET tidak berlogika 0 secara tidak disengaja. Kapasitor 10nF digunakan untuk menghilangkan noise yang disusun seri dengan resistor. Rangkaian reset minimum system ATmega32 merupakan gabungan dari rangkaia push-button dan low-pass filter.
3.3.1.2. Rangkaian Konfigurasi LCD 16x2 Rangkaian LCD berfungsi untuk menampilkan nama benda yang terdeteksi oleh webcam agar user dapat melihat apakah webcam mendeteksi benda dengan benar. Rangkaian LCD dapat dilihat pada gambar 3.10. Penentuan konfigurasi kaki LCD menuju
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
36
mikrokontroler ditentukan dengan melihat pada software compiler CodeVisionAVR seperti pada Gambar 3.11.
Gambar 3.10. Skematik LCD 16x2
Gambar 3.11. Setting Port LCD
3.3.2. Perhitungan Torsi Motor Servo Untuk menghitung besar torsi pada masing-masing motor servo, digunaka rumus [4] :
Dengan : F = Gaya (N)
r = jari-jari link (m)
m = Masa benda (kg) 2
g = Grafitasi (m/s )
ϴ= sudut (derajat) τ = Torsi (kg-cm)
Gambar 3.12 merupakan gambar kontruksi lengan robot untuk menghitung besar torsi masing-masing motor servo. Tabel 3.1 merupakan tabel perhitungan torsi motor servo.
Gambar 3.12. Konstruksi Lengan Robot
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Tabel 3.1. Perhitungan Torsi Motor Servo TORSI Motor servo 1 (m = 190 gr) F=mxg = 0,190 x 9,8 = 1,862 N Ket : servo 1 bergerak 0o, 45o , 135o, dan 180o Ket: 1 N-m = 10.1971621298 Kg-cm
Sudut 0o (r = 370 mm)
Τ = 1,862 x 0,370 x sin(0) = 0 N-m = 0 kg-cm
Sudut 45o (r = 370 mm)
Τ = 1,862 x 0,370 x sin(45) = 0,4871 N-m = 4,967 kg-cm
Sudut 135o (r = 370 mm)
Τ = 1,862 x 0,370 x sin(135) = 0,4871 N-m = 4,967 kg-cm
Sudut 180o (r = 370 mm)
Τ = 1,862 x 0,370 x sin(180) = 0 N-m = 0 kg-cm Motor servo 2 (m = 130 gr) F=mxg = 0,130 x 9,8 = 1,274 N Ket : servo 2 bergerak 700 dan 110o
Sudut 70o (r = 370 mm)
Τ = 1,274 x 0,370 x sin(70) = 0,4429 N-m = 4.5168 kg-cm
Sudut 110o (r = 370 mm)
Τ = 1,274 x 0,370 x sin(110) = 0,443 N-m = 4.517 kg-cm
Motor servo 3 (m = 70 gr) F=mxg = 0,070 x 9,8
Sudut 90o (r = 230 mm)
Τ = 0,686 x 0,230 x sin(90) = 0,15778 N-m = 1.6089 kg-cm
= 0,686 N Ket : servo 3 bergerak 90o Motor servo 4 (m = 50 gr) F=mxg = 0,050 x 9,8 = 0,49 N Ket : servo 4 bergerak 0o dan 50o
Sudut 0o (r = 60 mm)
Τ = 0,49 x 0,060 x sin(0) = 0 N-m = 0 kg-cm
Sudut 50o (r = 60 mm)
Τ = 0,49 x 0,060 x sin(50) = 0,022 N-m = 0.224 kg-cm
37
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
38
3.3.3. Motor Servo Motor servo digunakan untuk menggerakan lengan robot. Motor servo yang digunakan yaitu Towerpro MG946R untuk servo 1, servo 2, dan servo 3 sebanyak tiga buah, dan Towerpro SG90 untuk servo 4 sebanyak satu buah. Alasan menggunakan servo Towerpro MG946R yaitu karena memiliki torsi yang kuat mencapai 12 kg-cm dan harganya tidak begitu mahal, sedangkan servo Towerpro SG90 digunakan karena pada bagian gripper tidak membutuhkan torsi yang besar yaitu berdasarkan perhitungan hanya 0,299 kg-cm sehingga servo Towerpro SG90 dapat digunakan untuk menggerakan gripper. Spesifikasi servo Towerpro MG946R dan spesifikasi servo Towerpro SG90 dapat dilihat pada lampiran. Rangkaian servo terdiri dari tiga port yaitu vcc, ground, dan data. Jalur data terhubung dengan port pada mikrokontroler sebagai jalur pengiriman pulsa PWM untuk mengaktifkan motor servo dan mengatur sudut putarnya. Gambar 3.13 merupakan rangkaian pin untuk motor servo.
Gambar 3.13. Rangkaian Pin Motor Servo Digunakan interrupt timer sebagai pembangkit PWM. Timer adalah sebuah counter (penghitung). Tugas timer hanya menghitung, timer selalu menyimpan hitungannya saat menghitung “satu, dua, tiga, …” hingga 255 (8 bit). Naiknya hitungan timer dan berapa lama jeda antar hitungan ini ditentukan dari siklus pencacah microcontroller, mode timer. Pada perancangan motor servo, timer diset agar menghitung sampai 255. Dan jika sudah mencapai 255, maka timer (overflow) akan memberikan sinyal, disinilah PWM bekerja dan mengintruksikan timer untuk menghitung lagi dari 0. Demikian seterusnya terjadi jika nilai 255 tercapai. Perbandingan nilai lebar pulsa terhadap nilai overflow motor
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
39
servo selama T= 20ms adalah nilai OCR, yang merupakan cacahan pulsa selama 1ms sampai 2ms. Berikut perhitungan overflow interrupt sebagai pembangkit PWM untuk mengatur sudut putar motor servo. Frekuensi crystal yang digunakan yaitu 11,059200 MHz, sehingga untuk mendapatkan periode dari frekuensi tersebut digunakan rumus :
T
= (1/11059200) = 0,090422 x 10-6 s.
Dengan menggunakan timer0/8bit(256) dan nilai prescaler 1 sebagai pengatur kecepatan clock maka timer overflow yang dihasilkan (0,090422 x 10-6 ) x 256 x 1 = 23,148 x 10-6. Sehingga pemberian nilai untuk membuat interrupt dapat mencacah selama 20ms yaitu (20ms/23,148x10-6 ) = 864. Tabel 3.2 menunjukan pemberian nilai OCR untuk mengontrol pergerakan motor servo secara umum. Dan Gambar 3.14 menunjukan lebar pulsa motor servo. Rumus yang digunakan untuk mendapatkan nilai OCR yaitu :
Tabel 3.2. Perhitungan Nilai OCR NILAI OCR SUDUT
LEBAR PULSA
0o
1 ms
OCR =
= 43,20
90o
1,5 ms
OCR =
= 64,8
180o
2 ms
OCR =
= 86,40
Gambar 3.14. Lebar Pulsa Motor Servo [5]
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
40
3.3.4. Regulator ic 7805 dan Penguat Arus Pada pembuatan tugas akhir ini, regulator digunakan sebagai pemberi daya pada motor servo, minimum system ATmega32, conveyor, sensor photodioda. Regulator terdiri dari ic 7805, 2N3055, kapasitor, dan diode. Sumber yang digunakan untuk regulator yaitu menggunakan adaptor switching yang telah tersedia di pasaran dengan spesifikasi keluaran tegangan 19Vdc dan arus 4A. Untuk men-supply motor servo Towerpro MG946R dibutuhkan arus sebesar 500 mA-900 mA dan servo Towerpro SG90 50 mA. Dengan demikian maka digunakan transistor 2N3055 agar arus keluaran ic 7805 yang memiliki tegangan keluaran sebesar 5 volt menjadi lebih besar. Tegangan 5 volt merupakan tegangan kerja pada masing-masing servo yaitu kurang lebih 4 volt-7,2 volt. Komponen yang digunakan pada gambar 3.15 mengacu pada landasan teori [10].
Gambar 3.15. Rangkaian Regulator 7805 Dengan Penguatan Arus
3.3.5. Webcam Webcam yang digunakan adalah webcam Logitech seri C270h karena output keluaran gambar merupakan gambar RBG (Red Green Blue). Webcam ini sudah mempunyai dudukan sendiri serta mempunyai software pendukung yang bisa zoom in dan zoom out sehingga memudahkan pengaturan dari komputer. Pada proses pengambilan citra menggunakan resolusi 320 x 240 piksel. Spesifikasi webcam dapat dilihat pada lampiran.
3.3.6. Sensor Photodioda dan Transistor Sebagai Saklar Sensor photodioda digunakan untuk mendeteksi benda yang diletakan pada conveyor. Cara kerjanya yaitu jika sensor photodioda terhalang oleh benda atau mendeteksi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
41
benda, maka motor pada conveyor akan berhenti. Rangkaian sensor photodioda ditunjukan oleh Gambar 3.16.
Gambar 3.16. Rangkaian Sensor Photodioda Dengan nilai vcc sebesar 5 volt dan arus maksimal infrared 100mA, maka hambatan dapat dihitung menggunakan rumus : sehingga, R=
= 50 Ω
Karena nilai resistor sebesar 50 Ω tidak tersedia di pasaran dan agar infrared tidak kelebihan arus, maka digunakan resistor sebesar 100 Ω. Sedangkan untuk nilai hambatan sensor photodioda menggunakan resistor yang mengacu pada gambar 2.17 dan persamaan 2.14 sehingga diperoleh nilai hambatan antara 6,25 KΩ – 25 KΩ. Pada perancangan ini menggunakan resistor 20 KΩ untuk sensor photodioda. Output mikrokontroller ATmega32 memiliki arus yang kecil sehingga tidak bisa digunakan untuk mengendalikan motor dc yang membutuhkan arus cukup besar. Oleh karena itu dibutuhkan rangkaian external agar keluaran dari mikrokontroller dapat mengendalikan motor dc. Rangkaian yang digunakan yaitu berupa rangkaian transistor yang difungsikan sebagai saklar menggunakan transistor 2N3904 dan relay. Gambar 3.17 menunjukan rangkaian transistor sebagai saklar beserta relay. Alasan menggunakan transistor 2N3904 yaitu karena transistor 2N3904 merupakan transistor switching dan nilai R2 menggunakan 10 KΩ didapat dari datasheet yang terlampir. Sedangkan dioda yang tersusun secara paralel dengan relay bertujuan untuk mencegah terjadinya arus balik pada rangkaian yang bisa merusak gulungan relay (koil).
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
42
Gambar 3.17. Rangkaian Transistor Sebagai Saklar dan Relay
3.3.7. Benda Tiga Dimensi Benda yang dapat dikenali oleh webcam yaitu kubus, balok, tabung, dan bola. Desain benda menggunakan google SchetchUp dapat dilihat pada Gambar 3.18. Ukuran masing-masing benda yaitu : 1. Kubus
: 5cm x 5cm x 5cm (p x l x t)
2. Balok
: 7cm x 5cm x 5cm (p x l x t )
3. Tabung
: 5cm x 5cm (diameter x tinggi)
4. Bola
: 5cm (diameter)
Gambar 3.18. Benda Tiga Dimensi
3.4. Perancangan Perangkat Lunak (Software) Pada perancangan perangkat lunak ini akan dibahas mengenai program kendali lengan robot secara keseluruhan diantaranya : 1) Flowchart program interrupt lengan robot
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
43
2) Flowchart program pengenalan bentuk benda 3) Perancangan GUI pada MATLAB 4) Perubahan m-file menjadi exe file 5) Flowchart menghitung jumlah benda yang telah terdeteksi
Pada pembuatan flowchart program interrupt lengan robot akan dibahas dan dipaparkan mengenai cara menggerakan motor servo agar memiliki sudut sesuai dengan apa yang diinginkan. Pada pembuatan flowchart ini digunakan software CodeVision AVR yang merupakan suatu perangkat lunak untuk mem-program ic keluarga AVR menggunakan bahasa c. Flowchart yang akan dibuat yaitu flowchart lengan roobot siaga, flowchart lengan robot mengambil benda, flowchart lengan robot meletakan benda saat benda kubus, flowchart lengan robot meletakan benda saat benda balok, flowchart lengan robot meletakan benda saat benda tabung, dan flowchart lengan robot meletakan benda saat benda bola. Pada pembuatan flowchart program pengenalan bentuk benda akan dibahas dan dipaparkan mengenai pembuatan program image processing dengan menggunakan metode citra biner dengan software MATLAB. Secara keseluruhan sistem kerja pada perancangan tugas akhir ini dapat ditunjukan flowchart pada gambar 3.19. Cara kerja dari lengan robot pemisah benda ini yaitu mulamula benda diletakan pada conveyor. Ketika benda dideteksi oleh sensor photodioda yang artinya benda berada dibawah webcam, maka mikrokontroler ATmega32 akan mengirimkan suatu karakter secara serial kepada laptop untuk menjalankan program image processing agar benda dapat dikenali. Setelah objek dikenali, maka laptop melalui software MATLAB akan mengirimkan karakter secara serial kepada minimum system ATmega32 untuk menggerakan motor servo pada lengan robot. Lengan robot akan mengambil benda tersebut dan meletakan benda ke tempat yang sudah disediakan sesuai bentuk benda.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
44
Gambar 3.19. Flowchart Keseluruhan Sistem
3.4.1. Flowchart Program Interrupt Lengan Robot Untuk mengendalikan motor servo, maka dibutuhkan suatu sinyal PWM agar sudut motor servo dapat diatur sedemikian rupa. Karena keterbatasan pin keluaran OCR pada
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
45
ATmega32, maka dimanfaatkan suatu timer yang digunakan untuk mencacah pulsa tersebut sehingga seluruh PORT pada ATmega32 dapat berfungsi seperti PWM yaitu dengan menggunakan perintah interrupt. Gambar 3.20 merupakan flowchart penulisan program menggunakan interrupt saat lengan robot pada posisi siaga. Untuk mendapatkan nilai sudut motor servo, penulis menggunakan lengan robot yang telah dibuat sebelumnya. Kemudian dari lengan robot tersebut, dicari nilai masingmasing sudut motor servo menggunakan busur derajat pada saat lengan robot siaga, lengan robot mengambil benda, lengan robot meletakan benda saat benda kubus, lengan robot meletakan benda saat benda balok, lengan robot meletakan benda saat benda tabung, dan lengan robot meletakan benda saat benda bola. Pemberian sudut dapat dilihat pada tabel 3.3. Tabel 3.3. Pemberian sudut motor servo Posisi Siaga Ambil Benda
Sudut Servo 1 Servo 2 Servo 3 90º 145º 140º 90º 75º 100º Meletakan Benda
Servo 4 90º 160º
Benda Kubus
0º
145º
130º
90º
Benda Balok
45º
80º
80º
90º
Benda Tabung
135º
80º
80º
90º
Benda Bola
180º
145º
130º
90º
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Gambar 3.20. Flowchart Program Interrupt Lengan Robot Saat Posisi Siaga
Gambar 3.21. Flowchart Program Interrupt Lengan Robot Saat Mengambil Benda
46
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
47
Gambar 3.22. Flowchart Program Interrupt Lengan Robot Saat Meletakan Benda Kubus
Gambar 3.23. Flowchart Program Interrupt Lengan Robot Saat Meletakan Benda Balok
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
48
Gambar 3.24. Flowchart Program Interrupt Lengan Robot Saat Meletakan Benda Tabung
Gambar 3.25. Flowchart Program Interrupt Lengan Robot Saat Meletakan Benda Bola
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
49
3.4.2. Flowchart Program Pengenalan Bentuk Benda Pada MATLAB Program image processing diproses oleh software MATLAB. Cara kerja proses secara keseluruhan yaitu mula-mula webcam harus dikenali terlebih dahulu oleh software MATLAB. Setelah dikenali maka langkah selanjutnya yaitu mengambil gambar RGB benda yang akan dikenali dan menonaktifkan webcam. Ketika gambar telah di capture, maka langkah selanjutnya yaitu merubah gambar RGB tersebut menjadi gambar grayscale agar gambar lebih mudah untuk diproses. Langkah selanjutnya yaitu proses croping (pemotongan), proses ini berfungsi untuk menentukkan bagian citra yang dibutuhkan untuk proses selanjutnya sehingga untuk bagian citra yang tidak dibutuhkan akan dipotong atau dihilangkan. Setelah croping, maka selanjutnya yaitu mengubah citra grayscale menjadi citra biner agar bentuk benda dapat dikenali sesuai dengan yang diinginkan. Setelah itu kemudian merubah ukuran piksel gambar menjadi lebih rendah. Hal ini berfungsi untuk merubah ukuran matrik gambar agar mudah untuk diamati perbedaan antar masing-masing gambar yang akan dikenali. Matrik yang telah diubah ukurannya kemudian harus dijadikan matrik real agar memiliki nilai-nilai yang sesungguhnya dari sebuah matrik gambar. Setelah semua proses sudah dilakukan, maka langkah yang paling penting yaitu menjumlahkan nilai data biner.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
50
Gambar 3.26. Flowchart Pengenalan Bentuk Benda Pada MATLAB 3.4.3. Perancangan GUI MATLAB Tujuan pembuatan GUI (Graphical User Interface) yaitu agar mempermudah dalam pengawasan program yang sedang terjadi atau dieksekusi. GUI memiliki peran yang sangat baik karena dengan adanya GUI, pengguna akan dapat melihat apa yang sedang terjadi didalam program seperti pemrosesan data dan lain-lain. Perancangan GUI yang akan dibuat dapat ditunjukan pada gambar 3.27.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
51
Gambar 3.27. Perancangan GUI pada MATLAB 3.4.4. Perubahan m-file Menjadi exe file Perubahan m-file menjadi exe file yaitu bertujuan agar file yang telah dibuat mudah di eksekusi pada perangkat komputer lain yang tidak memiliki software MATLAB. Langkah perubahannya yaitu: 1.
Buka aplikasi MATLAB kemudian ketik “deploytool” pada bagian command window kemudian tekan “enter”. Seperti ditunjukan pada gambar 3.28.
2.
Akan muncul jendela deployment project seperti ditunjukan pada gambar 3.29, kemudian pilih windows standalone application dan beri nama file sesuai dengan keinginan serta direktori yang akan dituju lalu ok.
3.
Setelah proses tersebut akan muncul jendela Window Standalone Application. Pada bagian “Build” terdapat “[Add Main File]” yang berfungsi untuk memasukan file utama dalambentuk “mfile”. Kemudian klik “[Add files/directories]” untuk menambahkan file-file pendukung yang dibutuhkan seperti file “figure”, database, fungsi ekternal dan lain-lain yang ditunjukan pada gambar 3.30. Setelah seluruh file tersebut telah dimasukan kedalam satu project, maka klik tab “package” seperti pada
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
52
gambar 3.30. selanjutnya klik “[add MCR]” kemudian akan muncul pilihan seperti ditunjukan pada gambar 3.31 lalu pilih “Embed the MCR in the package” akan muncul “MCRinstaller.exe” seperti ditunjukan gambar 4. langkah selanjutnya yaitu klik “build the project”. 4.
Tunggu sampai proses compile selesai seperti pada gambar 3.32. Jika telah selesai akan muncul jendela deployment tool output seperti pada gambar 3.33.
Gambar 3.28. Langkah Pertama exe File
Gambar 3.29. Langkah Kedua exe File
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Gambar 3.30. Langkah Ketiga exe File
Gambar 3.31. (Lanjutan) Langkah Ketiga exe File
Gambar 3.32. Langkah Keempat exe File
53
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
54
Gamba 3.33. (Lanjutan) Langkah Keempat exe File Setelah seluruh langkah diatas telah selesai dilakukan, maka selanjutnya copy file MCRinstaller.exe yang terdapat pada keterangan dibawah ini ke file direktori tempat aplikasi yang telah dibuat sebelumnya. “C:\ProgramFiles\MATLAB\R2012a\toolbox\compiler\deploy\win32\MCRInstaller.exe” Untuk menjalankan aplikasi yang telah dibuat pada komputer lain yang tidak terinstal MATLAB, maka pertama-tama harus menginstal terlebih dahulu file MCRinstaller.exe sebelum menjalankan aplikasi yang telah dibuat. Setelah proses instalasi selesai, maka aplikasi bisa dibuka dan berfungsi dengan baik. 3.4.5. Flowchart Menghitung Jumlah Benda yang Telah Terdeteksi Pembuatan flowchart ini bertujuan agar user atau pengguna dapat mengetahui berapa jumlah benda yang telah terdeteksi dan dipindahkan oleh lengan robot. Cara kerjanya yaitu jika MATLAB telah mengenali benda yang dimaksud, maka akan mengirimkan sebuah karakter secara serial kepada mikrokontroller ATmega32. Setelah itu akan diproses oleh mikrokontroller agar setiap ada karakter yang diterima akan dikenali, maksud dari karakter tersebut yakni balok, kubus, tabung, dan bola. Cara melihat berapa jumlah benda yang telah dideteksi yaitu dengan menekan sebuah tombol yang telah disediakan untuk menampilkan jumlah masing-masing benda yang telah dideteksi pada
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
55
LCD 16x2. Gambar 3.34 merupakan flowchart menghitung jumlah benda yang telah terdeteksi.
Gambar 3.34. Flowchart Menghitung Jumlah Benda yang Telah Terdeteksi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB IV HASIL PENGAMATAN DAN PEMBAHASAN Pada bab ini akan dibahas mengenai hasil pengamatan dari lengan robot sebagai pemisah barang berdasarkan bentuk benda. Hasil pengamatan berupa data sudut motor servo, data pengenalan bentuk benda berdasarkan nilai citra biner, tingkat keberhasilan pengenalan objek, dan tingkat keberhasilan lengan robot ketika mengambil dan memindahkan benda ke tempat yang telah disiapkan berdasarkan masing-masing bentuk.
4.1. Bentuk Fisik dan Sistem Kerja Lengan Robot Perangkat keras lengan robot terdiri atas conveyor yang dapat ditunjukan pada gambar 4.1, minimum system ATmega32 yang telah dilengkapi dengan LCD 16x2 dan port untuk motor servo yang ditunjukan pada gambar 4.2, regulator sebagai penguat arus yang dapat ditunjukan pada gambar 4.3, benda ditunjukan gambar 4.4, lengan robot ditunjukan pada gambar 4.5, tempat peletakan benda ditunjukan gambar 4.6.
Gambar 4.1. Conveyor
Gambar 4.2. Minimum System
Gambar 4.3. Regulator
56
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Gambar 4.4. Benda
Gambar 4.5. Lengan Robot
Gambar 4.6. Tempat Peletakan Benda
57
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
58
Mekanisme kerja sistem lengan robot adalah robot bekerja secara otomatis sesuai dengan perintah yang telah diprogram. Proses yang terjadi ketika power atau catu daya regulator pada posisi “ON” yaitu mula-mula conveyor akan berjalan membawa benda menuju tepat dibawah webcam yang akan dideteksi oleh sensor photodioda. Ketika sensor photodioda terhalang benda, maka mikrokontroler ATmega32 akan mengirimkan karakter „a‟ secara serial melalui komunikasi serial USART. Kemudian laptop akan merima karakter tersebut sebagai isyarat bahwa benda telah berada tepat dibawah webcam. Proses selanjutnya yaitu GUI pada MATLAB akan secara otomatis menjalankan program pengenalan bentuk benda. Setelah benda telah dikenali, maka laptop akan mengirimkan sebuah karakter yang mendefinisikan bentuk benda. Karakter „a‟ yang dikirim merupakan benda yang terdeteksi yaitu “kubus”, Karakter „b‟ yang dikirim merupakan benda yang terdeteksi yaitu “balok”, Karakter „c‟ yang dikirim merupakan benda yang terdeteksi yaitu “tabung”, Karakter „d‟ yang dikirim merupakan benda yang terdeteksi yaitu “bola”, dan Karakter „e‟ yang dikirim merupakan benda tidak terdeteksi. Setelah mikrokontroler ATmega32 menerima karakter tersebut, maka lengan robot akan mengambil benda dan memindahkan benda tersebut ke tempat peletakan sesuai dengan bentuk masing-masing. Proses ini akan terus berlangsung hingga tombol pada GUI MATLAB ditekan atau catu daya pada posisi “OFF”.
4.2. Hasil Data Pengujian dan Pembahasan Pada sub bab ini, dilakukan pengujian dan pembahasan terhadap sudut motor servo, nilai citra biner dari masing-masing bentuk benda sebanyak 10 kali pengambilan data, tingkat keberhasilan sistem saat mendeteksi bentuk benda sebanyak 10 kali pengambilan data, dan tingkat keberhasilan lengan robot saat mengambil dan memindahkan benda berdasarkan bentuk yang dilakukan sebanyak 10 kali percobaan.
4.2.1. Sudut Motor Servo Berdasarkan data pengujian sudut motor servo yang diukur menggunakan busur derajat, didapat nilai OCR seperti pada gambar 4.7 hingga gambar 4.25 dibawah ini. Pengujian sudut dilakukan dengan melihat nilai OCR pada masing-masing sudut motor servo yang dilakukan setiap 10o yang akan dibandingkan dengan perhitungan secara teori.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Gambar 4.7. Sudut 0o
Gambar 4.10. Sudut 30o
Gambar 4.13. Sudut 60o
Gambar 4.16. Sudut 90o
Gambar 4.8 Sudut 10o
Gambar 4.9. Sudut 20o
Gambar 4.11. Sudut 40o Gambar 4.12. Sudut 50o
Gambar 4.14. Sudut 70o Gambar 4.15. Sudut 80o
Gambar 4.17. Sudut 100o Gambar 4.18. Sudut 110o
59
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
60
Gambar 4.19. Sudut 120o Gambar 4.20. Sudut 130o Gambar 4.21. Sudut 140o
Gambar 4.22. Sudut 150o
Gambar 4.23. Sudut 160o Gambar 4.24. Sudut 170o
Gambar 4.25. Sudut 180o Perhitungan besar nilai error diperoleh dengan membandingkan nilai OCR praktek dan nilai OCR teori. Kemudian jika digunakan T(periode) sebesar 0,090422 x 10-6 s dan prescaler sebesar 1, maka hasil dapat dilihat pada tabel 4.1. Tabel 4.1. Perhitungan Lebar Pulsa Motor Servo Towerpro MG946R Nilai Nilai OCR OCR SUDUT Teori Praktek 0o 90o 180o
43,20 64,8 86,40
29 69 111
Lebar Pulsa
0,671 ms 1,59 ms 2,57 ms
Error (%)
32,87 % 6,48 % 28,47 %
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
61
Berdasarkan gambar 4.7 hingga gambar 4.25, maka dapat dianalisa bahwa perhitungan secara teori dan praktek terjadi perbedaan atau tidak sesuai tetapi terdapat satu kondisi saat motor servo berada pada sudut 90o yang memiliki lebar pulsa tidak jauh berbeda dengan teori yakni 1,59 ms sedangkan pada teori memiliki lebar pulsa 1,5 ms. Hal tersebut dikarenakan setiap motor servo memiliki karakteristik yang berbeda-beda sesuai dengan jenisnya. Error yang terjadi pada nilai OCR sudut motor servo tidak mempengaruhi kinerja lengan robot dalam mengambil dan memisahkan benda. Tetapi error pada nilai OCR mempengaruhi dalam penentuan sudut motor servo selama perancangan.
4.2.2. Pengujian Nilai Citra Biner Bentuk Benda Pengujian nilai citra biner dari masing-masing bentuk benda dimaksudkan untuk mengetahui data citra biner dari masing-masing bentuk benda yang akan diproses dan dikenali. Dilakukan sebanyak 10 kali percobaan dari masing-masing benda. Dari pengujian tersebut, diperoleh tabel 4.2 sebagai berikut. Tabel 4.2. Data Citra Biner Masing-Masing Bentuk Benda Nilai Data Pengambilan KUBUS BALOK Data ke1 85 124 2 85 125 3 88 123 4 88 116 5 92 116 6 81 122 7 99 129 8 88 120 9 86 129 10 84 125 Rerata 87,6 122,9 Range Data 81-110 111-140
TABUNG
BOLA
73 67 73 74 69 70 75 79 68 73 72,1 65-80
53 55 55 51 53 52 60 46 50 54 52,9 42-64
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
62
140 120 100 BENDA KUBUS
80
BENDA BALOK 60
BENDA TABUNG
40
BENDA BOLA
20 0 1
2
3
4
5
6
7
8
9
10
Gambar 4.26. Grafik Data Citra Biner Range data yang digunakan sengaja dibuat lebih dengan alasan untuk mengantisipasi apabila data yang terdeteksi lebih besar atau lebih kecil dari data yang telah diambil sampelnya. Hal ini dapat terjadi karena pengaruh cahaya ruangan yang berbedabeda.
4.2.3. Tata Peletakan Benda Peletakan benda saat dibawa conveyor adalah sesuai dengan batasan masalah. Apabila peletakan benda tidak sesuai dengan batasan masalah, maka sistem dan lengan robot tidak dapat bekerja maksimal. Hal ini dikarenakan kemampuan sistem dalam mendeteksi atau mengenali bentuk benda terbatas dan lengan robot memiliki batasanbatasan tertentu agar dapat menjalankan tugas untuk mengambil dan meletakan benda dengan baik. Tata peletakan dapat dilihat pada gambar 4.27, gambar 4.28, gambar 4.29, dan gambar 4.30.
Gambar 4.27. Peletakan Benda Kubus
Gambar 4.28. Peletakan Benda Balok
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
63
Gambar 4.29. Peletakan Benda Tabung Gambar 4.30. Peletakan Benda Bola
4.2.4. Pengujian Keberhasilan Sistem Mendeteksi Bentuk Benda Pada tugas akhir ini, dilakukan analisa tingkat keberhasilan robot saat proses pengenalan objek berbentuk kubus, balok, tabung, dan bola. Namun apabila terdapat benda selain benda tersebut yang memiliki data sesuai range yang telah ditentukan sebelumnya, maka sistem akan tetap membandingkan dengan range yang ada. Tingkat keberhasilan sistem ditunjukan tabel 4.3 dan gambar benda yang terdeteksi dapat ditunjukan gambar 4.31, gambar 4.32, gambar 4.33, dan gambar 4.34. Tabel 4.3. Pengujian Keberhasilan Sistem Mendeteksi Bentuk Benda PENGUJIAN KEBERHASILAN SISTEM MENDETEKSI BENTUK BENDA BENDA 1 2 3 4 5 6 7 8 9 10 KUBUS V V V V V V V V V V BALOK V V V V V V V V V V TABUNG V V V V V V V V V V BOLA V V V V V V V V V V Keterangan : V(Berhasil) X(Tidak Berhasil)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Gambar 4.31. Pengujian Benda Balok
64
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Gambar 4.32. Pengujian Benda Kubus
65
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Gambar 4.33. Pengujian Benda Tabung
66
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
67
Gambar 4.34. Pengujian Benda Bola Berdasarkan tabel 4.3, gambar 4.31, gambar 4.32, gambar 4.33 dan gambar 4.34, maka dapat disimpulkan bahwa sistem mampu mengenali benda 100% apabila sesuai dengan batasan masalah yang telah ditentukan. Selain itu, sistem berhasil melakukan counting terhadap jumlah benda yang telah terdeteksi.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
68
4.2.5. Pengujian Keberhasilan Lengan Robot Saat Mengambil dan Memindahkan Benda Pada pengujian lengan robot mengambil dan memindahkan benda dilakukan sebanyak sepuluh kali percobaan dari masing-masing bentuk benda. Ketika sistem telah mengenali bentuk benda, maka sistem akan mengirimkan sebuah karakter secara serial kepada mikrokontroler ATmega32 untuk selanjutnya mengontrol pergerakan lengan robot mengambil dan memindahkan benda sesuai dengan peletakan yang telah ditentukan sebelumnya. Tabel 4.4. Pengujian Keberhasilan Lengan Robot Mengambil dan Memindahkan Benda PENGUJIAN KEBERHASILAN LENGAN ROBOT MENGAMBIL DAN MELETAKAN BENDA BENDA 1 2 3 4 5 6 7 8 9 10 KUBUS V V V V V V V V V V BALOK V V V V V V V V V V TABUNG V V V V V V V V V V BOLA V V V V V V V V V V Keterangan : V(Berhasil) X(Tidak Berhasil) Berdasarkan tabel 4.4 maka dapat dianalisa bahwa lengan robot dapat mengambil dan memindahkan benda sesuai bentuk dengan baik. Hal ini dapat dibuktikan dengan melihat tingkat keberhasilan lengan robot mengambil dan memindahkan benda seperti tabel 4.4. Tingkat keberhasilan lengan robot yaitu 100% dengan catatan peletakan dan jarak benda sesuai dengan batasan masalah.
4.2.6. Pengujian Sistem Dalam Proses Pengenalan Benda dan Proses Pemindahan Benda 4.2.6.1. Menggunakan Looping Looping merupakan suatu proses dimana sistem akan terus bekerja dan selalu mengeksekusi program secara otomatis sampai tombol atau pemicu berhenti ditekan. Kelebihan dari sistem yang menggunakan looping yaitu sistem dan lengan robot mampu bekerja secara otomatis tanpa harus menekan tombol untuk memberikan isyarat tertentu. Namun sistem menggunakan looping memiliki kelemahan yaitu proses pengenalan bentuk benda dan proses pemindahan benda menjadi lebih lama. Waktu yang diperlukan untuk proses pengenalan bentuk benda dan proses pemindahan benda yaitu + 33 detik.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
69
4.2.6.2. Tidak Menggunakan Looping Sistem tidak menggunakan looping memiliki kelebihan dan kelemahan. Kelebihan dari sistem tanpa menggunakan looping yaitu sistem dan lengan robot dapat menyelesaikan tugas pengenalan bentuk benda dan proses pemindahan benda lebih cepat dibanding menggunakan looping yaitu + 27 detik. Kelemahan dari sistem tanpa menggunakan looping yaitu sistem dan lengan robot tidak mampu bekerja secara otomatis karena dibutuhkan peran user untuk menekan tombol untuk memulai proses pengenalan bentuk benda.
4.3. Analisa dan Pembahasan Perangkat Lunak Pada sub bab ini akan dibahas mengenai listing program pada CodeVision AVR dan MATLAB.
4.3.1. Aplikasi CodeVision AVR Pada sub bab ini akan dijabarkan dan dijelaskan masing-masing fungsi pada listing program yang diprogram menggunakan software CodeVision AVR diantaranya program pengendali sensor photodioda menggunakan fasilitas ADC (Analog to Digital Converter), program untuk komunikasi serial menggunakan USART (Universal Synchronous Asynchronous Receiver Transmiter), program pengendali motor servo menggunakan fasilitas interrupt.
4.3.1.1. Pengendali Sensor Photodioda Program pengendali sensor photodioda menggunakan fasilitas yang dimiliki oleh mikrokontroler ATmega32 yaitu ADC (Analog to Digital Converter). Fungsinya yaitu untuk mengubah tegangan analog menjadi tegangan digital. Tegangan digital tersebut akan digunakan untuk mengontrol conveyor saat membawa benda.
Gambar 4.35. Listing Program ADC Pada listing program yang ditunjukan gambar 4.35, digunakan read_adc(0) yang artinya menggunakan PORTA.0 sebagai PORT masukan untuk mengubah tegangan analog menjadi tegangan digital. Pada bagian sensor= read_adc(0)/2 maksud dari pembagian 2 yaitu agar nilai desimal ADC maksimal yaitu 1023 dibagi 2 yaitu 511. Sehingga apabila
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
70
tegangan masukan 0 Volt sampai 5 Volt, akan diubah melalui ADC menjadi 0 desimal hingga 511 desimal.
Gambar 4.36. Listing Program Pengendali Conveyor Pada bagian listing program gambar 4.36, fungsinya yaitu untuk mengendalikan motor penggerak conveyor yang dikontrol menggunakan PORTD.2. Terdapat nilai 200 pada bagian if (sensor>=200) ini dimaksudkan untuk membuat PORTD.2 bernilai “0” jika nilai sensor lebih besar sama dengan dari 200 desimal ADC. Hal ini berarti menyebabkan motor pada conveyor berhenti berputar. Jika kondisi sensor kurang dari 200, maka PORTD.2 akan bernilai “1” yang artinya motor conveyor akan terus berputar.
4.3.1.2. Pengendali Komunikasi USART Pada
bagian
ini
berfungsi
sebagai
komunikasi
serial
USART
untuk
menghubungkan antara mikrokontroler ATmega32 dengan laptop. Baudrate yang digunakan yaitu 9600 bps. Fungsi “getchar()” yaitu untuk menerima karakter dari laptop agar mikrokontroler dapat mengerti apa yang dimaksud oleh laptop saat mengirimkan karakter yang mendefinisikan bentuk benda. Sedangkan fungsi “putchar()” yaitu untuk mengirimkan suatu karakter kepada laptop agar laptop dapat memulai proses pengenalan benda. Listing program dapat dilihat pada gambar 4.37.
Gambar 4.37. Listing Program Komunikasi USART
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
71
4.3.1.3. Pengendali Motor Servo Program pengendali motor servo menggunakan interrupt timer0 sebagai pembangkit pulsa untuk menggerakan motor servo. Listing program pengendali sudut putar motor servo ditunjukan gambar 4.38.
Gambar 4.38. Listing program pengendali sudut putar motor servo Listing program pada gambar 4.38 adalah penyetingan port yang digunakan motor servo. Kodisi nilai i++ artinya adalah timer mulai mencacah dari 0 hingga 255, jika lebih dari itu maka timer overflow dan mulai mengaktifan PWM. Nilai 864 adalah nilai overflow selama perioda motor servo yaitu 20ms. Kemudian pemberian logika high pada tiap port, jika kondisi nilai i lebih kecil dari pada nilai variabel data1, data2, data3, data4 sehingga mulai memberikan pulsa agar motor servo bergerak dan logika low jika kondisinya tidak terpenuhi maka portb akan direset.
Gambar 4.39. Pemberian Nilai OCR Motor Servo
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
72
Listing program yang ditunjukan pada gambar 4.39 merupakan pemberian nilai OCR pada masing-masing motor servo pada saat posisi siaga. Sedangkan untuk posisi lain seperti posisi siaga_grip, pengambilan benda, penyimpanan benda kubus, penyimpanan benda balok, penyimpanan benda tabung, dan penyimpanan benda bola dapat dilihat pada tabel 4.5. Tabel 4.5. Pemberian Nilai OCR Fungsi
Nilai OCR Data 1
Data 2
Data 3
Data 4
Siaga
71
53
94
89
Siaga_grip
71
53
94
122
Ambil_benda
71
84
76
122
Kubus
33
53
90
89
Balok
48
67
82
89
Tabung
92
67
82
89
Bola
111
53
90
89
Gripper
-
-
-
89
Gambar 4.40. Listing Program Gerakan Mengambil Benda Listing program pada gambar 4.40 adalah pergerakan motor servo saat mengambil benda secara bertahap satu persatu. Untuk mempermudah dalam penentuan tahapan sudut motor servo, digunakan fungsi for untuk mencacah nilai OCR secara satu per satu. Dengan cara ini, maka tidak diperlukan menulis nilai OCR secara satu per satu. Tujuannya yaitu
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
73
agar pergerakan motor servo menjadi lebih halus ketika menggerakan lengan robot. “Void()” merupakan perintah untuk membuat suatu fungsi agar ketika dieksekusi selama proses tidak perlu menulis ulang subrutin yang terdapat didalam void. Gambar 4.41 merupakan listing program memindahkan benda kubus, gambar 4.42 merupakan listing program memindahkan benda balok, gambar 4.43 merupakan listing program memindahkan benda tabung, dan gambar 4.44 merupakan listing program memindahkan benda bola.
Gambar 4.41. Listing Program Memindahkan Benda Kubus
Gambar 4.42. Listing Program Memindahkan Benda Balok
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
74
Gambar 4.43. Listing Program Memindahkan Benda Tabung
Gambar 4.44. Listing Program Memindahkan Benda Bola
4.3.1.4. Subrutin Program Utama Pada bagian ini akan dibahas mengenai subrutin program yang akan dieksekusi secara terus menerus karena terdapat didalam fungsi while. Listing program dapat dilihat pada gambar 4.45.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
75
Gambar 4.45. Subrutin Program Utama Pada bagian listing program gambar 4.45. Karakter 'a' yang dikirim laptop merupakan karakter yang mendeskripsikan bahwa benda yang terdeteksi merupakan kubus, sedangkan karakter 'b' yang dikirim laptop merupakan karakter yang mendeskripsikan bahwa benda yang terdeteksi merupakan balok, sedangkan karakter 'c' yang dikirim laptop merupakan karakter yang mendeskripsikan bahwa benda yang terdeteksi merupakan tabung, kemudian nilai karakter 'd' yang dikirim laptop merupakan karakter yang mendeskripsikan bahwa benda yang terdeteksi merupakan bola, kemudian jika karakter 'e' yang dikirim laptop adalah karakter yang mendeskripsikan bahwa tidak ada benda yang terdeteksi. Subrutin yang terdapat didalam “while(1)” akan dieksekusi secara terus menerus hingga power “OFF” atau tombol reset ditekan. Hal ini dikarenakan didalam kurung while diberi angka “1” yang berarti bernilai true atau akan dieksekusi secara terus menerus.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
76
4.3.2. Aplikasi MATLAB Pada sub bab ini akan dijabarkan listing program yang diprogram menggunakan software MATLAB diantaranya penjelasan tampilan GUI, inisialisasi komunikasi serial, inisialisasi webcam, proses pengolahan citra, dan proses pengenalan bentuk benda.
4.3.2.1. Tampilan Gui MATLAB GUI (Graphical User Interface) yaitu suatu tampila yang berfungsi untuk mempermudah dalam pengawasan program yang sedang terjadi atau dieksekusi. GUI memiliki peran yang sangat baik karena dengan adanya GUI, pengguna akan dapat melihat apa yang sedang terjadi didalam program seperti pemrosesan data dan lain-lain. Tampilan GUI yang dibuat dapat ditunjukan pada Gambar 4.46.
Gambar 4.46. Tampilan GUI MATLAB Terdapat beberapa fasilitas pada tampilan GUI yang digunakan yaitu axes, edit text, popupmenu, dan push butoon. Fasilitas axes berfungsi untuk menampilkan gambar, grafik, ataupun diagram. Axes digunaka untuk menampilkan gambar dari benda yang telah diproses menjadi gambar biner. Selain axes, terdapat fasilitas edit text yang berfungsi untuk menampilkan jumlah benda yang telah terdeteksi, nilai data citra biner, dan menampilkan hasil deteksi sistem. Sedangkan popupmenu berfungsi untuk menampilkan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
77
daftar pilihan PORT komunikasi yang digunakan untuk melakuan komunikasi serial agar laptop dan mikrokontroler dapat saling berhubungan. Bagian yang terakhir yaitu push button. Push button berfungsi sebagai sebuah tombol yang digunakan untuk mengontrol suatu program yang akan diekseusi dengan cara diklik.
4.3.2.2. Inisialisasi Komunikasi Serial Sebelum menghubungkan laptop dengan mikrokontroler Atmega32, maka pada bagian program MATLAB harus di inisialisasi terlebih dahulu. Hal ini dikarenakan pada bagian laptop dengan mikrokontroler harus memiliki baudrate yang sama. Jika kedua perangkat tidak memiliki baudrate yang sama, maka sudah dapat dipastikan kedua perangkat ini tidak akan dapat berkomunikasi satu sama lainnya. Program inisialisasi komunikasi serial ditunjukan gambar 4.47.
Gambar 4.47. Inisialisasi Komunikasi Serial
4.3.2.3. Inisialisasi Webcam Untuk melakukan proses pengolahan citra, maka dibutuhkan perangkat keras berupa kamera atau webcam. Oleh karena itu, maka diperlukannya proses inisialisasi perangkat keras tersebut agar dapat dikenali oleh MATLAB. Inisialisasi webcam dapat dilihat pada gambar 4.48.
Gambar 4.48. Inisialisasi Webcam Perintah program “imaqhwinfo” adalah perintah program untuk menampilkan informasi yang akan disampaikan oleh webcam dan kemudian informasi tersebut akan diinisialisasi ke dalam program. Hal ini bertujuan agar antara webcam dengan software Matlab dapat melakukan komunikasi. Informasi yang tampil adalah adaptor kamera, port webcam, jenis warna dan resolusi piksel.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
78
4.3.2.4. Proses Pengolahan Citra Proses pengolahan citra merupakan suatu proses untuk mengolah suatu kualitas gambar atau citra yang telah diambil kamera atau webcam agar gambar tersebut dapat dikenali dan memiliki nilai-nilai tertentu. Nilai-nilai yang telah didapat kemudian diproses untuk mengklasifikasikan gambar-gambar tertentu. Proses secara berurutan yaitu mulamula gambar diambil dengan fungsi “getsnapshoot”, kemudian gambar yang telah diambil diproses dan diubah menjadi gambar grayscale dengan tujuan untuk mempermudah dalam pemrosesan. Langkah selanjutnya yaitu mengubah citra grayscale menjadi citra biner, hal ini dikarenakan saat pengenalan bentuk benda menggunakan metode citra biner. Setelah citra biner, langkah selanjutnya yaitu proses cropping atau pemotongan gambar. Hal ini bertujuan untuk menghilangkan background atau latar belakang yang tidak dibutuhkan untuk diproses. Fungsi “imresize” bertujuan untuk memperkecil kualitas citra yang telah diolah agar memiliki nilai yang tidak terlalu besar. Kemudian langkah terakhir yaitu proses penjumlahan data nilai citra biner yang telah dipotong menjadi sebuah nilai. Proses pengolahan citra ditunjukan gambar 4.49.
Gambar 4.49. Proses Pengolahan Citra
4.3.2.5. Proses Pengenalan Bentuk Benda Berdasarkan nilai-nilai dari tabel 4.3, maka dibuat sebuah range yang menentukan bentuk benda tersebut. Untuk benda kubus range data yang digunakan yaitu antara 81 sampai 110, sedangkan untuk benda balok range data yang digunakan yaitu antara 111 sampai 140, kemudian untuk benda tabung range data yang digunakan yaitu antara 65 sampai 80, dan untuk benda bola range data yang digunakan yaitu antara 42 sampai 64. Dari data tersebut, maka dapat dibuat range nilai untuk mengetahui dan mengenali dari masing-masing bentuk benda. Listing program ditunjukan gambar 4.50.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
79
Gambar 4.50. Listing Program Pengenalan Bentuk Benda Proses berjalannya program jika data memiliki nilai antara 81-110 maka akan tampil pada “edit6” benda yang terdeteksi yaitu kubus, kemudian menjumlahkan nilai kubus yang terdeteksi sebanyak 1 dan hasil penjumlahan tersebut ditampilkan pada “edit1” lalu mengirimkan karakter „a‟ secara serial. Jika data memiliki nilai antara 111-140 maka akan tampil pada “edit6” benda yang terdeteksi yaitu balok, kemudian menjumlahkan nilai balok yang terdeteksi sebanyak 1 dan hasil penjumlahan tersebut ditampilkan pada “edit2” lalu mengirimkan karakter „b‟ secara serial. Jika data memiliki nilai antara 65-80 maka akan tampil pada “edit6” benda yang terdeteksi yaitu tabung, kemudian menjumlahkan nilai tabung yang terdeteksi sebanyak 1 dan hasil penjumlahan tersebut ditampilkan pada “edit3” lalu mengirimkan karakter „c‟ secara serial. Jika data memiliki nilai antara 42-64 maka akan tampil pada “edit6” benda yang terdeteksi yaitu bola, kemudian menjumlahkan nilai bola yang terdeteksi sebanyak 1 dan hasil penjumlahan tersebut ditampilkan pada “edit4” lalu mengirimkan karakter „b‟ secara serial. Apabila data tidak berada didalam range yang ada, maka itu berarti benda tidak terdeteksi oleh sistem kemudian sistem akan mengirimkan karakter „e‟ secara serial.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB V KESIMPULAN DAN SARAN 5.1.
Kesimpulan Dari hasil pengujian serta pengambilan data pada aplikasi pengenalan objek untuk
lengan robot pemisah benda berdasarkan bentuk benda, dapat diambil kesimpulan: 1. Sistem dapat mengenali bentuk benda dengan baik ketika mendeteksi benda. 2. Waktu yang dibutuhkan sistem tanpa looping untuk menyelesaikan proses yaitu + 27 detik sedangkan waktu yang dibutuhkan sistem dengan menggunakan looping untuk menyelesaikan proses yaitu + 33 detik. 3. Sistem mampu mengenali bentuk benda dan berhasil melakukan counting jumlah benda yang telah terdeteksi. 4. Peletakan dan posisi benda sesuai dengan batasan masalah, membuat sistem dan lengan robot bekerja dengan baik. 5. Posisi benda yang tidak sesuai dengan batasan masalah membuat gripper lengan robot tidak dapat mencengkram benda untuk memindahkannya. 6. Motor servo berfungsi dengan baik sebagai aktuator lengan robot dalam mengerjakan proses pengambilan dan peletakan benda. Tetapi lebar pulsa motor servo jenis Towerpro MG946R berbeda dengan lebar pulsa pada teori.
5.2.
Saran Saran-saran bagi pengembangan selanjutnya adalah: 1. Lebih banyak variasi bentuk benda yang dideteksi. 2. Peletakan dan posisi benda dibuat bebas. 3. Waktu sistem untuk proses pengenalan objek dibuat lebih cepat. 4. Lengan robot dibuat lebih baik lagi agar pergerakan menjadi fleksibel dan mampu mengambil benda pada posisi apapun. 5. Menggunakan jenis motor servo yang sesuai dengan dasar teori dan memiliki spesifikasi lebar pulsa yang lengkap agar selama penentuan sudut motor servo tidak mengalami kesulitan.
80
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Daftar Pustaka [1]
Budiharto, W., 2014, Robotika Modern – Teori dan Implementasi, edisi revisi, C.V Andi Offset, Yogyakarta.
[2]
Budiharto, W. dan Purwanto, D., 2012, Robot Vision – Teknik Membangun Robot Cerdas Masa Depan, C.V Andi Offset, Yogyakarta.
[3]
Arismarjito, 2011, Robot Lengan Otomatis Sebagai Pemisah Barang Berdasarkan Warna Dengan Menggunakan ATmega8535, Skripsi, Universitas Sanata Dharma, Yogyakarta.
[4]
Paul A. Tipler, 1998, FISIKA Untuk Sains dan Teknik, edisi 3 jilid 1, Erlangga, Bandung.
[5]
http://www.servodatabase.com , diakses pada tanggal 20 November 2014.
[6]
----, 2011,Data Sheet Mikrokontroler ATmega32, Atmel.
[7]
Agus Bejo, 2008, C dan AVR Rahasia Kemudahan Bahasa C dalam Mikrokonroler ATMEGA8535, 1st ed, GRAHA ILMU, Yogyakarta.
[8]
Setiawan, A., 2011, 20 Aplikasi Mikrokontroler ATmega8535 dan ATmega16, Andi, Yogyakarta.
[9]
Boylestad, R. and Nashelsky. L., Electronic Devices and Circuit Theory, seventh edition, Prentice Hall, New Jersey Columbus, Ohio.
[10]
Fathoni, Oktober 2010, Unjuk Kerja Catu Daya 12 Volt 2A dengan Pass Element Transistor NPN dan PNP, Jurnal Neutrino, Vol.3, No.1.
[11]
Budiharto, W., 2008, Panduan Praktikum Mikrokontroler AVR Atmega16, PT Elex Media Komputindo, Jakarta.
[12]
Enterprise, Jubilee, 2010, Teknik Mengendalikan PC dari Jarak Jauh, PT Elex Media Komputindo, Jakarta.
[13]
http://www.logitech.com/en-in/product/hd-webcam-c270h ,diakses pada tanggal 20 November 2014.
[14]
http://cantiknyailmu.com/daftar-lengkap-rumus-bangun-ruang.html , diakses pada tanggal 21 November 2014.
[15]
Putra, D., 2010, Pengolahan Citra Digital, Andi Offset, Yogyakarta.
81
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI [16]
82
Wijaya, M.Ch., dan Prijono, A., 2007, Pengolahan Citra Digital Menggunakan MATLAB, Informatika, Bandung.
[17]
http://www.servodatabase.com/servo/towerpro/mg946r,
diakses
20
November
2014. [18]
http://www.vcc2gnd.com/2014/05/sg90-tower-pro-9g-micro-servo.html, diakses 20 November 2014.
[19]
----, 2002, Data Sheet Transistor 2N3904, KEC.
[20]
----, 1999, Data Sheet Transistor 2N3055, STMicroelectronics.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
LAMPIRAN
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Rangkaian Minimum System Atmega8535
Rangkaian Regulator
Rangkaian Sensor Photodioda
L1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Spesifikasi Servo Towerpro MG946R [17]
Spesifikasi Servo Towerpro SG90 [18]
L2
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Towerpro MG946R [5]
Spesifikasi Webcam Logitech C270h [13]
Webcam Logitech C270h [13]
Towerpro SG90 [5]
L3
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Datasheet Transistor 2N3904 [19]
Datasheet Transistor 2N3055 [20]
HASIL DETEKSI BENTUK BENDA
L4
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L5
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L6
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L7
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L8
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L9
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L10
LISTING PROGRAM CVAVR /***************************************************** Project : APLIKASI PENGENALAN OBJEK MENGGUNAKAN WEBCAM UNTUK LENGAN ROBOT PEMISAH BENDA BERDASARKAN BENTUK BENDA Date : 19/03/2015 Chip type : ATmega32 Program type : Application Clock frequency : 11,059200 MHz Memory model : Small External RAM size :0 Data Stack size : 512 *****************************************************/ #include <mega32.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x15 ;PORTC #endasm #include
// Standard Input/Output functions #include <stdio.h> #define servo1 PORTB.0 #define servo2 PORTB.1 #define servo3 PORTB.2 #define servo4 PORTB.3 signed int i=0,data1=0,data2=0,data3=0,data4=0; int sensor,a; unsigned char sens[16],b[16]; // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { // Place your code here i++; if (i>864){i=0;} else { if (i
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI else{servo1=0;} if (i #define ADC_VREF_TYPE 0x40 // Read the AD conversion result unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; } // Declare your global variables here void photodioda() { sensor=read_adc(0)/2; lcd_gotoxy(0,1); sprintf(sens,"sensor=%d",sensor); lcd_puts(sens); delay_ms(10); } void komunikasi() { a=getchar(); lcd_gotoxy(0,0); sprintf(b,"komunikasi= %d" ,a); lcd_puts(b); delay_ms(3000); lcd_clear();delay_ms(10); } void siaga() { data1=71; delay_ms(100); data3=94; delay_ms(100); data2=53; delay_ms(100); data4=89; delay_ms(100); } void siaga_grip() {
L11
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI data1=71; delay_ms(100); data2=53 ; delay_ms(100); data3=94; delay_ms(100); data4=122; delay_ms(100); } void ambil_benda() { data1=71; delay_ms(100); data3=76; delay_ms(100); data2=84; delay_ms(100); data4=122; delay_ms(100); } void kubus() { data1=33; delay_ms(100); data2=53 ; delay_ms(100); data3=90; delay_ms(100); data4=89; delay_ms(100); } void balok() { data1=48; delay_ms(100); data3=67; delay_ms(100); data2=82 ; delay_ms(100); data4=89; delay_ms(100); } void tabung() { data1=92; delay_ms(100); data3=67; delay_ms(100); data2=82 ; delay_ms(100); data4=89; delay_ms(100); } void bola()
L12
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI { data1=111; delay_ms(100); data2=53 ; delay_ms(100); data3=90; delay_ms(100); data4=89; delay_ms(100); } void gripper() { data4=89; delay_ms(100); } void gerak_ambil() { siaga(); delay_ms(500); for (data3=94;data3>=78;data3--) {delay_ms(50); }; for (data2=53;data2<=84;data2++) {delay_ms(50);}; for (data4=89;data4<=122;data4++) {delay_ms(50);}; ambil_benda(); delay_ms(500); for (data2=84;data2>=53;data2--) {delay_ms(50);}; delay_ms(50); for (data3=72;data3<=94;data3++) {delay_ms(50);}; siaga_grip(); delay_ms(500); } void gerak_kubus() { //kubus gerak_ambil(); delay_ms(500); for (data3=94;data3>=90;data3--) {delay_ms(50);}; for (data1=71;data1>=33;data1--) {delay_ms(50);}; for (data4=122;data4>=89;data4--) {delay_ms(50);}; kubus(); delay_ms(500); gripper(); delay_ms(500);
L13
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
for (data1=33;data1<=71;data1++) {delay_ms(50);}; for (data3=90;data3<=94;data3++) {delay_ms(50);}; } void gerak_balok() { //balok gerak_ambil(); delay_ms(500); for (data3=94;data3>=67;data3--) {delay_ms(50);}; for (data1=71;data1>=48;data1--) {delay_ms(50);}; for (data2=53;data2<=82;data2++) {delay_ms(50);}; for (data4=122;data4>=89;data4--) {delay_ms(50);}; balok(); delay_ms(500); gripper(); delay_ms(500); for (data2=82;data2>=53;data2--) {delay_ms(50);}; for (data1=48;data1<=71;data1++) {delay_ms(50);}; for (data3=67;data3<=94;data3++) {delay_ms(50);}; } void gerak_tabung() { //tabung gerak_ambil(); delay_ms(500); for (data3=94;data3>=67;data3--) {delay_ms(50);}; for (data1=71;data1<=92;data1++) {delay_ms(50);}; for (data2=53;data2<=82;data2++) {delay_ms(50);}; for (data4=122;data4>=89;data4--) {delay_ms(50);}; tabung(); delay_ms(500); gripper(); delay_ms(500); for (data2=82;data2>=53;data2--) {delay_ms(50);}; for (data1=92;data1>=71;data1--) {delay_ms(50);}; for (data3=67;data3<=94;data3++)
L14
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI {delay_ms(50);}; } void gerak_bola() { //bola gerak_ambil(); delay_ms(500); for (data3=94;data3>=90;data3--) {delay_ms(50);}; for (data1=71;data1<=111;data1++) {delay_ms(50);}; for (data4=122;data4>=89;data4--) {delay_ms(50);}; bola(); delay_ms(500); gripper(); delay_ms(500); for (data1=111;data1>=71;data1--) {delay_ms(50);}; for (data3=90;data3<=94;data3++) {delay_ms(50);}; } void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0xFF; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0xFF; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 11059,200 kHz // Mode: Normal top=FFh
L15
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI // OC0 output: Disconnected TCCR0=0x01; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x01; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47;
L16
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
// Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC Clock frequency: 691,200 kHz // ADC Voltage Reference: AVCC pin ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x84; // LCD module initialization lcd_init(16); // Global enable interrupts #asm("sei") siaga(); delay_ms(500); while (1) { photodioda(); delay_ms(10); if (sensor>=200) { delay_ms(100); PORTD.2=0;delay_ms(5); putchar('a');delay_ms(1000); putchar('a');delay_ms(1000); putchar('a');delay_ms(1000); z=1;delay_ms(100); while(z) { a=getchar(); delay_ms(5); if(a=='a') { lcd_gotoxy(0,1);lcd_putsf("BENDA KUBUS");delay_ms(1000); gerak_kubus();delay_ms(10); lcd_clear();delay_ms(10);z=0; } else if(a=='b') { lcd_gotoxy(0,1);lcd_putsf("BENDA BALOK");delay_ms(1000); gerak_balok();delay_ms(10); lcd_clear();delay_ms(10);z=0; } else if(a=='c') { lcd_gotoxy(0,1);lcd_putsf("BENDA TABUNG");delay_ms(1000); gerak_tabung();delay_ms(10); lcd_clear();delay_ms(10);z=0; } else if(a=='d')
L17
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI { lcd_gotoxy(0,1);lcd_putsf("BENDA BOLA");delay_ms(1000); gerak_bola();delay_ms(10); lcd_clear();delay_ms(10);z=0; } else if(a=='e') { lcd_gotoxy(0,1);lcd_putsf("TIDAK TERDETEKSI");delay_ms(1000); PORTD.2=1;delay_ms(500); lcd_clear();delay_ms(10);z=0; } } } else {PORTD.2=1;delay_ms(5);} }; }
LISTING PROGRAM GUI MATLAB DENGAN MENGGUNAKAN LOOPING function varargout = realtime(varargin) % REALTIME MATLAB code for realtime.fig % REALTIME, by itself, creates a new REALTIME or raises the existing % singleton*. % % H = REALTIME returns the handle to a new REALTIME or the handle to % the existing singleton*. % % REALTIME('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in REALTIME.M with the given input arguments. % % REALTIME('Property','Value',...) creates a new REALTIME or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before realtime_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to realtime_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help realtime % Last Modified by GUIDE v2.5 02-Jul-2015 18:45:25 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @realtime_OpeningFcn, ... 'gui_OutputFcn', @realtime_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []);
L18
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before realtime is made visible. function realtime_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to realtime (see VARARGIN) % Choose default command line output for realtime clc; set(handles.edit1, 'String','0' ); set(handles.edit2, 'String','0'); set(handles.edit3, 'String','0' ); set(handles.edit4, 'String','0' ); set(handles.edit5, 'String','' ); set(handles.edit6, 'String','' ); handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes realtime wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = realtime_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
L19
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L20
clc; global z global kubus global balok global tabung global bola z=1; kubus=0; balok=0; tabung=0; bola=0; guidata(hObject,handles); while z %data yang dikirimkan komunikasi=serial(handles.PORT); guidata(hObject,handles); %setting hardware diperlukan set(komunikasi,'BaudRate',9600,'DataBits',8,'parity','none','StopBits',1,'FlowControl','none' ); %membuka port untuk komunikasi fopen(komunikasi); out=fscanf(komunikasi); out1=sprintf('%s',out); pause(0.5); if(out1==161) %proses inisialisasi webcam vid=videoinput('winvideo',1,'RGB24_320x240'); %proses capture gambar gambar=getsnapshot(vid); %proses merubah ke grayscale grey=rgb2gray(gambar); %proses merubah ke biner biner=im2bw(grey); %croping crop=imcrop(biner,[17.51 60.51 255.98 176.98]); %proses resizing y=imresize(crop,[16 16]); c=double(y); %menjumlahkan keseluruhan data=sum(sum(c)); %tampilkan pada axes axes(handles.axes1); imshow(crop); set(handles.edit6, 'string', ''); set(handles.edit5, 'string', data);
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI if ((data>=81)&&(data<=110)) set(handles.edit6, 'string', 'KUBUS'); kubus=kubus +1; set(handles.edit1, 'String', kubus); guidata(hObject,handles); fprintf(komunikasi,'a'); guidata(hObject,handles); elseif ((data>=111)&&(data<=140)) set(handles.edit6, 'string', 'BALOK'); balok=balok +1; set(handles.edit2, 'String', balok); guidata(hObject,handles); fprintf(komunikasi,'b'); guidata(hObject,handles); elseif ((data>=65)&&(data<=80)) set(handles.edit6, 'string', 'TABUNG'); tabung=tabung +1; set(handles.edit3, 'String', tabung); guidata(hObject,handles); fprintf(komunikasi,'c'); guidata(hObject,handles); elseif ((data>=42)&&(data<=64)) set(handles.edit6, 'string', 'BOLA'); bola=bola +1; set(handles.edit4, 'String', bola); guidata(hObject,handles); fprintf(komunikasi,'d'); guidata(hObject,handles); elseif (data<=30) set(handles.edit6, 'string', 'TIDAK TERDETEKSI'); fprintf(komunikasi,'e'); guidata(hObject,handles); end end fclose(komunikasi); delete(komunikasi) clear komunikasi clc; end % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
L21
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI global z global kubus global balok global tabung global bola z=0; kubus=0; balok=0; tabung=0; bola=0; set(handles.edit1, 'String', kubus); set(handles.edit2, 'String', balok); set(handles.edit3, 'String', tabung); set(handles.edit4, 'String', bola); % --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global z z=0; close all; clear all; function edit5_Callback(hObject, eventdata, handles) % hObject handle to edit5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit5 as text % str2double(get(hObject,'String')) returns contents of edit5 as a double % --- Executes during object creation, after setting all properties. function edit5_CreateFcn(hObject, eventdata, handles) % hObject handle to edit5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit6_Callback(hObject, eventdata, handles) % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
L22
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI % handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit6 as text % str2double(get(hObject,'String')) returns contents of edit6 as a double % --- Executes during object creation, after setting all properties. function edit6_CreateFcn(hObject, eventdata, handles) % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end 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) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end 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) % Hints: get(hObject,'String') returns contents of edit2 as text % str2double(get(hObject,'String')) returns contents of edit2 as a double % --- Executes during object creation, after setting all properties. function edit2_CreateFcn(hObject, eventdata, handles)
L23
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit3_Callback(hObject, eventdata, handles) % hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit3 as text % str2double(get(hObject,'String')) returns contents of edit3 as a double % --- Executes during object creation, after setting all properties. function edit3_CreateFcn(hObject, eventdata, handles) % hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end 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) % Hints: get(hObject,'String') returns contents of edit4 as text % str2double(get(hObject,'String')) returns contents of edit4 as a double % --- Executes during object creation, after setting all properties. function edit4_CreateFcn(hObject, eventdata, handles) % hObject handle to edit4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.
L24
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L25
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in popupmenu1. function popupmenu1_Callback(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu1 contents = get(hObject,'Value'); switch contents case 1 handles.PORT='COM1'; case 2 handles.PORT='COM2'; case 3 handles.PORT='COM3'; case 4 handles.PORT='COM4'; case 5 handles.PORT='COM5'; case 6 handles.PORT='COM6'; case 7 handles.PORT='COM7'; case 8 handles.PORT='COM8'; case 9 handles.PORT='COM9'; case 10 handles.PORT='COM10'; case 11 handles.PORT='COM11'; case 12 handles.PORT='COM12'; case 13 handles.PORT='COM13'; case 14 handles.PORT='COM14'; case 15 handles.PORT='COM15'; end guidata(hObject,handles); % --- Executes during object creation, after setting all properties.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L26
function popupmenu1_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end LISTING PROGRAM GUI MATLAB TANPA MENGGUNAKAN LOOPING function varargout = realtime(varargin) % REALTIME MATLAB code for realtime.fig % REALTIME, by itself, creates a new REALTIME or raises the existing % singleton*. % % H = REALTIME returns the handle to a new REALTIME or the handle to % the existing singleton*. % % REALTIME('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in REALTIME.M with the given input arguments. % % REALTIME('Property','Value',...) creates a new REALTIME or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before realtime_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to realtime_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help realtime % Last Modified by GUIDE v2.5 02-Jul-2015 18:45:25 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @realtime_OpeningFcn, ... 'gui_OutputFcn', @realtime_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:});
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI end % End initialization code - DO NOT EDIT % --- Executes just before realtime is made visible. function realtime_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to realtime (see VARARGIN) % Choose default command line output for realtime clc; cla; set(handles.edit1, 'String','0' ); set(handles.edit2, 'String','0'); set(handles.edit3, 'String','0' ); set(handles.edit4, 'String','0' ); set(handles.edit5, 'String','' ); set(handles.edit6, 'String','' ); handles.output = hObject; global kubus global balok global tabung global bola kubus=0; balok=0; tabung=0; bola=0; guidata(hObject,handles); % Update handles structure guidata(hObject, handles); % UIWAIT makes realtime wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = realtime_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) clc; global kubus global balok global tabung global bola guidata(hObject,handles); %proses inisialisasi webcam vid=videoinput('winvideo',1,'RGB24_320x240'); %proses capture gambar
L27
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI gambar=getsnapshot(vid); %proses merubah ke grayscale grey=rgb2gray(gambar); %proses merubah ke biner biner=im2bw(grey); %croping crop=imcrop(biner,[17.51 60.51 255.98 176.98]); %proses resizing y=imresize(crop,[16 16]); c=double(y); %menjumlahkan keseluruhan data=sum(sum(c)); %tampilkan pada axes axes(handles.axes1); imshow(crop); set(handles.edit6, 'string', ''); set(handles.edit5, 'string', data); if ((data>=83)&&(data<=110)) set(handles.edit6, 'string', 'KUBUS'); kubus=kubus +1; set(handles.edit1, 'String', kubus); guidata(hObject,handles); fprintf(komunikasi,'a'); guidata(hObject,handles); elseif ((data>=111)&&(data<=140)) set(handles.edit6, 'string', 'BALOK'); balok=balok +1; set(handles.edit2, 'String', balok); guidata(hObject,handles); fprintf(komunikasi,'b'); guidata(hObject,handles); elseif ((data>=65)&&(data<=82)) set(handles.edit6, 'string', 'TABUNG'); tabung=tabung +1; set(handles.edit3, 'String', tabung); guidata(hObject,handles); fprintf(komunikasi,'c'); guidata(hObject,handles); elseif ((data>=42)&&(data<=64)) set(handles.edit6, 'string', 'BOLA'); bola=bola +1; set(handles.edit4, 'String', bola); guidata(hObject,handles); fprintf(komunikasi,'d'); guidata(hObject,handles); elseif (data<=40) set(handles.edit6, 'string', 'TIDAK TERDETEKSI'); fprintf(komunikasi,'e'); guidata(hObject,handles); end % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO)
L28
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L29
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) cla; global kubus global balok global tabung global bola kubus=0; balok=0; tabung=0; bola=0; set(handles.edit1, 'String', kubus); set(handles.edit2, 'String', balok); set(handles.edit3, 'String', tabung); set(handles.edit4, 'String', bola); set(handles.edit6, 'string', ''); set(handles.edit5, 'string', ''); % --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close all; clear all; function edit5_Callback(hObject, eventdata, handles) % hObject handle to edit5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit5 as text % str2double(get(hObject,'String')) returns contents of edit5 as a double % --- Executes during object creation, after setting all properties. function edit5_CreateFcn(hObject, eventdata, handles) % hObject handle to edit5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit6_Callback(hObject, eventdata, handles) % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit6 as text % str2double(get(hObject,'String')) returns contents of edit6 as a double
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L30
% --- Executes during object creation, after setting all properties. function edit6_CreateFcn(hObject, eventdata, handles) % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end 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) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end 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) % Hints: get(hObject,'String') returns contents of edit2 as text % str2double(get(hObject,'String')) returns contents of edit2 as a double % --- Executes during object creation, after setting all properties. function edit2_CreateFcn(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L31
end function edit3_Callback(hObject, eventdata, handles) % hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit3 as text % str2double(get(hObject,'String')) returns contents of edit3 as a double % --- Executes during object creation, after setting all properties. function edit3_CreateFcn(hObject, eventdata, handles) % hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end 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) % Hints: get(hObject,'String') returns contents of edit4 as text % str2double(get(hObject,'String')) returns contents of edit4 as a double % --- Executes during object creation, after setting all properties. function edit4_CreateFcn(hObject, eventdata, handles) % hObject handle to edit4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in popupmenu1. function popupmenu1_Callback(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI contents = get(hObject,'Value'); switch contents case 1 handles.PORT='COM1'; case 2 handles.PORT='COM2'; case 3 handles.PORT='COM3'; case 4 handles.PORT='COM4'; case 5 handles.PORT='COM5'; case 6 handles.PORT='COM6'; case 7 handles.PORT='COM7'; case 8 handles.PORT='COM8'; case 9 handles.PORT='COM9'; case 10 handles.PORT='COM10'; case 11 handles.PORT='COM11'; case 12 handles.PORT='COM12'; case 13 handles.PORT='COM13'; case 14 handles.PORT='COM14'; case 15 handles.PORT='COM15'; end guidata(hObject,handles); % --- Executes during object creation, after setting all properties. function popupmenu1_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
L32