Pengujian Keberhasilan Sistem Mendeteksi Bentuk Benda

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 : VBerhasil XTidak 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.

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_adc0 yang artinya menggunakan PORTA.0 sebagai PORT masukan untuk mengubah tegangan analog menjadi tegangan digital. Pada bagian sensor= read_adc02 maksud dari pembagian 2 yaitu agar nilai desimal ADC maksimal yaitu 1023 dibagi 2 yaitu 511. Sehingga apabila 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

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 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 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