Anda di halaman 1dari 8

NAMA ANGGOTA KELOMPOK :

ACC :

1. Bagus Isnaeni R

(1103141010)

1.

2. Dian Sekar Ramadhanti

(1103141030)

2.

JUDUL

: PERENCANAAN TRAJECTORY ROBOT PLANAR 1 DAN 2 DOF

TUJUAN

Mahasiswa dapat memahami prinsip kerja mekanika robot planar 1 dan 2 DoF

ALAT DAN BAHAN :


- PC (Personal Computer)
- Kabel jumper
- Motor Servo
- Modul Mikrokontroller
- Power Supply
- Papan modul planar
- USB AVR
SETTING PERCOBAAN :

PROSEDUR PERCOBAAN
1. Menyiapkan peralatan dan komponen yang akan digunakan. Merangkai motor servo
sesuai gambar pada setting percobaan.
2. Menyalakan power supply dan mengatur pada nilai dan tegangan 5V dan memastikan
arusnya maksimal.
3. Menghubungkan power supply dengan pin power modul mikrokontroler.

4. Menghubungkan downloader USB AVR dari PORT mikrokontroler ke PORT pada


PC.
5. Menyalakan PC dan membuka software program CV AVR.
6. Membuka project baru dengan cara klik file => New => Project => ATTiny,
ATMEGA, FPSLIC => OK.
7. Muncul file project baru, memilih tab Chip => ATMEGA 8535 dan Clock 4000 MHz.
8. Memilih tab Timer => Timer1, clock value = 4.000.000 KHz. Memilih mode
FastPWM top ICR1A, memilih opsi out A= non-inverting, Inp-capture = FFFF H.
Memilih PWM top = ICR1 dan opsi out B = non-inverting.
9. Memilih tab Alphanumeric LCD => Mengklik Enable Alphanumeric LCD Support
[v]. Pada char line, memilih 16. Lalu mengeset semua connection pada PORTB.
10. Memilih tab PORTS, memlilih PORTB mengatur semua bit pada IN dan ganti [T]
dengan [P] untuk pull up
11. Men generate program, dengan cara meng-klik Program => Generate, save and exit.
12. Memasukkan program untuk mengontrol servo1 dan servo2 (program terlampir).
13. Men-download program dengan ISP, Setting => Programmer => Atmel AVRISP MK
(USB) => OK.
14. Mengompile dengan cara klik Project => configure, pada tab after build [v] program
the chip => OK ([ ] Uncheck program fuse bit, [v] Check erasure).Merunning
program, project => build all.
15. Mengklik PB.0 sehingga nilai OCR1A bertambah, PB.1 untuk mengurangi nilai
OCR1A, PB.2 untuk menambah nilai OCR1B, , PB.3 untuk mengurangi nilai
OCR1B. Mengambil data servo 1 menunjukkan sudut 0 dan 90 pada OCR1A,
mengambil data servo 2 menunjukkan sudut 0 dan 90 pada OCR1B. Mencatat nilai
OCR1A saat 0 dan 90, mencatat nilai OCRIB saat 0 dan 90.
16. Melakukan langkah percobaan no.6 hingga no.14, namun dengan menulis program
yang berbeda (program 2 terlampir). Memasukkan nilai OCR1A dan OCR1B pada
program. Membuat lintasan dengan 28 titik pada papan planar, dengan mengukur nilai
x dan y menggunakan penggaris.
17. Memasukkam nilai x dan y pada 28 titik tadi ke program 2.
18. Mendownload program 2 dan mengamati apa yang terjadi pada robot planar dan
mendokumentasi hasil gerakan robot planar tersebut.
19. Jika sudah selesai, laporkan hasil data yang diperoleh kepada dosen.
20. Merapikan kembali alat-alat yang digunakan

DATA PERCOBAAN
Percobaan 1
NO

OCR

Nilai OCR

OCR1A

1700

OCR1A9

5420

OCR1B

8900

5240

OCR1B9

Tabel 1. Nilai OCR1A dan OCR1B saat sudut 0 dan 90


Percobaan 2

Yb

3
5

(15,35

(19,35 (21,35 (23,35


)
)
)

(17,35

(15,32.

(25,35
)

(27,35
)

(29,35

(35,35)

(31,35 (33,3
5)
)

(35,32.

5)

5)

3
0

(15,30.

(35,30.

5)

5)

(15,28.

(35,28.

5)

5)

2
5

Keterangan :

(35,26.

(15,26.

5)

5)

(17,26.5) (19,26.5 (21,26.

5)

(23,26.

(25,26.

(27,26.

(29,26.

(31,26.

(33,26.

5)

5)

5)

5)

5)

5)

Teori

Praktik

2
0
15

Xb
1
5

2
0

2
5

3
0

3
5

Gb.1 Visualisasi perencanaan trayektori robot planar 2 DoF.

LAMPIRAN
Program 1 :
#include <lcd.h>
#include <stdio.h>
#include <delay.h>#include <mega8535.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm

unsigned char kata [17];


float TA, TB;
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x30;
lcd_init(16);
OCR1B=5160;
OCR1A=8860;
while (1)
{
if (PINC.0==0) OCR1A=OCR1A-30;
if (PINC.1==0) OCR1A=OCR1A+30;
if (PINC.2==0) OCR1B=OCR1B-30;
if (PINC.3==0) OCR1B=OCR1B+30;
sprintf(kata,"A=%d B=%d",OCR1A,OCR1B);
lcd_gotoxy(0,0);
lcd_puts(kata);
TA=OCR1A*0.00025;
TB=OCR1B*0.00025;
sprintf(kata,"TA=%1.2f TB=%1.2f",TA,TB);
lcd_gotoxy(0,1);
lcd_puts(kata);
delay_ms(20);
};
}

Program 2 :
#include
#include
#include
#include

<mega8535.h>
<stdio.h>
<delay.h>
<math.h>

char kata [17];short int i;const short int N=32;


const float pi=3.1415926535897932384626433832795, L1=25.0,
L2=22.5;
float teta1,teta2,teta1rad,teta2rad,costeta2rad,
sinteta2rad,xb,yb;

const unsigned int OCR1A0=1640, OCR1A90=5230, OCR1B0=5739,


OCR1B90=2300;
const float XA[32]={35 ,35 ,35 ,35 ,35 ,33, 31 ,29,
27,25,23,21,19,17,15,15,15,15,15,17,19,21,23,25,27,29,31,33}
;
const float YA [32] =
{34.5,32.5,30.5,28.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.
5,26.5,26.5,26.5,28,30.5,32.5,34.5,34.5,34.5,34.5,34.5,34.5
,34.5,34.5,34.5,34.5};
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x30;
lcd_init(16);
while (1)
for (i=1;i<=28;i++)
{
xb=XA[i-1];yb=YA[i-1];
costeta2rad=(pow(xb,2)+pow(yb,2)-pow(L1,2)-pow(L2,2))/
(2*L1*L2);
sinteta2rad=pow(1-pow(costeta2rad,2),0.5);
teta2rad=atan2(sinteta2rad,costeta2rad);
teta1rad=atan2(yb,xb)- atan2 ((L2*sinteta2rad),
(L1+L2*costeta2rad));
teta1 = teta1rad * 180/pi;
teta2 = teta2rad * 180/pi;
OCR1A=OCR1A0+((teta1*(OCR1A90-OCR1A0))/90);
OCR1B=OCR1B0-((teta2*(OCR1B0-OCR1B90))/90);
delay_ms(500);
sprintf(kata, "EoE=%2.1f,%2.1f
lcd_gotoxy(0,0);
lcd_puts(kata);
delay_ms(20);
sprintf(kata, "teta=%2.1f,%2.1f
lcd_gotoxy(0,1);
lcd_puts(kata);
delay_ms(20);
};

", xb, yb);

", teta1, teta2);

ANALISA PERCOBAAN:
Percobaan kali ini adalah tentang perencanaan trayektori robot lengan 2 DOF.
Dimana pada percobaan ini lengan robot akan direncanakan melalui jalur / titik yang
ditentukan melalui koordinat EoEnya secara otomatis. Percobaan ini masih menggunakan
metode pada percobaan sebelumnya yaitu menggunakan invers kinematika dimana
kedudukan EoE robot mengacu pada besar sudut-sudut tiap lengan robot.
Hal yang dilakukan pertama kali adalah mencari nilai OCR1A0, OCR1A90, OCRIB0,
dan OCR1B90, dilakukan dengan cara mengatur kedua lengan robot planar 2 DoF pada
posisi sudut 0 dan 90 dan pengaturan untuk membentuk sudut 0 dan 90 dengan

menggunakan PB0,PB1,PB2,dan PB3. Didapatkan hasil seperti pada Tabel 1. Secara teori
untuk mendapatkan nilai 90 digunakan rumus untuk menghitung sebuah nilai Ton:
Ton () = /180 *(Ton(180) - Ton(0))+Ton(0)
Dari rumus diatas dapat diturunkan rumus untuk menghitung nilai OCR1. Berikut rumus
untuk menghitung nilai OCR1:
OCR1 = Ton( )/0.25 us.
Lalu yang selanjutnya dilakukan kita menentukan perencanaan trayektori dengan
membuat lintasan/titik yang dilalui mengacu pada EoE robot. Untuk mencoba keberhasilan
robot ditentukan EoE robot tersebut, maka kelompok kami mengambil 28 titik sampel data
yang merupakan datamax dengan membentuk lintasan persegi panjang, data tersebut yaitu :
Untuk diagonal xs [32]= {35 ,35 ,35 ,35 ,35 ,33, 31 ,29,
27,25,23,21,19,17,15,15,15,15,15,17,19,21,23,25,27,29,31,33}
Untuk diagonal ys[32] = {34.5,32.5,30.5,28.5,26.5,26.5,26.5,
26.5,26.5,26.5,26.5,26.5,26.5,26.5,26.5,28,30.5,32.5,34.5,34.5,34.5,34.5,34.5,34.5
,34.5,34.5,34.5,34.5}
Kemudian ATMega diprogram kembali dengan main program sbb :
while(1)
{
for(i=1; i <= datamax ; ++i)// datamax pada percobaan adalah 28 data
{
xb=xs[i-1]; if (xb <= 0) xb= 1E-20;
yb=ys[i-1];
costeta2rad=(xb*xb+yb*yb-L1*L1-L2*L2)/(2*L1*L2);
sinteta2rad=sqrt(1-costeta2rad*costeta2rad);
teta2rad=atan2(sinteta2rad,costeta2rad);// Rumus invers kinematika
teta1rad=atan2(yb,xb)-atan2(L2*sinteta2rad,L1+L2*costeta2rad);//invers
teta1=teta1rad*180/phi;
teta2=teta2rad*180/phi;
OCR1A=OCR1A0+((teta1/90)*(OCR1A90-OCR1A0));
OCR1B=OCR1B0-((teta2/90)*(OCR1B0-OCR1B90));
sprintf(kata,EoE=%2.1f,%2.1f ,xb,yb);
lcd_gotoxy(0,0);
lcd_puts(kata);
sprint(kata,teta=%2.1f,%2.1f ,teta1,teta2);
lcd_gotoxy(0,1);
lcd_puts(kata);
delay_ms(1000);
delay_ms(1000);

Maka robot planar akan bergerak dengan perencanaan trajektori yang telah dibuat
pada 28 titik pada papan planar. Sehingga didapatkan hasil seperti dibawah ini :

Yb

35

15,35)

(35,35)
17,35) (19,35) (21,35) 23,35)

30

25
20

(25,35)

(27,35) 29,35) (31,35) (33,35)

15,32.5)

35,32.5)

15,30.5)

35,30.5)

15,28.5)

35,28.5)

Keterangan :

35,26.5)

15,26.5)
(17,26.5)

15

19,26.5) 21,26.5) 23,26.5) 25,26.5) 27,26.5) 29,26.5) 31,26.5) 33,26.5)

20

25

30

35

Teori
Praktik

Xb

Dari gambar terlihat secara praktikum lintasan yang dilalui robot kurang presisi
dan kurang sesuai dengan lintasan yang diharapkan. Kurangnya kepresisian yang terjadi
pada percobaan ini disebabkan karena beberapa faktor diantaranya :

Kualitas motor servo yang menurun dikarenakan sering digunakan


Pada motor servo terdapat beban yang berupa lengan robot sehingga kurang
bekerja secara maksimal
Adanya gesekan pada modul robot terhadap roda yang terdapat pada lengan robot
yang mengakibatkan terhambatnya gerakan robot

KESIMPULAN :
Dari percobaan yang telah dilakukan tersebut didapatkan kesimpulan yaitu dengan menggunakan
kontrol Trayektori ,robot dapat direncanakan pergerakannya sesuai dengan titik-titik laluannya
yang mengacu pada koordinat End of Effectornya (EoE) secara otomatis.