PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI TUGAS AKHIR
LENGAN ROBOT PENGGAMBAR BIDANG DUA DIMENSI BERBASIS MIKROKONTROLER DENGAN PC Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik Program Studi Teknik Elektro
Oleh: AGUSTINUS WELLY ADI NUGROHO NIM : 125114004
PROGRAM STUDI TEKNIK ELEKTRO JURUSAN TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2015
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI FINAL PROJECT
ARM ROBOT DRAFTMAN OF TWO DIMENSIONAL FIELD BASED MICROCONTROLLER WITH PC Presented as Partial Fullfillment of Requirements To Obtain the Sarjana Teknik Degree In Study Program of Electrical Engineering
By: AGUSTINUS WELLY ADI NUGROHO NIM : 125114004
ELECTRICAL ENGINEERING STUDY PROGRAM DEPARTMENT OF ELECTRICAL ENGINEERING FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2015
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP
MOTTO
The future depends on what we do in the present. Do the best! (Study, Pray and Work)
Dengan ini kupersembahkan karyaku ini untuk..... Tuhan Yesus Kristus Pembimbingku yang setia, Keluargaku dan Saudara-saudaraku yang tercinta, Teman-teman seperjuanganku, Dan semua orang yang mengasihiku
Terima Kasih untuk semuanya.......
vi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
INTISARI Robot menjadi pilihan untuk membantu pekerjaan manusia mengatasi masalah kepresisian, keamanan, fleksibilitas dan pekerjaan yang berulang-ulang. Lengan robot menjadi salah satu jenis robot yang dapat membantu pekerjaan manusia. Penelitian lengan robot ini untuk menggambar bidang 2D. Alat ini dibuat untuk memperagakan gerakan robot yang dikendalikan jarak jauh. Lengan robot ini menggunakan human machine interface (HMI) dari PC dan berbasis mikrokontroler Arduino Uno R3 sehingga menarik untuk dipelajari. Lengan robot dalam penelitian ini terdiri dari joint dan link dengan 4 Degree of Fredom (4DOF). Actuator lengan robot adalah motor RC servo. Lengan robot mendapat input dari PC dengan software Visual Basic 6.0. untuk menggambar bidang kotak, lingkaran dan segitiga dengan parameter dimensi. Data yang dikirim dari PC ke Arduino Uno R3 berupa pulsa-pulsa digital dengan komunikasi serial. Mikrokontroler membaca input data serial dan mengirim data berupa pulsa digital ke servo motor controller untuk menggerakkan motor RC servo melakukan proses menggambar bidang 2D. Hasil akhir dari penelitian lengan robot yang dilakukan secara point to point menghasilkan tingkat keberhasilan rata-rata lengan robot untuk menggambar bidang 2D secara berulang untuk menggambar kotak adalah 90% dan untuk menggambar segitiga adalah 73%. Sedangkan tingkat keberhasilan rata-rata lengan robot menuju ke titik posisi gambar kotak adalah 85%, titik posisi gambar segitiga 86% dan titik posisi gambar lingkaran (segi banyak) adalah 21%. Kata kunci :
Lengan Robot, Arduino Uno R3, bidang 2D, komunikasi serial
viii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
ABSTRACT Robot become a choice to help people to do their job to overcome the problem of accuracy, security, flexibility and repetitive. Arm Robot is a kind of robot that can help human works. Research arm robot to draw 2D field. This project is made to demonstrate the movement of the robot which is controlled remotely. This arm robot is using the human machine interface (HMI) from the PC and microcontroller-based Arduino Uno R3 so it’s interesting to learn. The arm robot in this research consists of joint and link with 4 Degree of Fredom (4DOF). The actuator of arm robot is RC servo motor. Input from the PC with Visual Basic6.0. to draw a field of squares, circles and triangles with dimensional parameters. The PC send data to Arduino Uno R3 in the digital pulses format with serial communication. The microcontroller reads the serial data input and send data digital pulses. The digital pulses are sent to the servo motor controller to drive RC servo motors in the process for drawing a 2D field. The final result from this research of arm robot using point to point movement is average success indication from arm robot for repetitive drawing square is 90% and for drawing triangle is 73%. Average success indication arm robot move to point position of square is 85%, move to point position of triangle is 86% and move to point position of circle (some angles) is 21%
Keywords : Arm Robot , Arduino Uno R3 , 2D field , serial communication
ix
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
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 LEMBAR PERNYATAAN PERSETUJAN KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS ....................................................................... vii INTISARI ......................................................................................................................... viii ABSTRACT ....................................................................................................................... ix KATA PENGANTAR ..................................................................................................... x DAFTAR ISI .................................................................................................................... xi DAFTAR GAMBAR ....................................................................................................... xiv DAFTAR TABEL ............................................................................................................ xvii DAFTAR PERSAMAAN ................................................................................................ xviii DAFTAR LAMPIRAN ................................................................................................... xix BAB I PENDAHULUAN 1.1. Latar Belekang.......................................................................................................... 1 1.2. Tujuan Penelitian ...................................................................................................... 3 1.3. Batasan Masalah ....................................................................................................... 3 1.4. Metodogi Penelitian.................................................................................................. 4 BAB II DASAR TEORI 2.1. Mikrokontroler ......................................................................................................... 6 2.1.1. Arduino Uno R3 ........................................................................................... 7 2.2. Software Arduinio .................................................................................................... 11 2.3. Visual Basic 6.0. ...................................................................................................... 12 2.4. Motor Servo (RC Servo) .......................................................................................... 14 2.5. Torsi .......................................................................................................................... 17
xi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
2.6. Adafruit 16-Channel 12-Bit PWM / Servo Shield – I2C Interface........................... 18 2.7. Komunikasi I2C ........................................................................................................ 18 2.8. Kinematika ............................................................................................................... 21
BAB III PERANCANGAN 3.1. Perancangan Perangkat Keras (Hardware) .............................................................. 27 3.1.1. Perancangan Mekanik Robot........................................................................ 28 3.1.1.1.
Pemodelan Mekanik .................................................................... 31
3.1.1.2.
Pemodelan Inverse Kinematik ..................................................... 37
3.1.2. Perancangan Rangkaian Elektrik Sistem Pengendali ................................... 47 3.2. Perancangan Perangkat Lunak (Software)................................................................ 48 3.2.1. Perangkat Lunak Sebagai Masukan Perintah dari Visual Basic 6.0 ............. 49 3.2.2. Perangkat Lunak Pengendali Motor RC Servo dengan Arduino IDE .......... 52
BAB IV HASIL DAN PEMBAHASAN 4.1. Hasil Perancangan Perangkat Keras ......................................................................... 55 4.1.1
Bentuk Mekanik Sistem Lengan Robot ....................................................
55
4.1.2
Komponen Elektrik Sistem Lengan Robot ...............................................
58
4.1.3
Pengujian Gerakan Mekanik Lengan Robot .............................................
59
4.2. Hasil Perancangan Perangkat Lunak (Software) ...................................................... 65 4.2.1 Pembahasan Program pada Software Visual Basic 6.0. ............................ 66 4.2.2 Pembahasan Program pada Software Arduino IDE. .................................. 70 4.3. Hasil Pengujian Gambar Bidang Dua Dimensi ........................................................ 74 4.3.1 Analisa Hasil Gambar Kotak ..................................................................... 75 4.3.2 Analisa Hasil Gambar Segitiga .................................................................. 76 4.3.3 Analisa Hasil Gambar Lingkaran............................................................... 78 4.3.4 Hasil Pengujian Tingkat Keberhasilan....................................................... 80
xii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB V KESIMPULAN DAN SARAN 5.1. Kesimpulan ............................................................................................................... 83 5.2. Saran ......................................................................................................................... 84 DAFTAR PUSTAKA ...................................................................................................... 85 LAMPIRAN ..................................................................................................................... 87
xiii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR GAMBAR Gambar 1.1. Blok diagram lengan robot penggambar bidang dua dimensi berbasis mikrokontroler dengan PC. ........................................................................ 4
Gambar 2.1. Tampilan Arduino Uno R3 ........................................................................ 7 Gambar 2.2. Alokasi Penempatan Pin Arduino Uno R3 ................................................ 9 Gambar 2.3. Tampilan Arduino Software (Arduino IDE) .............................................. 11 Gambar 2.4. Interface Visual Basic 6.0 .......................................................................... 13 Gambar 2.5. Tampilan jendela Components ................................................................... 14 Gambar 2.6. Motor Servo (RC Servo) ............................................................................ 15 Gambar 2.7. Konstruksi Motor Servo............................................................................. 15 Gambar 2.8. Pulsa Kendali Motor RC Servo.................................................................. 16 Gambar 2.9. Adafruit 16-Channel 12-Bit PWM / Servo Shield – I2C Interface ............. 18 Gambar 2.10 Sudut Joint 1............................................................................................... 22 Gambar 2.11. Konfigurasi Lengan Robot Satu Sendi ...................................................... 23 Gambar 2.12. Konfigurasi Lengan Robot Dua Sendi ....................................................... 24 Gambar 2.13. Konfigurasi Lengan Robot Tiga Sendi ....................................................... 26
Gambar 3.1. Sistem Blok Diagram Perangkat Keras (hardware) .................................. 29 Gambar 3.2. Sistem Blok Diagram Perangkat Keras (Hardware) dengan Sendi (Joint) Motor RC servo .............................................................................. 31 Gambar 3.3. Tampilan Keseluruhan Design 3D Lengan Robot ..................................... 32 Gambar 3.4. Tampilan Posisi Motor RC Servo pada Design Gambar 3D Lengan Robot .......................................................................................................... 33 Gambar 3.5. Tampilan End Effector Berupa Pointer dengan Spidol ............................. 34 Gambar 3.6. Tampilan 3 Sumbu Axis (X,Y,Z) dan Jarak Pangkal Lengan Robot (Shoulder) Menuju Papan Gambar ............................................................ 36 Gambar 3.7. Papan Gambar ............................................................................................ 37 Gambar 3.8. Ilustrasi Batasan Pergerakkan Lengan Robot (link) dengan Jangkauan Maksimal (Work space) yang Ditentukan................................ 38 Gambar 3.9. Rencana Gambaran Bidang 2 Dimensi yang akan Digambar Lengan Robot dengan Posisi Titik-titik End Effector ............................................. 38 xiv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 3.10. Prototype Lengan Robot Penggambar Bidang 2 Dimensi Tampak dari Atas ..................................................................................................... 39 Gambar 3.11. Penyederhanaan Prototype Lengan Robot dengan Analisa Geometri untuk Mencari θ1 , Tampak dari Atas (Sumbu X dan Sumbu Y).............. 39 Gambar 3.12. Prototype Lengan Robot Penggambar Bidang Dua Dimensi Tampak dari Samping pada Sumbu (X, Z) .............................................................. 41 Gambar 3.13. Penyederhanaan Prototype Lengan Robot Penggambar Bidang Dua Dimensi Tampak dari Samping pada Sumbu X, Y, Z untuk Analisa Geometri .................................................................................................... 41 Gambar 3.14. Analisa Geometri Prototype Lengan Robot Penggambar Bidang Dua Dimensi untuk Mencari θ2 dan θ3 .............................................................. 42 Gambar 3.15. Analisa Geometri Prototype Lengan Robot Penggambar Bidang Dua Dimensi untuk Mencari θ4. ........................................................................ 44 Gambar 3.16. Posisi Titik Referensi Sebagai Titik Awal Posisi Lengan Robot Sebelum Menggambar Kotak, Lingkaran dan Segitiga ............................. 45 Gambar 3.17. Rangkaian Elektrik Sistem Pengendali ...................................................... 47 Gambar 3.18. Diagram Alir Secara Umum Sistem Perangkat Lunak (Software) ............ 48 Gambar 3.19. Diagram Alir Sistem Secara Umum pada Visual Basic 6.0. ...................... 49 Gambar 3.20. Tampilan Rencana Antarmuka Program Menggambar Bidang 2D pada Software Visual Basic 6.0. di PC....................................................... 50 Gambar 3.21. Diagram Alir Program “Menggambar Bidang 2D atau Clear” pada Visual Basic 6.0. ........................................................................................ 51 Gambar 3.22. Diagram Alir Sistem Secara Umum pada Arduino IDE. ........................... 52 Gambar 3.23. Diagram Alir Program “menggambar bidang 2D” pada Arduino IDE. ............................................................................................................ 54
Gambar 4.1. Bentuk Mekanik Lengan Robot Penggambar Bidang Dua Dimensi ......... 55 Gambar 4.2. Bentuk Mekanik Lengan (Link) ................................................................. 56 Gambar 4.3. Posisi Motor RC Servo sebagai Persendian Lengan Robot (Joint) ........... 57 Gambar 4.4. Posisi Sudut-Sudut Lengan Robot ............................................................. 58 Gambar 4.5. Tampilan Rangkaian Elektrik Sistem Pengendali...................................... 58 Gambar 4.6. Cara Pengukuran Sudut Joint Menggunakan Busur Derajat ..................... 60 Gambar 4.7. Tampilan Antarmuka Visual Basic 6.0. ..................................................... 66 xv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 4.8. Tampilan Antarmuka Visual Basic 6.0. pada Pengisian Dimensi ............. 66 Gambar 4.9. Program Inisialisasi Variable dan Inisialisasi Kominukasi Serial pada Software Visual Basic 6.0.................................................................. 68 Gambar 4.10. Program Pemilihan Gambar Bidang 2D pada Software Visual Basic 6.0............................................................................................................... 69 Gambar 4.11. Eksekusi Program Utama Menggambar Bidang 2D pada Software Visual Basic 6.0. ........................................................................................ 69 Gambar 4.12. Running Program Utama ketika Menggambar Bidang 2D pada Software Visual Basic 6.0. ......................................................................... 70 Gambar 4.13. Tampilan Software Arduino IDE ............................................................... 70 Gambar 4.14. Program Inisialisasi pada Software Arduino IDE ...................................... 71 Gambar 4.15. Proses Menentukan Titik Koordinat Gambar dengan Serial Monitor pada Software Arduino IDE ....................................................................... 72 Gambar 4.16. Program Setting Posisi Awal pada Software Arduino IDE ........................ 72 Gambar 4.17. Program Pembacaan Data Serial dari Visual Basic 6.0. di PC dan Mikrokontroler Arduino Uno R3 (Komunikasi Serial).............................. 73 Gambar 4.18. Program Pengaturan Kecepatan Motor RC Servo secara Increment/ Decrement dan Pengiriman Pulsa Digital .................................................. 74 Gambar 4.19. Program Konfigurasi Register Data ........................................................... 74 Gambar 4.20. Gambar Kotak dari Gerakan Lengan Robot .............................................. 75 Gambar 4.21. Gambar Segitiga dari Gerakan Lengan Robot ........................................... 77 Gambar 4.22. Gambar Segi Banyak dari Gerakan Lengan Robot .................................... 79
xvi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
DAFTAR TABEL Tabel 2.1.
Keterangan Alokasi Penempatan Pin Arduino Uno R3 ....................................
Tabel 2.2.
Keterangan Tombol pada Tampilan Arduino IDE ........................................... 12
Tabel 3.1.
Keterangan Lengan Penghubung (link) ............................................................ 33
Tabel 3.2.
Tabel Rencana Batasan Gerakkan Lengan Robot untuk Menentukan (Work
7
space) Berdasarkan Putaran Motor Servo ........................................................ 38 Tabel 3.3.
Tabel Hasil Perhitungan Inverse Kinematics pada Beberapa Posisi yang Sudah Ditentukan Sebelumnya.................................................................................... 46
Tabel 4.1.
Spesifikasi Lengan Aktual pada Mekanik Lengan Robot (link) ...................... 56
Tabel 4.2.
Perhitungan Inverse Kinematics dengan Metode Geometri pada Titik Referensi Bidang 2 Dimensi ............................................................................................. 60
Tabel 4.3.
Hasil Pengujian Sudut-Sudut Joint Titik Referensi Gambar Bidang 2 Dimensi .......................................................................................................................... 61
Tabel 4.4.
Pengujian Kepresisian Gerakan Lengan Robot secara Horisontal ................... 62
Tabel 4.5.
Pengujian Kepresisian Gerakan Lengan Robot secara Vertikal....................... 62
Tabel 4.6.
Sudut-Sudut yang Ditentukan pada Titik Referensi Gambar Bidang 2 Dimensi dengan Forward Kinematics ............................................................................ 63
Tabel 4.7.
Hasil Pengujian Resolusi Gerakan Motor RC Servo di Setiap Joint dengan Mapping Pulsa .................................................................................................. 64
Tabel 4.8.
Analisa Gambar Kotak ..................................................................................... 76
Tabel 4.9.
Analisa Gambar Segitiga .................................................................................. 77
Tabel 4.10. Analisa Gambar Segi Banyak .......................................................................... 79 Tabel 4.11. Hasil Uji Tingkat Keberhasilan Lengan Robot Menggambar Bidang 2D secara Berulang ........................................................................................................... 81 Tabel 4.12. Hasil Analisa Tingkat Keberhasilan Gerakan Lengan Robot Menuju Posisi Titik Gambar Bidang 2D........................................................................................... 82
.
xvii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR PERSAMAAN
Persamaan 2.1 .................................................................................................................. 17 Persamaan 2.2 .................................................................................................................. 17 Persamaan 2.3 .................................................................................................................. 17 Persamaan 2.4 .................................................................................................................. 17 Persamaan 2.5 .................................................................................................................. 22 Persamaan 2.6 .................................................................................................................. 22 Persamaan 2.7 .................................................................................................................. 22 Persamaan 2.8 .................................................................................................................. 23 Persamaan 2.9 .................................................................................................................. 24 Persamaan 2.10 ................................................................................................................ 24 Persamaan 2.11 ................................................................................................................ 24 Persamaan 2.12 ................................................................................................................ 24 Persamaan 2.13 ................................................................................................................ 24 Persamaan 2.14 ................................................................................................................ 24 Persamaan 2.15 ................................................................................................................ 24 Persamaan 2.16 ................................................................................................................ 25 Persamaan 2.17 ................................................................................................................ 25 Persamaan 2.18 ................................................................................................................ 25 Persamaan 2.19 ................................................................................................................ 25 Persamaan 2.20 ................................................................................................................ 25 Persamaan 2.21 ................................................................................................................ 25 Persamaan 2.22 ................................................................................................................ 26 Persamaan 2.23 ................................................................................................................ 26 Persamaan 2.24 ................................................................................................................ 26
xviii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR LAMPIRAN L1.
Tabel Konversi Pulsa-Sudut (Mapping) dari Percobaan ........................................... L1
L2.
Listing Program Keseluruhan Pada Software Arduino IDE ...................................... L2
L3.
Listing Program Keseluruhan Pada Software Visual Basic 6.0................................. L3
L4.
Datasheet Adafruit 16-Channel Servo Driver with Arduino .................................. L4
L5.
Datasheet Servo Hitec HS-645MG.......................................................................... L5
L6.
Datasheet Hitec HS-805MG .................................................................................... L6
L7.
Datasheet TowerPro MG946R ................................................................................ L7
xix
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB 1 PENDAHULUAN 1.1
Latar Belakang Seiring dengan perkembangan teknologi yang semakin pesat, saat ini dunia
robotika juga mengalami perkembangan yang sangat pesat dalam berbagai bidang baik itu industri, seni, pendidikan, militer, medis dan lain sebagainya. Berbagai macam riset tentang robotika terus-menerus dikembangkan untuk menyempurnakan fungsi robot dalam membantu pekerjaan manusia. Definisi Robot sendiri adalah sebuah alat mekanik yang dapat melakukan tugas fisik, baik menggunakan pengawasan dan kontrol manusia, ataupun menggunakan program yang telah didefinisikan terlebih dulu (kecerdasan buatan) [1], sehingga berdasarkan definisi robot tersebut maka robot merupakan sebuah hasil sinergi antara beberapa disiplin ilmu yaitu mesin (mechanic), elektronika (electric) dan informatika (informatic). Salah satu jenis robot yang sudah banyak digunakan oleh manusia adalah robot manipulator. Manipulator merupakan bagian mekanik yang dapat difungsikan untuk memindah, mengangkat dan memanipulasi benda kerja. Secara umum struktur robot manipulator dapat dibedakan menurut sumbu koordinat yang digunakan yaitu cartesian, cylindrical, spherical, SCARA, articulated [2]. Robot manipulator dibuat menyerupai lengan manusia memiliki sifat fleksibel sehingga mudah digunakan untuk melakukan pekerjaan yang cepat, berat dan presisi. Robot manipulator (lengan robot) memiliki jumlah derajat kebebasan (degree of freedom/ DOF) tertentu untuk bergerak. Akhir-akhir ini pengunaan lengan robot di bidang industri semakin berkembang. Permasalahan yang sering terjadi di industri terhadap barang hasil kegiatan produksi adalah masalah kepresisian, kecepatan produksi, fleksibilitas dan keamanan (safety) di lingkungan kerja. Karyawan yang mengerjakan pekerjaan produksi rutin cenderung memiliki lebih banyak titik jenuh atau lelah sehingga berdampak pada penurunan jumlah hasil produksi dan kualitas barang yang dihasilkan. Oleh sebab itu, lengan robot menjadi salah satu pilihan solusi yang terbaik untuk mengatasi beberapa permasalahan di industri. Penggunaan lengan robot dapat meringankan beban pekerjaan karyawan karena dapat melakukan pekerjaan berat dengan lebih presisi, cepat, fleksibel, aman dan dapat
1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
2
melakukan pekerjaan berulang-ulang. Lengan robot juga dapat dikendalikan dari sebuah ruang pengendalian (control room) dengan memberikan perintah program. Lengan robot dapat bekerja secara otomatis setelah menerima perintah program, sehingga lengan robot dapat melakukan pekerjaan karyawan sehingga lengan robot dapat menjadi asisten produksi bagi karyawan di industri dan dapat menambah keuntungan bagi perusahaan. Berdasarkan paparan di atas mengenai lengan robot di industri penulis tertarik untuk membuat sebuah sistem otomasi yang dapat digunakan sebagai asisten karyawan dalam melakukan pekerjaan yang presisi, fleksibel, aman serta dapat melakukan pekerjaan yang berulang-ulang yaitu berupa sebuah prototype robot untuk menggambar bidang dua dimensi. Peneliti yang sudah pernah membuat prototype robot ini adalah Welly Anggoro dengan judul penelitian “Robot Penggambar Dua Dimensi”. Pada penelitian yang dilakukan sebelumnya, prototype robot yang dibuat adalah robot kartesian. Lengan robot ini memiliki 4 derajat kebebasan atau degree of freedom (4-DOF) yang terdiri dari 3 gerakan translasi dan 2 gerakan rotasi dan hanya dirancang untuk membuat sebuah gambar lingkaran dengan variasi ukuran [3]. Kofigurasi kartesian memiliki pergerakan pada sumbu X, Y dan Z. Robot kartesian memiliki bentuk perhitungan kinematik yang paling sederhana karena hanya konfigurasi linear [4]. Prototype robot yang akan dibuat oleh penulis berbeda dengan yang telah dibuat oleh peneliti sebelumnya. Penulis ingin membuat prototype robot penggambar bidang dua dimensi dengan sebuah manipulator robot berupa lengan robot yang memiliki 4 derajat kebebasan atau degree of freedom (4-DOF) di mana setiap joint (sendi) memiliki gerakan berputar atau rotasi dan dapat melakukan pergerakan pada sumbu X, Y dan Z. Konsep lain dari lengan robot yang akan dibuat yaitu lengan robot mampu membuat gambar bidang dua dimensi berupa kotak, lingkaran dan segitiga yang dapat diberi variasi ukuran yang berbeda-beda. Lengan robot ini bergerak dengan motor servo (RC servo) yang akan dikendalikan oleh mikrokontroler berupa Arduino Uno R3 sebagai kontroler yang terhubung dengan perangkat lunak visual basic pada personal computer (PC) sebagai masukan yang memberi perintah ke mikrokontroler.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 1.2
3
Tujuan Penelitian Tujuan dari penelitian ini secara umum
adalah
untuk menghasilkan suatu
prototype berupa lengan robot dengan penggerak motor RC servo dan berbasis mikrokontroler yang dapat dikendalikan dengan tampilan program dari Personal Computer (PC). Secara khusus penelitian ini bertujuan untuk memperagakan gerakan robot secara fleksibel, presisi, aman dan dapat melakukan pekerjaan secara berulang karena sudah diberi perintah melalui komputer dengan tampilan perangkat lunak yaitu human machine interface (HMI) untuk membuat gambar bidang dua dimensi tertentu yaitu kotak, lingkaran dan segitiga dengan variasi ukuran tertentu. Penelitian ini menghasilkan manfaat yang dapat membantu pekerjaan manusia pada kegiatan produksi karena lengan robot dapat melakukan pekerjaan jarak jauh yang fleksibel, presisi, aman, berulang-ulang serta memiliki pola tertentu seperti pada proses pengelasan, pengecatan, pemindah barang dan kegiatan otomasi industri yang lain.
1.3
Batasan Masalah Pembatasan masalah dimaksudkan untuk mempermudah pelaksanaan penelitian
maupun penulisan skripsi sehingga tidak terjadi kesalahan dalam menerjemahkan judul yang dimaksud. Batasan untuk penelitian ini adalah: a. Gambar bidang 2 dimensi yaitu hanya kotak, lingkaran dan segitiga sama sisi yang sudah ditentukan sebelumnya pada personal computer (PC) dengan menggunakan program perangkat lunak visual basic (VB) sebagai tampilan pemberi perintah. b. Manggunakan sebuah mikrokontroler yaitu Arduino Uno R3 sebagai kontroler lengan robot yang dikendalikan melalui PC. c. Mengunakan motor servo sebagai aktuator pada setiap joint (sendi) dan gripper (penjepit) sebagai end effector. d. Lengan robot dapat bergerak pada sumbu X, Y, dan Z. e. Lengan robot memiliki gerakan rotasi dan 4 derajat kebebasan atau Degree of Freedom (4-DOF). f. Mengunakan komunikasi serial antara PC dan mikrokontroler.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
4
1.4 Metodologi Penelitian Metodologi yang dignakan dalam penelitian ini adalah sebagai berikut: a. Studi literatur dan referensi, yaitu mempelajari buku-buku dan makalah-makalah dari pustaka yang berhubungan dengan mikrokontroler khususnya Arduino Uno R3, motor servo, software visual basic dan lengan robot. b. Studi kasus terhadap alat yang sudah pernah dibuat sebelumnya. Tahap ini dilakukan guna memahami prinsip kerja dari lengan robot. c. Menguji motor servo. Tahap ini dilakukan guna memahami prinsip kerja motor servo dan mengetahui karakter motor servo. d. Menguji rangkaian kendali dengan mikrokontroler Arduino Uno R3 dan servo motor controller. Tahap ini guna lebih memahami bahasa yang digunakan mikrokontroler Arduino Uno R3 dan servo motor controller agar lebih memahami cara kerja pengendalian lengan robot. e. Perancangan sistem hardware dan software. Tahap ini bertujuan untuk menentukan model yang optimal dan menentukan komponen-komponen suatu sistem yang akan dibuat dengan mempertimbangkan faktor-faktor permasalahan dan kebutuhan yang telah ditentukan.
Gambar 1.1. Blok diagram lengan robot penggambar bidang dua dimensi berbasis mikrokontroler dengan PC.
f. Pembuatan sistem hardware dan software. Tahap ini merupakan penerapan dari sistem yang telah dirancang sebelumnya yang meliputi pembuatan bentuk fisik (hardware)
dari
lengan
robot
dengan
merangkai
komponen-komponen
pendukungnya baik komponen mekanik maupun komponen elektrik. Dalam tahap ini pembuatan perangkat lunak (software) bertujuan untuk memberikan program sebagai kecerdasan buatan yang berguna untuk mengendalikan gerakan robot
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
5
sehingga robot dapat bergerak sesuai dengan program yang telah diberikan. Berdasarkan Gambar 1.1, software visual basic (VB) pada personal computer (PC) berguna untuk membuat masukan berupa perintah-perintah tombol dan dimensi yang dikehendaki kemudian dikirim dengan komunikasi serial pada bagian pengendali berupa mikrokontroler Arduino Uno R3 dan servo motor controller untuk diproses sesuai program yang telah diberikan. Selanjutnya bagian pengendali akan memberi perintah berupa pulsa untuk menggerakkan setiap motor RC servo yang dipasang pada lengan robot. g. Proses pengujian dan pengambilan data. Teknik pengujian dan pengambilan data dilakukan dengan cara menguji keseluruhan sistem berupa gerakan lengan robot yang telah diberi perintah melalui program yang dibuat pada visual basic (VB). Teknik pengujian dilakukan dengan menjalankan lengan robot yaitu menekan tombol berupa pilihan bentuk bidang dua dimensi yang akan digambar beserta dimensi yang diinginkan melalui program visual basic di PC. Program dari PC selanjutnya dikomunikasikan dengan bagian pengendali untuk diproses sesuai kecerdasan buatan yang telah ditanamkan sebelumnya untuk menggerakan motor servo pada lengan robot. Pengujian dilakukan untuk mengetahui kesesuaian antara gerakan robot dengan pilihan gambar pada program di PC. Teknik pengambilan data dilakukan untuk melihat bentuk bidang dua dimensi dan dimensi aktual yang berhasil digambar oleh lengan robot. Besarnya perbedaan dimensi antara dimensi yang dimasukkan pada PC dengan dimensi aktual hasil penggambaran oleh lengan robot ditulis dalam persentase error. h. Analisa dan kesimpulan hasil perancangan. Analisa data dilakukan berdasarkan kepresisian dan keakuratan hasil pola gambar bidang 2 dimensi yang digambar dengan gerakan lengan robot. Teknik analisis data dilakukan dengan membandingkan antara hasil gambar bidang 2 dimensi di papan gambar dari gerakan aktual lengan robot dengan perintah masukan bentuk bidang dua dimensi beserta variasi dimensinya yang ditentukan di PC. Berdasarkan hasil analisa data yang sudah diperoleh dapat dilakukan penarikan kesimpulan.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB II DASAR TEORI 2.1
Mikrokontroler Mikrokontroler adalah salah satu dari bagian dasar dari suatu sistem komputer.
Meskipun mempunyai bentuk yang jauh lebih kecil dari suatu komputer pribadi dan komputer mainframe, mikrokontroler dibangun dari elemen-elemen dasar yang sama. Secara sederhana, komputer akan menghasilkan output spesifik berdasarkan masukan yang diterima dan program yang dikerjakan. Seperti umumnya komputer, mikrokontroler adalah alat yang mengerjakan instruksi-instruksi yang diberikan. Artinya, bagian terpenting dan utama dari suatu sistem terkomputerisasi adalah program itu sendiri yang dibuat oleh seorang programer. Program ini menginstruksikan komputer untuk melakukan jalinan yang panjang dari aksi-aksi sederhana untuk melakukan tugas yang lebih kompleks yang diinginkan oleh programer[5]. Mikrokontroler digunakan untuk mengolah perintah berupa program yang telah dibuat sebelumnya dari sebuah masukan (input) menjadi keluaran (output) yang diinginkan. Input mikrokontroler dapat berupa tombol, sensor dan dapat juga berupa data komputer sedangkan output mikrokontroler dapat berupa lampu, motor dan solenoid. Mikrokontroler saat ini mengalami perkembangan yang sangat pesat baik dari bentuk, fungsi, dan kemampuannya sebagai kontroler. Perintah-perintah yang diberikan pada mikrokontroler untuk mengontrol sebuah sistem ditulis dalam bahasa pemrograman. Bahasa pemrograman yang sering digunakan pada mikrokontroler antara lain bahasa C, C++, basic, dan assembly. Penggunaan bahasa pemrograman disesuaikan dengan mikrokontroler yang digunakan. Pada penelitian ini, penulis menggunakan mikrokontroler Arduino. Arduino adalah sebuah platform elektronik yang open source. Arduino yang digunakan adalah Arduino Uno R3. Bahasa pemrograman yang digunakan oleh Arduino adalah bahasa C [5].
6
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
7
2.1.1. Arduino Uno R3
Gambar 2.1. Tampilan Arduino Uno R3
[1]
Arduino Uno R3 seperti Gambar 2.1. adalah board berbasis mikrokontroler pada ATMega 328. Board Arduino Uno R3 seperti yang ditunjukkan Gambar 2.2. memiliki 14 digital input / ouput pin (dimana 6 pin dapat digunakan sebagai ouput PWM), 6 input analog, 16 MHz osilator kristal, koneksi USB, jack listrik dan tombol reset. Pin – pin ini berisi semua yang diperlukan untuk mendukung mikrokontroler, hanya terhubung ke komputer dengan kabel USB atau sumber tekanan bisa didapat dari adaptor AC – DC atau baterai untuk menggunakannya (Arduino, Inc., 2009) [7]. Setiap digital pin pada board Arduino Uno R3 beroperasi pada tegangan 5 volt. Pin-pin digital tersebut juga memungkinkan dapat mengeluarkan atau menerima arus maksimal sebesar 40 mA dan memiliki internal pull-up resistor (yang terputus secara default) antara 20 – 50 Kohm [8]. Spesifikasi Arduino Uno R3 ditunjukkan pada alokasi penempatan pin-pin Arduino Uno R3 pada Tabel 2.1. Tabel 2.1. Keterangan Alokasi Penempatan Pin Arduino Uno R3 No.
Parameter
1
ATmega 328
2
Jack USB
3
Jack Adaptor
4
Tombol Reset
Keterangan IC mikrokontroler yang digunakan pada Arduino Uno R3. IC ATmega 328 memiliki flash memory 32 KB (dengan 0.5 KB digunakan untuk bootloader). ATmega 328 juga memiliki 2 KB SRAM dan 1 KB EEPROM yang dapat ditulis dan dibaca dengan EEPROM library [8]. Untuk komunikasi mikrokontroler dengan PC Masukan power eksternal bila Arduino bekerja mandiri (tanpa komunikasi dengan PC melalui kabel serial USB). Tombol reset internal yang digunakan untuk mereset modul
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
5 6 7 8
9
10
8
Arduino. Komunikasi Two Wire Interface (TWI) atau Inter Integrated SDA dan SCL Circuit (I2C) dengan menggunakan Wire library. GND = Pin ground dari regulator tegangan board Arduino. GND dan AREF AREF = Tegangan Referensi untuk input analog. Pin yang digunakan untuk menerima input digital dan memberi Pin Digital output berbentuk digital (0 dan 1 atau low dan high) Digunakan untuk menerima dan mengirimkan data serial TTL (Receiver (Rx), Transmitter (Tx)). Pin 0 dan 1 sudah terhubung Pin Serial kepada pin serial USB to TTL sesuai dengan pin ATmega. Vin = Masukan tegangan input bagi Arduino ketika menggunakan dumber daya eksternal. 5 V = Sumber tegangan yang dihasilkan regulator internal board Arduino. 3,3 V = Sumber tegangan yang dihasilkan regulator Pin Power internal board Arduino. Arus maksimal pada pin ini adalah 50 mA. GND = Pin ground dari regulator tegangan board Arduino. IOREF = Tegangan Referensi. Menerima input dari perangkat analog lainnya. Pin Analog In Arduino Uno R3 berbeda dengan semua board sebelumnya karena Arduino Uno
R3 ini tidak menggunakan chip driver FTDI USB-to-serial. Melainkan menggunakan fitur dari ATMega 16U2 yang diprogram sebagai konverter USB-to-serial [7]. Board Arduino Uno memiliki fitur – fitur baru seperti pada Tabel 2.1., yaitu: a. Pin out : menambahkan SDA dan SCL pin yang deket ke pin AREF dan dua pin baru lainnya ditempatkan dekat ke pin RESET, dengan I/O REF yang memungkinkan sebagai buffer untuk beradaptasi dengan tegangan yang disediakan dari board sistem. Pengembangannya, sistem akan lebih kompatibel dengan prosesor yang menggunakan AVR, yang beroperasi dengan 5V dan dengan Arduino karena beroperasi dengan 3,3V. Yang kedua adalah pin yang tidak terhubung, yang disediakan untuk tujuan pengembangannya. b. Sirkuit reset. c. ATMega 16U2 ganti 8U yang digunakan sebagai konverter USB-to-serial. Board Arduino Uno R3 dapat beroperasi pada pasokan daya dari 6 – 20 volt. Jika diberikan dengan kurang dari 7V, bagaimanapun pin 5V dapat menyuplai kurang dari 5
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
9
volt dan board mungkin tidak stabil. Jika menggunakan lebih dari 12V, regulator bisa panas dan merusak board. Rentang yang dianjurkan adalah 7V – 12V. Selain itu, beberapa pin memiliki fungsi khusus : a. Serial : 0 (RX) dan 1 (TX). Digunakan untuk menerima (RX) dan mengirim (TX) data TTL serial. Pin ini terhubung ke pin yang sesuai dari chip ATMega8U2 USBto-Serial TTL. b. Eksternal Interupsi : 2 dan 3. Pin ini dapat dapat dikonfigurasi untuk memicu interupsi pada nilai yang rendah, tepi naik atau jatuh, atau perubahan nilai. Lihat attchInterrupt() fungsi untuk rincian. c. PWM : 3,5,6,9,10, dan 11. Menyediakan 8-bit output PWM dengan fungsi analogWrite(). d. SPI : 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Pin ini mendukung komunikasi SPI menggunakan library SPI. SPI (Serial Peripheral Interface) adalah sebuah sinkronisasi serial data protocol yang digunakan oleh mikrokontroler untuk melakukan komunikasi dengan satu atau lebih peripheral device secara cepat berjarak pendek. SPI dapat juga digunakan untuk melakukan komunikasi antara dua mikrokontroler. e. LED : 13. Ada built-in LED terhubung ke pin digital 13. Ketika pin adalah nilai TINGGI, LED menyala, ketika pin adalah RENDAH, LED off.
Gambar 2.2. Alokasi Penempatan Pin Arduino Uno R3 [2]
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
10
Arduino Uno R3 seperti ditunjukkan Gambar 2.2. memiliki 6 input analog diberi label A0 sampai A5, masing – masing menyediakan 10-bit resolusi (yaitu 1024 nilai yang berbeda). Secara default sistem mengukur dari ground sampai 5 volt, meskipun mungkin untuk mengubah ujung atas rentang mengunakan pin AREF dan fungsi analogReference(). Selain itu, beberapa pin memiliki fungsi khusus : a. TWI : A4 atau SDA pin dan A5 atau SCL pin. Mendukung komunikasi TWI menggunakan wire library. b. AREF
:
Referensi
tegangan
untuk
input
analog.
Digunakan
dengan
analogReference() . c. RESET : memberikan logika LOW untuk mereset mikrokontroler [8]. Komunikasi Arduino Uno R3 memiliki sejumlah fasilitas untuk berkomunikasi dengan komputer, arduino lain, atau mikrokontroler lainnya. ATmega328 menyediakan UART TTL (5V) komunikasi serial, yang tersedia di pin digital 0 (RX) dan 1 (TX). Sebuah ATmega16U2 pada board ini komunikasi serial melalui USB dan muncul sebagai com port virtual untuk perangkat lunak pada komputer. Firmware '16U2 menggunakan USB driver standar COM, dan tidak ada driver eksternal yang diperlukan. Namun, pada Windows, file. Inf diperlukan. Perangkat lunak Arduino termasuk monitor serial yang memungkinkan data sederhana yang akan dikirim ke board Arduino. RX dan TX di board LED akan berkedip ketika data sedang dikirim melalui chip USB-to-serial dan koneksi USB ke komputer (tetapi tidak untuk komunikasi serial pada pin 0 dan 1). Fungsi ini digunakan untuk melakukan komunikasi interface pada sistem. ATmega328 juga mendukung komunikasi I2C (TWI) dan SPI [7]. Setiap IC mikrokontroler memiliki EEPROM yang merupakan memori yang nilainya tersimpan ketika IC mikrokontroler non aktifkan (seperti hard drive kecil). Sistem penyimpanan ini memungkinkan untuk melakukan pembacaan atau menulis dalam satuan byte. Setiap IC mikrokontroler memiliki kapasitas EEPROM yang berbeda. Pada IC mikokontroler ATmega 328 yang terdapat pada Arduino Uno R3 memiliki EEPROM sebesar 1024 byte [8].
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2.2
11
Software Arduino Menulis program di Arduino dilakukan dengan Arduino IDE, yaitu software yang
beroperasi di komputer. Menurut situs http://www.arduino.cc perangkat lunak disebut sebagai Arduino Software [9]. Software ini tersedia untuk platform Windows, Mac OS X, dan Linux. Software Arduino IDE bermanfaat untuk menuliskan kode untuk mengontrol Arduino Uno dan mengirimkan hasil kompilasi ke papan Arduino Uno [10]. Lingkungan Arduino yang open source memungkinkan untuk menulis (write) dan mengunggah (upload) program pada Arduino. Arduino dapat diprogram pada sistem operasi komputer berbasis Windows, Mac OS X, dan Linux. Bahasa pemrogramannya dapat ditulis di Java, avr-gcc dan perangakat lunak yang berbasis open source lainnya [9]. IDE Arduino membutuhkan beberapa pengaturan yang digunakan untuk mendeteksi board Arduino yang sudah dihubungkan ke komputer. Beberapa pengaturan tersebut adalah mengatur jenis board yang digunakan sesuai dengan board yang terpasang dan mengatur jalur komunikasi data melalui perintah Serial Port. Kedua pengaturan tersebut dapat ditemukan pada pull down menu Tools [9]. Tampilan jendela Arduino IDE ditunjukkan pada Gambar 2.3. seperti berikut ini:
Gambar 2.3. Tampilan Arduino Software (Arduino IDE) Keterangan mengenai simbol-simbol (icon) yang terdapat pada jendela Arduino IDE dijelaskan pada Tabel 2.2. sebagai berikut:
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
12
Tabel 2.2. Keterangan Tombol pada Tampilan Arduino IDE No.
Tombol
Nama
Fungsi
1
Verify
Menguji apakah ada kesalahan pada program atau sketch. Apabila sketch sudah benar, maka sketch tersebut akan dikompilasi. Kompilasi adalah proses mengubah kode program ke dalam kode mesin.
2
Upload
Mengirimkan kode mesin hasil kompilasi ke board Arduino
3
New
Membuat sketch yang baru
4
Open
Membuka sketch yang sudah ada
5
Save
Menyimpan sketch
6
Serial Monitor
Menampilkan data yang dikirim dan diterima melalui komunikasi serial.
Tugas dari Arduino Software adalah menghasilkan sebuah file berformat hex yang akan di-download pada papan Arduino atau papan sistem mikrokontroler lainnya. Ini mirip dengan Microsoft Visual Studio, Eclipse IDE, atau Netbeans. Lebih mirip lagi adalah IDE semacam Code::Blocks, CodeLite atau Anjuta yang mempermudah untuk menghasilkan file program. Bedanya kesemua IDE tersebut menghasilkan program dari kode bahasa C (dengan GNU GCC) sedangkan Arduino Software (Arduino IDE) menghasilkan file hex dari baris kode yang dinamakan sketch [9]. Sketch adalah nama dari program yang ditulis pada Arduino Software, kemudian sketch merupakan kesatuan dari kode program yang akan di-upload dan dijalankan pada papan Arduino. Pada umumnya sketch yang dibuat di Arduino Software di-compile dengan perintah verify / Compile (Ctrl+R) lalu hasilnya di-download ke papan Arduino seperti Arduino Uno R3. Program hasil kompilasi itu lalu dijalankan oleh bootloader. Semua papan Arduino memiliki perangkat lunak yang dinamakan bootloader [9].
2.3
Visual Basic 6.0. Microsoft Visual Basic 6.0, biasa dikenal dengan VB6.0, merupakan sebuah bahasa
pemrograman berbahasa tingkat tinggi yang disertai visualisasi tampilan Windows di dalamnya. Sesuai dengan namanya, aplikasi ini hanya bekerja di dalam sistem operasi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
13
keluaran Microsoft saja. VB6.0 mulai dikenal banyak orang karena bahasa pemrograman dan GUI (Graphical User Interface) yang disediakan cukup memudahkan seorang pemula dalam membuat sebuah program berbasis Windows. Pembuatan program aplikasi menggunakan Visual Basic 6.0. dilakukan dengan membuat tampilan aplikasi pada form, kemudian diberi script program di dalam komponen-komponen yang diperlukan. Form disusun oleh komponen-komponen yang berada di Toolbox, dan setiap komponen yang dipakai harus diatur propertinya lewat jendela Property. Menu pada dasarnya adalah operasional standar di dalam sistem operasi Windows, seperti membuat form baru, membuat project baru, membuka project dan menyimpan project. Di samping itu terdapat fasilitas-fasilitas pemakaian visual basic pada menu. Untuk lebih jelasnya Visual Basic menyediakan bantuan yang sangat lengkap dan detail dalam MSDN. Interface (antar muka) Visual Basic 6.0, berisi menu, toolbar, toolbox, form, project explorer dan property seperti terlihat pada Gambar 2.4. [11]:
Gambar 2.4. Interface Visual Basic 6.0
[3]
Komunikasi serial pada VB6.0. Meskipun ringan dan sederhana, aplikasi perangkat lunak ini sudah cukup mumpuni untuk digunakan sebagai sebuah antarmuka antara komputer dengan perangkat
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
14
kontrol elektronik seperti PLC. Untuk dapat berkomunikasi dengan dunia luar, VB6.0 sudah dilengkapi dengan fasilitas MS Comm Control 6.0. MS Comm Control ini berfungsi untuk mengakomodir jalanya komunikasi dan transfer data dari komputer ke peralatan elektronik berprosesor ataupun sebaliknya. Untuk mengaktifkan fungsi Ms Comm Control pada VB6.0 pertama kali harus membuat projectnya dahulu dengan cara masuk ke File >> “New Project”. Kemudian pergi ke Menu “Project” >> “Components”. Sesaat setelah itu seharusnya ada menemui layar seperti ditunjukkan Gambar 2.5. dibawah ini [12].
Gambar 2.5. Tampilan jendela Components
[4]
Microsoft Comm Control 6.0 ini berfungsi untuk : 1. Mengadakan hubungan dengan serial port PC. 2. Berhubungan dengan alat komunikasi lain (contoh : modem). 3. Melakukan pertukaran data. 4. Memonitor dan merespon event dan error yang terjadi pada hubungan serial. Sambungan komunikasi serial antara 2 peralatan (PC-IED atau PC-PC), harus dilakukan dengan langkah – langkah sebagai berikut: 1. Membuka serial port. 2. Mengatur serial device. 3. Setting Receive and Transmit Buffer Properties. 4. Managing Receive and Transmit Buffer
[12].
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2.4
15
Motor Servo (RC Servo) Motor RC servo adalah sebuah motor DC yang dilengkapi rangkaian kendali
dengan sistem closed feedback yang terintegrasi dalam motor tersebut. Pada Gambar 2.6 menunjukkan bentuk dari motor RC servo. Pada motor RC servo posisi putaran sumbu (axis) dari motor akan diinformasikan kembali ke rangkaian kontrol yang ada di dalam motor RC servo [13].
Gambar 2.6. Motor Servo (RC Servo) [5] Motor RC servo disusun dari sebuah motor DC, gearbox, variabel resistor (VR) atau potensiometer dan rangkaian kontrol seperti ditunjukkan Gambar 2.7. Potensiometer berfungsi untuk menentukan batas maksimum putaran sumbu (axis) motor RC servo. Sedangkan sudut dari sumbu motor RC servo diatur berdasarkan lebar pulsa yang pada pin kontrol motor RC servo [13].
Gambar 2.7. Konstruksi Motor Servo [6] Motor servo adalah motor yang mampu bekerja dua arah (CW dan CCW) dimana arah dan sudut pergerakan rotornya dapat dikendalikan dengan memberikan variasi lebar pulsa (duty cycle) sinyal PWM pada bagian pin kontrolnya.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
16
Jenis-jenis motor servo: 1. Motor Servo Standar Motor servo jenis ini hanya mampu bergerak dua arah (CW dan CCW) dengan defleksi masing-masing sudut mencapai 90° sehingga total defleksi sudut dari kanan – tengah – kiri adalah 180°. 2. Motor Servo Continuous Motor servo jenis ini mampu bergerak dua arah (CW dan CCW) tanpa batasan defleksi sudut putar (dapat berputar secara kontinyu). Pulsa Kontrol Motor RC Servo Gambar 2.8. menunjukkan operasional motor RC servo berdasarkan lebar pulsa. Operasional motor RC servo dikendalikan oleh sebuah pulsa selebar ± 20 ms, dimana lebar pulsa antara 0,5 ms dan 2 ms menyatakan akhir dari range sudut maksimum. Apabila motor RC servo diberikan pulsa dengan besar 1,5 ms mencapai gerakan 90°, maka bila kita berikan pulsa kurang dari 1,5 ms maka posisi mendekati 0° dan bila kita berikan pulsa lebih dari 1,5 ms maka posisi mendekati 180°
[13].
Gambar 2.8. Pulsa Kendali Motor RC Servo [7] Motor RC servo akan bekerja secara baik jika pada bagian pin kontrolnya diberikan sinyal PWM dengan frekuensi 50 Hz. Dimana pada saat sinyal dengan frekuensi 50 Hz tersebut dicapai pada kondisi Ton duty cycle 1,5 ms, maka rotor dari motor akan berhenti tepat di tengah-tengah (sudut 0°/ netral).
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
17
Pada saat Ton duty cycle dari sinyal yang diberikan kurang dari 1,5 ms, maka rotor akan berputar ke berlawanan arah jarum jam (Counter Clock Wise atau CCW) dengan membentuk sudut yang besarnya linier terhadap besarnya Ton duty cycle, dan akan bertahan diposisi tersebut. Dan sebaliknya, jika Ton duty cycle dari sinyal yang diberikan lebih dari 1,5 ms, maka rotor akan berputar searah jarum jam (Clock Wise atau CW) dengan membentuk sudut yang linier pula terhadap besarnya Ton duty cycle, dan bertahan diposisi tersebut [13].
2.5
Torsi Perhitungan torsi tergantung pada panjang link dari lengan robot dan berat suatu
benda. Torsi didefinisikan sebagai mengubah atau memutar kekuatan dan dihitung menggunakan hubungan berikut [14]:
Torsi (τ) = Gaya (F) x Panjang lengan (L) =
(2 - 1)
Dimana F merupakan gaya berat (W),
= =
(2 - 2) (2 - 3)
Sehingga,
=
(2 - 4)
Kecepatan motor tergantung pada model motor servo. Semakin besar daya yang akan digunakan mampu mengangkat beban dengan cepat. Model yang berbeda dari motor servo memiliki torsi yang berbeda dan kemampuan untuk mengangkat beban berat tergantung dari model motor servo tersebut. Hasil dari perhitungan torsi akan membantu dalam pemilihan motor servo yang cocok digunakan untuk mengangkat beban yang spesifik [14].
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2.6
18
Adafruit 16-Channel 12-Bit PWM / Servo Shield – I2C Interface
Gambar 2.9. Adafruit 16-Channel 12-Bit PWM / Servo Shield – I2C Interface [8] Adafruit 16-Channel 12-Bit PWM / Servo Shield – I2C Interface seperti ditunjukkan pada Gambar 2.9, merupakan modul pengendali motor servo yang dapat mengendalikan hingga 16 motor servo pada setiap board shield. Servo shield ini memiliki 6 alamat yang berbeda untuk mengontrol gerakan motor servo sehingga dapat di cascade hingga 62 board dan dapat mengendalikan 992 motor servo secara bersamaan. Selain itu servo shield ini menggunakan antar muka komunikasi I2C untuk mengkontrol gerakan motor servo. Komunikasi I2C menggunakan 2 buah port komunikasi yaitu SDA ( Serial Data ) dan SCL ( Serial Clock Line ). Untuk mengantur clock pengiriman data menggunakan TLC5940 sehingga tidak perlu mengaktifkan clock secara terus menerus saat pengiriman data. Power supply untuk driver dengan motor servo terpisah. Power supply untuk driver servo langsung terhubung dengan arduino, sedangkan power supply untuk motor servo dihubungkan dengan menyambungkan kabel dari luar dan memiliki tegangan 5 VDC 2A. Serta terdapat pengaman pada konektor untuk power supply motor servo apabila terjadi kesalahan pada saat menyambungkan sehingga polaritasnya terbalik [15].
2.7
Komunikasi I2C Bus adalah sistem pengantar yang dilengkapi dengan komponen pengendali untuk
melayani pertukaran data antara komponen hardware satu dengan komponen hardware lainnya. Pada sistem mikrokontroler terdapat bus Data, bus Alamat, dan beberapa pengantar pengendali. Semakin tinggi frekuensi clock prosesor, maka semakin lebih cermat
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
19
pengembang untuk memperhatikan timing dari seluruh komponen yang terlibat, agar tidak terjadi kesalahan dalam transaksi data [16]. Bus yang cukup sering digunakan adalah bus bersifat paralel. Transaksi data yang dilakukan secara paralel menjadi pilihan karena transaksi data dapat lebih cepat. Jika sistem relatif tidak membutuhkan transaksi yang cepat, maka penggunaan serial bus menjadi pilihan. Salah satu pilihan sistem data serial bus yang sering digunakan adalah I2C (Inter Integrated Circuit). I2C merupakan serial bus dengan orientasi data 8 bit (byte). Sistem bus I2C pertama kali diperkenalkan oleh Firma Philips pada tahun 1979. Karakter I2C : 1. Serial bus data dikirim serial secara per-bit. 2. Menggunakan 2 penghantar koneksi dengan ground bersama I2C terdiri dari dua penghantar :
SCL (Serial Clock Line) untuk menghantarkan sinyal clock.
SDA (Serial Data) untuk mentransaksikan data
3. Jumlah peserta bus maximal 127 peserta dialamatkan melalui 7-bit-alamat. Alamat ditetapkan kebanyakan secara hardware dan hanya sebagian kecil dapat dirubah. 4. Pengirim dan penerima setiap transaksi data terjadi antara pengirim (Transmitter) dan penerima (Receiver). Pengirim dan penerima adalah peserta bus. 5. Master dan slave device yang mengendalikan operasi transfer disebut master, sementara device yang di kendalikan oleh master di sebut slave. Aturan Komunikasi I2C : 1. I2C adalah protokol transfer data serial. Device atau komponen yang mengirim data disebut transmitter, sedangkan device yang menerimanya disebut receiver. 2. Device yang mengendalikan operasi transfer data disebut master, sedangkan device lainnya yang dikendalikan oleh master disebut slave.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
20
3. Master device harus menghasilkan serial clock melalui pin SCL, mengendalikan akses ke bus serial dan menghasilkan sinyal kendali START dan STOP. Definisi-definisi kondisi bus : 1. Bus not busy: Pada saat ini Bus tidak sibuk, SCL dan SDA dua-duanya dalam keadaan HIGH. 2. Start data transfer : Ditandai dengan perubahan kondisi SDA dari HIGH ke LOW ketika SCL HIGH. 3. Stop data transfer : Ditandai dengan perubahan kondisi SDA dari LOW ke HIGH ketika SCL HIGH. 4. Data valid: Data yang dikirim bit demi bit dianggap valid jika setelah START, kondisi SDA tidak berubah selama SCL HIGH, baik SDA HIGH maupun SDA LOW tergantung dari bit yang ingin ditransfer. Setiap siklus HIGH SCL baru menandakan pengiriman bit baru. Duty cycle untuk SCL tidak mesti 50%, tetapi frekuensi kemunculannya hanya ada 2 macam, yaitu mode standar 100kHz dan fast mode atau mode cepat 400kHz. Setelah SCL mengirimkan sinyal HIGH yang kedelapan, arah transfer SDA berubah, sinyal kesembilan pada SDA ini dianggap sebagai acknowledge dari receiver ke transmitter. 5. Acknowledge: Setiap receiver wajib mengirimkan sinyal acknowledge atau sinyal balasan setiap selesai pengiriman 1-byte atau 8-bit data. Master harus memberikan ekstra clock pada SCL, yaitu clock kesembilan untuk memberikan kesempatan receiver mengirimkan sinyal acknowledge ke transmitter berupa keadaan LOW pada SDA selama SCL HIGH. Meskipun master berperan sebagai receiver, ia tetap sebagai penentu sinyal STOP. Pada bit-akhir penerimaan byte terakhir, master tidak mengirimkan sinyal acknowledge, SDA dibiarkan HIGH oleh receiver dalam hal ini master, kemudian master mengubah SDA dari LOW menjadi HIGH yang berarti sinyal STOP.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
21
Mode pengoperasian transfer data (tergantung kondisi bit R/W, 2 jenis transfer dimungkinkan), yaitu : 1.
Pengiriman data dari master transmitter ke slave receiver. Byte pertama yang dikirimkan oleh master adalah alamat slave, setelah itu master mengirimkan sejumlah byte data. Slave atau receiver mengirimkan sinyal acknowledge setiap kali menerima 1-byte data. Pada tiap byte, bit pertama yang dikirim adalah MSB.
2.
Pengiriman data dari slave transmitter ke master receiver. Meskipun master berperan sebagai receiver, byte pertama dikirimkan oleh master berupa alamat slave. Setelah itu slave mengirimkan bit acknowledge, dilanjutkan dengan pengiriman sejumlah byte dari slave ke master. Master mengirimkan bit acknowledge untuk setiap byte yang diterimanya, kecuali byte terakhir. Pada akhir byte, master mengirimkan sinyal ‘not acknowledge’, setelah itu master mengirimkan sinyal STOP [16].
2.8
Kinematika Fu, K. S., R. C. Gonzales,C. S. G. Lee (1987). Robotics: Control, Sensing, Vision,
and Intelligence, 1st edition mengatakan bahwa, “Kinematika adalah ilmu tentang gerak tanpa memperhatikan penyebabnya salah satunya adalah gaya yang mempengaruhinya, berhubungan dengan geometri dari gerakan. Dalam mengkaji kinematik perlu dilakukan deskripsi analisis dari penempatan posisi secara spasial dari lengan robot sebagai sebuah fungsi waktu. Secara garis besar, kinematika ini membahas tentang hubungan antara derajat kebebasan masing masing joint, posisi, serta orientasi dari end-effector pada lengan robot”. Terdapat dua topik pembahasan mendasar pada kinematik lengan robot. Yang pertama adalah Direct (atau forward) Kinematics. Dan yang kedua adalah Inverse Kinematics (atau arm solution). Inverse kinematics akan lebih sering digunakan dalam pembuatan lengan robot karena pada penggunaan robot secara real, pengaturan joint-joint tidak lagi diutamakan [17]. Fokus utama inverse kinematics adalah bagaimana end-effector mencapai posisi objek dengan baik berdasarkan peletakan referensi koordinat frame yang sudah ditentukan [18].
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
22
Salah satu metode pendekatan untuk menyelesaikan permasalahan inverse kinematics yaitu pendekatan geometri. Penyelesaian dengan pendekatan geometri dicari dengan menerapkan ilmu geometri dan hukum trigonometri. Contoh mencari sudut pada joint 1 seperti pada Gambar 2.10:
Gambar 2.10. Sudut Joint 1 [9] Untuk mencari θi bisa menggunakan ilmu geometri, sehingga didapatkan : P
sin θ =
(2 - 5)
P +P +P
P +P
(2 - 6)
cos θ = P +P +P
θ = tan (
sin θ ) cos θ
(2 - 7)
Penyelesaian permasalahan inverse kinematic dengan pendekatan geometri merupakan cara paling dasar untuk menyelesaikan permasalahan inverse kinematics. Penyelesaian permasalahan inverse kinematics dengan metode geometri akan sangat menguntungkan bila pengetahuan tentang area jangkauan (workspace), struktur joint dan link robot tersedia,
atau dengan memodelkan struktur joint dalam bangun geometri
sederhana seperti lingkaran, bola atau silinder. Tetapi jika setiap struktur joint berbeda, apalagi jika strukturnya kompleks maka metode ini tidak dapat digunakan [18].
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
23
Menurut referensi dari buku Endra Pitowarno, (2006), Robotika Desain, Kontrol dan Kecerdasan Buatan juga mengatakan bahwa “analisis persamaan kinematik dapat diselesaikan dengan cara yang paling dasar yaitu menggunakan persamaan trigonometri. Setiap komponen dalam koordinat (X,Y,Z) dinyatakan sebagai transformasi dari tiap-tiap komponen ruang sendi (r, θ). Jari-jari r dalam persamaan sering ditulis sebagai panjang lengan atau link (l)” [2]. Pendekatan yang digunakan Endra Pitowarno dalam menganalisis permasalahan inverse kinematics pada persamaan kinematik lengan robot juga menggunakan metode geometri yang ditulis berdasarkan hukum trigonometri. Penyelesaian masalah inverse kinematics berdasarkan pendekatan geometri dapat digunakan untuk analisis lengan robot satu sendi hingga tiga sendi. Kinematik Robot Tangan Satu Sendi.
Gambar 2.11. Konfigurasi Lengan Robot Satu Sendi [10] Persamaan inverse kinematics dari lengan robot satu sendi pada Gambar 2.11. diselesaikan dengan menentukan kedudukan ujung lengan P(x, y) terlebih dahulu sehingga besarnya sudut θ dapat dihitung dengan cara [2]: =
(2 - 8)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
24
Kinematik Robot Tangan Dua Sendi.
Gambar 2.12. Konfigurasi Lengan Robot Dua Sendi
[11]
Inverse kinematics lengan robot dua sendi pada Gambar 2.12. dapat dijabarkan menggunakan hukum identitas trigonometri secara forward kinematcs [2]: =
cos
+
cos (
+
)
(2 - 9)
=
+ sin (
+
)
(2 - 10)
Identitas trigonometri: cos( + ) = cos( ) cos( ) − sin( ) sin ( )
(2 - 11)
sin( + ) = sin( ) cos( ) + sin( ) cos ( )
(2 - 12)
Persamaan (2 - 11) dan (2 - 12) dapat ditulis kembali, =
cos( ) + cos( ) cos( ) −
sin( ) sin ( )
(2 - 13)
=
sin( ) + sin( ) cos( ) +
cos( ) sin ( )
(2 - 14)
Dari dua persamaan terakhir dapat dicari θ2 dengan terlebih dahulu dengan mengeluarkan cos θ2 dari kedua persamaan. Dengan operasi pangkat dua pada keduanya dan dikombinasikan sehingga didapat [2]:
=
(2 - 15)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
25
Sehingga,
= cos
(2 - 16)
Sedangkan sudut θ1 dapat dicari melalui,
tan
=
tan
dan
=
(2 - 17)
sedangakan
=
−
(2 - 18)
Dengan menggunakan identitas trigonometri, ( )
tan( − ) =
( )
( )
(2 - 19)
( )
didapatkan,
tan
=
(
) .
(
) .
(2 - 20)
Sehingga θ1 dapat dihitung,
= tan
(
) .
(
) .
(2 - 21)
Dengan penjabaran trigonometri maka persamaan (2- 16) dan (2- 21) merupakan persamaan dari inverse kinematics lengan robot dua sendi.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
26
Kinematik Robot Tangan Tiga Sendi.
Gambar 2.13. Konfigurasi Lengan Robot Tiga Sendi [12] Koordinat akhir ujung lengan ketiga pada Gambar 2.13. ditulis P(XT, YT) dengan sudut ψ yang merupakan sudut arah hadap lengan ketiga terhadap sumbu X. Besarnya sudut ψ adalah: =(
+
+
)
(2 - 22)
Inverse kinematics lengan robot tiga sendi posisi P(XT, YT) dan P(x, y) sudah diketahui atau ditentukan sebelumnya maka θ1 dan θ2 dapat dicari dengan menggunakan persamaan (2- 16) dan (2- 21). Dengan diketahui besarnya (XT, YT) dan (x, y) maka ψ dapat dicari untuk menentukan besarnya sudut θ3. =
−
cos
(2 - 23)
=
−
sin
(2 - 24)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB III PERANCANGAN SISTEM Bab ini menjelaskan mengenai perancangan prototype lengan robot penggambar bidang dua dimensi dengan 4 DOF yang dikendalikan oleh mikrokontroler Arduino Uno R3 berdasarkan masukkan dari program visual basic. Perancangan sistem yang akan dibahas pada bab ini terdiri dari dua bagian, yaitu perangkat keras (hardware) dan perangkat lunak (software). Perancangan sistem yang dibahas dalam bab ini terbagi dalam dua bagian besar, yaitu: 1.
Perancangan Perangkat Keras (Hardware) -
Perancangan Mekanik Robot.
-
Perancangan Rangkaian Elektrik Sistem Pengendali
2.
3.1.
Perancangan Perangkat Lunak (Software) -
Perangkat lunak sebagai masukkan perintah dari visual basic 6.0.
-
Perangkat lunak pengendali motor RC servo dengan Arduino IDE.
Perancangan Perangkat Keras (Hardware) Secara garis besar perancangan perangkat keras (hardware) terdiri dari dua bagian
utama yaitu perancangan mekanik robot dan perancangan rangkaian elektrik sistem pengendali. Untuk merancang perangkat keras langkah pertama yang dilakukan yaitu membuat perancangan blok diagram perangkat keras dari keseluruhan sistem lengan robot untuk menggambar bidang dua dimensi sebagai media untuk memvisualisasikan konsep garis besar dari sistem yang akan dibuat. Tahap kedua yang dilakukan adalah membuat perancangan lengan robot secara matematis dengan menampilkan rancangan gambar 3D dari prototype lengan robot agar pergerakan mekanik dari lengan robot dapat benar-benar terukur baik dari jangkauan atau jarak berdasarkan dimensi lengan-lengan penghubung (link), dan sudut-sudut putaran pada sendi (joint) lengan robot. Langkah yang ketiga adalah membuat perancangan elektrik sistem berupa rangkaian elektrik sebagai sistem pengendalian gerakan lengan robot dengan cara mengaktifkan motor RC servo yang difungsikan sebagai sendi (joint) untuk menggerakkan lengan robot untuk melakukan proses menggambar bidang dua dimensi.
27
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
28
Pada bagian pertama tentang sistem blok diagram perangkat keras membahas fungsi dan cara kerja dari setiap komponen yang membentuk sistem lengan robot. Sistem blok diagram pada lengan robot penggambar bidang dua dimensi yang akan dibuat meliputi beberapa komponen. Komponen-komponen penyusunnya yaitu bagian masukkan atau input dari personal computer (PC), komponen pengendali berupa mikrokontroler Atmega 328 pada papan Arduino Uno R3, pengendali motor RC servo (Adafruit servo controller) dan bagian keluaran (output) yaitu motor RC servo. Pada bagian kedua tentang perancangan lengan robot membahas tentang desain mekanik dan perhitungan kinematika gerakan lengan robot melalui perhitungan secara inverse kinematics. Desain mekanik lengan robot secara lebih lengkap membahas komponen-komponen penyusun sistem lengan robot yaitu dimensi dari lengan robot dan motor RC servo yang digunakan. Pada bagian ketiga tentang perancangan sistem elektrik membahas tentang perancangan desain rangkaian elektrik yang akan digunakan. Perancangan rangkaian elektrik sebagai pengendali prototipe lengan robot terdiri dari kontroler berupa mikrokontroler Arduino Uno R3, pengendali motor RC servo (Adafruit servo controller) dan output yang berupa motor RC servo.
3.1.1. Perancangan Mekanik Robot. Secara garis besar perancangan perangkat keras (hardware) untuk menyusun sebuah sistem lengan robot penggambar bidang dua dimesi berbasis mikrokontroler meliputi beberapa komponen utama yaitu komponen input, komponen piranti pengendali (controller) dan komponen output. Komponen utama pada perangkat keras lengan robot penggambar bidang dua dimensi berbasis mikrokontroler yaitu seperti yang ditunjukkan pada Gambar 3.1 :
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
29
Gambar 3.1. Sistem Blok Diagram Perangkat Keras (hardware) Gambar 3.1. merupakan sistem blok diagram dari perangkat keras (hardware). Berdasarkan perancangan sistem pada Gambar 3.1, personal computer (PC) memiliki peranan sebagai perangakat keras yang berfungsi sebagai pemberi masukan atau input pada sistem. Bagian input memberi keluaran atau output dari PC ke perangkat pengendali (controller). Output yang dikeluarkan PC berupa data serial yang dikirim menuju piranti pengendali dengan sistem komunikasi serial melalui koneksi USB (Universal Serial Bus). PC memberikan output data serial dari program perangkat lunak berupa software visual basic 6.0. Software visual basic 6.0 membuat perintah tampilan antarmuka (interface) berupa tombol dan parameter sebagai acuan kerja prototype lengan robot penggambar bidang dua dimensi untuk menggambar bidang dua dimensi pada papan tulis. Berdasarkan Gambar 3.1. piranti pengendali pada sistem perangkat keras adalah mikrokontroler dan servo kontroler. Mikrokontroler digunakan sebagai piranti pengendali pertama yang mengolah perintah dan data dari output visual basic pada PC agar dapat dibaca oleh pengendali kedua yaitu servo kontroler. Perintah dan data akan diolah mikrokontroler menjadi data-data berupa posisi gerakan motor RC servo yang selanjutnya dikirim menuju servo kontroler untuk diolah menjadi keluaran pulsa-pulsa digital yang digunakan untuk mengendalikan putaran motor RC servo. Mikrokontroler yang digunakan pada sistem lengan robot penggambar bidang dua dimensi adalah ATmega 328 yang sudah teraplikasikan pada sebuah papan kontroler yaitu Arduino Uno R3. Papan Arduino Uno R3
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
30
memungkinkan untuk melakukan komunikasi dengan papan kontroler yang lain dengan sistem I2C (Inter Integrated Circuit) karena memiliki pin TWI (Two Wire Interface) yaitu pin SDA dan SCL. Sedangkan servo kontroler yang digunakan Adafruit servo controller (Adafruit 16-Channel 12-Bit PWM / Servo Shield – I2C Interface) yang memiliki fasilitas untuk melakukan komunikasi dengan sistem I2C yang juga terdapat pada pin SDA dan SCL yang terkoneksi secara stackable dengan papan Arduino Uno R3. Kemampuan lain dari Adafruit servo controller yaitu terdapat fasilitas mapping dimana fungsi dari mapping ini dapat dimanfaatkan untuk melakukan konversi sudut menjadi pulsa untuk menggerakkan motor RC servo. Penggunaan Adafruit servo kontroler juga menjaga arus agar tidak drop ketika motor RC servo melakukan gerakan secara bersamaan. Arus yang tidak drop dapat menjaga motor RC servo berputar menuju sudut yang diperintahkan sesuai dengan pulsa-pulsa digital yang diterima. Motor RC servo merupakan bagian keluaran atau output dari sistem lengan robot penggambar bidang dua dimensi. Motor RC servo dapat bergerak setelah mendapatkan power supply 5volt dan masukkan berupa pulsa-pulsa digital yang merupakan keluaran papan Adafruit servo controller. Sebagai salah satu penyusun pada sistem lengan robot, motor RC servo berperan sebagai penggerak (actuator) dengan gerakan rotasi pada sudutsudut tertentu sesuai dengan besarnya pulsa digital yang diterima sehingga gerakan rotasi ini memungkinkan lengan robot dapat bergerak pada 3 sumbu axis yaitu X, Y dan Z. Sifat gerakan putaran sudut motor RC servo dimanfaatkan sebagai sendi-sendi (joint) yang menghubungkan lengan satu dengan lengan yang lainnya. Pada sistem lengan robot berdasarkan Gambar 3.2. piranti pengendali motor RC servo digunakan untuk mengaktifkan 5 buah motor RC servo. Setiap motor RC servo bertugas menggerakkan sendi (joint) pada bagian dasar (base), bahu 1 (shoulder 1) dan bahu 2 (shoulder 2), siku (elbow) dan pergelangan lengan (pitch). Gerakan sendi-sendi (joint) pada sistem lengan robot memungkinkan prototype lengan robot penggambar bidang dua dimensi dapat bergerak dengan 4 derajat kebebasan (4 DOF) yaitu RRRR (R=Rotation).
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
31
Gambar 3.2. Sistem Blok Diagram Perangkat Keras (Hardware) dengan Sendi (Joint) Motor RC servo 3.1.1.1. Pemodelan Mekanik Gambar 3.3. merupakan gambar keseluruhan design 3D lengan robot penggambar bidang dua dimensi berbasis mikrokontroler. Lengan robot penggambar bidang dua dimensi disusun dengan 5 bagian utama sebagai aktuator yang akan digerakkan dengan motor RC servo. Kelima bagian utama ini disebut sebagai penghubung atau link. Sedangkan bagian yang berperan sebagai penggerak (sendi) berdasarkan gerakan motor RC servo disebut sebagai joint. Gambar 3.3. menampilkan keseluruhan desain perancangan mekanik 3D lengan robot penggambar bidang dua dimensi beserta lima bagian utama pada robot yang berperan sebagai penghubung (link), yang meliputi : 1. Base (bagian dasar) 2. Shoulder (bagian bahu) 3. Elbow (bagian siku) 4. Pitch (bagian pergelangan) 5. Pointer (bagian end effector berupa spidol)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
32
Gambar 3.3. Tampilan Keseluruhan Design 3D Lengan Robot Bagian dasar (base) berbentuk lingkaran yang berdiameter 25 cm. Base terhubung dengan sebuah as yang memanjang ke bawah dan mempunyai roda gigi. Roda gigi pada as berhubungan dengan roda gigi pada sebuah motor RC servo yang digunakan sebagai penggerak base. Base bergerak secara rotasi dan dapat menyebabkan perubahan posisi pada lengan-lengan penghubung yang lain. Bagian shoulder memiliki panjang lengan 18 cm dan bergerak secara rotasi dengan 2 buah motor RC servo. Bagian elbow memiliki panjang lengan 12 cm dan bergerak secara rotasi dengan sebuah motor RC servo. Bagian pitch memiliki panjang lengan 5 cm dan bergerak secara rotasi dengan sebuah motor RC servo. Bagian paling ujung adalah pointer yang digunakan untuk meletakkan spidol yang merupakan end effector dari prototype lengan robot. Pointer memiliki panjang 8 cm. Total keseluruhan panjang lengan robot penggambar bidang dua dimensi dari pangkal shoulder sampai pada ujung spidol adalah 43 cm. Besarnya dimensi berupa panjang yang dimiliki oleh keseluruhan penghubung (link) menentukan kemampuan sebagai jangkauan lengan robot ketika melakukan gerakkan menggambar di papan gambar. Bagian yang berperan sebagai penggerak adalah sendi (joint) terhubung langsung dengan motor RC servo. Gerakan yang terjadi pada joint di setiap bagian pangkal dari link adalah rotasi. Gerakan secara rotasi menyebabkan adanya perbedaan besarnya sudut-sudut yang terjadi pada setiap penghubung (link) dari titik acuan awal yaitu pada bagian pangkal dari bahu (shoulder).
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
33
Gambar 3.4. Tampilan Posisi Motor RC Servo pada Design Gambar 3D Lengan Robot Pada Gambar 3.4 menampilkan posisi motor RC servo pada perancangan lengan robot penggambar bidang dua dimensi, yaitu: 1. Base 2. Shoulder 1 3. Shoulder 2 4. Elbow 5. Pitch Pada perancangan lengan robot penggambar bidang dua dimensi, motor RC servo yang akan digunakan sebanyak 5 buah. Pemilihan motor RC servo yang digunakan pada setiap joint berdasarkan pada kemampuan yang harus dimiliki setiap joint untuk mengangkat beban. Beban dapat berupa lengan (link) dan benda yang diangkat. Kemampuan motor untuk berputar dengan suatu beban merupakan gaya putar yang disebut torsi (torque). Perkiraan berat lengan penghubung (link) pada perancangan lengan robot penggambar bidang dua dimensi dapat dilihat pada keterangan lengan penghubung (link) seperti pada Tabel 3.1: Tabel 3.1. Keterangan Lengan Penghubung (link). No. 1 2 3 4 5
Lengan Penghubung (link) Base Shoulder Elbow Pitch End effectors
Panjang Lengan
Perkiraan Berat Lengan
Beban Diangkat Setiap Lengan
25 cm (diameter) 18 cm 12 cm 5 cm 8 cm
200 gr 500 gr 200 gr 120 gr 100 gr
200 gr 920 gr 420 gr 220 gr 100 gr
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
34
Pada Tabel 3.1. untuk perkiraan berat lengan merupakan total berat dari material lengan dan motor RC servo yang menempel pada lengan. Sedangakan pada kolom beban diangkat setiap lengan merupakan penjumlahan berat dari keseluruhan beban yang harus diangkat oleh setiap lengan. Perancangan mekanik untuk desain lengan robot penggambar bidang dua dimensi menggunakan material aluminium karena ringan dan mudah dikerjakan. Pada Tabel 3.1
bagian base
diasumsikan memiliki berat yang ringan
walaupaun terletak paling dasar karena bagian base tidak terbebani oleh berat keseluruhan dari prototype lengan robot karena seluruh lengan robot sudah ditopang oleh empat buah tiang penyangga. Pada perancangan mekanik motor RC servo yang digunakan hanya untuk memutar bagian base yang memiliki torsi yang tidak terlalu besar yaitu diperkirakan sebesar 10 kgf.cm.
Gambar 3.5. Tampilan End Effector Berupa Pointer dengan Spidol Pada Gambar 3.5. menunjukkan bahwa beban yang diangkat pada bagian pointer kecil yaitu hanya sebuah spidol dan hanya berfungsi sebagai penjepit spidol saja dan tidak terdapat motor servo. Perkiraan berat dari pointer dengan sebuah sidol seperti pada tabel 3.1 adalah 100 gram. Pada bagian pitch beban yang harus diangkat adalah 220 gram karena bagian pitch selain mengangkat lengannya sendiri juga harus mengangkat seluruh bagian pointer. Bagian pitch memiliki panjang 5 cm dan bagian pointer sampai ujung spidol memiliki panjang 8 cm, sehingga panjang lengan yang harus diangkat adalah 13 cm. Berikut adalah perhitungan untuk merancang kebutuhan torsi motor servo pada bagian pitch berdasarkan persamaan (2 - 3) dan (2 - 4) :
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
35
m = 220 gram = 0,22 Kg L = 13 cm W = m × g = 0,22 Kg × 10 m/s2 = 2,2 N = 0,224 Kg
τ=W×L
= 0,224 Kg × 13 cm = 2,912 Kg.cm
Pada bagian elbow beban yang harus diangkat adalah 420 gram, sedangkan panjang lengan yang harus diangkat motor RC servo adalah 25 cm yang dihitung dari panjang lengan elbow, panjang lengan pitch dan panjang pointer sampai ujung spidol. Kebutuhan torsi motor RC servo pada bagian elbow berdasarkan persamaan (2 - 3) dan (2 – 4) adalah: m = 420 gram = 0,42 Kg L = 25 cm W = m × g = 0,42 Kg × 10 m/s2 = 4,2 N = 0,43 Kg
τ=W×L
= 0,43 Kg × 25 cm = 10,75 Kg.cm
Pada bagian shoulder beban yang harus diangkat adalah 920 gram, sedangkan panjang lengan yang harus diangkat motor RC servo adalah 43 cm yang dihitung dari panjang lengan shoulder, panjang lengan elbow, panjang lengan pitch dan panjang pointer sampai ujung spidol. Kebutuhan torsi motor RC servo pada perancangan lengan robot penggambar bidang dua dimensi bagian shoulder menggunakan persamaan (2–3) dan (2-4) adalah sebagai berikut: m = 920 gram = 0,92 Kg L = 43 cm W = m × g = 0,92 Kg × 10 m/s2 = 9,2 N = 0,94 Kg
τ =W×L
= 0,94 Kg × 43 cm = 40,42 Kg.cm
Berdasarkan perhitungan kebutuhan torsi pada bagian shoulder memang menunjukkan torsi yang dibutuhkan sangat besar. Hal tersebut akan membuat kesulitan tersendiri dalam mencari motor RC servo dengan torsi yang sangat besar. Oleh sebab itu, pada bagian shoulder perancangan menggunakan 2 buah motor RC servo dengan torsi lebih besar dari 19,74 Kg.cm (40,42 kg.cm : 2 = 20,21 Kg.cm) yang akan dipasang pada shoulder 1 dan shoulder 2.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
36
Gambar 3.6. Tampilan 3 Sumbu Axis (X,Y,Z) dan Jarak Pangkal Lengan Robot (Shoulder) Menuju Papan Gambar Pada Gambar 3.6. menunjukkan tampilan sumbu koordinat prototype lengan robot penggambar bidang dua dimensi untuk melakukan gerakkan rotasi, yaitu rotasi terhadap sumbu X, Y, dan Z. Putaran terhadap sumbu Z dilakukan pada bagian Base untuk memutar lengan robot ke kanan atau ke kiri. Sedangkan putaran terhadap sumbu X dan sumbu Y dilakukkan pada shoulder, elbow, pitch untuk menggerakkan lengan robot. Keempat bagian lengan robot menunjukkan bahwa lengan robot ini memiliki 4 DOF/ 4 Degree of Freedom/ 4 derajad kebebasan. Gambar 3.6. juga menampilkan jarak antara pangkal lengan robot yang diukur dari bagian shoulder menuju papan gambar yaitu sejauh 30 cm. Jarak tersebut digunakan untuk menentukan posisi titik referensi sebagai acuan lengan robot untuk menggambar bidang dua dimensi di papan gambar. Sedangkan papan gambar dirancang dengan spesifikasi seperti ditunjukkan pada Gambar 3.7. berikut.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
37
Gambar 3.7. Papan Gambar 3.1.1.2 Pemodelan Inverse Kinematics Berdasarkan pemodelan mekanik lengan robot yang telah dibahas sebelumnya, maka dapat dibuat pemodelan kinematika pada lengan robot. Perbedaan panjang setiap lengan atau penghubung (link) dan perbedaan besarnya sudut-sudut pada setiap sendi (joint) dimanfaatkan dalam sebuah model perhitungan inverse kinematics untuk menentukan titik koordinat pada ujung end effector yaitu pada ujung spidol yaitu pointer. Perancangan prototype lengan robot penggambar bidang 2 dimensi berbasis PC dengan mikrokontroler menggunakan perhitungan inverse kinematics dengan metode pendekatan geometri. Metode pendektan geometri dipilih karena merupakan perhitungan yang paling sederhana dalam penyelesaian masalah inverse kinematics. Penyelesaian permasalahan inverse kinematics dengan metode geometri akan sangat menguntungkan bila pengetahuan tentang area jangkauan (workspace), struktur joint dan link robot tersedia [18]. Pada perancangan prototype lengan robot ini, pengetahuan tentang area jangkauan, struktur joint dan lengan robot (link) sudah diketahui. Titik koordinat yang dihasilkan merupakan posisi akhir (end effector) lengan robot untuk melakukan proses menggambar bidang dua dimensi. Pergerakkan lengan robot penggambar bidang dua dimensi perlu dibatasi berdasarkan putaran motor RC servo agar jangakuan pergerakkan setiap link dapat diatur batas maksimalnya atau jankauannya (work space) serta menentukan sudut 00 pada gerakan setiap link. Gambar 3.8. memberikan gambaran tentang gerakan lengan robot untuk menentukan batas jangkauan lengan robot. Perancangan batas gerakan joint lengan robot berdasarkan putaran motor servo ditetapkan pada Tabel 3.2.:
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
38
Gambar 3.8. Ilustrasi Batasan Pergerakkan Lengan Robot (link) dengan Jangkauan Maksimal (Work space) yang Ditentukan.
Tabel 3.2. Tabel Rencana Batasan Gerakkan Lengan Robot untuk Menentukan (Work space) Berdasarkan Putaran Motor Servo. No. 1 2 3 4 5
Link (lengan) Base Shoulder Elbow Pitch Pointer
Panjang (cm) 18 12 5 8
Total 1800 900 1800 1800 00
Mak. 900 900 900 900 00
Min. -900 00 -900 -900 00
Dalam melakukan proses menggambar sebuah bidang 2D hal yang dilakukan pertama kali adalah menentukan titik referensi sebagai titik awal untuk mulai menggambar. Langkah selanjutnya menentukan titik-titik yang menyusun sebuah bidang 2D. Banyaknya titik yang diperlukan pada sebuah gambar 2D tergantung dari ukuran dimensi bidang 2D yang sudah ditentukan. Rencana gambaran bidang 2 dimensi yang akan digambar menggunakan lengan robot berdasarkan posisi titik end effector ditunjukkan seperti pada Gambar 3.9. berikut ini.
Gambar 3.9. Rencana Gambaran Bidang 2 Dimensi yang akan Digambar Lengan Robot dengan Posisi Titik-titik End Effector.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
39
Berdasarkan Gambar 3.9, ketika jumlah titik sudah ditentukan melalui kalkulasi di software visual basic 6.0. maka lengan robot akan digerakkan menuju ke titik referensi yang merupakan titik awal end effector lengan robot yang menempel di papan gambar sebelum melanjutkan proses menggambar bidang 2D. Contoh perhitungan inverse kinematics dengan metode geometri untuk mencari sebuah titik. Pada perancangan prototype lengan robot ini dilakukan perhitungan untuk mencari sudut-sudut dari posisi titik referensi yang menempel di papan gambar dan sudah ditentukan atau diketahui posisinya. Misalnya diketahui bahwa posisi titik referensi berada di koordinat P (X,Y,Z) adalah P (30,10,15). Gambar 3.10. menunjukkan posisi lengan robot ketika dipandang dari atas berdasarkan sumbu X dan sumbu Y.
Gambar 3.10. Prototype Lengan Robot Penggambar Bidang 2 Dimensi Tampak dari Atas.
Gambar 3.11. Penyederhanaan Prototype Lengan Robot dengan Analisa Geometri untuk Mencari θ1 , Tampak dari Atas (Sumbu X dan Sumbu Y).
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
40
Berdasarkan Gambar 3.11. diketahui bahwa lengan robot penggambar bidang dua dimensi memiliki spesifikasi yang digunakan untuk analisa inverse kinematics dengan metode pendekatan geometris sebagai berikut: =
= shoulder1 dan 2
=
= elbow
=
= pitch sampai ujung spidol
Pada pembahasan perancangan menurut Gambar 3.11. untuk panjang lengan l1, l2, dan l3 tidak ditulis panjang dimensinya karena menghitung inverse kinematics untuk mencari besarnya sudut θ1 yang diperlukan adalah posisi end effector lengan robot yang berada pada titik C yaitu pada koordinat sumbu X dan sumbu Y, dimana C(Px,Py): =
= 30
,
=
= 10
,
Dengan aturan segitiga siku-siku menggunakan trigonometri seperti pada persamaan (2 - 8) sebagai berikut:
= tan = tan =
,
Dari hasil perhitungan maka diperoleh sudut θ1 pada koordinat sumbu X dan sumbu Y sebesar
,
sehingga bagian base pada prototype lengan robot akan berputar ke
posisi sudut θ1 sebesar
,
.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
41
Gambar 3.12. Prototype Lengan Robot Penggambar Bidang Dua Dimensi Tampak dari Samping pada Sumbu (X, Z). Pada Gambar 3.12. menunjukkan posisi lengan robot tampak samping yaitu pada sumbu X dan sumbu Z sehingga dimensi panjang setiap lengan robot yang digunakan berdasarkan pada Tabel 3.2 adalah sebagai berikut: Shoulder
= 18 cm
Elbow
= 12 cm
Pitch – Pointer (ujung spidol)
= 13 cm
Gambar 3.13. Penyederhanaan Prototype Lengan Robot Penggambar Bidang Dua Dimensi Tampak dari Samping pada Sumbu X, Y, Z untuk Analisa Geometri.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
42
Berdasarkan pada Gambar 3.12 dan analisa geometri lengan robot seperti pada Gambar 3.13, diketahui bahwa: OA = shoulder = l1 = 18 cm AB = elbow
= l2 = 12 cm
BC = pitch sampai ujung spidol = l3 = 13 cm P (XY, Z)
= posisi end effector pada sumbu (X,Y,Z) yaitu ketika ujung spidol
menempel pada papan gambar.
Gambar 3.14. Analisa Geometri Prototype Lengan Robot Penggambar Bidang Dua Dimensi untuk Mencari θ2 dan θ3. Perancangan lengan robot penggambar bidang dua dimensi pada Gambar 3.14. berdasarkan pada posisi end effector di koordinat P (XTYT, ZT) yaitu P (30, 15). Untuk mencari sudut-sudut (θ2, θ3, θ4) juga diperlukan analisa inverse kinematics dengan metode goemetri. Ada banyak solusi yang bisa digunakan untuk melakukan analisa sudut dengan inverse kinematics menggunakan metode pendekatan goemetri, namun banyaknya solusi yang digunakan tergantung pada desain pergerakan lengan robot untuk mencapai titik akhir yang ditentukan. yang digunakan adalah menentukan tahapan dalam mencari solusinya. Solusi pertama yang digunakan adalah melakukan analisa pada konfigurasi lengan robot 2 sendi menggunakan persamaan (2- 16) dan (2- 21). Solusi yang pertama dilakukan dengan cara menentukan posisi end effector pada lengan 2 (l2) yaitu pada koordinat P (xy, z). Penentuan posisi lengan 2 (l2) diperlukan untuk melakukan mendapatkan sudut dengan analisa konfigurasi lengan robot 2 sendi. Setelah didapatkan besarnya sudut-sudut joint dengan analisa lengan robot 2 sendi, langkah selanjutnya dapat dilakukan solusi kedua
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
43
yaitu dengan analisa sudut pada konfigurasi lengan robot 3 sendi menggunakan persamaan (2- 22). Solusi pertama: koordinat end effector pada l2.
P (xy,z) = P (25, 15) OD
= 25 cm
BD
= 15 cm
Persamaan (2 - 16) digunakan untuk mencari besarnya sudut θ3, sedangkan persamaan (2 - 21) digunakan untuk mencari besarnya sudut θ2. Berikut ini adalah persamaan (2 - 16) digunakan unutk mencari besarnya sudut θ3 :
θ = cos
θ = cos
.
θ = cos
.
θ = cos (0,88) θ =
,
Jadi, besarnya sudut θ3 yang terletak pada joint antara shoulder dan elbow adalah ,
sebesar
. Sehingga motor servo pada bagian link di elbow akan berputar ke posisi
sudut θ3. Berikutnya untuk mencari besarnya sudut θ2 berdasarkan pada persamaan (2 - 21):
= tan = tan = tan
(
,
.
) .
(
,
)
.
,
(
,
)
.
,
, ,
= tan (0,36164) =
)
(
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
44
Jadi, besarnya sudut θ2 yang terletak pada joint antara base dan shoulder adalah sebesar
,
. Sehingga motor servo pada bagian link di shoulder akan berputar ke
posisi sudut θ2. Solusi kedua:
Gambar 3.15. Analisa Geometri Prototype Lengan Robot Penggambar Bidang Dua Dimensi untuk Mencari θ4. Solusi kedua berdasarkan analisa geometri inverse kinematics pada Gambar 3.15 digunakan untuk mencari besarnya sudut θ4 menggunakan persamaan (2- 22), sehingga yang diperlukan terlebih dahulu yaitu mencari sudut terbesar yang ditarik dari joint pada pangkal lengan yang ditunjukkan pada titik O menuju ke setiap ujung lengan (l1 ,l2 ,l3) yang terdapat pada titik ABC. Sudut-sudut yang terbentuk yaitu sudut θ2, sudut α dan sudut ψ. Pada Gambar 3.15 terlihat bahwa terjadinya sudut terbesar ditunjukkan oleh sudut
ψ pada ujung lengan 2 (l2) yang terletak di titik B. Pada analisa sebelumnya menurut Gambar 3.14. sudah ditetapkan posisi titik P yang berada di titik B terletak pada koordinat (25, 15) sehingga besarnya sudut ψ dapat dicari dengan persamaan trigonometri seperti pada persamaan (2- 8):
=
=
=
(0,6)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
45
= 30,964 Setelah diperoleh besarnya sudut terbesar yang terdapat pada
= 30,964
maka
penyelesaian analisa inverse kinematics dapat ditentukan menggunakan solusi kedua untuk mencari besarnya sudut θ4 yang terdapat pada joint antara bagian elbow dan pitch. Besarnya sudut ψ sama dengan total dari sudut θ2 ,θ3 ,θ4. Sehingga diperoleh besarnya sudut ψ berdasarkan analisa pada Gambar 3.15. menggunakan persamaan (2 – 22) sebagai berikut:
=
+
+
Sehingga dapat ditentukan besarnya sudut θ4 adalah:
=
−(
+
)
= 30,964 − (19,882 + 27,84 ) =−
,
Jadi besarnya sudut θ4 yang terletak pada joint antara lengan elbow dan pitch adalah sebesar −
,
. Besarnya sudut θ4 dari perhitungan di atas didapatkan nilai negatif (-)
pada sudut θ4 karena posisi sudut θ4 berada di bawah garis 00 atau di bawah dari garis perpanjangan dari lengan 2 (l2). Motor servo pada link di bagian pitch akan berputar ke posisi sudut θ4.
Gambar 3.16. Posisi Titik Referensi Sebagai Titik Awal Posisi Lengan Robot Sebelum Menggambar Kotak, Lingkaran dan Segitiga
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
46
Gambar 3.16. menunjukkan posisi-posisi setiap titik referensi yang akan digunakan untuk menggambar bidang 2D. Posisi titik referensi untuk menggambar kotak berada di ujung kiri atas, misalnya terletak pada koordinat (20,-13,28). Titik referensi untuk menggambar kotak diletakkan di pojok kiri atas agar sistem dapat menggambar bidang kotak dengan ukuran yang berbeda-beda. Posisi titik referensi untuk menggambar lingkaran terletak di ujung jari-jari (r) yang ditarik dari tengah lingkaran. Misalnya untuk menggambar lingkaran dengan jari-jari 5 cm, posisi titik referensi diambil dari tengahtengah lingkaran yang ditarik ke kiri pada koordinat (20, 5, 15). Sedangkan untuk menggambar segitiga sama sisi, posisi titik referensi diletakkan tepat di tengah-tengah papan gambar yaitu titik Y = 0 yaitu pada koordinat (20,0,28). Perhitungan inverse kinematics juga digunakan untuk mencari besarnya sudut-sudut θ1, θ2 ,θ3 ,θ4 yang diperlukan untuk menjangkau beberapa posisi titik berdasarkan pada panjang lengan (l) dan posisi yang sudah ditentukan sebelumnya. Posisi titik-titik tersebut adalah posisi batasan jangkauan maksimal lengan robot pada papan gambar, posisi titik referensi untuk menggambar bidang kotak, posisi referensi untuk menggambar lingkaran dan posisi referensi untuk menggambar segitiga sama sisi. Perhitungan inverse kinematics yang digunakan seperti contoh di atas sehingga hasil yang didapatkan berdasarkan Gambar 3.16. seperti pada Tabel 3.3 berikut ini: Tabel 3.3. Tabel Hasil Perhitungan Inverse Kinematics pada Beberapa Posisi yang Sudah Ditentukan Sebelumnya.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
47
3.1.2. Perancangan Rangkaian Elektrik Sistem Pengendali. Perancangan rangkaian elektrik sistem pengendali lengan robot penggambar bidang dua dimensi berbasis pc dan mikrokontroler seperti pada Gambar 3.17. terdiri dari beberapa bagian yang menyusun suatu sistem berupa perangkat komponen masukan (input), komponen pengendali (controller) dan komponen keluaran (output). Perangkat masukan (input) dalam rangkaian elektrik ini berasal dari personal computer (pc). Komponen pengendali (controller) yang digunakan berupa mikrokontroler (Arduino Uno R3) dan servo motor controller (Adafruit 16-Channel 12-Bit PWM / Servo Shield – I2C Interface). Sedangkan komponen keluaran (output) berupa motor-motor RC servo yang terdapat pada setiap sendi (joint). PC digunakan untuk membuat, menampilkan dan mengolah program berupa masukan dari antarmuka perangkat lunak (software). Mikrokontroler digunakan sebagai komponen pengendali utama dari prototype lengan robot. Pemilihan mikrokontroler Arduino UNO R3 karena sistem yang akan dibuat tidak memerlukan banyak I/O, menggunakan komunikasi serial dan kominikasi I2C serta memiliki keunggulan open source yang memudahkan dalam pengaplikasian pada sistem. Adafruit servo controller dipilih karena kemampuannya mengendalikan banyak motor RC servo secara bersamaan dan mencegah terjadinya arus drop, dapat melakukan komunikasi I2C, memiliki fasilitas untuk mengkonversi sudut menjadi pulsa digital dan sudah kompatibel dengan Arduino Uno R3. Bahasa pemrograman yang digunakan pada Arduino Uno R3 yaitu mengunakan bahasa C.
Gambar 3.17. Rangkaian Elektrik Sistem Pengendali
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
48
Keterangan Gambar 3.17: 1. Personal computer (PC). 2. Mikrokontroler (Arduino Uno R3) 3. Servo controller (Adafruit 16-Channel 12-Bit PWM / Servo Shield – I2C Interface). 4. Motor RC servo.
3.2. Perancangan Perangkat Lunak (Software) Secara keseluruhan diagram alir sistem perangkat lunak (software) dapat dilihat pada Gambar 3.18. Perangkat lunak yang digunakan dalam sistem ini adalah software visual basic 6.0 untuk antarmuka sistem dan software Arduino IDE untuk mikrokontroler. Software untuk antarmuka dari visual basic 6.0. terhubung dengan software Arduino IDE dengan komunikasi serial menggunakan USB. Sedangkan dari software Arduino IDE berhubungan dengan Adafruit servo controller dengan komunikasi I2C secara stackable. Antarmuka visual basic 6.0 digunakan untuk memberikan masukan berupa pilihan gambar bidang 2D dan program menggambar bidang 2D. Software Arduino IDE digunakan untuk menulis data dari pembacaan visual basic 6.0. dan mengolahnya menjadi pulsa-pulsa digital sebelum dikirim ke servo controller untuk menggerakkan motor RC servo.
Gambar 3.18. Diagram Alir Secara Umum Sistem Perangkat Lunak (Software)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
49
3.2.1. Perangkat Lunak Sebagai Masukan Perintah dari Visual Basic 6.0.
Gambar 3.19. Diagram Alir Sistem Secara Umum pada Visual Basic 6.0. Gambar 3.19. merupakan konsep perancangan perangkat lunak (software) antarmuka secara umum visual basic 6.0. yang dijelaskan dalam bentuk diagram alir. Sistem perangkat lunak pada lengan robot akan diawali dengan pemilihan jenis bidang 2D yang akan di gambar kemudian membuat parameter sebagai masukan dari software visual basic 6.0. Input parameter menggambar bidang 2D dilakukan dengan memberi masukan dimensi-dimensi bidang 2D yang akan digambar. Selanjutnya dilakukan pengiriman pulsa dari titik referensi yang sudah ditentukan di dalam program. Proses selanjutnya melakukan proses menggambar yang diawali dari titik referensi kemudian digeser dan disesuaikan dengan input parameter dimensi-dimensi yang telah dimasukkan sebelumnya. Proses konversi sudut menjadi pulsa juga dilakukan di dalam software visual basic 6.0. ketika terjadi pengiriman pulsa. Pada Gambar 3.20. merupakan rencana dari antarmuka software visual basic 6.0. untuk menggambar bidang 2D dengan lengan robot pada PC. Pada antarmuka sistem menggambar bidang 2D tombol KOTAK, LINGKARAN dan SEGITIGA akan digunakan untuk memilih jenis gambar bidang 2D termasuk menentukan dimensi-dimensi yang diperlukan oleh bidang 2D yang akan digambar. Selanjutnya harus dilakukan penekanan tombol RUN untuk menjalankan proses menggambar bidang 2D. Sedangkan tombol CLEAR digunakan untuk menghapus atau membersihkan seluruh parameter yang
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
50
digunakan untuk menggambar bidang 2D. Semua tombol pada Gambar 3.20. dibuat dengan CommandButton yang terdapat pada toolbar jendela visual basic 6.0.
Gambar 3.20. Tampilan Rencana Antarmuka Program Menggambar Bidang 2D pada Software Visual Basic 6.0. di PC. Program menggambar bidang 2D secara lengkap pada software visual basic 6.0. ditunjukkan pada diagram alir seperti Gambar 3.21. Program menggambar bidang 2D diawali dengan penekanan salah satu tombol KOTAK, LINGKARAN atau SEGITIGA seperti rencana antarmuka pada Gambar 3.20. Setelah itu program akan memanggil titik referensi yang telah ditentukan pada coding program di visual basic 6.0. Posisi titik referensi pada setiap bidang 2D berbeda-beda, secara jelas dapat dilihat seperti Gambar 3.16. Setelah penekanan tombol jenis gambar maka harus dilakukan pengisian parameter dimensi untuk setiap gambar bidang 2D seperti panjang, lebar, jari-jari, alas dan tinggi. Tombol RUN harus ditekan untuk mengaktifkan proses menggambar. Proses menggambar dilakukan dengan menggeser pointer (end effector) step by step pada papan gambar membentuk pola gambar bidang 2D yang dipilih berdasarkan konversi parameter dimensi menjadi jumlah step yang diperlukan untuk menggambar. Pergeseran setiap step akan merubah sudut-sudut lengan setiap kali proses bergeser terjadi. Selanjutnya setiap kali sudut-sudut berubah nilainya maka sudut-sudut tersebut akan dikonversi menjadi pulsapulsa kemudian dikirim ke mikrokontroler. Apabila proses menggambar telah selesai maka pointer akan menuju ke posisi awalnya. Program menghapus atau membersihkan parameter dapat dilakukan dengan menekan tombol CLEAR.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Gambar 3.21. Diagram Alir Program “Menggambar Bidang 2D atau Clear” pada Visual Basic 6.0.
51
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
52
3.2.2. Perangkat Lunak Pengendali Motor RC Servo dengan Arduino IDE.
Gambar 3.22. Diagram Alir Sistem Secara Umum pada Arduino IDE. Gambar 3.22. merupakan konsep perancangan program menggambar bidang dua dimensi secara umum pada software Arduino IDE yang dijelaskan dalam bentuk diagram alir. Software Arduino IDE digunakan untuk menulis program pada mikrokontroler Arduino Uno R3. Program diawali dengan mengaktifkan mikrokontroler terlebih dahulu, setelah mikrokontroler dalam posisi on maka hal yang pertama adalah melakukan inisialisasi pada papan Arduino Uno R3. Inisialisasi yang dilakukan pada program ini adalah inisialisasi untuk komunikasi serial dan inisialisasi komunikasi I2C. Berikut contoh program inisialisasi motor RC servo: Servo myservo;
// membuat object untuk program kendali motor RC servo.
int pos = 0;
// variabel untuk posisi awal di 0 derajat.
Contoh inisialisasi motor RC servo dengan komunikasi I2C: #include <Wire.h> void setup() {
// fungsi pustaka komunikasi I2C
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Serial.begin(9600);
// gunakan koneksi serial dengan baudrate 9600
Wire.begin();
// inisialisasi library I2C
53
} Diagram alir sistem lengan robot penggambar bidang 2 dimensi dengan software Arduino IDE secara umum ditunjukkan pada Gambar 3.22. Gerakan lengan robot menurut diagram alir Gambar 3.22. terdiri dari gerakan menuju posisi awal dan gerakan menggambar bidang 2D. Gerakan menuju posisi awal adalah gerakan lengan-lengan robot ketika sistem pertama kali diaktifkan. Lengan robot akan bergerak ke posisi awalnya (home position/ nesting) sesuai dengan posisi yang telah ditentukan pada program di Arduino IDE. Gerakan menggambar bidang 2D adalah gerakan lengan-lengan robot untuk melakukan proses menggambar bidang 2D di papan gambar sesuai dengan perintah berupa bentuk gambar bidang 2D yang dibaca dari software visual basic 6.0. Gerakan menggambar bidang 2D diawali dengan gerakan lengan robot menuju titik referensi yang sudah ditentukan menuju ke papan gambar. Gerakan menggambar bidang 2D di software Arduino IDE secara lebih jelas ditunjukan dengan diagram alir program menggambar bidang 2D pada Gambar 3.23. Program diawali dengan pembacaan input pulsa dari software visual basic 6.0. dengan komunikasi serial. Kemudian setelah membaca pulsa, pertama kali pulsa yang dibaca adalah pulsa titik referensi bidang 2D yang dipilih di Visual Basic 6.0. selanjutnya lengan robot akan diperintahkan mikrokontroler dengan pulsa-pulsa digital menuju titik referensi pada papan gambar. Kemudian mikrokontroler akan mengirimkan output pulsa-pulsa digital ke setiap motor RC servo berdasarkan pembacaan data yang dikirimkan dari software visual basic 6.0. secara terus menerus sampai proses menggambar bidang 2D dinyatakan selesai. Setelah proses menggambar bidang 2D dinyatakan selesai maka lengan robot akan diperintahkan untuk kembali menuju ke posisi aman. Kembalinya lengan robot ke posisi aman menandakan bahwa lengan robot siap diperintahkan kembali untuk melakukan proses menggambar bidang 2D lagi (reset sistem).
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Gambar 3.23. Diagram Alir Program “menggambar bidang 2D” pada Arduino IDE.
54
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB IV HASIL DAN PEMBAHASAN Bab ini menjelaskan tentang pengamatan implementasi lengan robot penggambar bidang dua dimensi menggunakan mikrokontroler Arduino Uno R3 yang digerakkan menggunakan PC. Hasil implementasi dan pembahasan dibagi menjadi 3 topik yaitu hasil perancangan pada perangkat keras, hasil perancangan pada perangkat lunak dan hasil pengamatan berupa pengujian kesesuaian gambar antara gambar bidang dua dimensi yang yang digambar lengan robot secara aktual dengan gambar dua dimensi yang ditulis menggunakan PC pada visual basic 6.0.
4.1
Hasil Perancangan Perangkat Keras. Pada hasil perancangan perangkat keras akan menjelaskan tentang bentuk mekanik
sesunguhnya sistem lengan robot, komponen elektrik sistem lengan robot dan pengujian gerakan mekanik lengan robot. Bentuk mekanik meliputi tampilan keseluruhan lengan robot penggambar bidang dua dimensi, lengan-lengan (link), posisi motor servo (joint) sebagai sendinya dan posisi gerakan lengan robot berdasarkan sudut-sudutnya. Sedangkan pada komponen elektrik menunjukkan komponen-komponen pengendali motor RC servo.
4.1.1 Bentuk Mekanik Sistem Lengan Robot. Secara keseluruhan bentuk mekanik dari lengan robot penggambar bidang dua dimensi ditunjukkan pada Gambar 4.1. seperti berikut ini.
Gambar 4.1. Bentuk Mekanik Lengan Robot Penggambar Bidang Dua Dimensi 55
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
56
Pada Gambar 4.1. ditampilkan bahwa jarak lengan robot dengan papan gambar adalah 20 cm yang diukur dari titik tengah lengan robot yang diambil dari poros putar bagian base. Papan gambar adalah white board dengan ukuran 30cm X 30cm, sedangkan lengan robot dibuat dengan bahan plat aluminium yang ringan namun cukup kuat digunakan sebagai lengan penghubung (link).
Gambar 4.2. Bentuk Mekanik Lengan (Link) Gambar 4.2. merupakan bentuk mekanik lengan (link) dari perancangan desain 3D lengan robot penggambar bidang 2 dimensi yang terdiri dari base, shoulder, elbow dan pitch (pointer). Bagian shoulder digerakkan menggunakan 2 buah moto RC servo dibagian pangkalnya karena beban yang diangkat oleh bagian shoulder paling berat karena harus mengangkat lengan pitch, lengan elbow dan lengan shoulder itu sendiri. Bagian pitch menggunakan pointer berupa spidol whiteboard untuk menunjuk titik end point dari lengan robot. Tabel 4.1. berikut menunjukkan spesifikasi lengan aktual pada mekanik lengan robot (link) yang sudah sesuai dengan perancangan mekanik lengan robot di Bab III : Tabel 4.1. Spesifikasi Lengan Aktual pada Mekanik Lengan Robot (link) No. Lengan Penghubung (link)
Panjang Lengan
1
Base
2
Shoulder
18 cm
3
Elbow
12 cm
4
Pitch
5 cm
5
End effectors (pointer)
8,5 cm
Panjang keseluruhan lengan
43,5 cm
25 cm (diameter)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
57
Gambar 4.3. Posisi Motor RC Servo sebagai Persendian Lengan Robot (Joint) Keterangan: 1. Motor Base
14,3 - 15,5 Kg.cm (4,8-6Volt)
Metal Gear
2. Motor Shoulder 1
19,8 - 24,7 Kg.cm (4,8-6Volt)
Metal Gear
3. Motor Shoulder 2
19,8 - 24,7 Kg.cm (4,8-6Volt)
Metal Gear
4. Motor Elbow
14,3 - 15,5 Kg.cm (4,8-6Volt)
Metal Gear
8 - 10 Kg.cm (4,8-6Volt)
Metal Gear
5. Motor Pitch
Posisi motor RC servo secara mekanik yang ditampilkan pada Gambar 4.3. digunakan sebagai komponen persendian (joint) lengan robot. Seluruh motor RC servo yang diaplikasikan pada penelitian ini menggunakan motor RC servo metal gear karena motor RC servo jenis ini memiliki torsi yang lebih besar dan gearboxnya lebih awet sehingga aman digunakan berulang-ulang. Bagian motor base akan membuat gerakan bagian base berputar terhadap sumbu X dan sumbu Y, sedangkan motor pada bagian shoulder 1, shoulder 2, elbow dan pitch akan membuat gerakan berputar terhadap sumbu X dan sumbu Z. Pemilihan motor RC servo yang digunakan dalam penelitian ini hampir sesuai dengan perancangan di Bab III, sebab motor RC servo yang digunakan sudah disesuaikan dengan ketersediaannya di pasaran yang masih terbatas pada torsi dan tipe gear yang memiliki kemampuan mengangkat lengan-lengan robot. Lengan robot yang disusun pada penelitian ini masih memiliki speleng gerakan mekanik yang cukup besar di bagian base sehingga dapat mempengaruhi kepresisian putaran base yang digerakkan dengan motor RC servo. Speleng ini terjadi karena dua buah roda gigi yang berhubungan pada penggerak di bagian base memiliki gap (sela) yang cukup besar dan pemasangan roda gigi pada motor RC servo yang tidak centre.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
58
Gambar 4.4. Posisi Sudut-Sudut Lengan Robot Gerakan dari lengan robot membutuhkan konfigurasi gerakan motor RC servo yang membentuk sudut-sudut dengan orientasi sumbu XYZ seperti yang ditunjukkan pada Gambar 4.4. Ketika lengan robot dipandang dari atas nampak bahwa bagian base berputar membentuk sudut θ1 yang berorientasi terhadap sumbu XY, sedangkan jika dipandang dari samping nampak bahwa bagian shoulder akan membentuk sudut θ2, bagian elbow akan membentuk sudut θ3 dan pada bagian pitch akan membentuk sudut θ4 yang akan berorientasi pada sumbu XZ.
4.1.2 Komponen Elektrik Sistem Lengan Robot
Gambar 4.5. Tampilan Rangkaian Elektrik Sistem Pengendali Rangkaian elektrik sistem pengendali lengan robot ditunjukkan pada Gambar 4.5. Rangkaian elektrik sistem pengendali lengan robot penggambar bidang 2 dimensi terdiri dari:
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
59
1. Board Arduino Uno R3 (Mikrokontroler) 2. Kabel USB (Komunikasi Serial Mikrokontroler dengan PC) 3. Board Adafruit 16-Channel 12-bit PWM Servo Driver (Servo Controller) 4. Output port ke motor RC servo. Pada Gambar 4.5. mikrokontroler Arduino Uno R3 melakukan komunikasi serial dengan PC melalui kabel USB. Selain untuk komunikasi serial, kabel USB juga digunakan untuk aktifitas upload dan download program. Board Adafruit servo controller terhubung dengan board Arduino Uno R3 dengan cara stackable atau kaki-kaki board servo controller dapat ditancapkan pada port Arduino Uno R3, sehingga koneksi untuk output port ke motor RC servo dan komunikasi I2C pada pin SDA dan SCL juga sudah terhubung secara stackabel. Board Adafruit servo controller mendapatkan power supply eksternal dengan tegangan 5 volt dengan arus 5 ampere. Motor RC servo sebagai komponen persendian (joint) diaktifkan dengan pulsa-pulsa digital dari output port papan Adafruit servo controller. Output port yang digunakan pada rangkaian elektrik sistem pengendali lengan robot ini sebanyak 5 port yang digunakan untuk menggerakkan motor RC servo pada bagian base, shoulder1, shoulder2, elbow dan pitch. Terdapat 3 pin di setiap output port Adafruit servo controller yaitu port V+, port GND dan port PWM yang digunakan untuk menggerakkan motor RC servo.
4.1.3 Pengujian Gerakan Mekanik Lengan Robot Pengujian gerakan mekanik lengan robot bertujuan untuk mengetahui besarnya sudut-sudut joint dari sistem lengan robot untuk mencapai suatu titik pada koordinat tertentu. Metode yang digunakan dalam pengujian ini adalah membandingkan hasil perhitungan sudut-sudut lengan robot secara matematis dengan hasil gerakan motor RC servo yang membentuk sudut-sudut pada joint ketika mencapai suatu titik posisi. Pengujian gerakan mekanik lengan robot secara matematis seharusnya menggunakan metode perhitungan inverse kinematics dengan mengacu pada persamaan (2 - 8) sampai persamaan (2 – 22). Pengujian dilakukan dengan beberapa titik yaitu titik referensi untuk gambar bidang 2 dimensi. Sebagai contoh untuk melakukan perhitungan secara inverse kinematcs pada titik referensi kotak terletak pada koordinat XYZ (19.5 ,-13 ,30) sedangkan jarak dari titik nol sumbu koordinat XYZ ke papan gambar adalah 19,5 cm. Tabel 4.2. menunjukkan hasil
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
60
perhitungan inverse kinematics menggunakan metode geometri pada titik referensi kotak, lingkaran dan segitiga. Tabel 4.2. Perhitungan Inverse Kinematics dengan Metode Geometri pada Titik Referensi Bidang 2 Dimensi.
Titik Bidang 2D Ref. Kotak Ref. Lingkaran Ref. Segitiga
Koordinat Xt Yt Zt X Y 19,5 -13 30 8,5 -13 19,5 0 20 8,5 0 19,5 0 30 7,5 0
Z psi 26 -23,1 20 0,0 26 -24,9
Sudut Joint θ1 θ2 -33,7 89,9 0,0 89,9 0,0 89,8
θ3 -49,6 -89,4 -52,3
θ4 -63,4 -0,4 -62,4
Sudut aktual yang diperoleh dari hasil gerakan motor RC servo pada setiap joint diperoleh dengan melakukan pengukuran besar sudut yang dihasilkan setiap joint dengan menggunakan busur derajat. Secara lebih lengkap cara pengukuran menggunakan busur derajat seperti pada Gambar 4.6. dan hasil yang diperoleh dengan pengukuran ini ditunjukkan pada Tabel 4.3.
Gambar 4.6.
Cara Pengukuran Sudut Joint Menggunakan Busur Derajat
Data yang diperoleh dari perhitungan matematis (invers kinematics) dan hasil pengamatan sudut-sudut joint dengan busur derajat dihitung nilai % errornya untuk mengetahui besarnya perbedaan yang terjadi secara perhitungan dan pengamatan. Nilai %error diperoleh dengan cara sebagai berikut: %
=
ℎ
−
ℎ
100%
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
61
Tabel 4.3. Hasil Pengujian Sudut-Sudut Joint Titik Referensi Gambar Bidang 2 Dimensi dengan Invers Kinematics Menggunakan Metode Geometri. Titik Referensi Bidang 2D
Kotak
Lingkaran
Segitiga
Joint Base Shoulder Elbow Pitch Base Shoulder Elbow Pitch Base Shoulder Elbow Pitch
(θ1) (θ2) (θ3) (θ4) (θ1) (θ2) (θ3) (θ4) (θ1) (θ2) (θ3) (θ4)
Sudut dari Sudut Perhitungan Aktual dari Inverse Pengukuran Kinematics 57 75 89,9 77 40,4 65 26,6 63 0 7 89,9 95 0,6 -3 -4 10 0 5 89,9 81 37,7 62 21,8 40
Rata-rata %Error Joint Base Rata-rata % Error Joint Shoulder (dari 3 Titik Referensi) Elbow Pitch
(θ1) (θ2) (θ3) (θ4)
Delta Sudut
%Error
18 12,9 24,6 36,4 7 5,1 3,6 14 5 8,9 24,3 18,2
32% 14% 61% 137% #DIV/0! 6% 600% -350% #DIV/0! 10% 64% 83%
14,8 11% 10% 242% 43%
Delta sudut yang terdapat pada data pengamatan Tabel 4.3. masih relatif tidak stabil (fluktuatif). Faktor yang menyebabkan terjadinya fluktuasi yang tidak stabil pada pengujian gerakan mekanik lengan robot antara lain disebabkan karena ada speleng gerakan pada mekanik lengan robot, gerakan lengan-lengan pada robot yang selalu berurutan dari pitch ke base, hasil penyusunan mekanik lengan robot yang didapatkan bahwa tidak semua lengan presisi dan kesulitan meletakkan busur derajat untuk mengukur sudut aktual lengan robot terutama pada bagian base. Berdasarkan data pada Tabel 4.3. nilai dari delta sudut masih mengalami fluktuasi yang ekstrem sehingga untuk menentukan nilai-nilai sudut pada setiap joint lengan robot dengan metode inverse kinematics secara geometri akan mengalami kesulitan. Metode inverse kinematics pada penelitian ini tidak diaplikasikan dalam pemrograman di VB6.0. karena penulis masih mengalami kendala dalam membuat library untuk menghitung fungsi inverse trigonometri dan software VB6.0 yang digunakan bukan MSDN. Perancangan pada Bab III ternyata sudah dikatakan bahwa penyelesaian permasalahan inverse kinematics dengan metode geometri akan sangat menguntungkan bila pengetahuan tentang area jangkauan (workspace), struktur joint dan link robot tersedia [18]. Kesulitan yang terjadi pada pembuatan lengan robot ini apabila menggunakan metode inverse kinematics adalah bentuk mekanik (link) dan motor RC servo (joint) yang digunakan pada lengan robot ini belum presisi, sehingga pengujian penelitian ini coba dilanjutkan dengan metode forward kinematics. Kesulitan lain yang mungkin terjadi apabila penelitian lengan robot ini
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
62
mengunakan inverse kinematcs untuk mencari sudut joint adalah membutuhkan kalkulasi konversi sudut-sudut yang bernilai minus ( - ) menjadi pulsa digital. Pengujian kepresisian gerakan lengan robot dilakukan dengan pembuatan garis per step dengan panjang 10 cm pada papan gambar baik secara horisontal (Tabel 4.4) ataupun vertikal (Tabel 4.5). Gerakan per step dilakukan berdasarkan input pulsa digital pada motor RC servo. Gerakan secara horisontal dilakukan oleh motor RC servo pada bagian base sedangkan gerakan secara vertikal dilakukan pada motor RC servo pada bagian pitch. Perbedaan pulsa digital yang terjadi pada titik nol (secara increment/ decrement) ditampilkan dalam bentuk % error yang menandakan adanya speleng yang terjadi pada bentuk mekanik lengan robot. Semakin besar % error yang terjadi maka speleng pada bentuk mekanik lengan robot ini juga semakin besar. Speleng yang terbesar yaitu pada motor RC servo di bagian base, hal ini terjadi karena pada transmisi mekanik (gear) memiliki gap cukup besar dan kualitas dari motor RC servo yang digunakan juga kurang baik sehingga mengakibatkan terjadinya speleng yang besar. Tabel 4.4. Pengujian Kepresisian Gerakan Lengan Robot secara Horisontal No.
Jarak
Pulsa
1 2 3 4 5 6 7 8 9 10
0 1 cm 2 cm 3 cm 4 cm 5 cm 6 cm 7 cm 8 cm 9 cm
330 350 360 365 372 380 392 405 411 420
Pulsa DELTA ke titik Pulsa nol 330 0 290 20 290 10 290 5 290 7 290 8 290 12 290 13 290 6 290 9
Increment Decrement Error pulsa pulsa Pulsa di (dari Nol) (ke Nol) titik Nol 0 0 0% 20 60 12% 30 70 12% 35 75 12% 42 82 12% 50 90 12% 62 102 12% 75 115 12% 81 121 12% 90 130 12%
Tabel 4.5. Pengujian Kepresisian Gerakan Lengan Robot secara Vertikal No.
Jarak
Pulsa
1 2 3 4 5 6 7 8 9 10
0 1 cm 2 cm 3 cm 4 cm 5 cm 6 cm 7 cm 8 cm 9 cm
280 260 250 240 230 220 210 200 190 180
Pulsa DELTA ke titik Pulsa nol 280 0 282 20 282 10 282 10 282 10 282 10 282 10 282 10 282 10 282 10
Increment Decrement Error pulsa pulsa Pulsa di (dari Nol) (ke Nol) titik Nol 0 0 0% 20 22 1% 30 32 1% 40 42 1% 50 52 1% 60 62 1% 70 72 1% 1% 80 82 90 92 1% 100 102 1%
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
63
Berdasarkan data pengujian kepresisian gerakan lengan robot maka penelitian ini dilanjutkan dengan metode forward kinematics dengan konsekuensi harus mencari nilainilai sudut untuk menuju ke titik koordinat tertentu secara trial and error. Trial and error dilakukan dengan mencari sudut-sudut secara mencoba berulang-ulang menentukan sudut hingga mencapai posisi koordinat tertentu. Persamaan yang digunakan untuk mencari posisi koordinat XZ (pandangan vertikal) seperti pada persamaan (2 - 9) dan (2 - 10) sedangkan untuk mencari posisi koordinat XY (pandangan horisontal) tetap menggunakan persamaan (2 - 9) dan (2 - 10) seperti yang sudah dijelaskan pada Bab II. Berdasarkan penjelasan persamaan tersebut, maka nilai nilai sudut yang ditentukan untuk menuju ke koordinat titik referensi end effector pada gambar bidang 2 dimensi secara lengkap ditunjukkan pada Tabel 4.6. Tabel 4.6.
Sudut-Sudut yang Ditentukan pada Titik Referensi Gambar Bidang 2 Dimensi dengan Forward Kinematics
Titik Referensi
Pengamatan Sudut (ditentukan) Joint
tetha 1 tetha 2 KOTAK tetha 3 tetha 4 tetha 1 tetha 2 Lingkaran tetha 3 tetha 4 tetha 1 tetha 2 Segitiga tetha 3 tetha 4
Pengamatan Posisi
Sudut Koordinat -22 80 -20 -28 18 100 -75 -43 17 85 -20 -53
cm
Perhitungan Posisi (Forward Kinematics ) Koordinat
Delta % Error Koordinat
cm
XT YT ZT
19,5 -14,5 32,5
XT YT ZT
20,6 -16,3 35,3
1,1 -1,8 2,8
5,2% 11,0% 7,9%
XT YT ZT
19,5 1 17,5
XT YT ZT
20,6 13,4 18,6
1,1 12,4 1,1
5,3% 92,6% 6,0%
XT YT ZT
19,5 1 31,5
XT YT ZT
19,8 12,7 31,6
0,3 11,7 0,1
1,7% 92,1% 0,4%
Hasil pengujian sudut-sudut joint pada titik referensi gambar bidang 2D seperti pada Tabel 4.6. menunjukkan bahwa masih ada selisih nilai-nilai koordinat titik referensi dari pengamatan posisi dan dari perhitungan posisi dengan metode forward kinematics. Selisih nilai koordinat (delta nilai koordinat) titik referensi dihitung untuk mengetahui besarnya perbedaan yang terjadi. Data pada Tabel 4.6. menunjukkan bahwa selisih nilai terbesar ditunjukkan pada koordinat YT. Pergerakan lengan robot pada koordinat YT terutama dipengaruhi oleh joint pada bagian base. Bentuk mekanik dari base pada lengan robot ini tidak berada pada titik tengah poros putar sehingga perhitungan koordinat YT
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
64
memiliki nilai %error yang paling besar sehingga nilai-nilai yang behubungan dengan joint pada bagian base sulit ditentukan menggunakan kinematics baik secara forward maupun inverse. Tabel 4.7. Hasil Pengujian Resolusi Gerakan Motor RC Servo di Setiap Joint dengan Mapping Pulsa. No. Sudut 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180
Pulse 170 185 208 230 253 280 307 333 360 388 413 440 467 497 524 556 585 613 error
Base Pulse %Error Conversion 150 13% 177 5% 203 2% 230 0% 257 2% 283 1% 310 1% 337 1% 363 1% 390 1% 417 1% 443 1% 470 1% 497 0% 523 0% 550 1% 577 1% 603 2% 630 #VALUE!
Standar Deviasi
3%
Pulse 215 243 267 290 310 337 360 387 410 430 455 480 503 525 547 572 593 620 640
Shoulder Elbow Pitch Pulse Pulse Pulse %Error Pulse %Error Pulse %Error Conversion Conversion Conversion 220 2% 220 220 0% 180 180 0% 243 0% 247 247 0% 207 205 1% 267 0% 273 273 0% 232 230 1% 290 0% 295 300 2% 255 255 0% 313 1% 322 327 2% 280 280 0% 337 0% 350 353 1% 305 305 0% 360 0% 375 380 1% 330 330 0% 383 1% 407 407 0% 355 355 0% 407 1% 433 433 0% 382 380 1% 430 0% 460 460 0% 405 405 0% 453 0% 487 487 0% 430 430 0% 477 1% 505 513 2% 452 455 1% 500 1% 540 540 0% 477 480 1% 523 0% 567 567 0% 505 505 0% 547 0% 593 593 0% 532 530 0% 570 0% error 620 #VALUE! 557 555 0% 593 0% error 647 #VALUE! 580 580 0% 617 0% error 673 #VALUE! 606 605 0% 640 0% error 700 #VALUE! 630 630 0%
Standar Deviasi
1%
Standar Deviasi
1%
Standar Deviasi
0%
Tabel 4.7. merupakan hasil dari pengujian keseluruhan resolusi gerakan motor RC servo pada setiap joint lengan robot dengan mapping pulsa. Pengujian ini bertujuan untuk memastikan kepresisian dari mapping pulsa digital (pulse conversion) yang diperoleh dari perhitungan dengan pengukuran gerakan pada sudut aktual. Mapping pulsa digital (pulse conversion) secara lengkap ditunjukkan pada bagian lampiran (L1) penelitian ini. Pengujian resolusi dilakukan setiap pergerakan 100 yang diukur menggunakan busur derajat yang dipasang di setiap joint lengan robot. Beberapa data pada Tabel 4.7. menunjukkan nilai dari pulsa yang error, hal tersebut disebabkan oleh kondisi motor RC servo yang diberi inputan pulsa digital mengalami noise berupa suara yang agak kasar pada
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
65
motor RC servo sehingga pengambilan data dihentikan sampai motor RC servo mengalami noise. Berikut ini merupakan cara yang digunakan untuk menghitung mapping pulsa digital untuk pada sudut 00 - 1800 : 1. Mencari pulsa digital dari sudut maksimal dan minimal dengan trial and error kemudian menghitung selisih pulsanya. Contoh: pulsa 00 = 150,
pulsa 1800 = 630,
selisih pulsa = 480,
2. Menentukan konstanta perhitungannya dengan membagi selisih pulsa dengan 1800. Contoh: Konstanta = 480/180 = 2,67 3. Setelah itu untuk mencari pulsa yang dibutuhkan untuk menggerakkan motor RC servo pada sudut tertentu adalah: Pulsa = (Sudut * Konstanta) + 1500
4.2
Hasil Perancangan Perangkat Lunak (Software) Pada hasil perancangan perangkat lunak akan menjelaskan tentang penggunaan
software Visual Basic 6.0. dan software Arduino IDE yang berkomunikasi secara serial menggunakan kabel USB pada aplikasi sistem lengan robot penggambar bidang 2 dimensi berbasis mikrokontroler dengan pc. Perangkat lunak dapat diprogram untuk menggerakkan sistem lengan robot. Perintah untuk menggambar bidang 2D dilakukan di software Visual Basic 6.0 sedangkan perintah untuk menggerakkan lengan robot dilakukan si software Arduino IDE. Data serial yang dikirim secara serial dari pc ke mikrokontroler Arduino Uno R3 berupa pulsa-pulsa digital yang dapat menggerakkan motor RC servo. Secara keseluruhan hasil dari perancangan perangkat lunak pada sistem lengan robot ini seperti pada perancangan perangkat lunak di Bab III dan sudah dapat berjalan dengan baik namun belum sempurna. Menurut John Craig dalam bukunya Introduction to Robotics Mechanics and Control 3th edition banyak membahas mengenai masalah yang muncul pada pemrograman robot. Masalah khas dari pemrograman robot adalah bahasa pemrograman konvensional dengan tambahan kesulitan dari efek bentuk fisik robot [21]. Masalah yang muncul pada penelitian ini adalah pada timing untuk komunikasi serial yaitu saat pengiriman data dari pc ke mikrokontroler yang tidak dapat dipantau secara real time sehingga membutuhkan percobaan berulang-ulang sampai menemukan timing yang tepat untuk pengiriman data. Kesulitan pada pengaturan timing untuk transfer data dari VB6.0
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
66
ke mikrokontroler pada penelitian ini menjadi faktor utama pada proses pengambilan data menjadi tidak maksimal karena proses pengiriman data yang terus menerus menyebabkan kehilangan data karena terjadi overflow di buffer komunikasi serial. Program yang digunakan pada penelitian ini hanya mampu menggerakkan lengan robot pada titik-titik end effector yang sudah ditentukan saja dan menggunakan metode trial and error (dicoba berulang-ulang) dengan mempertimbangkan faktor overflow di buffer komunikasi serial.
4.2.1 Pembahasan Program pada Software Visual Basic 6.0.
Gambar 4.7.
Tampilan Antarmuka Visual Basic 6.0.
Gambar 4.7. merupakan tampilan dari antarmuka Visual Basic 6.0. yang digunakan untuk memberikan perintah pada sistem lengan robot untuk menggambar bidang 2 dimensi. Perintah dituliskan dalam bentuk form yang memuat textbox untuk menuliskan besarnya dimensi dan commandbutton untuk melakukan pemilihan jenis gambar 2D dan eksekusi program. Penekanan tombol “RUN” digunakan untuk eksekusi program, yaitu memberikan besaran pulsa-pulsa digital yang dikirim ke mikrokontroler dengan timing tertentu untuk menggerakkan motor RC servo menggambar bidang 2D.
Gambar 4.8.
Tampilan Antarmuka Visual Basic 6.0. pada Pengisian Dimensi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
67
Gambar 4.8. merupakan form yang menampilkan antarmuka Visual Basic 6.0. untuk melakukan pengisian parameter ukuran dimensi untuk bidang 2D yang akan digambar. Parameter ukuran dimensi pada penelitian ini berupa sisi kotak, jari-jari lingkaran dan sisi segitiga. Pengisian parameter ukuran gambar 2D dilakukan dengan pemilihan menekan tombol jenis gambar 2D. Sistem yang dibuat pada lengan robot ini, besarnya parameter ukuran gambar bidang 2D sudah ditentukan hanya beberapa ukuran saja untuk setiap jenis gambar bidang 2D. Program utama yang ditulis di software visual basic 6.0. secara garis besar adalah program untuk menggambar bidang 2D, namun program utama tersebut memerlukan program inisialisasi dan logika-logika urutan untuk menjalankan program. Program inisialisasi yang ditunjukkan pada Gambar 4.9. merupakan inisialisasi terhadap variabelvariabel yang digunakan untuk menulis program dan inisialisasi untuk membuka dan menutup komunikasi serial untuk pengiriman data ke mikrokontroler. Sedangkan Gambar 4.10. menunjukkan program proses pemilihan gambar bidang 2D pada software visual basic 6.0. Proses pemilihan gambar bidang 2D dilakukan dengan melakukan penekanan tombol jenis bidang 2D, kemudian memasukkan parameter ukuran dimensi dari bidang 2D yang dipilih. Setelah parameter dimensi sudah tulis selanjutnya penekanan tombol eksekusi (tombol RUN) baru dapat dilakukan untuk menjalankan program utama yaitu menggambar bidang 2D. Program utama yang ditujukkan Gambar 4.11. melakukan eksekusi untuk menggambar bidang 2D berdasarkan parameter dimensi yang sudah ditentukan. Running program menggambar akan berkerja seperti yang ditunjukkan Gambar 4.12 dengan cara melakukan pengiriman data berupa pulsa-pulsa digital yang dapat dibaca oleh mikrokontroler dan servo controller secara serial melalui MSCommport1.output dengan pengaturan timer. Penelitian pada tahap ini mengalami masalah pada pengaturan timing yang tepat untuk pengiriman data sebab pengiriman data serial tidak dapat dipantau secara real time sehingga untuk menggambar sebuah bidang 2D membutuhkan waktu yang lama dan percobaan berulang-ulang. Hal yang menyebabkan terjadinya masalah pada pengaturan timing untuk transfer data dari VB6.0. ke mikrokontroler adalah terjadinya kehilangan data karena buffer pada DCE (Data Circuit Terminal Equipment) yaitu pada mikrokontroler mengalami overflow [19]. Tidak ada cara yang paling baik (setidaknya di VB6.0) untuk mengambil data di receive buffer seperti pada receive buffer di mikrokontroler. Konversi ASCII ke byte diperlukan untuk memperhitungkan pengiriman
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
68
data ke mikrokontroler. Pengaturan ukuran paket data diperlukan untuk mendapatkan kinerja yang tepat. Mengirimkan 1 byte pada suatu waktu membutuhkan banyak overhead [20]. Pada penelitian ini penulis mencoba untuk menampilkan flow data yang ditransmisikan dengan membuat monitoring flow komunikasi data dengan shape dari VB6.0. Apabila shape berwarna merah dan label bertuliskan “B” berarti pc sedang membaca penerimaan data dari mikrokontroler, sedangkan apabila shape berwarna kuning dan bertuliskan “T” maka pc dapat sedang melakukan pengiriman data ke mikrokontroler. Namun yang terjadi pada penelitian ini penulis masih mengalami kesulitan untuk mengetehui dan menentukan kapan proses pengiriman data dari VB 6.0 (timing) ke mikrokontroler dapat dilakukan. Range pulsa digital yang dapat dibaca oleh servo controller sebesar 150-600 pulsa untuk putaran motor RC servo sebesar 00-1800, namun pada aplikasinya pulsa digital yang dibaca oleh motor RC servo dapat berbeda karena ada beberapa motor yang dapat berputar lebih dari 1800 dan adanya speleng pada mekanik lengan robot yang cukup besar.
Gambar 4.9.
Program Inisialisasi Variable dan Inisialisasi Kominukasi Serial pada Software Visual Basic 6.0.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
69
Gambar 4.10. Program Pemilihan Gambar Bidang 2D pada Software Visual Basic 6.0.
Gambar 4.11. Eksekusi Program Utama Menggambar Bidang 2D pada Software Visual Basic 6.0.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
70
Gambar 4.12. Running Program Utama ketika Menggambar Bidang 2D pada Software Visual Basic 6.0.
4.2.2 Pembahasan Program pada Software Arduino IDE. Pada penelitian dengan sistem lengan robot penggambar bidang 2 dimensi software Arduino IDE digunakan untuk menulis program, melakukan pembacaan data serial dari software Visual Basic 6.0. dan melakukan pengiriman data berupa pulsa-pulsa digital ke papan servo controller (Adafruit 16-Channel 12-bit PWM Servo Driver) untuk menggerakkan motor RC servo. Program yang ditulis di Arduino IDE selain pembacaan dan pengiriman data adalah program untuk mengatur kecepatan motor RC servo menggunakan increment/ decrement. Gambar 4.13. merupakan tampilan umum dari software Arduino IDE yang digunakan untuk menulis program pada mikrokontroler Arduino Uno R3.
Gambar 4.13. Tampilan Software Arduino IDE
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
71
Sebelum melakukan penulisan program utama untuk menjalankan sistem, seluruh fungsi dan variabel yang digunakan dalam proses pengoperasian program harus didefinisikan/ dideklarasikan terlebih dahulu. Pendefinisian fungsi dan variabel pada sistem lengan robot ini merupakan program inisialisasi. Inisialisasi pada sistem ini adalah inisialisasi library untuk servo controller Adafruit 16-Channel 12-bit PWM Servo Driver, inisialisasi batasan mapping pulsa-pulsa digital yang dapat dibaca servo controller dan deklarasi variabel sebagai data operasional program. Secara default besaran pulsa-pulsa digital yang dapat dibaca oleh servo controller dan digunakan sebagai mapping sudut menjadi pulsa-pulsa digital adalah sebesar 150-600 pulsa untuk gerakan motor RC servo 00-1800. Program inisialisasi yang digunakan pada software Arduino IDE ditunjukkan pada Gambar 4.14.
Gambar 4.14. Program Inisialisasi pada Software Arduino IDE Proses menggambar bidang 2D dilakukan dengan menggerakkan pointer lengan robot menuju ke titik-titik gambar pada papan gambar. Posisi-posisi titik gambar sebelumnya telah disimpan sebagai data yang dapat dipanggil ketika sistem mendapatkan perintah untuk aktif. Posisi-posisi titik koordinat gambar ditentukan berdasarkan pulsapulsa digital dengan serial monitor pada software Arduino IDE yang selanjutnya pulsapulsa digital tersebut akan disimpan di program Visual Basic 6.0. Penggunaan serial monitor dilakukan dengan memberikan input pulsa pada semua motor RC servo secara bersamaan. Input pulsa sudah didefinisikan pada program mapping dengan batasan yang mampu dibaca oleh servo controller. Gambar 4.15. merupakan tampilan serial monitor pada software Arduino IDE.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
72
Gambar 4.15. Proses Menentukan Titik Koordinat Gambar dengan Serial Monitor pada Software Arduino IDE Posisi-posisi lengan robot yang ditentukan menggunakan serial monitor adalah posisi titik referensi untuk awalan gambar bidang 2D, posisi titik-titik gambar bidang 2D dan posisi awal lengan robot (home position). Pada software Arduino IDE yang ditentukan adalah posisi awal lengan robot saja karena ketika pertama kali sistem diaktifkan lengan robot secara langsung diperintahkan bergerak pada posisi awal. Perintah untuk menggerakkan lengan robot adalah mengatur PWM dengan pulsa digital pada setiap pin yang terhubung dengan motor RC servo pada papan servo controller Adafruit 16-Channel 12-bit PWM Servo Driver. Gambar 4.16. merupakan program untuk setting posisi awal lengan robot pada saat sistem pertama kali diaktifkan atau saat komunikasi serial dibuka. Ketika serial monitor aktifkan atau komunikasi serial dibuka, maka semua port I/O pada mikrokontroler Arduino Uno R3 akan bernilai low sehingga menyebabkan motor RC servo akan kembali menuju pulsa minimal terlebih dahulu sebelum melakukan gerakan yang diperintahkan dengan pulsa digital.
Gambar 4.16. Program Setting Posisi Awal pada Software Arduino IDE
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
73
Gambar 4.17. merupakan program utama pada sistem lengan robot penggambar bidang 2D berbasis mikrokontroler dengan pc. Program utama ini berisi tentang pembacaan data serial dari Visual Basic 6.0. (komunikasi serial) sebagai input mikrokontroler. Pembacaan data serial akan dimasukkan pada register data yang akan dibaca oleh mikrokontroler Arduino Uno R3 berdasarkan urutan pengiriman data komunikasi serial. Terdapat 4 register data yang berurutan pada pengiriman data serial yang memiliki nilai bawaan dari Visual Basic 6.0. selanjutnya nilai tersebut diterjemahkan sebagai data-data untuk melakukan kalkulasi sebagai output pulsa digital. Register data yang berurutan tersebut adalah pitch, elbow, shoulder dan base.
Gambar 4.17. Program Pembacaan Data Serial dari Visual Basic 6.0. di PC dan Mikrokontroler Arduino Uno R3 (Komunikasi Serial) Gambar 4.18. merupakan program dari pengaturan kecepatan putaran motor RC servo dan program pengiriman pulsa-pulsa digital sebagai output dari mikrokontroler ke motor RC servo melalui servo controller (Adafruit 16-Channel 12-bit PWM Servo Driver). Program untuk mengatur kecepatan motor RC servo dilakukan dengan membandingkan nilai register data dari pembacaan komunikasi serial dengan nilai data yang sudah ditetapkan sebelumnya dan dilakukan secara increment dan decrement (nilai bertambah/ berkurang bertahap) yaitu gerakan dilakukan per-step dengan delay waktu tertentu. Delay waktu akan mempengaruhi cepat lambat gerakan motor RC servo. Program untuk mengirim pulsa-pulsa digital sebagai output dari mikrokontroler dilakukan dengan merubah nilai PWM (Pulse Width Modulation) pada port – port yang dihubungkan ke motor RC servo. Nilai-nilai PWM diambil dari hasil pembacaan register data dari komunikasi serial Visual Basic 6.0. dengan mikrokontroler Arduino Uno R3. Nilai-nilai PWM disimpan pada register data yaitu data1, data2, data5 dan data6.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
74
Gambar 4.18. Program Pengaturan Kecepatan Motor RC Servo secara Increment/ Decrement dan Pengiriman Pulsa Digital Gambar 4.19. merupakan program konfigurasi data dari pembacaan register data komunikasi serial yang disimpan sebagai data yang dikirim ke port-port output mikrokontroler kemudian digunakan untuk menggerakkan motor RC servo. Data yang digunakan untuk menggerakkan motor RC servo sudah berupa pulsa digital sebesar 150600 pulsa untuk menggerakkan 00-1800. Data disimpan sebagai posisi terakhir pulsa digital yang digunakan untuk menjaga agar lengan robot bergerak berdasarkan dari posisi terakhir pulsa digital yang sudah disimpan tersebut menuju ke posisi berikutnya.
Gambar 4.19. Program Konfigurasi Register Data
4.3
Hasil Pengujian Gambar Bidang Dua Dimensi Pada pengujian gambar bidang 2D akan menjelaskan tentang hasil dari pengamatan
berupa pengujian kesesuaian gambar antara gambar bidang 2D aktual (yang digambar lengan robot pada papan gambar) dengan gambar bidang 2D yang dipilih dari PC dengan software visual basic 6.0. Selanjutnya hasil dari pengujian gambar bidang 2D dianalisa kesesuaiannya dengan parameter dimensi yang dimasukan dari software visual basic 6.0. Seluruh hasil gambar oleh lengan robot berupa titik-titik posisi end effector yang membentuk kerangkan sebuah gambar bidang 2D. Seluruh posisi titik end effector kemudian ditarik dengan garis sehingga membentuk sebuah bidang 2D seperti ditunjukkan oleh Gambar 4.20., Gambar 4.21. dan Gambar 4.22. Konfigurasi garis yang membentuk bidang 2D selanjutnya dianalisa kesesuaiannya dengan parameter dimensi yang
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
75
dimasukkan dari software visual basic 6.0. Secara keseluruhan penelitian lengan robot dengan tujuan untuk menggambar bidang 2 dimensi ini belum dapat membentuk garis yang benar-benar lurus baik garis vertikal, garis horisontal, garis miring dan garis radius. Hal tersebut terjadi karena joint-joint lengan robot bergerak bergantian sesuai dengan urutan data yang diterima oleh mikrokontroler secara serial. Lengan robot pada penelitian ini hanya mampu bergerak secara point to point.
4.3.1 Analisa Hasil Gambar Kotak Hasil gambar kotak yang dilakukan dengan sistem lengan robot ini sudah sesuai dengan perancangannya namun belum dapat dikatakan sempurna. Cara menggambar dengan lengan robot sudah seperti pada perancangannya yaitu mengggambar titik-titik yang mendekati bentuk bidang kotak, namun tidak bisa secara otomatis membuat garis yang benar-benar lurus membentuk kotak sehingga perlu ditarik garis bantu untuk membentuk pola kotak. Titik-titik sudut yang sudah digambar selanjutnya diukur jaraknya menggunakan
penggaris
sehingga
didapatkan
ukuran
sisi-sisi
kotak
kemudian
dibandingkan dengan parameter ukuran yang dimasukkan dari Visual Basic 6.0. . Gambar 4.20. merupakan hasil gambaran kotak dari gerakan lengan robot pada papan gambar.
Gambar 4.20. Gambar Kotak dari Gerakan Lengan Robot
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
76
Parameter ukuran dimensi pada bidang kotak adalah nalai dari sisi. Tabel 4.8. merupakan sisi yang ditentukan pada sistem lengan robot untuk melakukan analisa berdasarkan parameter dimensi pada gambar kotak. Bidang kotak yang dapat digambar lengan robot ukuran dimensinya ditentukan dari Visual Basic 6.0. dengan input sisi kotak yang bervariasi yaitu 2cm, 5cm, 15cm dan 20cm. Hasil gambar kotak aktual diperoleh berdasarkan keempat sisi yang berhasil digambar lengan robot. Gambar 4.20. merupakan hasil gambaran bidang 2D berbentuk kotak dengan gerakan dari lengan robot. Tabel 4.8. Analisa Gambar Kotak No.
Input
1 2 3 4
2 5 15 20
s1 2,5 5,5 16 20,5
s2 2 5 15,5 19,8
Actual s3 s4 AVERAGE 3 2 2,375 5 5 5,125 15 15,7 15,55 20 19,5 19,95
Delta 0,375 0,125 0,55 0,05
% Error 18,75% 2,50% 3,67% 0,25%
Berdasarkan pembacaan pada Tabel 4.8. dapat dilihat bahwa hasil dari gambar aktual nilainya bervariasi pada keempat sisi kotak sehingga untuk mengetahui kepresisiannya perlu membuat nilai rata-rata dari sisi aktual gambar kotak kemudian dapat dihitung nilai errornya dari input di Visual Basic 6.0.. Gambar kotak dengan sisi yang kecil memiliki nilai error yang paling besar dibandingkan dengan gambar kotak lainnya yaitu sebesar 18,75%. Sedangakan gambar aktual yang sisinya lebih panjang memiliki nilai error yang relatif lebih kecil. Terjadinya nilai error pada sistem lengan robot ini terjadi karena beberapa hal yaitu adanya speleng putaran motor RC servo secara mekanik, bentuk mekanik lengan robot kurang presisi, gerakan joint-joint lengan robot tidak dapat bergerak bersama karena menggunakan komunikasi serial sehingga motor RC servo di setiap joint berputar berurutan mulai dari pitch sampai ke base. Berdasarkan hasil pengamatan pada gambar kotak ternyata pada penelitian ini lengan robot belum dapat membuat garis yang benar-benar lurus pada bidang datar sehingga algoritma yang digunakan dalam proses membuat garis lurus pada bidang datar pada lengan robot masih perlu disempurnakan.
4.3.2 Analisa Hasil Gambar Segitiga Hasil gambar segitiga yang dilakukan dengan sistem lengan robot ini sudah sesuai dengan perancangannya namun juga belum sempurna. Cara menggambar dengan lengan robot sudah seperti pada perancangannya yaitu mengggambar titik-titik yang mendekati bentuk bidang segitiga, namun tidak bisa secara otomatis membuat garis yang benar-benar
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
77
lurus dan garis miring membentuk segitiga sehingga perlu ditarik garis bantu untuk membentuk pola segitiga. Titik-titik sudut yang sudah digambar selanjutnya diukur jaraknya menggunakan penggaris sehingga didapatkan ukuran sisi-sisi segitiga kemudian dibandingkan dengan parameter ukuran yang dimasukkan dari Visual Basic 6.0. Gambar 4.21. merupakan hasil gambaran gambar segitiga dari gerakan lengan robot pada papan gambar.
Gambar 4.21. Gambar Segitiga dari Gerakan Lengan Robot Parameter ukuran dimensi pada bidang segitiga adalah nalai dari sisi-sisi segitiga. Tabel 4.9. merupakan sisi segitiga yang ditentukan pada sistem lengan robot untuk melakukan analisa berdasarkan parameter dimensi pada gambar segitiga. Bidang segitiga yang dapat digambar lengan robot ukuran dimensinya ditentukan dari Visual Basic 6.0. dengan input sisi segitiga yang bervariasi yaitu 3cm, 9cm dan 15cm. Hasil gambar segitiga aktual diperoleh berdasarkan ketiga sisi yang berhasil digambar lengan robot. Gambar 4.21. merupakan hasil gambar bidang 2D segitiga yang berhasil digambar dengan gerakan lengan robot. Tabel 4.9. Analisa Gambar Segitiga No.
Input
1 2 3
3 9 15
s1 3 9,8 14,3
Actual s2 s3 3 3 9,3 8,5 14,5 15
AVERAGE 3 9,2 14,6
Delta 0 0,2 0,4
% Error 0,00% 2,22% 2,67%
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
78
Berdasarkan pembacaan pada Tabel 4.9 dapat dilihat bahwa hasil dari gambar aktual nilainya bervariasi pada ketiga sisi yang membentuk segitiga sehingga untuk mengetahui kepresisiannya perlu membuat nilai rata-rata dari sisi aktual gambar segitiga kemudian dapat dihitung nilai errornya dari input di Visual Basic 6.0.. Gambar segitiga dengan sisi yang besar memiliki nilai error yang paling besar dibandingkan dengan gambar segitiga lainnya yaitu sebesar 2,67%. Sedangakan gambar aktual yang sisinya lebih pendek memiliki nilai error yang relatif lebih kecil. Terjadinya nilai error pada sistem lengan robot ini terjadi karena beberapa hal yaitu adanya speleng putaran motor RC servo secara mekanik, bentuk mekanik lengan robot kurang presisi, gerakan joint-joint lengan robot tidak dapat bergerak bersama karena menggunakan komunikasi serial sehingga motor RC servo di setiap joint berputar berurutan mulai dari pitch sampai ke base. Berdasarkan hasil pengamatan pada gambar segitiga ternyata pada penelitian ini lengan robot belum dapat membuat garis yang benar-benar lurus dan garis miring pada bidang datar sehingga algoritma yang digunakan dalam proses membuat garis lurus dan miring pada bidang datar dengan lengan robot masih perlu disempurnakan.
4.3.3 Analisa Hasil Gambar Lingkaran Hasil gambar lingkaran yang dilakukan dengan sistem lengan robot ini belum berhasil untuk membuat gambar lingkaran sempurna namun hasil gambaran yang dapat dibuat dari penelitian ini masih berupa segi banyak. Cara menggambar dengan lengan robot sudah seperti pada perancangannya yaitu mengggambar titik-titik sejumlah 9 titik membentuk segi banyak yang diharapkan mendekati bentuk bidang lingkaran. Hasil dari gambaran pada penelitian ini juga belum bisa membuat garis lengkung atau melingkar membentuk pola lingkaran. Titik-titik sudut yang sudah digambar selanjutnya diukur jaraknya menggunakan penggaris sehingga didapatkan ukuran jari-jari (r) atau garis penyusun segi banyak kemudian dibandingkan dengan parameter ukuran yang dimasukkan dari Visual Basic 6.0. Gambar 4.22. merupakan hasil gambaran gambar segi banyak dari gerakan lengan robot pada papan gambar.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
79
Gambar 4.22. Gambar Segi Banyak dari Gerakan Lengan Robot Parameter ukuran dimensi pada bidang segi banyak adalah nalai dari jari-jari ( r ). Tabel 4.10 merupakan jari-jari segi banyak yang ditentukan pada sistem lengan robot untuk melakukan analisa berdasarkan parameter dimensi. Bidang segi banyak yang dapat digambar lengan robot ukuran dimensinya ditentukan dari Visual Basic 6.0. dengan input jari-jari segi banyak dalam program direncanakan dibuat 6cm dan 9cm. Hasil gambar segi banyak aktual diperoleh berdasarkan jari-jari yang berhasil digambar lengan robot. Gambar 4.22. merupakan hasil gambar bidang 2D segi banyak yang telah digambar dengan gerakan lengan robot. Tabel 4.10. Analisa Gambar Segi Banyak No. Input 1 2 3 4 5
6
6 7 8 9 Average Std. Deviasi % error
Jari-jari (Actual) 6,8 8,3 7,9 7,5 5,3 4,2 5 7 6,5
6,5 1,39 8%
Delta (jari-jari) 0,8 2,3 1,9 1,5 -0,7 -1,8 -1 1 0,5
0,5
Berdasarkan pembacaan pada Tabel 4.10 dapat dilihat bahwa hasil dari gambar aktual nilainya bervariasi pada jari-jari yang membentuk segi banyak sehingga untuk mengetahui kepresisiannya perlu membuat nilai rata-rata dan besarnya simpangan baku
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
80
(standar deviasi) dari jari-jari aktual gambar segi banyak kemudian dapat dihitung nilai errornya dari input di Visual Basic 6.0.. Nilai jari-jari pada gambar segi banyak masih bervariasi dan posisi koordinatnya kurang beraturan padahal pada saat menentukan posisi koordinat titik-titik dengan serial monitor Arduino IDE sudah diukur dengan jari-jari 6 cm dari pusat segi banyak. Terjadinya nilai error pada sistem lengan robot ini terjadi karena beberapa hal yaitu adanya speleng putaran motor RC servo secara mekanik terutama pada bagian base, bentuk mekanik lengan robot kurang presisi, gerakan joint-joint lengan robot tidak dapat bergerak bersama karena menggunakan komunikasi serial sehingga motor RC servo di setiap joint berputar berurutan mulai dari pitch sampai ke base. Berdasarkan hasil pengamatan pada gambar segi banyak ternyata pada penelitian ini lengan robot belum dapat membuat garis lengkung atau melingkar pada bidang datar sehingga algoritma yang digunakan dalam proses membuat garis lengkung atau melingkar pada bidang datar dengan lengan robot masih perlu disempurnakan.
4.3.4 Hasil Pengujian Tingkat Keberhasilan Pengujian tingkat keberhasilan pada penelitian ini difokuskan pada dua hal yaitu kemampuan lengan robot untuk menggambar bidang 2 dimensi secara berulang dan kemampuan gerakan lengan robot menuju ke titik koordinat gambar bidang 2 dimensi yang sudah ditetukan. Pengujian tingkat keberhasilan digunakan sebagai data indikator tingkat keberhasilan dari penelitian yang telah dilakuakan dengan menggunakan lengan robot. Pengujian tingkat keberhasilan yang pertama difokuskan pada kemampuan lengan robot ketika diperintahkan menggambar sebuah gambar bidang 2D pada papan gambar sesuai pada perancangan (point to point) sebanyak 10 kali secara terus-menerus. Jika lengan robot berhasil membuat bentuk gambar bidang 2D dengan suatu ukuran sebanyak 10 kali berturut-turut maka tingkat keberhasilannya 100%. Contoh gambar yang diuji seperti yang ditunjukkan pada Gambar 4.20 dan 4.21. Kegagalan pada pengujian ini disebabkan oleh faktor mekanik dan software. Faktor mekanik yaitu bagian mekanik lengan robot mengalami selip sehingga gambar yang dibuat lengan robot di papan gambar meleset jauh dari posisi yang seharusnya sehingga menyebabkan perubahan ukuran dimensi gambar dari yang sudah ditetapkan sebelumnya, sedangkan faktor software yaitu program pada VB 6.0. berhenti karena terjadi masalah pada komunikasi serial yaitu proses pengiriman data dari VB 6.0 terhenti sehingga motor RC servo menjadi berhanti. Pengujian tingkat keberhasilan pada penelitian ini hanya dilakukan pada gambar kotak dan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
81
segitiga karena gambar kotak dan segitiga memang dapat digambar sesuai dengan perancangannya pada papan gambar sedangkan gambar segi banyak tidak dapat diaplikasikan pada papan gambar karena pada perancangan yang akan digambar adalah bidang lingkaran bukan bidang segi banyak. Berdasarkan data hasil uji tingkat keberhasilan pada Tabel 4.11 ditunjukkan bahwa rata-rata tingkat keberhasilan menggambar bidang kotak adalah 90% sedangkan rata-rata tingkat keberhasilan menggambar bidang segitiga adalah 73%.
Tabel 4.11. Hasil Uji Tingkat Keberhasilan Lengan Robot Menggambar Bidang 2D secara Berulang.
GAMBAR BIDANG 2D NO. 1 2 3 4 5 6 7 8 9 10
2 Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil 100%
KOTAK SEGITIGA 5 15 20 3 9 Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Gagal Berhasil Berhasil Gagal Berhasil Gagal Gagal Berhasil Berhasil Berhasil Gagal Gagal Berhasil Berhasil Berhasil Gagal Berhasil Berhasil Berhasil Berhasil Gagal Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Gagal Berhasil Tingkat Keberhasilan 100% 90% 70% 40% 80% Rata-Rata Tingkat Keberhasilan 90% 73%
15 Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil Berhasil 100%
Pengujian tingkat keberhasilan yang ke dua dilakukan dengan mencatat jumlah posisi titik dari gambar bidang 2D yang berhasil dituju dengan gerakan lengan robot ketika sistem mulai dijalankan. Posisi –posisi titik sebelumnya sudah ditentukan posisinya di papan gambar. Banyaknya jumlah posisi titik yang ditentukan berbeda-beda karena disesuaikan dengan ukuran dimensi gambar bidang 2D dan kemampuan jangkauan lengan robot ketika pointer menyentuh papan gambar. Hasil uji tingkat keberhasilan gerakan lengan robot ketika menuju posisi titik-titik gambar bidang 2D yang sudah ditentukan ditunjukkan pada Tabel 4.12. Rata-rata tingkat keberhasilan lengan robot ketika menggambar bidang kotak adalah 85%, rata-rata tingkat keberhasilan lengan robot ketika
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
82
menggambar bidang segitiga adalah 86% dan ketika menggambar segi banyak adalah 21%. Tingkat keberhasilan ketika menggambar segi banyak pada penelitian ini paling rendah karena pada saat menggambar dengan lengan robot pointer yang menempel pada papan gambar banyak meleset dari koordinat yang sudah ditentukan akibat pengaruh dari speleng pada bagian base yang cukup besar.
Tabel 4.12. Hasil Uji Tingkat Keberhasilan Gerakan Lengan Robot Menuju Posisi Titik Gambar Bidang 2D. BIDANG 2 DIMENSI
KOTAK
SEGITIGA SEGI BANYAK
Ukuran 2 5 15 20 3 9 15 6
Jumlah Titik 6 6 12 12 5 7 15 14
Titik yang Rata-rata Tingkat berhasil Tingkat Keberhasilan dituju Keberhasilan 5 5 10 11 4 6 14 3
83% 83% 83% 92% 80% 86% 93% 21%
85%
86% 21%
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB V KESIMPULAN DAN SARAN 5.1.
Kesimpulan Penelitian yang telah dilakukan menggunakan lengan robot dengan uji coba untuk
menggambar bidang 2D pada papan gambar secara point to point atau dari titik ke titik menghasilkan data keberhasilan percobaan. Tingkat keberhasilan rata-rata lengan robot menggambar bidang 2D secara berulang pada penelitian ini yaitu kemampuan lengan robot untuk menggambar kotak adalah 90% dan kemampuan lengan robot untuk menggambar segitiga adalah 73%. Sedangkan tingkat keberhasilan gerakan lengan robot menuju ke posisi-posisi titik gambar bidang 2D yang sudah ditentukan yaitu untuk menggambar kotak adalah 85%, untuk menggambar segitiga adalah 86% dan untuk menggambar lingkaran (segi banyak) adalah 21%.
5.2.
Saran Berdasarkan hasil implementasi yang diperoleh, untuk pengembangan penelitian
lebih lanjut ada beberapa saran agar alat ini dapat bekerja lebih baik, yaitu : 1. Perancangan ulang pada kontruksi sistem robot dengan sistem koordinat robot berdasarkan area kerjanya (work space) yaitu kartesian, silindris atau bola harus lebih tepat atau presisi dengan solusi pemecahan masalah. 2. Pemilihan motor RC servo harus benar-benar diperhitungkan torsi dan bahan gearbox nya agar sesuai dengan beban yang harus diangkat oleh motor RC servo dan terjamin kepresisiannya. 3. Meminimalkan adanya gap pada mekanik lengan robot untuk menghilangkan speleng yang besar untuk lebih memastikan agar outputan pulsa digital mikrokontroler dapat menggerakkan motor RC servo pada posisi yang sesuai dengan pulsa digital yang diterima.
83
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
84
4. Algoritma pemrograman disesuaikan untuk aplikasi lengan robot dengan gerakan berdasarkan sumbu koordinat XYZ secara continuous seperti gerakan menggambar agar cocok untuk membuat alur garis dan menggunakan software yang kompatibel untuk komunikasi antar device untuk pemrograman robot. 5. Menambah kemampuan robot menjadi lebih sempurna agar dapat melakukan gerakan berdasarkan sistem koordinat XYZ secara continuous dan melakukan gerakan rotasi sebaiknya dengan menggunakan software yang lebih kompatibel untuk robot seperti untuk melakukan kalkulasi gerakan lengan robot dan lebih fleksibel untuk menyimpan posisi robot.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
DAFTAR PUSTAKA [1].
----, ----, Perkembangan Robotika di Dunia, http://adepriyono12051.blog. teknikindustri.ft.mercubuana.ac.id/?tag=robotika , diakses pada tanggal 20 Maret 2014
[2].
Pitowarno, Endra, 2006, Robotika Desain, Kontrol dan Kecerdasan Buatan, Andi Offset, Yogyakarta.
[3].
Anggoro, Welly, 2008, Robot Penggambar Dua Dimensi, Skripsi Fakultas Ilmu Matematika dan Ilmu Pengetahuan Alam Departemen Fisika Universitas Indonesia, Jakarta.
[4].
----, ----, Robot Manipulator, http://ridhocatur.tumblr.com/post/33567397930/robot-manipulator-tugas-iirobotika , diakses pada tanggal 18 Maret 2014
[5].
----, ----, Konsep Mikrokontroler, http://sistemkomputer.fasilkom.narotama.ac.id/?p=194 , diakses pad tanggal 28 Maret 2014
[7].
----, ----, Arduino Uno, http://febriadisantosa.weebly.com/2/post/2013/05/arduino-uno.html , diakses pada tanggal 28 Maret 2014
[8].
----, ----, Board Arduino Uno. http://arduino.cc/en/Main/ArduinoBoardUno, Diakses pada tanggal 11 April 2014
[9].
----, ----, Software Arduino (Arduino IDE), http://pikirsa.wordpress.com/2011/11/20/memanfaatkan-arduino-ide-tanpaarduino-board/ , diakses pada tanggal 29 Maret 2014
[10].
Kadir, Abdul, 2013, Panduan Praktis Mempelajari Aplikasi Mikrokontroler Dan Pemrogramannya Menggunakan Arduino, Andi Offset, Yogyakarta.
[11].
----, ----, Mengenal Visual Basic, http://arifjt.staf.ump.ac.id/BAHAN_KULIAH/VB6/Bab_1.pdf, diakses pada tanggal 29 Maret 2014
[12].
----, ----, Antarmuka IED dengan PC melalui MsComm http://www.arisulistiono.com/2009/11/antarmuka-ied-dengan-pc-melaluimscomm.html#.VDtGfqg70_A diakses pada tanggal 13 Oktober 2014
[13].
----, ----, Motor Servo, http://elektronika-dasar.web.id/teori-elektronika/motor-servo/ , diakses pada tanggal 29 Maret 2014
85
VB6.0.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
86
[14]
Francis Giang Anak Japar, 2010, Design And Develop Robotic Arm For Automatic Guided Conveyor, Bachelor Of Mechanical Engineering Universiti Malaysia Pahang, Malaysia.
[15].
----, ----, Adafruit 16-Channel 12-Bit PWM/ Servo Shield - I2C Interface, http://www.adafruit.com/product/1411 diakses pada tanggal 14 April 2014
[16].
----, ----, Komunikasi I2C. http://mazanung.blogspot.com/2012/12/pengetahuan-dasar-komunikasi-i2c.html diakses pada tanggal 24 April 2014
[17].
Fu, K. S., R. C. Gonzales,C. S. G. Lee , 1987, Robotics: Control, Sensing, Vision, and Intelligence 1st edition, Penerbit McGraw-Hill, Singapore.
[18].
Philips, Arthur, Eduardo Prabawa, 2005, Simulasi Kinematika dari Integrasi Robot Mitsubishi RV-M1 dengan Festo Modular Production System (MPS), Skripsi Jurusan Sistem Komputer Universitas Bina Nusantara, Jakarta.
[19].
----, ----, Flow Control komunikasi transfer data VB6.0. https://kevinprathamanugraha.wordpress.com/2010/11/03/serial-port-komputerdengan-vb6-0-sebagai-pemrogramnya/ diakses pada tanggal 18 Mei 2015
[20].
----, ----, Write code to receive data using MSComm. http://forum.arduino.cc/index.php/topic,40110.0.html diakses pada tanggal 18 Mei 2015
[21].
J. Craig, John, 2005, Introduction to Robotics Mechanics and Control 3th edition, Penerbit Pearson Education International, United States of America.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
LAMPIRAN
87
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Lampiran Tabel Konversi Pulsa-Sudut (Mapping) L1.
Tabel Konversi Pulsa-Sudut (Mapping) dari Percobaan. No. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
Base Shoulder Elbow Pitch Pulse Sudut Pulse Sudut Pulse Sudut Pulse Sudut 150 0 220 0 220 0 180 0 163 5 232 5 233 5 193 5 177 10 243 10 247 10 205 10 190 15 255 15 260 15 218 15 203 20 267 20 273 20 230 20 217 25 278 25 287 25 243 25 230 30 290 30 300 30 255 30 243 35 302 35 313 35 268 35 257 40 313 40 327 40 280 40 270 45 325 45 340 45 293 45 283 50 337 50 353 50 305 50 297 55 348 55 367 55 318 55 310 60 360 60 380 60 330 60 323 65 372 65 393 65 343 65 337 70 383 70 407 70 355 70 350 75 395 75 420 75 368 75 363 80 407 80 433 80 380 80 377 85 418 85 447 85 393 85 390 90 430 90 460 90 405 90 403 95 442 95 473 95 418 95 417 100 453 100 487 100 430 100 430 105 465 105 500 105 443 105 443 110 477 110 513 110 455 110 457 115 488 115 527 115 468 115 470 120 500 120 540 120 480 120 483 125 512 125 553 125 493 125 497 130 523 130 567 130 505 130 510 135 535 135 580 135 518 135 523 140 547 140 593 140 530 140 537 145 558 145 607 145 543 145 550 150 570 150 620 150 555 150 563 155 582 155 633 155 568 155 577 160 593 160 647 160 580 160 590 165 605 165 660 165 593 165 603 170 617 170 673 170 605 170 617 175 628 175 687 175 618 175 630 180 640 180 700 180 630 180
L.1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LISTING PROGRAM L2.
Listing Program Keseluruhan Pada Software Arduino IDE
#include <Wire.h> #include
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); #define SERVOMIN 150 // 'minimum' pulsa 0^ #define SERVOMAX 600 // 'maximum' pulsa 180^ int pitch=150; int elbow=300; int shoulder=400; int base=150; int data1=150; int data2=150; int data3=150; int data4=150; int data5=150; int data6=150; int data7=150; int data8=150; void setup() { Serial.begin(9600); pwm.begin(); pwm.setPWMFreq(60); delay(500); pwm.setPWM(7, 0, 150); //pitch pwm.setPWM(6, 0, 250); //elbow pwm.setPWM(4, 0, 430); //shoulder1 pwm.setPWM(3, 0, 430); //shoulder2 pwm.setPWM(1, 0, 150); //base } void loop() { while(Serial.available()>0){ pitch = Serial.parseInt(); elbow = Serial.parseInt(); shoulder = Serial.parseInt(); base = Serial.parseInt(); if (Serial.read() == char(13)) { data1=pitch; data2=elbow; data5=shoulder; data6=base; }}; if (data6>data8) {Serial.print('T');} else {Serial.print('B');} delay(10); if (data5>data7) {Serial.print('T');} else {Serial.print('B');} delay(10); if (data2>data4) {Serial.print('T');} else {Serial.print('B');}
180-630 220-700 220-640 220-640 150-630
(410=90^) (460=90^) (430=90^) (430=90^) (400=90^)
L.2
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI delay(10); if (data1>data3) {Serial.print('T');} else {Serial.print('B');} delay(10); //agar data yang dikirimkan, bisa dibuat bisa increment atau decrement if(data1>data3) { for(int p=0;pdata4) { for(int q=0;qdata7) { for(int r=0;rdata8) { for(int s=0;s
L.3
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L3.
Listing Program Keseluruhan Pada Software Visual Basic 6.0.
'///INISIALISASI Dim a As Integer Dim b As Integer Dim c As Integer Dim d As Integer Dim aa As Integer Dim bb As Integer Dim g As Integer Dim h As Integer Dim i As Integer Dim s As Integer Dim r As Integer Dim sa As Integer
'Inisialisasi dimensi sisi kotak 'Inisialisasi dimensi jari-jari lingkaran 'Inisialisasi dimensi sisi segitiga
Private Sub Form_Load() MSComm1.RThreshold = 1
'menentukan jumlah karakter yg diterima receive buffer sebelum OnComm event dipicu (0=dipicu; 1=dipicu tiap 1 karakter) MSComm1.SThreshold = 1 'menentukan jumlah karakter yg diterima transmit buffer sebelum OnComm event dipicu (0=dipicu; 1=dipicu tiap 1 karakter) MSComm1.InputLen = 0 'diisi 0 = seluruh isi buffer dibaca CPU MSComm1.Settings = "9600,n,8,1" 'bautrate,parity,bit number, bit stop MSComm1.CommPort = 4 'commport untuk komunikasi serial VB MSComm1.PortOpen = True 'membuka komunikasi serial VB MSComm1.DTREnable = True '(Data Terminal Ready) pada saluran ini DTE memberitahukan kesiapan terminalnya Timer1.Enabled = False Timer2.Enabled = False Timer3.Enabled = False Timer4.Enabled = False Timer5.Enabled = False Timer6.Enabled = False Timer7.Enabled = False Timer8.Enabled = False Timer9.Enabled = False End Sub Private Sub MSComm1_OnComm() If MSComm1.CommEvent = comEvSend Then 'MSComm1.OutBufferCount = False Label7.Caption = MSComm1.Input If Label7.Caption = "B" Then Shape1.FillColor = vbGreen Else Shape1.FillColor = vbRed End If End If If MSComm1.CommEvent = comEvReceive Then
'mengawasi jumlah bit yang ada di transmite buffer
L.4
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 'MSComm1.InBufferCount = False buffer Label7.Caption = MSComm1.Input If Label7.Caption = "T" Then Shape1.FillColor = vbYellow Else Shape1.FillColor = vbRed End If End If End Sub Private Sub form_unload(cancle As Integer) MSComm1.PortOpen = False End Sub '///TOMBOL EXIT Private Sub EXIT_Click() End End Sub '///TOMBOL CLEAR Private Sub CLEAR_Click() RUN.Enabled = False Text1.Text = "" Text3.Text = "" Text4.Text = "" KOTAK.Enabled = True SEGITIGA.Enabled = True LINGKARAN.Enabled = True Timer1.Enabled = False Timer2.Enabled = False Timer3.Enabled = False Timer4.Enabled = False Timer5.Enabled = False Timer6.Enabled = False Timer7.Enabled = False Timer8.Enabled = False Timer9.Enabled = False a=0 b=0 c=0 d=0 aa = 0 bb = 0 g=0 h=0 i=0 MSComm1.PortOpen = False Timer10.Enabled = True MSComm1.PortOpen = True End Sub
L.5
'mengawasi jumlah bit yang ada di receive
'menutup komunikasi serial VB
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI '///TOMBOL KOTAK Private Sub KOTAK_Click() s = InputBox("Isikan panjang Kotak", "", "") Text1.Text = s RUN.Enabled = True LINGKARAN.Enabled = False SEGITIGA.Enabled = False End Sub
'memberikan input dimensi kotak
'///TOMBOL LINGKARAN Private Sub LINGKARAN_Click() r = InputBox("Isikan jari-jari Lingkaran", "", "") Text3.Text = r RUN.Enabled = True KOTAK.Enabled = False SEGITIGA.Enabled = False End Sub '///TOMBOL SEGITIGA Private Sub SEGITIGA_Click() sa = InputBox("Isikan sisi Segitiga", "", "") Text4.Text = sa RUN.Enabled = True LINGKARAN.Enabled = False KOTAK.Enabled = False End Sub Private Sub RUN_Click() If Val(Text1.Text) = 2 Then Call Ref_kotak If Val(Text1.Text) = 5 Then Call Ref_kotak If Val(Text1.Text) = 15 Then Call Ref_kotak If Val(Text1.Text) = 20 Then Call Ref_kotak
'menuju ke sub routine kotak 'menuju ke sub routine kotak 'menuju ke sub routine kotak 'menuju ke sub routine kotak
If Val(Text4.Text) = 3 Then Call Ref_segitiga If Val(Text4.Text) = 9 Then Call Ref_segitiga If Val(Text4.Text) = 15 Then Call Ref_segitiga
'menuju ke sub routine segitiga 'menuju ke sub routine segitiga 'menuju ke sub routine segitiga
If Val(Text3.Text) = 6 Then Call Ref_lingkaran If Val(Text3.Text) = 9 Then Call Ref_lingkaran End Sub
'menuju ke sub routine lingkaran 'menuju ke sub routine lingkaran
Private Sub Ref_kotak() If s = 2 Then Timer1.Enabled = True If s = 5 Then Timer2.Enabled = True If s = 15 Then Timer3.Enabled = True If s = 20 Then Timer4.Enabled = True End Sub
'Jika Sisi = 2 'Jika Sisi = 5 'Jika Sisi = 15 'Jika Sisi = 20
Private Sub Ref_lingkaran() If r = 6 Then Timer8.Enabled = True If r = 9 Then Timer9.Enabled = True End Sub
'Jika Jari-jari = 6 'Jika Jari-jari = 9
L.6
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Private Sub Ref_segitiga() If sa = 3 Then Timer5.Enabled = True If sa = 9 Then Timer6.Enabled = True If sa = 15 Then Timer7.Enabled = True End Sub
'Jika Sisi Segitiga = 3 'Jika Sisi Segitiga = 9 'Jika Sisi Segitiga = 15
'///PROGRAM MENGGAMBAR KOTAK S = 2 Private Sub Timer1_Timer() a=a+1 Label14.Caption = a If a = 1 Then '///Koordinat Titik Referensi Kotak base = CInt(Abs(330)) '60 * 2.5 + 150)) shoulder = CInt(Abs(395)) '60 * 2.1 + 220)) elbow = CInt(Abs(400)) '60 * 2.5 + 150)) pitch = CInt(Abs(340)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf a = 28 Then base = CInt(Abs(355)) '60 * 2.5 + 150)) shoulder = CInt(Abs(400)) '60 * 2.1 + 220)) elbow = CInt(Abs(400)) '60 * 2.5 + 150)) pitch = CInt(Abs(325)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf a = 35 Then base = CInt(Abs(355)) '60 * 2.5 + 150)) shoulder = CInt(Abs(395)) '60 * 2.1 + 220)) elbow = CInt(Abs(420)) '60 * 2.5 + 150)) pitch = CInt(Abs(280)) '60 * 2.2 + 180)) 300 Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf a = 42 Then base = CInt(Abs(300)) shoulder = CInt(Abs(390)) elbow = CInt(Abs(420)) pitch = CInt(Abs(280)) Label2.Caption = base
'60 * 2.5 + 150)) '60 * 2.1 + 220)) '60 * 2.5 + 150)) '60 * 2.2 + 180))
L.7
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) '///kembali ke Koordinat Titik Referensi Kotak ElseIf a = 48 Then base = CInt(Abs(300)) '60 * 2.5 + 150)) shoulder = CInt(Abs(390)) '60 * 2.1 + 220)) elbow = CInt(Abs(400)) '60 * 2.5 + 150)) pitch = CInt(Abs(310)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) '///kembali ke POSISI AWAL ROBOT ElseIf a = 54 Then MSComm1.PortOpen = False ElseIf a = 55 Then MSComm1.PortOpen = True a=0 Timer1.Enabled = False End If End Sub '///PROGRAM MENGGAMBAR KOTAK S = 5 Private Sub Timer2_Timer() b=b+1 Label14.Caption = b If b = 1 Then '///Koordinat Titik Referensi Kotak base = CInt(Abs(330)) '60 * 2.5 + 150)) shoulder = CInt(Abs(395)) '60 * 2.1 + 220)) elbow = CInt(Abs(400)) '60 * 2.5 + 150)) pitch = CInt(Abs(340)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf b = 28 Then base = CInt(Abs(370)) shoulder = CInt(Abs(405)) elbow = CInt(Abs(405)) pitch = CInt(Abs(300)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow
'60 * 2.5 + 150)) '60 * 2.1 + 220)) '60 * 2.5 + 150)) '60 * 2.2 + 180))
L.8
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf b = 37 Then base = CInt(Abs(365)) '60 * 2.5 + 150)) shoulder = CInt(Abs(405)) '60 * 2.1 + 220)) elbow = CInt(Abs(405)) '60 * 2.5 + 150)) pitch = CInt(Abs(235)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf b = 45 Then base = CInt(Abs(300)) '60 * 2.5 + 150)) shoulder = CInt(Abs(395)) '60 * 2.1 + 220)) elbow = CInt(Abs(415)) '60 * 2.5 + 150)) pitch = CInt(Abs(260)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) '///kembali ke Koordinat Titik Referensi Kotak ElseIf b = 53 Then base = CInt(Abs(300)) '60 * 2.5 + 150)) shoulder = CInt(Abs(395)) '60 * 2.1 + 220)) elbow = CInt(Abs(400)) '60 * 2.5 + 150)) pitch = CInt(Abs(340)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) '///kembali ke POSISI AWAL ROBOT ElseIf b = 60 Then MSComm1.PortOpen = False ElseIf b = 61 Then MSComm1.PortOpen = True b=0 Timer2.Enabled = False End If End Sub '///PROGRAM MENGGAMBAR KOTAK S = 15 Private Sub Timer3_Timer() c=c+1 Label14.Caption = c
L.9
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI If c = 1 Then '///Koordinat Titik Referensi Kotak base = CInt(Abs(330)) '60 * 2.5 + 150)) shoulder = CInt(Abs(395)) '60 * 2.1 + 220)) elbow = CInt(Abs(400)) '60 * 2.5 + 150)) pitch = CInt(Abs(340)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf c = 28 Then base = CInt(Abs(450)) '60 * 2.5 + 150)) shoulder = CInt(Abs(410)) '60 * 2.1 + 220)) elbow = CInt(Abs(420)) '60 * 2.5 + 150)) pitch = CInt(Abs(265)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf c = 36 Then base = CInt(Abs(450)) '60 * 2.5 + 150)) shoulder = CInt(Abs(410)) '60 * 2.1 + 220)) elbow = CInt(Abs(420)) '60 * 2.5 + 150)) pitch = CInt(Abs(200)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf c = 40 Then base = CInt(Abs(450)) '60 * 2.5 + 150)) shoulder = CInt(Abs(445)) '60 * 2.1 + 220)) elbow = CInt(Abs(420)) '60 * 2.5 + 150)) pitch = CInt(Abs(200)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf c = 48 Then base = CInt(Abs(450)) shoulder = CInt(Abs(445)) elbow = CInt(Abs(280)) pitch = CInt(Abs(270)) Label2.Caption = base Label3.Caption = shoulder
'60 * 2.5 + 150)) '60 * 2.1 + 220)) '60 * 2.5 + 150)) '60 * 2.2 + 180))
L.10
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf c = 55 Then base = CInt(Abs(380)) '60 * 2.5 + 150)) shoulder = CInt(Abs(445)) '60 * 2.1 + 220)) elbow = CInt(Abs(280)) '60 * 2.5 + 150)) pitch = CInt(Abs(270)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf c = 63 Then base = CInt(Abs(380)) '60 * 2.5 + 150)) shoulder = CInt(Abs(460)) '60 * 2.1 + 220)) elbow = CInt(Abs(280)) '60 * 2.5 + 150)) pitch = CInt(Abs(270)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf c = 70 Then base = CInt(Abs(300)) '60 * 2.5 + 150)) shoulder = CInt(Abs(460)) '60 * 2.1 + 220)) elbow = CInt(Abs(280)) '60 * 2.5 + 150)) pitch = CInt(Abs(270)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf c = 77 Then base = CInt(Abs(300)) '60 * 2.5 + 150)) shoulder = CInt(Abs(430)) '60 * 2.1 + 220)) elbow = CInt(Abs(275)) '60 * 2.5 + 150)) pitch = CInt(Abs(310)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf c = 84 Then base = CInt(Abs(300)) shoulder = CInt(Abs(430)) elbow = CInt(Abs(275))
'60 * 2.5 + 150)) '60 * 2.1 + 220)) '60 * 2.5 + 150))
L.11
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI pitch = CInt(Abs(400)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf c = 91 Then base = CInt(Abs(290)) '60 * 2.5 + 150)) shoulder = CInt(Abs(395)) '60 * 2.1 + 220)) elbow = CInt(Abs(400)) '60 * 2.5 + 150)) pitch = CInt(Abs(325)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) '///kembali ke POSISI AWAL ROBOT ElseIf c = 99 Then MSComm1.PortOpen = False ElseIf c = 103 Then MSComm1.PortOpen = True c=0 Timer3.Enabled = False End If End Sub '///PROGRAM MENGGAMBAR KOTAK S = 20 Private Sub Timer4_Timer() d=d+1 Label14.Caption = d If d = 1 Then '///Koordinat Titik Referensi Kotak base = CInt(Abs(330)) '60 * 2.5 + 150)) shoulder = CInt(Abs(395)) '60 * 2.1 + 220)) elbow = CInt(Abs(400)) '60 * 2.5 + 150)) pitch = CInt(Abs(340)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf d = 28 Then base = CInt(Abs(480)) shoulder = CInt(Abs(410)) elbow = CInt(Abs(410)) pitch = CInt(Abs(280)) Label2.Caption = base Label3.Caption = shoulder
'60 * 2.5 + 150)) '60 * 2.1 + 220)) '60 * 2.5 + 150)) '60 * 2.2 + 180))
L.12
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf d = 36 Then base = CInt(Abs(480)) '60 * 2.5 + 150)) shoulder = CInt(Abs(405)) '60 * 2.1 + 220)) elbow = CInt(Abs(410)) '60 * 2.5 + 150)) pitch = CInt(Abs(210)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf d = 43 Then base = CInt(Abs(480)) '60 * 2.5 + 150)) shoulder = CInt(Abs(500)) '60 * 2.1 + 220)) elbow = CInt(Abs(410)) '60 * 2.5 + 150)) pitch = CInt(Abs(210)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf d = 50 Then base = CInt(Abs(430)) '60 * 2.5 + 150)) shoulder = CInt(Abs(450)) '60 * 2.1 + 220)) elbow = CInt(Abs(190)) '60 * 2.5 + 150)) pitch = CInt(Abs(400)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf d = 57 Then base = CInt(Abs(350)) '60 * 2.5 + 150)) shoulder = CInt(Abs(460)) '60 * 2.1 + 220)) elbow = CInt(Abs(180)) '60 * 2.5 + 150)) pitch = CInt(Abs(400)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf d = 65 Then base = CInt(Abs(350)) shoulder = CInt(Abs(490)) elbow = CInt(Abs(180))
'60 * 2.5 + 150)) '60 * 2.1 + 220)) '60 * 2.5 + 150))
L.13
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI pitch = CInt(Abs(400)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf d = 74 Then base = CInt(Abs(290)) '60 * 2.5 + 150)) shoulder = CInt(Abs(490)) '60 * 2.1 + 220)) elbow = CInt(Abs(180)) '60 * 2.5 + 150)) pitch = CInt(Abs(400)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf d = 82 Then base = CInt(Abs(290)) '60 * 2.5 + 150)) shoulder = CInt(Abs(430)) '60 * 2.1 + 220)) elbow = CInt(Abs(210)) '60 * 2.5 + 150)) pitch = CInt(Abs(400)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf d = 90 Then base = CInt(Abs(290)) '60 * 2.5 + 150)) shoulder = CInt(Abs(430)) '60 * 2.1 + 220)) elbow = CInt(Abs(280)) '60 * 2.5 + 150)) pitch = CInt(Abs(400)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf d = 98 Then base = CInt(Abs(330)) '60 * 2.5 + 150)) shoulder = CInt(Abs(395)) '60 * 2.1 + 220)) elbow = CInt(Abs(400)) '60 * 2.5 + 150)) pitch = CInt(Abs(330)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) '///kembali ke POSISI AWAL ROBOT
L.14
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ElseIf d = 106 Then MSComm1.PortOpen = False ElseIf d = 108 Then MSComm1.PortOpen = True d=0 Timer4.Enabled = False End If End Sub ''///PROGRAM MENGGAMBAR SEGITIGA sa = 3 Private Sub Timer5_Timer() aa = aa + 1 Label14.Caption = aa If aa = 1 Then '///Koordinat Titik Referensi Kotak base = CInt(Abs(430)) '60 * 2.5 + 150)) shoulder = CInt(Abs(415)) '60 * 2.1 + 220)) elbow = CInt(Abs(405)) '60 * 2.5 + 150)) pitch = CInt(Abs(280)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf aa = 35 Then base = CInt(Abs(450)) '60 * 2.5 + 150)) shoulder = CInt(Abs(415)) '60 * 2.1 + 220)) elbow = CInt(Abs(380)) '60 * 2.5 + 150)) pitch = CInt(Abs(245)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf aa = 42 Then base = CInt(Abs(375)) '60 * 2.5 + 150)) shoulder = CInt(Abs(415)) '60 * 2.1 + 220)) elbow = CInt(Abs(380)) '60 * 2.5 + 150)) pitch = CInt(Abs(245)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf aa = 50 Then base = CInt(Abs(430)) shoulder = CInt(Abs(415)) elbow = CInt(Abs(405))
'60 * 2.5 + 150)) '60 * 2.1 + 220)) '60 * 2.5 + 150))
L.15
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI pitch = CInt(Abs(285)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) '///kembali ke POSISI AWAL ROBOT ElseIf aa = 58 Then MSComm1.PortOpen = False ElseIf aa = 60 Then MSComm1.PortOpen = True aa = 0 Timer5.Enabled = False End If End Sub ''///PROGRAM MENGGAMBAR SEGITIGA sa = 9 Private Sub Timer6_Timer() bb = bb + 1 Label14.Caption = bb If bb = 1 Then '///Koordinat Titik Referensi Kotak base = CInt(Abs(430)) '60 * 2.5 + 150)) shoulder = CInt(Abs(415)) '60 * 2.1 + 220)) elbow = CInt(Abs(405)) '60 * 2.5 + 150)) pitch = CInt(Abs(280)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf bb = 35 Then base = CInt(Abs(450)) '60 * 2.5 + 150)) shoulder = CInt(Abs(415)) '60 * 2.1 + 220)) elbow = CInt(Abs(405)) '60 * 2.5 + 150)) pitch = CInt(Abs(250)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf bb = 42 Then base = CInt(Abs(470)) shoulder = CInt(Abs(410)) elbow = CInt(Abs(380)) pitch = CInt(Abs(210)) Label2.Caption = base Label3.Caption = shoulder
'60 * 2.5 + 150)) '60 * 2.1 + 220)) '60 * 2.5 + 150)) '60 * 2.2 + 180))
L.16
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf bb = 50 Then base = CInt(Abs(360)) '60 * 2.5 + 150)) shoulder = CInt(Abs(410)) '60 * 2.1 + 220)) elbow = CInt(Abs(380)) '60 * 2.5 + 150)) pitch = CInt(Abs(210)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf bb = 58 Then base = CInt(Abs(420)) '60 * 2.5 + 150)) shoulder = CInt(Abs(415)) '60 * 2.1 + 220)) elbow = CInt(Abs(405)) '60 * 2.5 + 150)) pitch = CInt(Abs(260)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf bb = 67 Then base = CInt(Abs(430)) '60 * 2.5 + 150)) shoulder = CInt(Abs(415)) '60 * 2.1 + 220)) elbow = CInt(Abs(405)) '60 * 2.5 + 150)) pitch = CInt(Abs(285)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) '///kembali ke POSISI AWAL ROBOT ElseIf bb = 78 Then MSComm1.PortOpen = False ElseIf bb = 80 Then MSComm1.PortOpen = True bb = 0 Timer6.Enabled = False End If End Sub ''///PROGRAM MENGGAMBAR SEGITIGA sa = 15 Private Sub Timer7_Timer() g=g+1 Label14.Caption = g
L.17
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI If g = 1 Then '///Koordinat Titik Referensi Kotak base = CInt(Abs(430)) '60 * 2.5 + 150)) shoulder = CInt(Abs(415)) '60 * 2.1 + 220)) elbow = CInt(Abs(405)) '60 * 2.5 + 150)) pitch = CInt(Abs(280)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf g = 35 Then base = CInt(Abs(450)) '60 * 2.5 + 150)) shoulder = CInt(Abs(415)) '60 * 2.1 + 220)) elbow = CInt(Abs(405)) '60 * 2.5 + 150)) pitch = CInt(Abs(250)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf g = 42 Then base = CInt(Abs(450)) '60 * 2.5 + 150)) shoulder = CInt(Abs(450)) '60 * 2.1 + 220)) elbow = CInt(Abs(405)) '60 * 2.5 + 150)) pitch = CInt(Abs(250)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf g = 50 Then base = CInt(Abs(460)) '60 * 2.5 + 150)) shoulder = CInt(Abs(450)) '60 * 2.1 + 220)) elbow = CInt(Abs(250)) '60 * 2.5 + 150)) pitch = CInt(Abs(350)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf g = 63 Then base = CInt(Abs(460)) shoulder = CInt(Abs(440)) elbow = CInt(Abs(260)) pitch = CInt(Abs(330)) Label2.Caption = base Label3.Caption = shoulder
'60 * 2.5 + 150)) '60 * 2.1 + 220)) '60 * 2.5 + 150)) '60 * 2.2 + 180))
L.18
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf g = 72 Then base = CInt(Abs(480)) '60 * 2.5 + 150)) shoulder = CInt(Abs(440)) '60 * 2.1 + 220)) elbow = CInt(Abs(280)) '60 * 2.5 + 150)) pitch = CInt(Abs(300)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf g = 82 Then base = CInt(Abs(420)) '60 * 2.5 + 150)) shoulder = CInt(Abs(440)) '60 * 2.1 + 220)) elbow = CInt(Abs(280)) '60 * 2.5 + 150)) pitch = CInt(Abs(300)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf g = 90 Then base = CInt(Abs(420)) '60 * 2.5 + 150)) shoulder = CInt(Abs(460)) '60 * 2.1 + 220)) elbow = CInt(Abs(280)) '60 * 2.5 + 150)) pitch = CInt(Abs(285)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf g = 98 Then base = CInt(Abs(380)) '60 * 2.5 + 150)) shoulder = CInt(Abs(460)) '60 * 2.1 + 220)) elbow = CInt(Abs(280)) '60 * 2.5 + 150)) pitch = CInt(Abs(285)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf g = 108 Then base = CInt(Abs(340)) shoulder = CInt(Abs(440)) elbow = CInt(Abs(280)) pitch = CInt(Abs(285))
'60 * 2.5 + 150)) '60 * 2.1 + 220)) '60 * 2.5 + 150)) '60 * 2.2 + 180))
L.19
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf g = 119 Then base = CInt(Abs(390)) '60 * 2.5 + 150)) shoulder = CInt(Abs(450)) '60 * 2.1 + 220)) elbow = CInt(Abs(280)) '60 * 2.5 + 150)) pitch = CInt(Abs(350)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf g = 127 Then base = CInt(Abs(390)) '60 * 2.5 + 150)) shoulder = CInt(Abs(480)) '60 * 2.1 + 220)) elbow = CInt(Abs(280)) '60 * 2.5 + 150)) pitch = CInt(Abs(350)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf g = 140 Then base = CInt(Abs(410)) '60 * 2.5 + 150)) shoulder = CInt(Abs(415)) '60 * 2.1 + 220)) elbow = CInt(Abs(405)) '60 * 2.5 + 150)) pitch = CInt(Abs(250)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf g = 148 Then base = CInt(Abs(430)) '60 * 2.5 + 150)) shoulder = CInt(Abs(415)) '60 * 2.1 + 220)) elbow = CInt(Abs(405)) '60 * 2.5 + 150)) pitch = CInt(Abs(285)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10)
'///kembali ke POSISI AWAL ROBOT
L.20
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ElseIf g = 160 Then MSComm1.PortOpen = False ElseIf g = 162 Then MSComm1.PortOpen = True g=0 Timer7.Enabled = False End If End Sub '///PROGRAM MENGGAMBAR LINGKARAN r = 6 Private Sub Timer8_Timer() h=h+1 Label14.Caption = h If h = 1 Then '///Koordinat Titik Referensi Lingkaran base = CInt(Abs(430)) '60 * 2.5 + 150)) shoulder = CInt(Abs(450)) '60 * 2.1 + 220)) elbow = CInt(Abs(270)) '60 * 2.5 + 150)) pitch = CInt(Abs(305)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf h = 35 Then base = CInt(Abs(475)) '60 * 2.5 + 150)) shoulder = CInt(Abs(445)) '60 * 2.1 + 220)) elbow = CInt(Abs(270)) '60 * 2.5 + 150)) pitch = CInt(Abs(305)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf h = 42 Then base = CInt(Abs(425)) '60 * 2.5 + 150)) shoulder = CInt(Abs(435)) '60 * 2.1 + 220)) elbow = CInt(Abs(320)) '60 * 2.5 + 150)) pitch = CInt(Abs(305)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf h = 50 Then base = CInt(Abs(385)) shoulder = CInt(Abs(435)) elbow = CInt(Abs(320))
'60 * 2.5 + 150)) '60 * 2.1 + 220)) '60 * 2.5 + 150))
L.21
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI pitch = CInt(Abs(325)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf h = 58 Then base = CInt(Abs(355)) '60 * 2.5 + 150)) shoulder = CInt(Abs(435)) '60 * 2.1 + 220)) elbow = CInt(Abs(320)) '60 * 2.5 + 150)) pitch = CInt(Abs(305)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf h = 66 Then base = CInt(Abs(350)) '60 * 2.5 + 150)) shoulder = CInt(Abs(475)) '60 * 2.1 + 220)) elbow = CInt(Abs(320)) '60 * 2.5 + 150)) pitch = CInt(Abs(305)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf h = 74 Then base = CInt(Abs(350)) '60 * 2.5 + 150)) shoulder = CInt(Abs(455)) '60 * 2.1 + 220)) elbow = CInt(Abs(220)) '60 * 2.5 + 150)) pitch = CInt(Abs(400)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf h = 82 Then base = CInt(Abs(425)) '60 * 2.5 + 150)) shoulder = CInt(Abs(455)) '60 * 2.1 + 220)) elbow = CInt(Abs(180)) '60 * 2.5 + 150)) pitch = CInt(Abs(380)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf h = 90 Then
L.22
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI base = CInt(Abs(455)) '60 * 2.5 + 150)) shoulder = CInt(Abs(450)) '60 * 2.1 + 220)) elbow = CInt(Abs(200)) '60 * 2.5 + 150)) pitch = CInt(Abs(380)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf h = 98 Then base = CInt(Abs(400)) '60 * 2.5 + 150)) shoulder = CInt(Abs(480)) '60 * 2.1 + 220)) elbow = CInt(Abs(200)) '60 * 2.5 + 150)) pitch = CInt(Abs(360)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf h = 106 Then base = CInt(Abs(400)) '60 * 2.5 + 150)) shoulder = CInt(Abs(460)) '60 * 2.1 + 220)) elbow = CInt(Abs(200)) '60 * 2.5 + 150)) pitch = CInt(Abs(360)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf h = 114 Then base = CInt(Abs(470)) '60 * 2.5 + 150)) shoulder = CInt(Abs(455)) '60 * 2.1 + 220)) elbow = CInt(Abs(220)) '60 * 2.5 + 150)) pitch = CInt(Abs(365)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf h = 122 Then base = CInt(Abs(475)) shoulder = CInt(Abs(445)) elbow = CInt(Abs(250)) pitch = CInt(Abs(355)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch
'60 * 2.5 + 150)) '60 * 2.1 + 220)) '60 * 2.5 + 150)) '60 * 2.2 + 180))
L.23
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) '///kembali ke POSISI AWAL ROBOT ElseIf h = 136 Then MSComm1.PortOpen = False ElseIf h = 138 Then MSComm1.PortOpen = True h=0 Timer8.Enabled = False End If End Sub '################# PROGRAM BELUM JALAN #################### '///PROGRAM MENGGAMBAR LINGKARAN r = 9 Private Sub Timer9_Timer() i=i+1 Label14.Caption = i If i = 1 Then '///Koordinat Titik Referensi Lingkaran base = CInt(Abs(430)) '60 * 2.5 + 150)) shoulder = CInt(Abs(450)) '60 * 2.1 + 220)) elbow = CInt(Abs(260)) '60 * 2.5 + 150)) pitch = CInt(Abs(300)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf i = 35 Then base = CInt(Abs(490)) '60 * 2.5 + 150)) shoulder = CInt(Abs(445)) '60 * 2.1 + 220)) elbow = CInt(Abs(260)) '60 * 2.5 + 150)) pitch = CInt(Abs(310)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf i = 42 Then base = CInt(Abs(480)) '60 * 2.5 + 150)) shoulder = CInt(Abs(425)) '60 * 2.1 + 220)) elbow = CInt(Abs(360)) '60 * 2.5 + 150)) pitch = CInt(Abs(250)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10)
L.24
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
ElseIf i = 53 Then base = CInt(Abs(390)) '60 * 2.5 + 150)) shoulder = CInt(Abs(415)) '60 * 2.1 + 220)) elbow = CInt(Abs(380)) '60 * 2.5 + 150)) pitch = CInt(Abs(270)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf i = 61 Then base = CInt(Abs(340)) '60 * 2.5 + 150)) shoulder = CInt(Abs(420)) '60 * 2.1 + 220)) elbow = CInt(Abs(380)) '60 * 2.5 + 150)) pitch = CInt(Abs(200)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf i = 72 Then base = CInt(Abs(330)) '60 * 2.5 + 150)) shoulder = CInt(Abs(430)) '60 * 2.1 + 220)) elbow = CInt(Abs(300)) '60 * 2.5 + 150)) pitch = CInt(Abs(220)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf i = 80 Then base = CInt(Abs(380)) '60 * 2.5 + 150)) shoulder = CInt(Abs(460)) '60 * 2.1 + 220)) elbow = CInt(Abs(200)) '60 * 2.5 + 150)) pitch = CInt(Abs(325)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf i = 88 Then base = CInt(Abs(430)) shoulder = CInt(Abs(460)) elbow = CInt(Abs(200)) pitch = CInt(Abs(320)) Label2.Caption = base Label3.Caption = shoulder
'60 * 2.5 + 150)) '60 * 2.1 + 220)) '60 * 2.5 + 150)) '60 * 2.2 + 180))
L.25
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf i = 94 Then base = CInt(Abs(470)) '60 * 2.5 + 150)) shoulder = CInt(Abs(450)) '60 * 2.1 + 220)) elbow = CInt(Abs(220)) '60 * 2.5 + 150)) pitch = CInt(Abs(325)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) ElseIf i = 102 Then base = CInt(Abs(490)) '60 * 2.5 + 150)) shoulder = CInt(Abs(450)) '60 * 2.1 + 220)) elbow = CInt(Abs(260)) '60 * 2.5 + 150)) pitch = CInt(Abs(280)) '60 * 2.2 + 180)) Label2.Caption = base Label3.Caption = shoulder Label4.Caption = elbow Label5.Caption = pitch MSComm1.Output = pitch & "," & elbow & "," & shoulder & "," & base & Chr(13) & Chr(10) '///kembali ke POSISI AWAL ROBOT ElseIf i = 110 Then MSComm1.PortOpen = False ElseIf i = 112 Then MSComm1.PortOpen = True i=0 Timer9.Enabled = False End If End Sub
L.26
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Datasheet Servo Controller L4.
Datasheet Adafruit 16-Channel Servo Driver with Arduino
L.27
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L.28
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L.29
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L.30
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L.31
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L.32
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L.33
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Datasheet Motor RC Servo L5. Datasheet Servo Hitec HS-645MG
L.34
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L6.
Datasheet Hitec HS-805MG
L.35
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI L7.
Datasheet TowerPro MG946R
L.36