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
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 judul dengan "Rancang lengan robot dengan metode 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 Jenis Robot
2
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 perintah-
perintah 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 Sistem Penggerak Robot
3
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 terus-
menerus.
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
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
Gambar 3.1Diagram Blok Perancangan Sistem
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.
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
20 cm 15 cm
Motor
DC Sensor
ping
Motor
Servo
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
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.2 Bentuk Hasil dari Capit dengan Sebuah Servo
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 bawah; Servo dudukan1; Servo dudukan2; Servo tengah; Servo atas; Servo 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
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.
y
x 25
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.