TUGAS PEMODELAN & SIMULASI
NUMERIK
OLEH:
F E B R I A N (10 32 003)
WICAKSONO CAKRAHALIM (10 32 004)
C H R I S T I A N (10 32 007)
UNIVERSITAS ATMA JAYA MAKASSAR
Lengan Robot
Lengan 1 bisa berputar 90º atau 180º
Sistem lengan robot pada gambar bekerja mengambil dan meletakkan kotak coklat
yang datang secara random, satu kotak datang setiap 16 detik. Berat kotak coklat
0,5 kg atau 1 kg. Terdapat tiga kali lebih banyak kotak 0,5 kg daripada 1 kg. Jika
kotaknya 0,5 kg, lengan robot akan mengambil dan meletakkan kotak coklat di
titik A. Jika 1 kg akan diambil dan diletakkan di titik B. Kedua robot digerakkan
oleh motor DC (Servo Motor). Lengan 1 dapat bergerak 90º atau 180º, lengan 2
bergerak naik dan turun.
Motor 1
Ẋ₁ = -10 x₁ + 333,333 x₂
Ẋ₂ = -0,5 x₁ - 10 x₂ + 0,1 Vt
Motor 2
Ẋ₁ = -7,3 x₁ + 250 x₂
Ẋ₂ = -0,5 x₁ - 10 x₂ + 0,1 Vt
PID Controller
Vt = 5000 {0,3 (wp - w) + 0,01 (wp – w) dt + 0,1 (d (wp – w))}
dt
Cara Membuat Sistem Lengan Robot dengan Simulink
1. Buka aplikasi matlab dengan mengklik shortcut matlab pada desktop
2. Setelah itu akan terbuka halaman kerja matlab
3. Klik icon simulink
4. Muncul jendela kerja Simulink Library Browser lalu pilih Commonly
Used Blocks
5. Dari rumus motor 1 dapat dibuat rangkaian seperti pada gambar
Rumus
Motor 1
Ẋ₁ = -10 x₁ + 333,333 x₂
Ẋ₂ = -0,5 x₁ - 10 x₂ + 0,1 Vt
6. Buatlah rangkaian dari rumus seperti pada gambar di atas dengan simulink
7. Masukkan nilai – nilai sesuai dengan rumus motor 1 dengan cara klik icon
yang ingin diubah nilainya.
a. Sum
Klik dua kali icon sum
Masukkan data seperti berikut
Maka icon sum akan berubah seperti icon dibawah
Untuk mengubah model sum dari round (mode awal) menjadi
persegi seperti pada gambar dibawah, pilih icon shape lalu pilih
menu Rectangular.
b. Gain
Klik dua kali icon gain
Masukkan data seperti berikut
Maka icon gain akan berubah seperti icon dibawah
Untuk gain yang lain, lakukan cara yang sama untuk
memasukkan nilai
8. Hasil dari rangkaian motor 1
9. Setelah rangkaian selesai buatlah rangkaian menjadi sebuah subsystem
dengan cara block semua hasil rangkain lalu klik kanan dan pilh create
subsystem
Setelah memilih subsystem maka rangkaian akan berubah menjadi
10. Setelah rangkaian motor 1 selesai, lanjutkan membuat motor 2 dengan
mengikuti rumus.
Rumus
Motor 2
Ẋ₁ = -7,3 x₁ + 250 x₂
Ẋ₂ = -0,5 x₁ - 10 x₂ + 0,1 Vt
11. Setelah motor 1 dan motor 2 selesai, lanjutkan dengan membuat PID
Controller
a. Rumus PID Controller
Vt = 5000 {0,3 (wp - w) + 0,01 (wp – w) dt + 0,1 (d (wp – w))}
dt
b. Buat rangkaian PID Controller dengan memasukkan angka – angka
yang terdapat pada rumus
c. Setelah selesai buatlah rangkaian menjadi subsystem
12. Setelah Motor 1, Motor 2 dan rangkaian PID selesai, buat switch seperti
pada gambar dibawah ini
Kemudian, pada kolom Treshold masukkan angka sesuai pada rumus yang
telah dibahas, seperti pada gambar dibawah ini.
Switch ini akan diperlukan 3 buah, yang nantinya akan menjadi input pada
PID Controller, Motor 1 dan Motor 2
13. Kemudian, berikutnya kita akan membuat random variable yang nantinya
akan menentukan kotak yang akan keluar secara random, pada fungsi ini
kita akan menggunakan Uniform Random Variabel seperti pada gambar
dibawah ini
Kemudian, ubah pengaturan sample time, seperti yang telah diminta oleh
soal, bahwa kotak akan tiba secara random setiap 16 detik.
14. Berikutnya, kita akan membuat matlab function yang berfungsi sebagai
pemisah, antara dimana kotak 0,5Kg dan kotak 1Kg akan diletakkan,
seperti pada gambar dibawah ini :
Kita akan membutuhkan 2 matlab function, yang berguna untuk
membedakan arah peletakan kotak 0,5Kg dan kotak 1Kg, pada kedua
matlab function ini, ubah masing-masing fungsinya seperti gambar
dibawah ini
Profile 90
Profile 180
15. Kemudian, untuk mengaktivkan fungsi matlab function, yaitu profile_90
dan profile_180, kita memerlukan perintah-perintah dalam bahasa Matlab
yang akan digunakan untuk memanggil masing-masing dari fungsi
tersebut, dan untuk menjalankan fungsi itu sendiri.
Untuk Menjalankan Fungsi Profile_90 maka berikut adalah
perintah yang dapat kita gunakan :
function x = profile_90(t)t=rem(t,16); % pickingif t<0.25 x=(pi/(2*0.25))*-t; else if t<1 x=-pi/2; else if t<1.25 x=(pi/(2*0.25))*(t-1.25); else if t<1.5 x=0; else if t<1.75 x=(pi/(2*0.25))*(t-1.5); else if t<2.5 x=pi/2; else if t<2.75 x=(pi/(2*0.25))*(-t+2.75);% interval else if t<3.25 x=0;% move_90 else if t<3.5 x=(pi/(2*0.25))*(t-3.25); else if t<4.25 x=pi/2; else if t<4.5 x=(pi/(2*0.25))*(-t+4.5);% interval else if t<5 x=0;
% dropping else if t<5.25 x=(pi/(2*0.25))*(-t+5); else if t<6 x=-pi/2; else if t<6.25 x=(pi/(2*0.25))*(t-6.25); else if t<6.5 x=0; else if t<6.75 x=(pi/(2*0.25))*(t-6.5); else if t<7.5 x=pi/2; else if t<7.75 x=(pi/(2*0.25))*(-t+7.75);% interval else if t<8.25 x=0;% back_move_90 else if t<8.5 x=(pi/(2*0.25))*(-t+8.25); else if t<9.25
x=-pi/2; else if t<9.5 x=(pi/(2*0.25))*(t-9.5); else x=0; end end end end end end end end end end end end end end end end end end end end end end end
Kemudian, untuk memanggil fungsi profile_90 agar pada saat
dijalankan dapat berfungsi dengan baik, kita akan memerlukan
perintah sebagai berikut :
t=[0:0.001:16];for i=1:size(t,2) x(i)=profile_90(t(i));endfigureplot(t,x);grid;
Untuk Menjalankan Fungsi Profile_180 maka berikut adalah
perintah yang dapat kita gunakan :
function x = profile_180(t)t=rem(t,16); % pickingif t<0.25 x=(pi/(2*0.25))*-t; else if t<1 x=-pi/2; else if t<1.25 x=(pi/(2*0.25))*(t-1.25); else if t<1.5 x=0; else if t<1.75 x=(pi/(2*0.25))*(t-1.5); else if t<2.5 x=pi/2; else if t<2.75 x=(pi/(2*0.25))*(-t+2.75); % interval else if t<3.25 x=0; % move_180 else if t<3.5 x=(pi/(2*0.25))*(t-3.25); else if t<5.75 x=pi/2; else if t<6 x=(pi/(2*0.25))*(-t+6); % interval else if t<6.5 x=0; % dropping else if t<6.75
x=(pi/(2*0.25))*(-t+6.5); else if t<7.5 x=-pi/2; else if t<7.75 x=(pi/(2*0.25))*(t-7.75); else if t<8 x=0; else if t<8.25 x=(pi/(2*0.25))*(t-8); else if t<9 x=pi/2; else if t<9.25 x=(pi/(2*0.25))*(-t+9.25); % interval else if t<9.75 x=0; % back_move_180 else if t<10 x=(pi/(2*0.25))*(-t+9.75); else if t<12.25
x=-pi/2; else if t<12.5 x=(pi/(2*0.25))*(t-12.5); else x=0; end end end end end end end end end end end end end end end end end end end end end end endend
Kemudian, untuk memanggil fungsi profile_180 agar pada saat
dijalankan dapat berfungsi dengan baik, kita akan memerlukan
perintah sebagai berikut :
t=[0:0.001:16];for i=1:size(t,2) x(i)=profile_180(t(i));endplot(t,x);grid
16. Setelah semua fungsi diatas yang dibutuhkan selesai dibuat, masukkan
clock, constant, simout dan scope, sebagai tahap akhir seperti pada gambar
dibawah ini :
17. Jika semua fungsi telah selesai, langkah selanjutnya yaitu menjalankan
simulasi lengan robot ini dengan menekan tombol “Start Simulation”
seperti pada gambar dibawah ini :
18. Jika pada saat start simulation terjadi error, maka periksalah kembali pada
bagian mana error tersebut berasal, dan jika tidak ada kesalahan, hasil dari
simulation dapat kita lihat pada scope bagian terakhir, seperti pada gambar
dibawah ini :
19. Untuk melihat hasil akhir, klik 2x scope yang dilingkar pada gambar
diatas, kemudian, untuk hasilnya dapat kita lihat pada gambar dibawah ini:
Top Related