Anda di halaman 1dari 41

DOKUMENTASI Selective Compliance Assembly Robot Arm (SCARA)

Disusun oleh : Nugroho Budi Wicaksono Y.B. Adyapaka Apatya Pembimbing : Petrus Sutyasadi S.T, M.Eng (06 5013 010) (06 5013 009)

PROGRAM STUDI MEKATRONIKA


FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHRAMA YOGYAKARTA 2009

1. Graphical User Interface [GUI] dengan Visual Basic 6.0 Simulasi SCARA robot ini diperoleh dari http://5axes.free.fr/main_en.htm. Program visual basic ini dapat menyimulasikan beberapa robot, seperti Adept Six 600 (6DOF), Adept Cobra 800 (SCARA,4DOF), Staubli (6DOF), dan beberapa robot lain yang biasa digunakan di industri. Program ini hanya digunakan untuk menyimulasikan posisi-posisi yang diinginkan user. Untuk kepentingan Tugas Akhir SCARA Robot Arm, maka program ini dimodifikasi. Modifikasi yang dilakukan adalah sebagai berikut : a. 3 Degree Of Freedom (2R berupa motor, 1P berupa silinder pneumatik), ditambah 1 end effector vacuum, b. Posisi-posisi robot dapat disimpan pada database microsoft access, posisi disimpan dalam satuan sudut (diperoleh dari perhitungan invers dan forward kinematik), c. d. Posisi-posisi yang disimpan dapat disimulasikan, Program ini dapat dikomunikasikan dengan mikrokontroller PIC 16F877 lewat port serial, e. Setpoint, dan konstanta PID dapat dikirimkan dari Visual Basic, dan setelah PIC 16F877 sudah menerima setpoint dan konstanta PID, robot dapat dijalankan tanpa terhubung port serial.

Gambar 1. GUI SCARA dengan Visual Basic 6.0

Keterangan Object : A. Frame Simulasi : o Gambar dari frame simulasi ini diambil dari file berformat *.stl pada folder .\Robot_def. o Posisi Grid pada simulasi sama dengan posisi grid yang tergambar di area kerja robot [real]. o Luas setiap grid adalah 200 satuan2, agar sama dengan kondisi hardware yang ada, maka dapat ditetapkan bahwa 1 satuan = 1/100 inch. Jadi, Luas 1 grid adalah 2 inch2 = + 50 mm2. o Panjang Link 1 pada simulasi adalah 600 satuan, sehingga panjang lengan robot sesungguhnya pada hardware adalah 6 inch = + 150 mm. o Panjang Link 2 pada simulasi adalah 400 satuan , sehingga panjang lengan robot sesungguhnya pada hardware adalah 4 inch = + 100 mm.

Gambar 2. Grid pada simulasi dan pada hardware

B. Frame Program Option : o Option simulasi : digunakan hanya untuk menyimulasikan gerakan robot, frame yang bisa dijalankan jika option ini dipilih adalah frame Position Destination, dan frame Manual Control (posisi robot tidak bisa disimpan). o Option Test Komunikasi Serial : digunakan untuk mencoba koneksi antara Visual Basic dengan PIC 16F877. Frame yang aktif jika option TestKomSerial dipilih adalah Frame TestKomunikasiSerial. o Option Manual Test : digunakan untuk mengirimkan setpoint, dan konstanta PID pada PIC 16F877. Frame yang aktif jika option ini dipilih adalah Frame ManualTEST o Option SendToPIC : digunakan untuk mengirimkan seluruh data posisi yang disimpan pada database Microsoft Access ke PIC 16F877. Jika option ini dipilih, hanya frame ManualTEST yang tidak aktif, dengan memilih option SendToPIC maka user dapat menyimpan posisi robot.

Gambar 3. Frame Program Option

C. Frame Absolute Position : o Frame ini digunakan untuk membaca vektor posisi dari end-effector lengan robot, dan koordinat posisi end effector terhadap sumbu X dan Y.

Gambar 4. Frame Absolute Position

D. Frame Position Destination: o Object-object pada frame ini digunakan untuk menentukan posisi sudut lengan robot dari koordinat dimasukkan (invers kinematik). o Posisi Y adalah garis yang tegak lurus dengan lengan robot pada saat robot pada home position. o Posisi X adalah garis yang sejajar dengan lengan robot pada saat robot pada home position. o o Home position pada simulasi pada posisi X = -375, dan Y = -625. Command button 'play' digunakan untuk menjalankan robot pada posisi yang disebutkan. o o o Text yang diisikan pada X/Y dalam koordinat. Posisi dalam sudut dapat dilihat pada frame Manual Control Frame Posistion Destination terbatas digunakan untuk menentukan posisi 2R (link 1 dan link 2). Untuk kondisi silinder dan vacuum ditentukan pada Frame Manual Control.

Gambar 5. Frame Position Destination

E. Frame Manual Control : o Object-object pada frame ini digunakan untuk menentukan posisi lengan robot dari sudut yang dimasukkan (forward kinematik). o Ada 4 posisi yang harus dimasukkan, yaitu posisi sudut link 1, link 2, kondisi silinder, dan kondisi vacuum. Sudut maksimal untuk link 1 dan 2 adalah 180 derajat. Kondisi silinder dan vacuum hanya 2 kondisi. o Untuk menyimpan posisi atau menghapus posisi robot program option yang digunakan adalah SendToPIC. Penghapusan posisi dilakukan dari posisi yang terakhir kali dimasukkan. o Masih terdapat BUG dalam penyimpanan posisi robot pada database microsoft access, yakni database tidak bisa menyimpan posisi robot dalam bentuk pecahan, jadi posisi robot harus bentuk bulat. Solusi untuk hal ini adalah mengganti tipe variabel.

Gambar 6. Frame Manual Control

F. Frame Position Datas : o Frame ini digunakan untuk menampilkan data-data yang tersimpan pada database microsoft access, user tidak bisa mengganti data yang telah tersimpan. Object yang digunakan adalah datagrid, dan ADODC. Datagrid digunakan untuk menampilkan data pada database, sedangkan ADODC digunakan untuk menghubungkan Visual Basic dengan Microsoft Access. o Data yang disimpan untuk sudut pada joint 1 diambil dari sudut yang dibentuk oleh link 1 pada Frame Manual Control ditambah 90. Hal ini dilakukan karena posisi minimal robot adalah -90 derajat, sedangkan posisi minimal pada hardware adalah 0 derajat.

Gambar 7. Frame Position Datas

G. Frame SendToPIC : o Ada 2 command button dalam frame ini. command "Download Position to PIC" digunakan untuk mengirimkan seluruh data posisi yang tersimpan pada database ke PIC 16F877. Command "Simulate All Position" digunakan untuk menyimulasikan posisi robot dari seluruh posisi yang ada pada database. o Sebelum mengirimkan data dengan menekan command SendDATA, pastikan Visual Basic sudah terkomunikasi dengan PIC 16F877.

Gambar 8. Frame SendToPIC

H. Frame TestKomunikasiSerial : o Fungsi utama Object-object pada frame ini adalah mengkomunikasikan Visual Basic dengan dengan PIC 16F877. o Fungsi tambahannya adalah testing komunikasi antara Visual Basic dengan PIC16F877, tujuannya adalah mengetahui apakah ada error dalam komunikasi serial sebelum posisi yang diinginkan dikirim ke PIC 16F877. o Untuk mencoba komunikasi kirimkan karakter "A"/"B"/"C" (tanpa tanda petik), kemudian tekan command button TestKoneksi. Jika tidak ada error, maka data yang diterima oleh Visual Basic akan ditampilkan pada Text Terima DATA dengan pesan "Kom Siap"/"juga siap"/"silakan". o Port Serial yang biasa digunakan adalam Com 1, dan BaudRatenya 9600. untuk Com Port menyesuaikan com port pada komputer yang digunakan atau notebook.

Gambar 9. Frame Test Komunikasi Serial

I. o

Frame ManualTEST : Object-object pada frame ini digunakan untuk mengirimkan SetPoint lengan robot, dan Konstanta PID. o Setpoint Link 1, Link 2, Konstanta P, I, dan D dapat diatur menggunakan slider / menuliskan posisi yang diinginkan pada masing-masing object text. o Sebelum mengirimkan data dengan menekan command SendDATA, pastikan Visual Basic sudah terkomunikasi dengan PIC 16F877.

Gambar 10. Frame Manual Test

J. o

Frame MessageLOG : Frame ini digunakan untuk monitoring simulasi lengan robot, jika terdapat pesan seperti ini, maka : Axes 2 hors limites !!! Maka, lengan robot tidak dapat menjangkau posisi tersebut, ganti koordinat yang diinginkan. Attention point inaccessible Maka, posisi tidak dapat dicapai oleh lengan robot.

Gambar 11. Frame Message LOG

2. Coding
Pemrograman SCARA Robot Arm dapat dibagi menjadi 4 bagian, pemrograman untuk simulasi SCARA di Visual Basic, pemrograman database [komunikasi antara Visual Basic dengan Microsoft Access], pemrograman untuk komunikasi antara Visual Basic dengan PIC 16F877, dan pemrograman PIC 16F877. A. Pemrograman Simulasi SCARA Robot Arm pada Visual Basic 6.0 a. Mengambil Nilai Slider.Value dan TextBox.Text untuk menggerakkan Lengan Robot Coding :
Private Sub SliderAxeRobot_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) Dim Cancel As Boolean AxeRobot(Index) = SliderAxeRobot(Index).Value Call AxeRobot_Validate(Index, Cancel) End Sub

Keterangan : AxeRobot(Index) menunjukkan array [object : TextBox]dari lengan robot ke-?, jika index = 1, maka axe robot yang disimulasikan adalah link 1, jika index = 2, maka axe robot yang disimulasikan adalah link 2, dan setrusnya. SliderAxeRobot(Index) menunjukkan array dari object slider. Fungsi AxeRobot_Validate adalah rutin program yang digunakan untuk menyimulasikan gerakkan lengan robot. b. Menyimulasikan SCARA dari Data Posisi di Database [Simulate All Position] Coding1 :
Dim Cancel As Boolean AxeRobot(1).Text = 0 Call AxeRobot_Validate(1, Cancel) Call tunda100 AxeRobot(2).Text = 0 Call AxeRobot_Validate(2, Cancel) Call tunda100 AxeRobot(3).Text = 100 Call AxeRobot_Validate(3, Cancel) Call tunda100 AxeRobot(4).Text = 0 Call AxeRobot_Validate(4, Cancel) Call tunda100 timSIM.Enabled = True

Keterangan : Coding1 di atas digunakan untuk menyimulasikan gerakkan lengan robot pada home position. Coding di atas sama dengan coding untuk menyimulasikan gerakkan lengan robot dari nilai slider.value / textbox.text, tetapi nilai textbox.text langsung ditentukan. Call tunda 100 adalah rutin program yang digunakan untuk menunda menyimulasikan gerakan lengan robot selanjutnya. timSIM adalah timer yang digunakan untuk menyimulasikan gerakan lengan robot sesuai dengan data posisi pada database.

Coding2 :
Private Sub timSIM_Timer() Dim sim As Integer Dim Cancel As Boolean htngRecCnt = Rs.RecordCount cmdSimPOS.Enabled = False For sim = 1 To htngRecCnt frmDataPos.Show With Rs .Close .Source = "select * from datapos where [No] like '%" & sim & "%'" .Open frmDataPos.j1A.Text = .Fields("Joint 1").Value frmDataPos.j2A.Text = .Fields("Joint 2").Value frmDataPos.SilA.Text = .Fields("Silinder").Value frmDataPos.VacA.Text = .Fields("Vaccum").Value frmDataPos.dataPOS.Text = "data posisi ke : " & sim .Close .Source = "select*from datapos" .Open End With With dataposisi Set .DataSource = Rs .Refresh .Columns(0).Caption = "No" .Columns(0).Width = 300 .Columns(1).Caption = "Joint 1" .Columns(1).Width = 1000 .Columns(2).Caption = "Joint 2" .Columns(2).Width = 1000 .Columns(3).Caption = "Silinder" .Columns(3).Width = 1000 .Columns(4).Caption = "Vaccum" .Columns(4).Width = 1000 End With AxeRobot(1).Text = frmDataPos.j1A.Text - 90 Call AxeRobot_Validate(1, Cancel) Call tunda500 AxeRobot(2).Text = frmDataPos.j2A.Text - 90 Call AxeRobot_Validate(2, Cancel) Call tunda500 axe3txt.Text = frmDataPos.SilA.Text If frmDataPos.SilA.Text = "1" Then AxeRobot(3).Text = "-100" Call AxeRobot_Validate(3, Cancel) Call tunda500 Else AxeRobot(3).Text = "100" Call AxeRobot_Validate(3, Cancel) Call tunda500 End If

axe4txt.Text = frmDataPos.VacA.Text If frmDataPos.VacA.Text = "0" Then AxeRobot(4).Text = "0" Call AxeRobot_Validate(4, Cancel) Call tunda500 Else AxeRobot(4).Text = "45" Call AxeRobot_Validate(4, Cancel) Call tunda500 End If Next cmdSimPOS.Enabled = True frmDataPos.Hide timSIM.Enabled = False End Sub

Keterangan : Variabel sim digunakan untuk fungsi for-next, dan digunakan untuk menentukan data posisi yang akan diambil dari database. Untuk Rs, dan program yang terkait dengan microsoft access akan dijelaskan lebih lanjut pada Pemrograman Database. Variabel htngRecCnt digunakan untuk mengetahui jumlah data posisi yang tersimpan pada database. Coding frmDataPos.j1A.Text = .Fields("Joint 1").Value digunakan untuk mengambil value [data posisi] yang ada pada field Joint1, dan kemudian dituliskan ke form frmDataPos.j1A. Coding AxeRobot(1).Text = frmDataPos.j1A.Text 90 digunakan untuk mengambil text dari frmDataPos.j1A dan digunakan untuk mengisi text dari AxeRobot. Terdapat pengurangan -90 pada nilai text j1A dikarenakan posisi yang tersimpan di database sudah ditambahkan dengan +90 [lihat Pemrograman Database : Saving dan Deleting Position]

c. Error Message i. Axe [index] limite o Error message ini muncul jika text pada AxeRobot melebihi nilai minimal atau maksimal dari slider. ii. Attention point inaccessible o Error message ini muncul jika nilai X dan Y yang diisikan dari Frame PositionDestination tidak dapat dicapai oleh lengan robot karena di luar area kerja lengan robot . iii. Axes 2 hors limites !!! o Error message ini muncul jika nilai X dan Y yang diisikan dari Frame PositionDestination tidak dapat dicapai oleh lengan robot walaupun ada di dalam area kerja lengan robot, karena kondisi minimal dan maksimal lengan robot.

d. Setting Simulasi SCARA dari file *.dat, dan mengoprek file *.stl i. file AdeptCobra800.dat o Dependencies : cobra0_o.stl - cobra4_o.stl, pada : application path\robot_def\... o file ini terdapat pada : AppPath\robot_def\AdeptCobra800.dat o file ini berformat text, untuk melihatnya gunakan notepad atau aplikasi text editor lainnya o Coding :
'AdeptCobra800 'Type =1=SCARA 2=POLYMORPH [Element2] Mini_axe=-90 Maxi_axe=90 Nom=Bras1 Fichier=cobra2_o.stl Type_axe=1 Couleur=2 Origine_X=625 Origine_Y=0 Origine_Z=93 Vecteur_X=0 Vecteur_Y=0 Vecteur_Z=1 : adalah Link 2 : nilai minimal gerakan link 2 -- > berpengaruh pada nilai minimal slider : nilai maksimal gerakan link 2 -- > berpengaruh pada nilai maksimal slider : dependency -> cobra2_o.stl

: posisi X dari cobra2_o.stl, ubah nilai ini untuk mengubah posisi X link 2 : posisi Y dari cobra2_o.stl : posisi Z dari cobra2_o.stl

ii. file *.stl o File Stereolithography, adalah format text dari file format 3 dimensi (.dwg, .sldprt, .sldasm, .3ds, .3dm, .dxf, d.l.l) o File ini berformat text, untuk melihatnya gunakan notepad atau aplikasi text editor lainnya o Untuk melihat bentuk 3 dimensi dari file ini dapat digunakan STLNormal Switcher o Bentuk 3 dimensi dari file ini adalah gabungan dari banyak segitiga, sehingga untuk mengubah ukuran keseluruhan bentuk tersebut cari sisi-sisi segitiga yang berkaitan dan ingat titik yang sama dari sisi-sisi segitiga yang bersentuhan. o Coding :
facet normal -0.000 0.001 -28.101 outer loop vertex -22.696 71.484 92.800 vertex -10.173 74.307 92.800 vertex 2.647 74.953 92.800 endloop endfacet

B. Pemrograman Database [Komunikasi Visual Basic 6.0 dengan Microsoft Access] a. ADODC AdoDc adalah salah satu component yang dapat ditambahkan sebagai object dalam Visual Basic, component ini digunakan untuk menghubungkan Visual Basic dengan Microsoft Access atau aplikasi database lain. Untuk membuat field pada database gunakan pulldown menu addins, dan pilih Visual Data Manager. [untuk bagian ini sudah banyak tutorial di internet,dengan keyword : adodc]. Coding :
Dim nmdatabase As String With Rs nmdatabase = App.Path & "\SCARA.mdb" .ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & nmdatabase & ";Persis_ Security Info=False" .CursorLocation = adUseClient .LockType = adLockOptimistic .CursorType = adOpenStatic .Source = "select * from dataPOS" .Open End With With dataposisi Set .DataSource = Rs .Refresh .Columns(0).Caption = "No" .Columns(0).Width = 300 .Columns(1).Caption = "Joint 1" .Columns(1).Width = 1000 .Columns(2).Caption = "Joint 2" .Columns(2).Width = 1000 .Columns(3).Caption = "Silinder" .Columns(3).Width = 1000 .Columns(4).Caption = "Vaccum" .Columns(4).Width = 1000

Keterangan : Variabel Rs pada Option Explicit sudah didefinisikan dengan Dim Rs As New ADODB.Recordset. Build connection string dengan OLE DB Provider Microsoft.Jet.OLEDB.4.0. Source = "select * from dataPOS" , dataPOS adalah table pada database access yang dibuat menggunakan Visual Data Manager. b. Saving Deleting Position Data Posisi pada Database Coding1 :
Private Sub cmdSAVEpos_Click() Dim realJ1pos, realJ2pos, realSILpos, realVACpos As String If Rs.RecordCount = 0 Then cmdDEL.Enabled = True End If Dim nomor As Integer nomor = Rs.RecordCount + 1 realJ1pos = AxeRobot(1).Text + 90 realJ2pos = AxeRobot(2).Text + 90

With Rs .AddNew .Fields("no").Value = nomor .Fields("Joint 1").Value = realJ1pos .Fields("Joint 2").Value = realJ2pos .Fields("Silinder").Value = axe3txt.Text .Fields("Vaccum").Value = axe4txt.Text If axe3txt.Text = " " Then axe3txt.Text = "0" Rs.Fields("silinder").Value = "0" End If If axe4txt.Text = " " Then axe4txt.Text = "0" Rs.Fields("vaccum").Value = "0" End If .Update End With End Sub

Keterangan : Variabel realXXpos digunakan untuk menyimpan posisi lengan robot dalam simulasi ditambahkan dengan 90 agar area kerja lengan robot menjadi 0 - 180 derajad, bukan -90 90 derajad. Rs.RecordCount digunakan untuk menghitung data jumlah data yang tersimpan di database, sedangkan fungsi if then dengan Rs.RecordCount sebagai control digunakan untuk mengenable command button delPOS, sehingga saat Rs.RecordCount bernilai 1, data posisi pada database dapat dihapus. .Fields("Joint 1").Value = realJ1pos digunakan untuk menuliskan nilai realJ1pos pada field Joint1. Coding2 :
Private Sub cmdDEL_Click() 'perintah untuk menghapus satu database If Rs.RecordCount = 1 Then cmdDEL.Enabled = False cmdSAVEpos.Enabled = True Else cmdDEL.Enabled = True End If Dim setuju As String setuju = MsgBox("Data akan benar-benar akan dihapus?", vbYesNo, "konfirmasi") If setuju = vbYes Then Rs.MoveLast Rs.Delete MsgBox ("1 record(s) terhapus!") End If End Sub

Keterangan : Rs.RecordCount digunakan untuk menghitung data jumlah data yang tersimpan di database, sedangkan fungsi if then dengan Rs.RecordCount sebagai control digunakan untuk mendisable command button delPOS, sehingga saat Rs.RecordCount bernilai 0, tidak ada data posisi pada database yang dapat dihapus. Hal ini dilakukan untuk menghidari error saat menyimpan atau menghapus posisi.

Rs.MoveLast digunakan untuk memilih yang paling akhir dimasukkan. Jika ingin memilih data yang pertama gunakan Rs.MoveFirst. Rs.Delete digunakan untuk menghapus data yang paling akhir dimasukkan. c. Penggambilan Data Posisi dari Field Database Coding:
For sim = 1 To htngRecCnt frmDataPos.Show With Rs .Close .Source = "select * from datapos where [No] like '%" & sim & "%'" .Open frmDataPos.j1A.Text = .Fields("Joint 1").Value frmDataPos.j2A.Text = .Fields("Joint 2").Value frmDataPos.SilA.Text = .Fields("Silinder").Value frmDataPos.VacA.Text = .Fields("Vaccum").Value frmDataPos.dataPOS.Text = "data posisi ke : " & sim .Close .Source = "select*from datapos" .Open End With .... .... .... next

Keterangan : .Source = "select * from datapos where [No] like '%" & sim & "%'" digunakan untuk memilih posisi row dari database yang dipilih [select]. [No] menunjukkan coloumn No pada database. Pseudocode untuk coding ini adalah pilih row dari database yang coloumn Nonya sama dengan nilai variabel sim. [baca coding 2 simulate all position] Coding yang digunakan untuk mengambil nilai dari field adalah frmDataPos.j1A.Text = .Fields("Joint 1").Value , nilai field pada joint 1 akan dipindahkan/disalin ke textbox j1A.text. Coding di atas harus dituliskan secara lengkap, agar data yang disalin dari database tidak hilang. Bagian utama coding yang harus dituliskan agar datagrid tetap menampilkan isi dari database adalah bagian .Close, .Source = "select*from datapos", .Open .

C. Pemrograman Komunikasi antara Visual Basic 6.0 dengan PIC 16F877 a. Interlude tentang Komunikasi Visual Basic 6.0 via Serial Port Untuk coding lengkap komunikasi antara Visual Basic dengan PIC 16F877 terdapat pada module RS 232. Object yang digunakan Visual Basic agar dapat terkomunikasi dengan PIC 16F877 via Serial Port adalah MSComm [Microsoft Comm Control 6.0]. Gunakan baudrate 9600 pada settingan MSComm, dan coding PIC 16F877. Data yang dikirimkan pada PIC 16F877 harus dalam bentuk string, dan data yang dikirim hanya per karakter [satu per satu]. Misalnya, data yang akan dikirim adalah

716, MSComm tidak bisa mengirimkan 3 karakter tersebut secara langsung, maka data tersebut harus pecah dan dikirim satu persatu. b. Mengirimkan Data Posisi dari Visual Basic 6.0 ke PIC 16F877 Coding :
Private Sub cmdManTest_Click() 'send data --> kp,ki,kd,set1,set2 to PIC Dim p, I, D, set1, set2 As String Dim pLen, iLen, dLen, set1Len, set2Len As Integer Dim pMid, iMid, dMid, set1Mid, set2Mid As String 'kirim konstanta p pLen = Len(txtKP.Text) p = CStr(pLen) txtTestKrm.Text = p MSComm1.Output = p Call tunda500 For I = 1 To pLen pMid = Mid(txtKP.Text, I, 1) Call tunda500 txtTestKrm.Text = pMid MSComm1.Output = pMid Call tunda500 Next .... .... .... End Sub

Keterangan : Coding di atas adalah coding yang digunakan pada command button SendDATA Frame ManualTest, dan hanya cuplikan program untuk mengirimkan konstanta p. Seperti yang dijelaskan di atas, bahwa data yang memiliki 2/lebih karakter tidak dapat dikirim oleh MSComm secara bersamaan, oleh karena itu data tersebut harus dipecah, baru dikirimkan satu per satu dengan urut. Fungsi Len pada Visual Basic digunakan untuk menghitung jumlah karakter yang akan dikirim, sedangkan fungsi Mid digunakan untuk memilih karakter ke-n yang akan dikirim.

D. Pemrograman PIC 16F877 a. Mengambil Data Posisi Robot yang dikirim dari Visual Basic 6.0 Coding :
for getLOOPED = 1 to 5 get: hserin 200, get, [pick] delayms 20 panjang = pick - 48 if panjang = 1 then ratusan = 0 puluhan = 0 getSAT:

hserin 200, getSAT, [pick] delayms 20 satuan = pick - 48 elseif panjang = 2 then ratusan = 0 getPUL1: hserin 200, getPUL1, [pick] delayms 20 puluhan = pick - 48 puluhan = puluhan * 10 getPUL2: hserin 200, getPUL2, [pick] delayms 20 satuan = pick - 48 elseif panjang = 3 then getRAT1: hserin 200, getRAT1, [pick] delayms 20 ratusan = pick - 48 ratusan = ratusan * 100 getRAT2: hserin 200, getRAT2, [pick] delayms 20 puluhan = pick - 48 puluhan = puluhan * 10 getRAT3: hserin 200, getRAT3, [pick] delayms 20 satuan = pick - 48 endif SetTake = ratusan + puluhan + satuan if getLOOPED = 1 then kpVB = SetTake elseif getLOOPED = 2 then kdVB = SetTake elseif getLOOPED = 3 then kiVB = SetTake elseif getLOOPED = 4 then set1vb = SetTake elseif getLOOPED = 5 then set2vb = SetTake endif next

Keterangan : Dependecy program PIC 16F877 di atas adalah program simulasi SCARA frame ManualTest. Rutin program get berhubungan dengan fungsi Len pada Visual Basic, yang digunakan untuk mengetahui jumlah karakter yang dikirim ke Visual Basic. Jika jumlah karakter yang dikirim Visual Basic hanya 1, maka rutin yang digunakan adalah getSAT, dan seterusnya [sesuai dengan fungsi if-then dengan variabel panjang]. Syntax untuk hserin dapat dilihat pada help PICBasic. Terdapat pengurangan 48 pada variabel panjang digunakan untuk konversi ASCII ke desimal.

b. Program PID Coding :


erorlast1 = eror1 if eror1 > -1 or eror1 < 1 then eror1 = 0 endif eror1 = sensor1 - set1 'proportional error deror1 = eror1 - erorlast1 ieror1 = eror1 + erorlast1 p1 = kp1 * eror1 'Nilai Proporsional d1 = kd1 * deror1 i1 = ki1 * ieror1 pd1 = p1 + d1 + i1 if pd1 > 200 then pd1 = 200 elseif pd1 < -200 then pd1 = -200 endif if pd1 > 0 then high portc.5 low portc.4 elseif pd1 < 0 then low portc.5 high portc.4 endif

'kompensasi PWM

outpid1 = ABS pd1 'Pengambilan nilai absolut PID if outpid1 > 95 then outpid1 = 95 endif if outpid1 < 80 then outpid1 = 80 endif IF eror1 < 2 AND eror1 > -2 THEN HPWM 1,0,25000 ENDIF hpwm 1, outpid1, 25000

Keterangan : c. Program di atas adalah main program untuk menggerakkan Link 1. Variabel erorlast1 digunakan untuk mengetahui eror terakhir dari hasil bacaan sensor. Outpid diberi batasan agar motor tidak telalu cepat dan tidak terlalu lambat, atau torsinya terlalu besar dan terlalu kecil. Hal lain yang perlu diperhatikan dalam program PIC 16F877 adalah adjusting sensor [posisi minimal dan maksimal link 1, dan link 2], dan adjusting delay hserin[lihat coding mengenai Mengambil Data Posisi Robot yang dikirim dari Visual Basic 6.0].

3. Hardware
Hardware SCARA Robot Arm dapat dibagi menjadi 2 bagian, yaitu Hardware Elektronik dan Mekanik. Software yang digunakan untuk gambar mekanik adalah Solid Work 2006 SP1, sedangkan untuk hardware elektronik software yang digunakan adalah Proteus 7. A. Hardware Elektronik a. Rangkaian Sensor : non Inverting OpAmp Keterangan : Digunakan untuk memperbesar range tegangan sensor potensio. Range tegangan sensor potensio adalah 0,35 volt, sehingga resolusi yang dibaca oleh PIC juga kecil. Gain/penguatan yang digunakan sebesar 4 x. Opamp yang digunakan adalah LM 358, dengan output maksimal 3,5 volt pada power supply 5 volt. Sedangkan sensor potensio yang digunakan adalah sensor potensio kawat lilit (wirewound potensio). Gambar Skematik dan 3d View :

b. Rangkaian Voltage Follower Keterangan : Digunakan sebagai buffer inputan dari potensio untuk mengatur konstanta PID, output opamp diolah oleh PIC. Opamp yang digunakan adalah LM 358. Gambar Skematik dan 3d View :

c. Rangkaian Power Supply Keterangan : Rangkaian ini digunakan sebagai rangkaian catu daya untuk semua rangkaian yang ada. Terdiri dari catu daya tegangan 5V, 12V, dan 24V. Gambar Skematik dan 3d View :
Q1
2N3055

R1
560R

BR2 J1
1 2 SIL-156-02 1

U1
7824 VI VO 3 1 2

J2
GND

SIL-156-02

4700u GBU6A

C1

D3
LED-GREEN

C2
100u

C3
1000u

C4
100u

U2
7805

GND

VI

VO

BR1
2 1

C11 C10
220u 100n

D4
K
LED 1 2

J0

J3

C9
220u W005G

R2
10k

SIL-156-02

CONN-H2

d. Rangkaian Minimum System Keterangan : Digunakan untuk komunikasi serial antara PC dengan PIC 16F877 lewat RS 232, dan juga digunakan sebagai input-output dan pemrograman SCARA robot. Power Supply yang digunakan sebesar 5 Volt, 1 Ampere. Pada layout yang dibuat, port PIC sudah dikumpulkan menjadi satu pada connector 10 pin dan ditambah dengan catu daya 5V-GND. Gambar Skematik dan 3d View :

e. Rangkaian Opto H-Bridge MOSFET Keterangan : Rangkaian ini digunakan sebagai rangkaian driver untuk motor, baik motor link 1 maupun motor link 2. Komponen utama yang digunakan adalah opto isolator, dan IRFz44n. Rangkaian di bawah masih belum sempurna, karena ground catu daya 5V dan 24V masih terhubung. Ground 2 catu daya tersebut harus dipisahkan, dan jika MOSFET tidak mampu mendrive motor, berikan MOSFET tambahan (cascade/pararel), dan berikan pendingin dan kipas untuk mosfet Gambar Skematik dan 3d View :
D3 U7:B
4 6 5 74HC08

R6
560

J4
1 2 SIL-100-02

D5 R16
560 LED LED

R7 U5:B
4 6 5 74HC08 4K7

R14
560

U1
1 6 5 2

R2
10

Q1
IRFZ44Z

Q3 J1
SIL-100-02 IRFZ44Z

R11 U5:A
1 3 2 1 74HC08
1

4 OPTOCOUPLER-NPN

560

U2
6 5 2 4 OPTOCOUPLER-NPN

1 2

R8
4K7

J5
1 2 SIL-100-

U6:A
74LS04
2

R3
10

C1
10nF

R1
5

J3
3 2 1 SIL-100-03

U5:D
12 11 13 74HC08 560

U3 R13
1 6 5 2 4

R4
10

Q2
IRFZ44Z

Q4
IRFZ44Z

U7:C
9 8 10 74HC08 9
4

R12 U5:C
8 560

OPTOCOUPLER-NPN

R9 U4
1 6 5 2 4 4K7

D1
1N4001

D2
1N4001

U6:B
74LS04
3

10 74HC08

R5
10

R18
10k

U7:A
1 3 2 74HC08

D4 R15
560 LED

OPTOCOUPLER-NPN

R10
4K7

f.

Rangkaian Optoisolator Mosfet Keterangan : Rangkaian ini digunakan sebagai rangkaian driver untuk mengaktifkan solenoid agar dapat mengaktifkan komponen pneumatik (silinder dan vacuum). Gambar Skematik dan 3d View :
R7
560R

D5
LED-GREEN

R8
560R

R9
560R

J2
3 2 1 in1-gnd-in2

R3
330R

U1
1 6 5 2

J1 R2
2k2

D6
LED-GREEN

D7
LED-GREEN

Q1
IRFZ44N

D2
1N4148 OPTOCOUPLER-NPN

D1 R1
1k 1N4001

1 2 3 4 5 6 +.-.1+.1-.2+.2-

R4
330R

U2
1 6 5 2

R5
2k2

Q2
IRFZ44N

D3
1N4148

4 OPTOCOUPLER-NPN

D4
1N4001

R6
1k

B. Hardware Mekanik Keterangan : Material yang digunakan untuk hardware mekanik adalah alumunium dan besi MS. Gambar 3 dimensi untuk SCARA robot serta explode viewnya adalah sebagai berikut :

15 4
A A

85

12

2
19
C

30

21

UNLESS OTHERWISE SPECIFIED: DIMENSIONS ARE IN MILLIMETERS SURFACE FINISH: TOLERANCES: LINEAR: ANGULAR: NAME DRAWN CHK'D

FINISH:

DEBUR AND BREAK SHARP EDGES

DO NOT SCALE DRAWING

REVISION

SIGNATURE

DATE

TITLE:

APPV'D MFG Q.A MATERIAL: DWG NO.

poros
SHEET 1 OF 1

A4

WEIGHT:

SCALE:1:2

35

120 15
B

15

32

50 35 15

40

6
C C

10

UNLESS OTHERWISE SPECIFIED: DIMENSIONS ARE IN MILLIMETERS SURFACE FINISH: TOLERANCES: LINEAR: ANGULAR: NAME DRAWN

FINISH:

DEBUR AND BREAK SHARP EDGES

DO NOT SCALE DRAWING

REVISION

SIGNATURE

DATE

TITLE:

CHK'D APPV'D MFG Q.A MATERIAL: DWG NO.

base atas
SHEET 1 OF 1

A4

WEIGHT:

SCALE:1:2

19

10 40 10 112

50

25

120 45 15 5 16 10 14 32 42
A4

10

40

10 40 85
UNLESS OTHERWISE SPECIFIED: DIMENSIONS ARE IN MILLIMETERS SURFACE FINISH: TOLERANCES: LINEAR: ANGULAR: NAME DRAWN CHK'D APPV'D FINISH: DEBUR AND BREAK SHARP EDGES DO NOT SCALE DRAWING REVISION

SIGNATURE

DATE

TITLE:

MFG Q.A MATERIAL: DWG NO.

base bawah
SHEET 1 OF 1

WEIGHT:

SCALE:1:2

19

50

R1 0
A

15

280
B B

12

50

UNLESS OTHERWISE SPECIFIED: DIMENSIONS ARE IN MILLIMETERS SURFACE FINISH: TOLERANCES: LINEAR: ANGULAR: NAME DRAWN CHK'D

FINISH:

DEBUR AND BREAK SHARP EDGES

DO NOT SCALE DRAWING

REVISION

SIGNATURE

DATE

TITLE:

D
APPV'D MFG Q.A MATERIAL: DWG NO.

link
SHEET 1 OF 1

A4

WEIGHT:

SCALE:1:5

19

10 40 10 112

50

25

120 45 15 5 16 10 14 32 42
A4

10

40

10 40 85
UNLESS OTHERWISE SPECIFIED: DIMENSIONS ARE IN MILLIMETERS SURFACE FINISH: TOLERANCES: LINEAR: ANGULAR: NAME DRAWN CHK'D APPV'D FINISH: DEBUR AND BREAK SHARP EDGES DO NOT SCALE DRAWING REVISION

SIGNATURE

DATE

TITLE:

MFG Q.A MATERIAL: DWG NO.

base bawah
SHEET 1 OF 1

WEIGHT:

SCALE:1:2

19

50

85
A

25

80

48

82

110

50

20

10 110 112 130 15


C

UNLESS OTHERWISE SPECIFIED: DIMENSIONS ARE IN MILLIMETERS SURFACE FINISH: TOLERANCES: LINEAR: ANGULAR: NAME DRAWN CHK'D

FINISH:

DEBUR AND BREAK SHARP EDGES

20

DO NOT SCALE DRAWING

REVISION

SIGNATURE

DATE

TITLE:

APPV'D MFG Q.A MATERIAL: DWG NO.

meja base
SHEET 1 OF 1

A4

WEIGHT:

SCALE:1:2

85
A

25

80

48

82

110

50

20

10 110 112 130 15


C

UNLESS OTHERWISE SPECIFIED: DIMENSIONS ARE IN MILLIMETERS SURFACE FINISH: TOLERANCES: LINEAR: ANGULAR: NAME DRAWN CHK'D

FINISH:

DEBUR AND BREAK SHARP EDGES

20

DO NOT SCALE DRAWING

REVISION

SIGNATURE

DATE

TITLE:

APPV'D MFG Q.A MATERIAL: DWG NO.

meja base
SHEET 1 OF 1

A4

WEIGHT:

SCALE:1:2

R1 0
A

15

280
B B

12

50

UNLESS OTHERWISE SPECIFIED: DIMENSIONS ARE IN MILLIMETERS SURFACE FINISH: TOLERANCES: LINEAR: ANGULAR: NAME DRAWN CHK'D

FINISH:

DEBUR AND BREAK SHARP EDGES

DO NOT SCALE DRAWING

REVISION

SIGNATURE

DATE

TITLE:

D
APPV'D MFG Q.A MATERIAL: DWG NO.

link
SHEET 1 OF 1

A4

WEIGHT:

SCALE:1:5

15

40

10

UNLESS OTHERWISE SPECIFIED: DIMENSIONS ARE IN MILLIMETERS SURFACE FINISH: TOLERANCES: LINEAR: ANGULAR: NAME DRAWN

FINISH:

DEBUR AND BREAK SHARP EDGES

DO NOT SCALE DRAWING

REVISION

SIGNATURE

DATE

TITLE:

CHK'D APPV'D MFG Q.A MATERIAL: DWG NO.

ring
SHEET 1 OF 1

A4

WEIGHT:

SCALE:1:1

87,55

44,99

85,01

87,55

65

52,90

76

65 130

UNLESS OTHERWISE SPECIFIED: DIMENSIONS ARE IN MILLIMETERS SURFACE FINISH: TOLERANCES: LINEAR: ANGULAR: NAME DRAWN CHK'D APPV'D

FINISH:

DEBUR AND BREAK SHARP EDGES

DO NOT SCALE DRAWING

REVISION

SIGNATURE

DATE

TITLE:

MFG Q.A MATERIAL:

A4 perhitungan pcd--nu-SCALE:1:1 SHEET 1 OF 1

DWG NO.

WEIGHT:

130

85

Keterangan : untuk diISI untuk PLOT untuk PERHITUNGAN = =

Konversi Sudut-Koordinat disebut sebagai forward kinematic,posisi sudut diketahui,dan yang dicari adalah koordinat yang diketahui : sudut1 sudut2 pjgLink1 pjgLink2 Zero Point X Y posisi link1 ForLink1 posisi X ForLink1 posisi Y posisi link2 ForLink2 posisi X ForLink2 posisi Y = COS ((Deg1+Deg2)*phi/180) * L2+ForLink1 posisi X = SIN ((Deg1+Deg2)*phi/180) * L2+ForLink1 posisi Y -172,173695 milimeter 77,408480 milimeter = COS (Deg1*phi/180) * L1 = SIN (Deg1*phi/180) * L1 -83,878936 milimeter 124,355636 milimeter = = = Deg1 = Deg2 = L1 = L2

124 174 150 100

derajat derajat milimeter milimeter

225

175
0 0

125

75

25

-275

-225

-175

-125

-75

-25 -25

25

75

125

175

225

275

-75

-125
Konversi Koordinat-Sudut disebut sebagai invers kinematic, koordinat diketahui,dan yang dicari adalah sudut yang diketahui : Koordinat X Koordinat Y pjgLink1 pjgLink2 persamaan : pers1 pers2 theta psi = (X+Y-L1-L2)/(2*L1*L2) = sqrt(1-pers1) = ARCSIN((Y*(L1+L2*pers1)-X*L2*pers2)/(X+Y)) = ARCCOS((X+Y-L1-L2)/(2*L1*L2)) 0,416667 0,909059 0,342528 1,141021 = X = Y = L1 = L2

150 150 150 100

milimeter milimeter milimeter milimeter

225

175

125

Sudut untuk invers Kinematik SudutLink1 SudutLink2 Zero Point X Y posisi link1 InvLink1 posisi X InvLink1 posisi Y posisi link2 InvLink2 posisi X InvLink2 posisi Y = COS((SudutLink1+SudutLink2)*phi/180*L2+InvLink1 posisi X = SIN((SudutLink1+SudutLink2)*phi/180*L2+InvLink1 posisi Y 150,000000 150,000000 = COS(SudutLink1*phi/180)*L1 = SIN(SudutLink1*phi/180)*L1 141,286300 50,380366 = = = theta*180/phi = psi*180/phi 19,625397 65,375682

75

0 0

25 -275 -225 -175 -125 -75 -25 -25 25 75 125 175 225 275

-75

-125

Voltage Follower Print

OptoH-BridgeMOSFET Print

OptoIsolatorMOSFET Print

POWERSUPPLY Print

Anda mungkin juga menyukai