RANCANG LENGAN ROBOT DENGAN METODE KINEMATIK MENGGUNAKAN ATMEGA 168 HALAMAN JUDUL
Naskah Publikasi
diajukan oleh Wensiscilius Sibau 06.11.1299
kepada SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER AMIKOM YOGYAKARTA YOGYAKARTA 2013
HALAMAN PENGESAHAN
DESIGN OF ROBOT’S ARM WITH KINEMATIC METHOD USES ATMEGA 168 MICROCONTROLLER RANCANG LENGAN ROBOT DENGAN METODE KINEMATIK MENGGUNAKAN ATMEGA 168
Wensiscilius Sibau Emha Taufiq Luthfi Jurusan Teknik Informatika STMIK AMIKOM YOGYAKARTA ABSTRACT
ABSTRACT ABSTRACT In this current technological era the development in all the fields with the basis of technology really fast. Various discoveries and the development of technology made plenty of changes for various developing sorts of the life order dimasyarakat. This progress helped facilitated humankind in completing the work that previously it was considered was difficult in fact almost impossible to be carried out. One of them was in the control field, with the discovery mikrokontroler as the manager's automatic aids Through this thesis the author will use mikrokontroler ATMega 168 as one of the several ATMEL output products to arrange and undertake the mechanical movement from the hands of the robot. The writer used the C programming language as the programming language to mikrokontroler ATMega 168. The robot's arms were drafted to select and move the thing was based on the volume. This system consisted of 6 (six) the motor servo as aktuator arms. The six motors servo this was controlled through 4 (four) the PWM canal (Pulse widht modulation) that has been available in mikrokontroler ATMega 168. Four PWM canals were the OCR register (output compare the register). The movement of the round of the corner of the motor servo was arranged by changing the values bit to his OCR register.
Keyword: Technology, Mikrokontroler, ATMega 168, the programming Language, the Plan
1.
PENDAHULUAN Saat ini robot telah banyak digunakan oleh banyak orang, baik itu sebagai alat
bantu atau hanya sebagai hiburan saja. Tiap robot memiliki bentuk masing-masing, tergantung fungsi dan manfaatnya. Pada kasus ini, hanya menggunakan lengan robot dan konveyor sebagai tambahan. Lengan robot ini berfungsi untuk mengambil dan memindahkan objek. Sementara konveyor sebagai penyedia objek. Pada kasus ini penulis menggunakan metode kinematik untuk mendapatkan gerakan yang tepat
pada lengan robot. Penulis juga menggunakan sensor untuk
memudahkan dalam pemilahan objek. Dengan adanya sensor pemilahan objek akan lebih akurat tanpa harus memilah secara manual. Maka dari
semua itu penulis
mengambil
metode
judul
dengan
"Rancang
lengan
robot
dengan
kinematik
menggunakan mikrokontroler atmega 168".
2. LANDASAN TEORI 2.1
Pengenalan Robot
2.1.1
Sejarah Robot Pertama kali kata robot digunakan di New York pada tahun 1921 di sebuah
pentas theater yang berjudul “Rossum's Universal Robots (RUR)”, oleh Wright Karel Caper. Namun, bangsa Yunani kuno sekitar 270 BC, Ctesibus, insinyur yunani membuat organ dan jam air yang dapat dipindahkan. Pada tahun 1770, Pierre Jacquet Droz, membuat tiga boneka mekanis yang dapat menulis, dapat memainkan musik dan organ, dan yang terahkir dapat menggambar. Sementara Nikola Tesla tahun 1898, membuat boat yang dikontrol melalui remote kontrol dan didemokan di Madison Square Garden. Namun karena bermasalah dengan dana sehingga proyek tersebut tak bisa dilanjutkan. Tahun 1956, UNIMATION memulai bisnis robot dan baru pada tahun 1972 mendapatkan laba dari usahanya tersebut. Istilah
robot makin populer setelah ada film Starwars dan
Robot R2D2 yaitu sekitar tahun 70-an. 2.1.2
Definisi Robot Kata robot berasal dari bahasa Czech, Robota yang berarti pekerja. Ada juga
yang mengatakan robot adalah sebuah mesin yang berbentuk seperti manusia yang bisa bergerak dan berbicara1. Sedangkan Robot Institute of America mendefinisikannya dengan “Sebuah robot adalah sesuatu yang dapat di program dan diprogram ulang, 1 Taufiq dwi septian suyadhi, Buku pintar robotika bagaimana merancang dan membuat robot sendiri hal 1
dengan memiliki manipulator mekanik / pengerak yang didisain untuk memindahkan barang-barang, komponen-komponen atau alat-alat khusus dengan berbagai program yang fleksibel / mudah disesuaikan untuk melaksanakan berbagai macam tugas”. 2.1.3
2
Jenis Robot
2.1.3.1
Jenis Robot berdasarakan bentuknya
1.
Turtle robot, karena bentuk robot mirip rumah kura-kura;
2.
Vehicle robot, berbentuk seperti kendaraan yang dilengkapi dengan roda dan bergerak seperti mobil;
3.
Rover robot, bentuk seperti vehicle tapi lebih pendek, robot jenis ini dilengkapi beberapa fungsi, misal kemampuan mendeteksi api, mendeteksi objek, mengangkut beban, dan fungsi lain;
4.
Walker robot, pergerakannya menggunakan kaki dan biasanya berbentuk mirip serangga;
5.
Arm robot, robot berupa lengan yang biasanya digunakan untuk mengambil dan memindahkan barang. Lengan ini dapat terpasang pada robot yang bergerak atau pada sebuah tempat yang statis;
6.
Android robot, didesain menyerupai manusia dan mempunyai kemampuan untuk berkomunikasi dengan manusia;
2.1.3.2
Jenis Robot berdasarkan Kendalinya
1. Robot otomatis (automatic robot) dapat bergerak sendiri berdasarkan perintahperintah yang telah dituliskan dalam program pengendalinya. Jenis robot ini dilengkapi dengan sensor yang berfungsi sebagai masukan (input) yang dapat memberikan data mengenai lingkungannya kepada prosesor; 2. Robot teleoperasi (teleoperated robot) robot jenis ini bergerak berdasarkan perintah-perintah yang dikirimkan secara manual, baik tanpa kabel/wireless (remote control), atau dengan kabel(joystick); 2.1.4
3
Sistem Penggerak Robot
2.1.4.1
DC Motor DC motor atau dinamo adalah motor yang paling banyak digunakan untuk mobile
2Ibid hal 2 3Widodo budiharto, Belajar sendiri membuat robot cerdas panduan utama untuk mengikuti kontes robot hal 6
robot. 2.1.4.2
Servo Motor Servo motor adalah DC motor kualitas tinggi yang memenuhi syarat untuk
digunakan pada aplikasi servo seperti closed control loop. 2.2
Kinematika Robot Kinematika Robot adalah studi analitis pergerakan lengan robot (robot arm)
terhadap sistem kerangka koordinat referensi yang diam/bergerak tanpa memperhatikan gaya yang menyebabkan pergerakan tersebut. Kinematika balik adalah salah satu cara perhitungan dalam kinematika robot lengan, dimana akan menghasilkan nilai sudut yang di peroleh dari perhitungan nilai titik akhir yang diinginkan (end efector). Hasil dari perhitungan berupa satuan sudut yang akan dikerjakan oleh tiap derajat kebebasan (DOF). 2.3
Pulse Width Modulation (PWM) Secara umum PWM adalah sebuah cara memanipulasi lebar sinyal atau
tegangan yang dinyatakan dengan pulsa dalam suatu periode, yang akan digunakan untuk mentransfer data pada pengatur tegangan sumber yang konstan untuk mendapatkan tegangan rata-rata yang berbeda. 2.4
Perangkat Keras
2.4.1
Konveyor Konveyor merupakan pengangkut berbentuk sabuk berjalan yang terbuat dari
karet dengan jaringan benang penguat untuk memindahkan material secara terusmenerus. 2.4.2
Sensor Jarak Ultrasonik PING Sensor jarak ultrasonik PING adalah sensor 40 KHz produksi parallax yang
banyak digunakan untuk aplikasi atau kontes robot cerdas untuk mendeteksi jarak suatu objek. 2.4.3
Mikrokontroler ATMega 168 Mikrokontroler tipe ATMega168 termasuk dalam keluarga MegaAVR merupakan
suatu mikrokomputer dengan kecepatan maksimal 16 MHz yang menggunakan konsumsi daya rendah. Spesifikasi ATMega168 antara lain sebagai berikut ;
1. Saluran IO sebanyak 32 buah, yaitu Port A, Port B, Port C dan Port D; 2. ADC 10 bit sebanyak 8 Channel; 3. Tiga buah timer / counter.32 register; 4. Watchdog Timer dengan oscilator internal; 5. SRAM sebanyak 512 byte; 6. Memori Flash sebesar 8 kb; 7. Sumber Interrupt internal dan eksternal; 8. Port SPI ( Serial Pheriperal Interface ); 9. EEPROM on board sebanyak 512 byte; 10. Komparator analog; 11. Port
USART
(Universal
Shynchronous
Ashynchronous
Receiver
Transmitter); Fitur yang dimiliki oleh ATMega168 yaitu sebagai berikut ; 1. Sistem processor 8 bit berbasis RISC dengan kecepatan maksimal 16 Mhz; 2. Ukuran memory flash 8KB, SRAM sebesar 512 byte, EEPROM sebesar 512 byte; 3. ADC internal dengan resolusi 10 bit sebanyak 8 channel; 4. Port komunikasi serial USART dengan kecepatan maksimal 2.5 Mbps; 5. Mode Sleep untuk penghematan penggunaan daya listrik;
2.5
Perangkat Lunak
2.5.1
Arduino 4Dalam buku “Getting Started with Arduino”, Arduino dituliskan sebagai sebuah
platformphysical computing yang open source pada board input output sederhana. Yang dimaksud dengan platform Physical Computing di sini adalah sebuah sistem fisik yang interaktif dengan penggunaan software dan hardware yang dapat mendeteksi dan merespon situasi dan kondisi yang ada di dunia nyata.
4
Dian artanto, Interaksi arduino dan labview hal 1
Dari situs resminya, arduino didefinisikan sebagai platform elektronik yang open source, berbasis pada software dan hardware yang fleksibel dan mudah digunakan, yang ditujukan untuk para seniman, desainer, hobbies dan setiap orang yang tertarik dalam membuat objek atau lingkungan yang interaktif. 3. PERANCANGAN SISTEM 3.1
Tujuan Perancangan Perancangan berfungsi untuk mendisain rancang bangun sistem yang akan
dibuat, memilah fungsi dan kegunaan alat, serta komponen-komponen yang digunakan agar tidak terjadi kesulitan dalam pembuatan sistem yang akan dibangun. 3.2
Diagram Blok
Gambar 3.1Diagram Blok Perancangan Sistem 3.3
Perancangan Elektronik Tahap pertama yang dilakukan adalah perancangan elektronik.. Suatu hal yang
harus dilakukan adalah memastikan pemilihan komponen sesuai dengan yang dibutuhkan dan menyiapkan semua hal yang diperlukan dalam proses pembuatan rangkaian. Tahapan ini merupakan tahapan yang penting dalam proses pengerjaan alat. Komponen yang dibutuhkan harus sesuai dengan ketentuan dan apabila tidak terdapat dipasaran komponen yang diinginkan dapat diganti dengan jenis yang lain dengan catatan fungsi dan kerja komponen tersebut tidak jauh beda dengan komponen awal. Hal ini juga akan membantu dalam hal keuangan dan keandalan dari alat yang dibuat. 3.4
Perancangan Mekanik Pada tahap perancangan mekanik, ada dua tahapan yaitu perancangan lengan
robot dan perancangan konveyor. 3.4.1
Perancangan Lengan Robot
Lengan robot terdiri dari dua bagian yaitu lengan dan penjepit (end-effector) dan terdiri dari lima sendi. Untuk pergerakannya, masing-masing sendi diberi servo yang langsung terhubung dengan mikrokontroler.
Motor Servo
Gambar 3.2 Desain Lengan Robot Dengan Motor Servo 3.4.2
Perancangan Konveyor Pada perancangan mekanik tahap yang terahkir adalah perancangan konveyor.
Pada bagian ini pada konveyor akan diberi dua buah sensor ping dan sebuah motor dc. Sensor nantinya berfungsi untuk mengukur dan menyeleksi objek yang nantinya akan dikirim langsung ke mikrokontroler. Motor DC berungsi untuk menggerakkan konveyor. Untuk lebih detailnya bisa dilihat pada gambar berikut :
42 cm Sensor ping
20 cm
Motor DC
15 cm
Gambar 3.3a Desain Konveyor Dengan Motor DC dan Sensor 3.5
Perancangan Software Setelah merancang mekanik, langkah selanjutnya adalah perancangan software.
Software yang digunakan adalah Arduino 1.02 dengan bahasa C yang di upload ke memori mikrokontroler ATMega 168.
Gambar 3.4 Flowchart Sistem 4. IMPLEMENTASI DAN PEMBAHASAN 4.1
Implementasi
4.1.1
Pembuatan Lengan Robot Mengacuh rancangan yang telah dipaparkan pada bab sebelumnya,
lengan
robot terdiri dari 2 bagian yaitu capit dan lengan. Lengan robot akan dibuat dari bahan
alumunium, ini dimaksudkan agar lengan lebih ringan dan lebih kokoh.
Gambar 4.1 Bentuk Hasil dari Lengan Robot Keseluruhan
Gambar 4.2 Bentuk Hasil dari Capit dengan Sebuah Servo 4.1.2
Pembuatan Konveyor Pada pembuatan konveyor, akan dibuat dari bahan alumunium sebagai bodi
konveyor dan belt sebagai alas. Seperti tampak pada gambar 4.3, konveyor terdiri dari bodi, belt, motor dc dan sensor.
Gambar 4.3 Bentuk Hasil dari Konveyor dengan Motor DC
Gambar 4.4 Bentuk Hasil dari Konveyor dengan sensor 4.1.3
Rangkaian Elektronik Rangkaian utama pada robot adalah arduino board yang menjadi penerjemah
perintah dan kemudian dilanjutkan ke seluruh rangkaian yang terhubung dengan arduino board. Board Arduino dapat beroprasi pada sebuah suplai eksternal 6 sampai 20 Volt namun range yang direkomendasikan adalah 7 sampai 12 Volt. Dalam hal ini board Arduino diberikan daya konsumsi sebesar 9 Volt agar regulator board tidak kelebihan panas dan tidak kekurangan konsumsi daya sehingga lebih stabil. Arduino memiliki beberapa pin yang digunakan untuk komunikasi mikrokontroler sebanyak 14 pin dan beberapa pin daya yang bisa di bypass keluar board ketika mendapatkan suplai tegangan.
Gambar 4.5 Konfigurasi pin I/O board arduino 4.1.4
Pembuatan Program Dalam pemrograman mikrokontroler board Arduino, kode program dituliskan
seperti berikut: Tiap servo diberi nama untuk lebih memudahakan mengidentifikasi servo, seperti pada perintah berikut ; Servo Servo Servo Servo Servo Servo
bawah; dudukan1; dudukan2; tengah; atas; capit;
Berikutnya mendeklarasikan sensor, dimana sensor 1 berada pada pin 7 dan sensor 2 pada pin 13, perintahnya sebagai berikut; const int pingPin = 7; const int pingPin1 = 13; long duration, inches, cm; long duration1, inches1, cm1; Pada bagian motor, pin berada pada 4 dan 5, perintahnya sebagai berikut ; #define KiriMaju 4 #define KiriMundur 5 int k1=5,k2=6,p=15; int sen,sen2; Pada bagian setup tiap servo dihubungkan dengan pin yang ada; void setup()
{ Serial.begin(9600); bawah.attach(12); dudukan1.attach(10); dudukan2.attach(11); tengah.attach(8); atas.attach(3); capit.attach(2); }
Agar lebih mudah dalam mengeksekusi tiap servo dan motor, setiap gerakan yang diinginkan dibuat dalam bentuk class. Gerakan servo dibagi atas gerakan dan diberi nama gerak1, gerak2, gerak3 dan gerak4, yang fungsi masing-masing untuk mendapatkan gerakan yang halus dan lebih mudah untuk menentukan proses pengambilan dan pemindahan benda. Untuk perintahnya sebagai berikut ; void gerak1() { bawah.write(50); dudukan1.write(30); dudukan2.write(30);delay(100); tengah.write(170); atas.write(110); capit.write(30); delay(200); } //========================================= void gerak2() { for (int a = 50; a <= 160; a=a+2) { bawah.write(a); dudukan1.write(20); dudukan2.write(20); delay(100); tengah.write(175); } } //========================================= void gerak3() { atas.write(90);delay(100); dudukan1.write(50);delay(200); dudukan2.write(50);delay(250); capit.write(90);delay(500); tengah.write(170);delay(400); atas.write(110);delay(300); for (int b=55; b >20; b = b - 2)
{ dudukan1.write(b); dudukan2.write(b); delay(100); } tengah.write(150);delay(200); } //========================================= void gerak4() { for (int c = 20; c <=60; c+=2) { dudukan1.write(c); dudukan2.write(c); delay(100); } atas.write(100); delay(200); for(int d=90; d>30; d--) { capit.write(d);delay(50); } for(int e=60; e>=20;e-=2) { dudukan1.write(e); dudukan2.write(e); delay(100); } tengah.write(170); } Untuk motor diberi nama majukiri, yang nantinya motor hanya bergerak ke arah kiri dan membantu dalam mengendalikan kecepatan gerakan dari motor. Perintahnya sebagai berikut : void majuKiri() { pinMode (KiriMaju,OUTPUT); analogWrite (KiriMundur, 50); analogWrite(KiriMaju,0); } //========================================= void berhenti() { pinMode (KiriMaju,OUTPUT); digitalWrite (KiriMundur, 0); digitalWrite(KiriMaju,0); }
Untuk perintah mengubah gelombang ke cm, menggunakan perintah seperti berikut ; long microsecondsToInches(long microseconds) { return microseconds / 74 / 2; } long microsecondsToCentimeters(long microseconds) { return microseconds / 29 / 2; }
Agar perintah dapat dijalankan maka pada loop diberi perintah sebagai berikut ; void loop() { majuKiri(); Serial.print("sensor1"); Serial.print(cm); Serial.print("cm"); Serial.println(); pinMode(pingPin, OUTPUT); digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(pingPin, HIGH); delayMicroseconds(5); digitalWrite(pingPin, LOW); pinMode(pingPin, INPUT); digitalWrite (pingPin, HIGH); duration = pulseIn(pingPin, HIGH); Perintah berikut untuk mengubah waktu ke jarak ; cm = microsecondsToCentimeters(duration); Serial.print("sensor2"); Serial.print(cm1); Serial.print("cm1"); Serial.println(); pinMode(pingPin1, OUTPUT); digitalWrite(pingPin1, LOW); delayMicroseconds(2); digitalWrite(pingPin1, HIGH); delayMicroseconds(5); digitalWrite(pingPin1, LOW); pinMode(pingPin1, INPUT); digitalWrite(pingPin1, HIGH);
duration1 = pulseIn(pingPin1, HIGH); cm1 = microsecondsToCentimeters(duration1); int k1=5,k2=6,p=15; int m = 10; int m1 = 5; sen2 = cm + cm1; sen = sen2 - cm;
Perintah
berikut
untuk
menggerakan
lengan
mengambil
benda
dan
memindahkan ke tempat yang telah ditentukan ;
if (sen2 >= 7 && sen2 <9)//besar { berhenti (); gerak2(); gerak3(); bawah.write(70); gerak4(); } else if(sen2 > 5 && sen2 < 7 )//kecil { berhenti (); gerak2(); gerak3(); bawah.write(30); gerak4(); } else { majuKiri(); gerak1(); } } 4.2
Hasil dan Pengujian
4.2.1
Hasil Hasil akhir perancangan robot yang secara keseluruhan masih dalam bentuk
prototype terlihat pada gambar 4.6 sebagai berikut:
Gambar 4.6 Bentuk Hasil Robot
Dari hasil implementasi rancangan robot dihasilkan robot yang mampu untuk memindahkan objek ke tempat yang telah ditentukan secara otomatis berdasarkan program yang telah di inputkan sebelumnya. 4.2.2
Pengujian Pengujian
kinematika
dilakukan
dengan
menghitung
manual
dengan
menggunakan rumus kinematika dan sudut dari servo
Tabel 4. 1Hasil Pengujian Pergerakan Minimum dan Maksimum Lengan Robot Motor Servo Motor Servo Titik Minimum Titik Maksimum Motor servo 1 (bawah)
30
160
Motor servo 2 & 3 (dudukan)
20
60
Motor servo 4 (tengah)
150
175
Motor servo 5 (atas)
70
110
Motor servo 6 (capit)
20
90
Untuk mendapat sudut yang tepat dalam mengambil obyek, maka harus
mengetahui titik pangkal (end effector)dari obyek tersebut agar sudut servo dapat diinisialisasi. Berikut pengaplikasian rumus kinematika 3 DOF dalam mengambil obyek dari hasil pengujian sebelumnya : Sudut dudukan = θ1 = 55 Sudut tengah = θ2= 160 Sudut atas
= θ3= 120
Panjang lengan1 = l1 = 10 cm Panjang lengan2 = l2 = 9 cm Panjang lengan3 = l3 = 9 cm
x
= l1 cos θ1 + l2 cos (θ1+θ2 ) + l3 cos (θ1 + θ2 + θ3 ) = (10 x 0,6) + (9 x 0,57) + (9 x -0,42) = 7,35
y
= l1 sin θ1 + l2 sin (θ1+θ2 ) + l3 sin (θ1 + θ2 + θ3 ) =(k,10 x 0,82) + (9 x 0,2 ) + (9 x (-0,91)) = 1,81
y 25 x
Jadi posisi capit harus berada pada sudut teta 25 dari titik pusat obyek dan berada pada sudut teta 120 dari titik pangkal servo pada capit nya.
5. PENUTUP 5.1
Kesimpulan Dari hasil perencanaan dan pembuatan serta pengujian sistem secara
keseluruhan, dapat diambil kesimpulan sebagai berikut ; 1. Mikrokontroler ATMega 168 dapat digunakan sebagai sistem kendali robot; 2. Pada lengan bawah, penggunaan servo ada dua buah sehingga harus mengatur dengan baik posisi kedua servo; 3. Capit terkadang susah menjepit objek; 4. Penggunaan driver motor lebih memudahkan mengatur gerak dari konveyor ; 5. Kurang presisi menentukan ukuran objek; 6. Penggunaan servo terlalu banyak sehingga korps konsumsi daya; 5.2
Saran Untuk penyempurnaan dan pengembangan lebih lanjut maka disarankan ; 1. Servo khususnya pada lengan bawah sebisa mungkin menggunakan torsi yang lebih besar, sehingga dapat mengurangi penggunaan servo; 2. Desain capit diperbaharui sehingga ketika mengambil dan mengangkat objek lebih baik; 3. Robot hanya dapat mengenali ukuran objek yang telah ditentukan sebelumnya, sehil]ngga untuk pengembangan selanjutnya diharapkan robot juga bisa mengenali bentuk, warna, berat dan lain-lain dari objek; 4. Pengembangan selanjutnya diharapkan lengan robot sudah dapat berpindah tempat dengan menambahkan roda kaki;
DAFTAR PUSTAKA Artanto, Dian. 2012. Interaksi Arduino dan Labview. PT Elex Media Komputindo. Jakarta Budiharto, Widodo. 2006. Belajar sendiri membuat robot cerdas panduan utama untuk mengikuti kontes robot. PT Elex Media Komputindo. Jakarta Dwi septian suyadhi, Taufiq. 2011. Buku pintar robotika bagaimana merancang dan membuat robot sendiri. Andi Offset. Yogyakarta http://arduino.cc/en/ diakses tanggal 8 mei 2013 http://kuliah.andifajar.com/sensor-ultrasonic/, diakses tanggal 8 mei 2013 Malik, Muchamad, 2012. Otomasi Mesin Rajang Tembakau Berbasis Mikrokontroler.
Universitas Gadjah Mada. Yogyakarta