SKRIPSI
Oleh:
2020
KONTROL PROPORTIONAL KECEPATAN PELONTAR PADA
ROBOT PASSING
SKRIPSI
Oleh:
2020
i
HALAMAN PENGESAHAN
Skripsi ini telah dipertahankan di depan dewan penguji pada tanggal 15 Juli 2020
dan disahkan oleh :
Pembimbing 1 : Ir. Totok Winarno, MT
NIP 196001011985031012
Pembimbing 2 : Ir. Achmad Komarudin, MMT
NIP 195809291987021002
Penguji 1 :
Penguji 2 :
ii
PERNYATAAN KEASLIAN SKRIPSI
iii
ABSTRAK
Pembimbing(I)Ir.TotokWinarno,MT.Pembimbing(II)Ir.Achmad
Komarudin.,MMT
iv
i
ABSTRACT
Rahman.2020.Kontrol Proportional Kecepatan Pelontar Pada Robot
Passing.Thesis, Study Program Electronics Engineering , Major of electrical
Engineering, State Polytechnic of malang.
The ball feeder robot at ABU Robocon is an automatic robot that functions
to participate in the Indonesian Ash Robot Contest (KRAI). In this competition,
the robot is required to be able to feed the ball to the kicking robot. To be able to
feed the ball using a geared DC motor accompanied by a Rotary Encoder, while
controlling the motor speed when throwing the ball uses the Proportional control
method.
i
KATA PENGANTAR
Segala puji dan syukur kami panjatkan kehadirat ALLAH SWT yang telah
melimpahkan rahmat dan hidayh-NYA sehingga penulis dapat menyelesaikan
karya tulis yang berjudul “Kontrol Proportional Kecepatan Motor Pelontar Pada
Robot Passsing” ini dengan baik. Skripsi ini disusun sebagai persyaratan untuk
memperoleh gelar Sarjana Sains Terapan, Jurusan Teknik Elektro, Progam Studi
Teknik Elektronika, Politeknik Negeri Malang.
Dalam penyusunan penelitian Studi, penulis tidak terlepas dari kendala
yang dihadapi seperti keterbatasan pengetahuan, sarana dan prasarana serta
materi. Akan tetapi kendala-kendala tersebut dapat teratasi berkat bantuan dan
dukungan berbagai pihak, oleh karena itu penulis tidak lupa mengucapkan terima
kasih kepada :
1. ALLAH Yang Maha Kuasa yang talah menganugrahkan berkat,
karunia dan rahmat-nya.
2. Ibu dan ayah saya yang selalu mendoakan dan memotivasi saya.
3. Bapak Drs Awan Setiawan, M.M. selaku Direktur Politeknik Negeri
Malang
4. Bapak Mochammad Junus, S.T., M.T. selaku Ketua Jurusan Teknik
Elektro
5. Bapak Ir. Totok Winarno, MT selaku Ketua Program Studi D-IV
Teknik Elektronika
6. Bapak Ir. Totok Winarno, MT selaku pembimbing I
7. Bapak Ir. Achmad komarudin, MMT selaku pembimbing II
8. Teman- teman seperjuangan Teknik Elektronika Polinema angkatan
2016 yang telah membantu setiap hari selama pembuatan alat
9. Teman-teman komunitas EEPROM Polinema yang telah membantu
dan memotivasi dalam pengerjaan skripsi
10. Seluruh dosen dan staff progam studi Teknik Elektronika Politeknik
Negeri Malang.
Meskipun dalam proses penulisan penelitian ini dimungkinkan bantuan
dan kerjasama dari berbagai pihak, namun setiap kesalahan yang terdapat
didalamnya merupakan kelalaian dan tanggung jawab penulis. Penulis meyakini
bahwa penyusunan penelitian ini dapat bermanfaat dan memberikan kontribusi
positif dalam pengembangan Pendidikan
Penulis
ii
iii
DAFTAR ISI
HALAMAN JUDUL................................................................................................i
HALAMAN PENGESAHAN.................................................................................ii
PERNYATAAN KEASLIAN SKRIPSI................................................................iii
ABSTRAK..............................................................................................................iv
KATA PENGANTAR.............................................................................................v
DAFTAR ISI...........................................................................................................vi
DAFTAR GAMBAR..............................................................................................ix
DAFTAR TABEL....................................................................................................x
BAB I PENDAHULUAN........................................................................................1
1.1 Latar Belakang..........................................................................................1
1.2 Rumusan Masalah.....................................................................................2
1.3 Batasan Masalah........................................................................................2
1.4 Tujuan........................................................................................................2
1.5 Urgensi......................................................................................................3
1.6 Temuan / inovasi yang ditargetkan...........................................................3
1.7 Luaran Skripsi...........................................................................................3
BAB II TINJAUAN PUSTAKA..............................................................................4
2.1 Review Penelitian Terdahulu....................................................................4
2.2 Kontes Robot Abu Robocon......................................................................7
2.2.1 Sistem Pertandingan...........................................................................7
2.2.2 Spesifikasi Arena Pertandingan.........................................................9
2.2.3 Spesifikasi Bola................................................................................10
2.3 Gerak `Parabola.......................................................................................10
2.4 Kontrol PID.............................................................................................11
2.4.1 Kontrol Proportional........................................................................11
2.4.2 Kontrol Integral...............................................................................12
2.4.3 Kontrol Derivative...........................................................................13
2.5 Ultrasonic Sensor PING..........................................................................14
2.6 Limit Switch............................................................................................15
2.7 Arduino Mega..........................................................................................16
2.8 LCD (Liquid Crystal Display).................................................................17
iv
2.9 Motor DC................................................................................................19
2.10 Rotary Encoder........................................................................................22
2.11 Driver IBT_2...........................................................................................23
BAB III PERENCANAAN DAN PEMBUATAN ALAT....................................24
3.1 Perencanaan Alat.....................................................................................24
3.1.1 Kerangka konsep pelaksanaan skripsi..............................................24
3.1.2 Studi Literatur..................................................................................25
3.1.3 Diagram Blok Sistem.......................................................................25
3.2 Diagram Blok Kontrol.............................................................................27
3.3 Prinsip Kerja............................................................................................27
3.4 Perancangan Alat.....................................................................................29
3.5 Perancangan Mekanik.............................................................................29
v
4.9 Pengujian dan Analisa Kontrol Proportional pada Kecepatan Putaran
Motor PG=45......................................................................................................54
4.9.1 Pengujian Kontrol Proportional pada Jarak 1,5m...........................54
4.9.2 Pengujian Kontrol Proportional pada Jarak 2,5m...........................55
4.9.3 Pengujian Kontrol Proportional pada Jarak acak (81 cm)..............56
BAB V PENUTUP.................................................................................................57
5.1 Kesimpulan..............................................................................................57
5.2 Saran........................................................................................................57
DAFTAR PUSTAKA............................................................................................58
LAMPIRAN ..........................................................................................................59
vi
DAFTAR GAMBAR
Gambar 2.1 Lapangan Pertandingan........................................................................9
Gambar 2.2 Bola....................................................................................................10
Gambar 2.3 Gerak Parabola...................................................................................10
Gambar 2.4 Sistem PID.........................................................................................11
Gambar 2.5 Diagram Blok Kontrol Proportional..................................................12
Gambar 2.6 Diagram Blok Kontrol Integral..........................................................13
Gambar 2.7 Diagram Blok Kontrol Derivative......................................................13
Gambar 2.8 Sensor PING.......................................................................................14
Gambar 2.9 Limit Switch.......................................................................................16
Gambar 2.10 Arduino Mega..................................................................................16
Gambar 2.11 Modul Display LCD Line 2x16.......................................................18
Gambar 2.12 Kaidah tangan kiri untuk prinsip kerja motor DC............................20
Gambar 2.13 Motor PG45......................................................................................20
Gambar 2.14 Pulsa Rotary Encoder.......................................................................22
Gambar 2.15 Driver Motor....................................................................................23
Gambar 3.1 Diagram Blok Sistem.........................................................................26
Gambar 3.2 Diagram Blok Kontrol........................................................................27
Gambar 3.3 Prinsip Kerja.......................................................................................28
Gambar 3.5 Tampak Atas......................................................................................30
Gambar 3.6 Tampak Depan...................................................................................30
Gambar 3.7 Tampak Samping...............................................................................31
Gambar 3.8 Tampak Belakang...............................................................................31
Gambar 3.9 Skematik I2C Arduino.......................................................................33
Gambar 3.10 Rangkaian LCD 16x4.......................................................................33
Gambar 3.11 Rangkaian Driver motor...................................................................34
Gambar 3.12 Rangkaian Rotary Encoder..............................................................35
Gambar 4.7 Tampilan LCD...................................................................................47
Gambar 4.8 Percobaan Limit Switch.....................................................................48
Gambar 4.10 Percobaan Motor Terbeban.............................................................52
Gambar 4.12 Pengujian Kontrol P Dengan Jarak 2,5 m........................................55
Gambar 4.13 Pengujian Kontrol P Dengan Jarak 81cm........................................56
vii
DAFTAR TABEL
Tabel 2.1 Ringkasan refrensi penelitian...................................................................5
Tabel 2.2 Spesifikasi sensor PING........................................................................14
Tabel 2.3 Spesifikasi Arduino Mega......................................................................17
Tabel 2.4 Konfigurasi pin pada LCD.....................................................................18
Tabel 4.1 Pengujian real time Sensor PING.........................................................47
Tabel 4.2 Pengujian Driver IBT_2.........................................................................49
Tabel 4.3 Data Pengujian Kecepatan Putar Motor PG-45.....................................50
Tabel 4.4 Data pengujian Kecepatan Putaran Motor PG-45 Terbeban..................51
Tabel 4.5 Pengujian Lemparan bola ke dalam target dengan jarak 1,5 m.............53
Tabel 4.6 Pengujian Lemparan bola ke dalam target dengan jarak 2,5m..............53
Y
viii
BAB I
PENDAHULUAN
Tema pada kontes robot tahun ini yang diharuskan robot PR dapat
mengumpan bola ke robot TR membuat kami berpikiran untuk membuat robot
dapat menjangkau sasaran dengan tepat, dikarenakan ketika robot hanya
menggunakan pelontar manual menggunakan insting manusia maka tingkat
ketepatan akan berkurang secara drastis. Disamping menggunakan alat yang
mengharuskan untuk tepat pada sasaran , kita juga menambahkan fitur dimana
pelontar akan memperhitungkan kecepatan yang diperlukan untuk melontarkan
objek tersebut dan kita juga menambahkan kontrol Proportional untuk
mempercepat respon pada motor.
Berdasarkan latar belakang ini maka diusulkan judul skripsi yaitu “Kontrol
Proportional Kecepatan Pelontar Pada Robot Passing”. Sebagai salah satu judul
untuk mengikuti perlombaan robot di Indonesia yang bernama KRAI 2020
(Kontes Robot Aburobocon Indonesia).
Untuk lebih memahami dan lebih jelasnya dalam tinjauan pustaka ini
maka akan diuraikan dalam tabel ringkasan refrensi penelitian berikut ini :
Pada saat ini negara Fiji berkesempatan menjadi tuan rumah untu ABU
ROBOCON 2020,. Tema dari AUROBOCON 2020 “RUGHBY 7’s” karena
negara Fiji adalah penemu permainan bola rughby.
Spesifikasi bola:
1. Ukuran : 3
2. Berat bola : 340 g
3. Panjang bola : 25 cm
4. Diameter bola 16,5 cm
5. Tekanan bola 9,5-10 psi
2.3 Gerak `Parabola
Gerak parabola pada dasarnya merupakan perpaduan antara gerak
horizontal (searah dengan sumbu x) dengan vertical (searah sumbu y). Pada
gerak horizontal bersifat GLB (Gerak Lurus Beraturan) karena gesekan udara
diabaikan sedangkan pada gerak vertical bersifat GLBB (Gerak Lurus
Berubah Beraturan) karena pengaruh percepatan grafitasi bumi.
Gambar 2.3 Gerak Parabola
(Sumber : Azhar, 2017)
Pada gerak parabola, sudut elevasi sdalah sudut yang dibentuk oleh
arah kecepatan benda dengan sumbu mendatar. Dengan kata lain, sudut
elevasi menunjukan arah kecepatan benda atau kemiringan vektor kecepatan
dalam gerak parabola, sudut elevasi ini berpengaruh terhadap ketinggian dan
jarak mendatar yang dapat ditempuh oleh benda. Ketika sebuah benda
bergerak dengan kecepatan awal dan sudut elevasi tertentu, maka benda akan
bergerak dalam dua arah sekaligus yaitu dalam arah mendatar dan dalam arah
vertikal.
(Sumber : https://www.parallax.com/product/28015)
Sensor ini dapat mengukur jarak antara 2 cm sampai 300 cm. Keluaran dari
sensor ini berupa pulsa yang lebarnya mempresentasikan jarak. Lebar pulsanya
bervariasi dari 155μS sampai 18,5 mS. Pin signal dapat langsung dihubungkan
dengan mikrokontroller tanpa tambhan komponen apapun. Ping hanya akan
mengirimkan sinyal sauara ultrasonik ketika ada pulsa trigger dari mikrokontroller
(pulsa high selama 5μS). Suara ultrasonik dengan frekuensi sebesar 40kHz akan
dipancarkan selama 200 μS. Suara ini akan merambat di udara dengan kecepatan
344.424m/detik atau 1 cm setiap 29.034μS, mengenai objek untuk kemudian
terpantul kembali ke Ping. Selama menunggu pantulan, ping akan menghasilkan
sebuah pulsa. Pulsa ini akan berhenti (low) ketika suara pantulan terdeteksi oleh
Ping. Oleh karena itu lebar pulsa tersebut dapat mereprentasikan jarak antara ping
dengan objek.
2.6 Limit Switch
Limit switch adalah salah satu jenis sensor yang ada di dunia industri yang
berfungsi untuk mendeteksi gerakan dari bagian mesin bergerak seperti cylinder
dan lain=lain, pada saat tuas atau bisa juga disebut cam mengenai atau menenkan
bagian kepala darilimit switch maka sensor ini langsung bekerja sehingga kontak-
kontak yang ada pada bagian dalamnya akan ikut bekerja pula, pada saat sensor
bekerja bisa langsung dihubungkan keperangkat atau komponen lain seperti
selenoid valve atau lampu indikatot. Ada berbagai tipe dan ukuran pada sensor ini
bisa ditekan kekiri dan kekanan dengan sudut tertentu misalnya 45 derajat maka
dia sudah bekerja, sedangkan didalamnya terdapat micro switch yang berfungsi
meneruskan gerakan yang diberikan oleh kepala limit switch di bagian luar,
sehingga pada saat tertekan micro swirch langsung kontak. Didalamnya ada
kontak normally Open dan Normally Close ( Dwi Fidha, 2018)
(Sumber : http://www.tend.com.tw/download/english/TZ.pdf)
2.7 Rotary Encoder
Rotary Encoder, digunakan untuk mengubah gerakan linear atau putaran
menjadi sinyal digital, dimana sensor putaran memonitor gerakan putar dari suatu
alat. Sensor ini biasanya terdiri dari 2 lapis jenis penyandi, yaitu; pertama,
penyandi rotari tambahan (yang menstransmisikan jumlah tertentu dari pulsa
untuk masing-masing putaran) yang akan membangkitkan gelombang kotak pada
objek yang diputar. Kedua, penyandi absolut (yang memperlengkapi kode binary
tertentu untuk masing-masing posisi sudut). Secara umum prinsip kerja Rotary
Encoder dapat diilustrasikan seperti dalam gambar berikut ini (Pitowarno,
2006:68 – Robotika : Disain, Kontrol, dan Kecerdasan Buatan.).
Dua buah sensor optis(chanel A/d dan chanel B/B) pendeteksi “hitam dan
putih” di gunakan sebagai acuan untuk menentukan arah gerakan. Searah jarum
jam (clock-wise,
Gambar 2.14 Pulsa Rotary Encoder
Mikrokontroller Atmega2560
Tegangan Operatsional 5V
Tegangan Input (rekomendasi) 7-12V
Tegangan input (limit) 6-20V
Pin Digital I/O 54 (of which 15 provide PWM
output)
Pin Analog Input 16
Arus DC per pin I/O 20 mA
Arus DC untuk pin 3.3V 50mA
Memory Flash 256 KB of which 8 KB used
bybootloader
SRAM 8 KB
EEPROM 4 KB
Clock Speed 16 MHz
LED_BUILTIN 13
Panjang 101.52 mm
Lebar 53.3 mm
Berat 37 g
Jika kawat penghantar dilewati oleh arus listrik yang terletak diantara dua
buah kutub magnet utara dan selatan, maka kawat tersebut terkena gaya Lorentz.
Arus yang mengalir pada lilitan amature akan menghasilkan sebuah medan
magnet yang saling berinteraksi dengan medan utama dan nantinya akan membuat
medan disuatu sisi konduktor akan menjadi kuat, namun akan melemahkan sisi
yang lain. Interaksi ini menyebabkan adanya gaya dorong pada konduktor
armature. Arah dari gerakan armature sesuai dengan kaidah tangan kiri.
(Sumber : http://www.brontoseno.com/produk/pg45m775-geared-
motor-series/)
Motor Planetary Gear (PG) 45 merupakan type motor DC brushless produksi
Oriental Motor corp. Motor ini sudah dilengkapi gearbox dengan perbandingan
yang bervariasi. Motor Planetary Gear (PG) 45 memiliki kecepatan maksimum
500 rpm. Dengan internal gearnya yang 10:1 maka kecepatan maksimum pada
poros keluaran adalah 50 rpm, dengan torsi rata-rata sebesar 11,2 kg-cm. Motor
ini sesuai diaplikasikan sebagai actuator robot. Motor ini membutuhkan catu daya
12v. Catu daya sebesar itu sangat sesuai dengan peraturan Kontes Robot
Indonesia. Untuk mengatur kecepatan dan arah putaran motor digunakan
rangkaian elektronik penggerak motor (driver motor). Bentuk rangkaian
elektronik penggerak motor yang digunakan adalah H-Bridge.
Prinsip kerja motor DC secara singkat dapat dijelaskan sebagai berikut : jika
kawat penghantar dialiri arus listrik yang terletak diantara kutub magnet utara dan
selatan, maka kawat tersebut akan terkena gaya Lorentz. Arus yang mengalir pada
lilitan armature akan menghasilkan medan magnet yang berinteraksi dengan
medan utama dan akan memperkuat medan disatu sisi konduktor tetapi
melemahkan di sisi yang lain. Interaksi ini menyebabkan adanya gaya dorong
pada konduktor armature. Arah dari gerakan armature sesuai dengan kaidah
tangan kiri.
Gaya yang dihasilkan oleh arus yang mengalir pada penghantar yang
ditempatkan dalam medan magnet dapat diketahui dengan persamaan sebagai
berikut :
F=B x I x L
Keterangan :
F = Gaya Lorent (Newton)
B = Kecepatan Flux Magnet (Webr/m2)
I = Arus Listrik (Ampere)
L = Panjang Sisi Kumparan Rotor (m)
BAB III
PERENCANAAN DAN PEMBUATAN ALAT
3.1 Perencanaan Alat
Perencanaan sistem ini menjelaskan tentangt bagaimana metode yang
digunakan untuk pembuatan robot yang meliputi perancanaan diagram blok
sistem, perencanaan mekanik, perancanaan elektrik, dan perencanaan Software.
a. Input
Push Button digunakan sebagai tombol start.Rotary Encoder digunakan
sebagai pembacaan kecepatan motor. Sensor PING digunakan sebagai
pembaca jarak robot. Limit Switch digunakan sebagi Reset nilai Rotary
Encoder internal yantg dibaca pada motor.
b. Proses
Pada bagian proses menggunakan 2 buah mikrokontroler dengan jenis
Arduino. Arduino Mega 2560 digunakan untuk memproses data input push
button dan memproses data yang dihasilkan dari pembacaan sensor Ping
untuk menentukan jarak dan posisi. Arduino Nano digunakan untuk
mengatur PWM driver H-bridge.
b. Output
Driver motor H-Bridge digunakan untuk mengubah sinyal PWM dari
mikrokontroler menjadi tegangan DC yang digunakan untuk mensupply
motor. Motor DC digunakan sebagai pelempar bola. LCD digunakan untuk
interface
1. Dimensi
Panjang : 110cm
Lebar : 83 cm
Tinggi : 43 cm
2. Berat : 15 kg
3. Bahan casis/base : Profil alumunium
4. Actuator : Motor DC
Dalam system ini digunakan Display yang digunakan adalah Liquid Crystal
Display 16x4 yang berarti display ini mampu menampung 4 baris dan 16 kolom
karakter. Rangkaian Display ini berfungsi untuk menampilkan data-data yang
sebelumnya telah diproses oleh mikrikontroler dan ditentukan data yang akan
ditampilkam pada LCD 16x4 ini. Secara actual dalam proses LCD 16x4 ini akan
menampilkan antara jarak robot pengumpan dengan robot penerima. Konfigurasi
hubungan pin dari LCD ke Ardino Mega antara lain :
P=Kp∗error
Dari hasil pengujian sensor ultrasonic diatas dapat kita lihat pada gambar 4.
pada saat didepan sensor ultrasonic pada jarak 29 cm diberi sebuah objek nilai
pembacaan pada serial monitor gambar 4.4 terbaca jarak 29 cm . pengujian
tersebut mendandakan bahwa sensor untuk mengukur jarak pendek.
Fungi dari Limit Switch tersebut dapat bekerja jika diberi logika “0”
atau menerima logika “LOW”, dengan sambungan Limit Switch terhubung ke
Ground, dikarenakan tombol diberikan Pull-Up internal maka Limit Switch
akan berlogika “1” atau “HIGH” pada saat ditekan. Dari hasil pengujian
Limit Switch pada sistem ini menandakan bahwa Limit Switch bekerja
dengan baik.
Tampilan
Tacho
No PWM RPM Error
(RPM)
(encoder)
1 100 0 0 0
2 200 73.9 72.5 1.93%
3 300 133.5 130.3 2.45%
4 400 187.6 185.4 1.18%
5 500 241.8 239.4 0.83%
6 600 295.9 293.8 0.71%
7 700 350.8 384.1 8.66%
8 800 407.8 409 0.29%
9 900 499.8 502.5 0,53%
10 1000 528.7 532 0.62%
Dari tabel 4.3 dapat dilihat bahwa perubahan nilai PWM terhadap
kecepatan putaran motoe berbanding lurus, dimana semakin besar nilai PWM
yang diberikan maka semakin cepat putaran dari motor PG-45. Nilai PWM
yang diberikan dimulai dari PWM minimum sampai PWM maximum yaitu
dari PWM 0-PWM 1000. Dan dapat kita lihat selisih error antara pembacaan
serial monitor dengan pembacaan tachometer.
600
500
400
300
200
100
0
1 2 3 4 5 6 7 8 9 10
7 600 540
8 700 668
9 800 754
10 900 843
11 1000 967
Dari tabel 4.4 dapat dilihat bahwa perubahan nilai PWM terhadap
kecepatan putaran motor dengan menggunakan beban berbanding lurus,
dimana semakin besar nilai PWM yang diberikan, maka semakin cepat
putaran dari motor PG-45, nilai PWM yang diberikan dimulai dari PWM
minimum sampai PWM maximum yaitu dari PWM 0 –PWM 1000.
1200
1000
800
600 PWM
RPM
400
200
0
1 2 3 4 5 6 7 8 9 10 11
Dapat dilihat dari tabel 4.3 dan tabel 4.4 bahwa pembacaan perubahan
nilai PWM terhadap kecepatan motor denagan tidak ada beban dan terbebani
terjadi penurunan yang sangat besar, dikarenakan beban lengan dan bola.
Dari data tersebut nantinya akan dijadikan setpoint untuk melakukan
pelontaran bola ke dalam target.
Tabel 4.5 Pengujian Lemparan bola ke dalam target dengan jarak 1,5 m
Lemparan
No PWM Enkoder
1 2 3
1 400 15 - - -
2 450 17 - - -
3 500 19 - - -
4 550 21 - - -
5 600 23 1 1 1
6 650 26 - - -
7 700 30 - - -
8 750 33 - - -
9 800 15 - - -
10 850 17 - - -
Dapat dilihat dari tabel 4.5 Dalam melakukan lemparan sebanyak 3 kali,
robot Passing hanya mampu melempar bola msuk dalam target dengan
sempurna dengan PWM 600 dan enkoder 23. Selebihnya itu robot tidak
mampu melemparkan masuk ke dalam ring atau target secara sempurna.
Tabel 4.6 Pengujian Lemparan bola ke dalam target dengan jarak 2,5m
Lemparan
No PWM Enkoder
1 2 3
1 600 18 - - -
2 650 20 - - -
3 700 21 - - -
4 750 23 - - -
5 800 24 - - -
6 850 26 - - -
7 875 28 1 1 1
8 900 30 - - -
9 950 15 - - -
10 1000 17 - - -
Dapat dilihat dari tabel 4.6 Dalam melakukan lemparan sebanyak 3 kali,
robot Passing hanya mampu melemparkan bola masuk dalam target dengan
sempurna dengan memasukan PWM 875 dan enkoder 28. Selebihnya robot
tidak bisa melemparkan bola ke dalam target dengan sempurna.
4.8 Pengujian dan Analisa Kontrol Proportional pada Kecepatan Putaran
Motor PG=45
100
50
Set Point
0
RPM
1 4 7 1 0 1 3 1 6 1 9 22 25 28 31 34 37 40 4 3 46
-50
-100
-150
1. Rise Time (tr) merupakan lama waktu yang diperlukan respon menuju
set point mulai dari t = 0 sampai dengan respon menyentuh sumbu set
point yang pertama. Pada grafik gambar 4.11 nilai Tr = 13 ms
2. Peak time (tp) adalah waktu puncak merupakan waktu yang diperlukan
respon menuju titik puncak pertama dari overshoot. Pada gambar grafik
4.11 nilai Tp = 15 ms.
3. Setting time (ts) merupakan waktu yang menyatakan respon telah masuk
dalam keadaan Steady State. Dari grafik gambar 4.11 nilai Ts = 43 ms
Pada gambar grafik dengan nilai Kp = 6 dapat dilihat dan dianalisa bahwa:
1. Rise Time (tr) merupakan lama waktu yang diperlukan respon menuju set
point mulai dari t = 0 sampai dengan respon menyentuh sumbu set point
yang pertama. Pada grafik gambar 4.11 nilai Tr = 6 ms
2. Peak time (tp) adalah waktu puncak merupakan waktu yang diperlukan
respon menuju titik puncak pertama dari overshoot. Pada gambar grafik
4.11 nilai Tp = 8 ms.
3. Setting time (ts) merupakan waktu yang menyatakan respon telah masuk
dalam keadaan Steady State. Dari grafik gambar 4.11 nilai Ts = 28 ms
100
50
SetPoint
0
RPM
1 3 5 7 9 11 13 15 1 7 19 21 23 2 5 2 7 29 31 3 3
-50
-100
-150
Pada gambar grafik dengan nilai Kp = 6 dapat dilihat dan dianalisa bahwa:
1. Rise Time (tr) merupakan lama waktu yang diperlukan respon menuju set
point mulai dari t = 0 sampai dengan respon menyentuh sumbu set point
yang pertama. Pada grafik gambar 4.11 nilai Tr = 6 ms
2. Peak time (tp) adalah waktu puncak merupakan waktu yang diperlukan
respon menuju titik puncak pertama dari overshoot. Pada gambar grafik
4.11 nilai Tp = 10 ms.
3. Setting time (ts) merupakan waktu yang menyatakan respon telah masuk
dalam keadaan Steady State. Dari grafik gambar 4.11 nilai Ts = 24 ms
BAB V
PENUTUP
5.1 Kesimpulan
Dari hasil perancangan dan pengujian yang sudah dilakukan, dapat
diambil kesimpulan bahwa sistem yang telah dibuat pada robot Passing dapat
bekerja dengan baik dan sesuai dengan perancangan. Berikut ini merupakan
kesimpulan yang telah didapat :
1. Untuk pembacaan jarak agar robot dapat membaca jarak lebih jauh dapat
menggunakan sensor SRF 08 atau menggunkan sensor TF Mini Lidar
(Tof).
2. Untuk penggunaan motor sebagai pelempar bola sebaiknya
menggunakan motor yang mempunyai RPM dan torsi yang tinggi
supaya dapat menjangkau jarak yang jauh.
DAFTAR PUSTAKA
ABU Asia Pasific Robot Contest 2020 . “Robo Rughby 7s”
ttps://www.aburobocon2020.com.fj/wp-content/uploads/2019/10/Changes-to-
https://dickyff.blogspot.com/2019/07/mikrokontroller-arduino-mega-2560-r3.html
(Diakses, pada tanggal : 24 Juni 2020)
https://indonesian.alibaba.com/product-detail/short-roller-hinge-lever-micro-limit-
switch-omron-limit-switch-az-tz-cz-7141-d4mc-2020-scj-127-
1897001765.html ( Diakses,pada tanggal : 29 Juni 2020)
Azhar, Gilang Al 2017. “Kontrol Sudut Elevasi Robot Pelontar Softsaucer Dengan Metode
PID”. Skripsi Jurusan Teknik Elektro. Malang : Politeknik Negeri Malang
Firdha,Dwi 2018.”Kontrol Kecepatan Motor Pelempar Pada Robot ABU Robocon 2018
Dengan Metode PID”. Skripsi Jurusan Teknik Elektro. Malang : Politeknik Negeri
Malang
Hardiansyah,Andy 2017 “Kontrol Kecepatan Motor Pelontar Pada Abu Robocon 2017
Dengan Metode PID”. Skripsi Jurusan Elektro. Malang : Politeknik Negeri Malang
Astoro, Muhamad Nizar Falafi 2019.”Implementasi Kontrol PID Positioning Robot Pada
Titik Pengambilan Objek Shagai Menggunakan Sensor Kamera”. Skripsi Jurusan
Teknik Elektro. Malang : Politeknik Negeri Malang
LAMPIRAN 1
(GAMBAR ALAT)
LAMPIRAN 2
(GAMBAR LAYOUT)
LAMPIRAN 3
(LISTING PROGRAM)
Robot Master Controller
#include "timer.h"
#include "interface.h"
#include "bno_055.h"
#include "i2cdriver.h"
#include "roshandler.h"
#include "registerlogic.h"
#define ping 37
void setup() {
// put your setup code here, to run once:
init_timer(100);
set_slave();
init_ros();
set_interface();
set_bno055();
init_joystick();
reset_encoder();
enable_encoder();
clear_screen();
pinMode(ping,OUTPUT);
Serial.begin(9600);
}
void loop() {
switch(tim_ovf){
case true:
read_ping();
transmit_pelontar(3);
//read_bno055();
//publish_imu();
if (enc_lock == false){
disable_encoder();
//read_encoder();
//publish_encoder();
enable_encoder();
}
tim_ovf = false;
break;
}
scan_joystick();
switch(edit_menu){
case false:
lcd_gotoxy(0,0);
lcd_putsf("Jarak:");
lcd_gotoxy(0,1);
lcd_puts(jarak);lcd_putsf(" cm ");
if(digitalRead(limit_sw)==LOW){
if(transmit_lock == false){
transmit_pelontar(0);
transmit_lock = true;
}
}
else transmit_lock = false;
button_data = scan_tombol();
// ================reset==================
switch(button_data){
case 4 : //tb_back
lcd_init(20,4);
//clear_screen();
transmit_pelontar(4);
break;
case 8 : //tb_enter
transmit_pelontar(1);
break;
case 16 : //tb_bawah
imu_ref = or_imu[0];
break;
case 32 : //tb_kiri
edit_menu = true;
delay(200);
clear_screen();
break;
case 64: //tb_kanan
transmit_pelontar(5);
delay(200);
break;
case 128: //tb_atas
u_odom[0] = 0;
u_odom[1] = 0;
u_odom[2] = 0;
publish_pose();
reset_encoder();
break;
}
switch(manual_mode){
case false:
if(edit_menu == false){
lcd_gotoxy(12,4);
lcd_putsf("Auto ");
}
transmit_motor(w_motor[1], w_motor[0], w_motor[2]);
//transmit_motor(0, 0, 0);
break;
case true:
if(edit_menu == false){
lcd_gotoxy(12,4);
lcd_putsf("Manual");
}
transmit_motor(l[code], m[code], r[code]);
break;
}
break;
case true:
lcd_gotoxy(0,0);
lcd_putsf("==== Set Kp ====");
lcd_gotoxy(0,1);
lcd_puts_float(kp);lcd_putsf(" ");
button_data = scan_tombol();
// ================reset==================
switch(button_data){
case 4 : //tb_back
edit_menu = false;
kp_temp = kp * 10;
transmit_pelontar(2);
clear_screen();
delay(200);
break;
case 8 : //tb_enter
break;
case 16 : //tb_bawah
kp -= 0.1;
delay(200);
break;
case 32 : //tb_kiri
kp -= 1.0;
delay(200);
break;
case 64: //tb_kanan
kp += 1.0;
delay(200);
break;
case 128: //tb_atas
kp += 0.1;
delay(200);
break;
}
break;
}
//ros_routine();
}
void read_ping(){
pinMode(ping,OUTPUT);
digitalWrite(ping,LOW);
delayMicroseconds(5);
digitalWrite(ping,HIGH);
delayMicroseconds(5);
digitalWrite(ping,LOW);
pinMode(ping,INPUT);
pulsein = pulseIn(ping,HIGH);
pulsein = pulsein/2;
jarak = int(pulsein/29);
Bno 055.cpp
#ifndef bno_055_cpp
#define bno_055_cpp
#include <Arduino.h>
#include "bno_055.h"
#include "interface.h"
#include <Adafruit_Sensor.h>
#include <Adafruit_BNO055.h>
#include <utility/imumaths.h>
void set_bno055() {
if (!bno.begin()) {
lcd_gotoxy(5, 1);
lcd_print("WARNING !!!!");
lcd_gotoxy(2, 2);
lcd_print("Imu Not Detected");
delay(1000);
clear_screen();
}
else {
lcd_gotoxy(6, 1);
lcd_print("SUCCESS !");
lcd_gotoxy(4, 2);
lcd_print("Imu Detected");
delay(500);
clear_screen();
}
bno.setExtCrystalUse(true);
}
float * read_bno055() {
sensors_event_t event;
bno.getEvent(&event);
or_imu[0] = event.orientation.x; // arah hadap robot
or_imu[1] = event.orientation.y;
or_imu[2] = event.orientation.z;
return (float*) &or_imu;
}
#endif
Bno 055.h
#ifndef bno_055_h
#define bno_055_h
void set_bno055();
float * read_bno055();
#endif
I2cdriver.cpp
#ifndef i2cdriver_cpp
#define i2cdriver_cpp
#include <Wire.h>
#include <Arduino.h>
#include "i2cdriver.h"
volatile byte slave_address[6];
byte pinMot = 12;
byte pinEnc = 11;
volatile int enc[2]={0,0}, kp_temp = 0, range_temp = 0, jarak =
0;;
volatile float kp = 0, range = 0;
//==============SLAVE==============
void set_slave(){
Wire.begin();
pinMode(pinMot, OUTPUT);
pinMode(pinEnc, OUTPUT);
initslave('L', KIRI);
initslave('M', TENGAH);
initslave('R', KANAN);
initslave('Q', ENC_1);
initslave('W', ENC_2);
initslave('E', PELONTAR);
disable_encoder();
}
//===============MOTOR===============
void motor_enable(){
digitalWrite(pinMot,HIGH);
}
void motor_disable(){
digitalWrite(pinMot,LOW);
}
//===============encoder=====================
void disable_encoder(){
digitalWrite(pinEnc,LOW);
}
void enable_encoder(){
digitalWrite(pinEnc,HIGH);
}
void read_encoder(){
Wire.requestFrom(slave_address[3],2);//(address,byte)//enc1
enc[0] = 0;
enc[0] |= Wire.read();
enc[0] = enc[0] << 8;
enc[0] |= Wire.read();
Wire.requestFrom(slave_address[4],2);//enc2
enc[1] = 0;
enc[1] |= Wire.read();
enc[1] = enc[1] << 8;
enc[1] |= Wire.read();
}
void reset_encoder(){
Wire.beginTransmission(slave_address[3]);
Wire.write((byte)(2));
Wire.endTransmission();
Wire.beginTransmission(slave_address[4]);
Wire.write((byte)(2));
Wire.endTransmission();
}
#endif
I2cdriver.h
#ifndef I2CDRIVER_H
#define I2CDRIVER_H
#include <Wire.h>
#define KIRI 11
#define TENGAH 12
#define KANAN 13
#define ENC_1 14
#define ENC_2 15
#define PELONTAR 16
void set_slave();
void initslave(char motor, unsigned char address);
void transmit_pelontar(byte n);
void transmit_motor(int lpwm, int bpwm, int rpwm);
void motor_enable();
void motor_disable();
void enable_encoder();
void disable_encoder();
void reset_encoder();
void read_encoder();
#endif
Interface.cpp
#ifndef interface_cpp
#define interface_cpp
#include <Arduino.h>
#include "interface.h"
#include "bno_055.h"
#include "roshandler.h"
#include "i2cdriver.h"
#include "timer.h"
#include <LiquidCrystal.h>
char buff[33];
int check = 0;
bool cond = false;
byte reset = 0;
volatile byte pintombol[7] = { A10, A11, A12, A13, A14, A15, 41};
// 0123456789ABCDEF1234
// ABUROBONEMA
byte mode = 0;
void set_interface() {
for (unsigned char i = 0; i < 7; i++) { //tombol
pinMode(pintombol[i], INPUT_PULLUP);
}
pinMode(lcd_lmp, OUTPUT);
lcd.begin(20, 4);
}
void clear_screen() {
lcd.clear();
}
void encoder_interface() {
lcd.setCursor(14, 0);
lcd.print("Enc :");
sprintf(buff, "R %05d", enc[0]);
lcd.setCursor(13, 1);
lcd.print(buff);
sprintf(buff, "L %05d", enc[1]);
lcd.setCursor(13, 2);
lcd.print(buff);
}
void interface_bno055() {
//=============odom==============
read_bno055();
lcd_gotoxy(0, 0); lcd_print("Pose :");
lcd_gotoxy(0, 1); lcd_print("X "); lcd.print(w_motor[0]);
lcd_gotoxy(0, 2); lcd_print("Y "); lcd.print(w_motor[1]);
lcd_gotoxy(0, 3); lcd_print("Z "); lcd.print(w_motor[2]);
//=============Kompas============
lcd_gotoxy(11, 0); lcd_print("Imu :");
lcd_gotoxy(11, 1); lcd_print("X ");lcd_gotoxy(13, 1);
lcd_puts(or_imu[0]);lcd.print(" ");
lcd_gotoxy(11, 2); lcd_print("N ");lcd_gotoxy(13, 2);
lcd_puts(imu_ref);lcd.print(" ");
}
#endif
Interface.h
#ifndef interface_h
#define interface_h
void set_interface();
void lcd_puts(int num);
void lcd_puts_float(float num);
void lcd_putsf(String words);
void lcd_gotoxy(byte x,byte y);
void lcd_print(String comment);
void lcd_init(byte x, byte y);
void clear_screen();
void interface_bno055();
void encoder_interface();
#endif
Registerlogic.cpp
#ifndef registerlogic_cpp
#define registerlogic_cpp
#include <Arduino.h>
#include <PS2X_lib.h>
#include "registerlogic.h"
#include "i2cdriver.h"
PS2X ps2x;
int scan_tombol(){
int data = 0;
data = PINK;// & (1 << PINK2) | PINK & (1 << PINK3) | PINK & (1
<< PINL4) | PINK & (1 << PINK5) | PINK & (1 << PINK6) | PINK & (1
<< PINK7);
data = ~(data)&0xfc; // nilai data dikalikan 0b1111 1100;
return data;
}
void scan_joystick(){
ps2x.read_gamepad();
if (up)code=0;
else if (down)code=1;
else if (right)code=3;
else if (left)code=2;
else if (R1)code=4;
else if (L1)code=5;
else if (silang)code=7;
else if (segitiga)code=8;
else code=6;
if(kotak)transmit_pelontar(1);
else if(R2)transmit_pelontar(4);
else if(L2)transmit_pelontar(5);
//if(kotak)Serial.println("KOTAK");
//else Serial.println("idle");
delay(10);
}
void init_joystick() {
ps2x.config_gamepad(33, 25, 31, 23, true , true);
}
#endif
Registerlogic.h
#ifndef REGISTERLOGIC_H
#define REGISTERLOGIC_H
int scan_tombol();
void scan_joystick();
void init_joystick();
#endif
Roshandler.cpp
#include "roshandler.h"
#include "i2cdriver.h"
#include "bno_055.h"
geometry_msgs::Vector3 enc_val;
geometry_msgs::Vector3 imu_vector;
geometry_msgs::Vector3 pose_update;
ros::Subscriber<geometry_msgs::Vector3> pose("robot2/pose",
&pose_callback);
ros::Subscriber<geometry_msgs::Vector3> pwm("/robot2/pwm",
&pwm_callback);
ros::Publisher encoder_publisher("robot2/encoder", &enc_val);
ros::Publisher imu_publisher("robot2/bno055", &imu_vector);
ros::Publisher pose_publisher("robot2/update_pose",
&pose_update);
ros::NodeHandle nh;
void publish_encoder(){
enc_val.x = enc[0];
enc_val.y = enc[1];
encoder_publisher.publish(&enc_val);
}
void publish_pose(){
pose_update.x = u_odom[0];
pose_update.y = u_odom[1];
pose_update.z = u_odom[2];
pose_publisher.publish(&pose_update);
}
void publish_imu(){
imu_vector.x = or_imu[0];
imu_vector.y = or_imu[1];
imu_vector.z = or_imu[2];
if(imu_vector.x>180){
imu_vector.x = imu_vector.x - 360;
}
if(imu_ref>180){
imu_ref = imu_ref - 360;
}
imu_vector.x = -imu_vector.x + imu_ref;
if(imu_vector.x < -180){
imu_vector.x = imu_vector.x + 360;
}
else if(imu_vector.x>180){
imu_vector.x = imu_vector.x - 360;
}
imu_publisher.publish(&imu_vector);
}
void init_ros(){
nh.initNode();
nh.subscribe(pose);//subscribe data odometry
nh.subscribe(pwm);//subscribe data odometry
nh.advertise(encoder_publisher);//publish posisi bola
nh.advertise(imu_publisher);//publish imu
nh.advertise(pose_publisher);//publish imu
}
void ros_routine(){
nh.spinOnce();
delay(10);
}
Roshandler.h
#ifndef roshandler_h
#define roshandler_h
#include <ros.h>
#include <geometry_msgs/Vector3.h>
#endif
Timer.cpp
#ifndef timer_cpp
#define timer_cpp
#include <Arduino.h>
#include <Wire.h>
#include "timer.h"
int start = 0;
volatile bool tim_ovf = false;
ISR(TIMER1_OVF_vect){
tim_ovf = true;
TCNT1 = start;
}
#endif
Timer.h
#ifndef TIMER_H
#define TIMER_H
#endif
Robot pelontar.launch
#include <Wire.h>
#include <Encoder.h>
Encoder enc(2,3);
void setup() {
// put your setup code here, to run once:
Wire.begin(16);
Wire.onReceive(receiveEvent);
//setup PWM 10 bit
DDRB |=_BV(PB1)|_BV(PB2);
TCCR1A = (1 << COM1A1) | (0 << COM1A0 ) | (1 << COM1B1) |
(0<<COM1B0) | (1 << WGM11) | (1 << WGM10);
//TCCR1A = 0b10100010;
TCCR1B = (0 << WGM13) | (1 << WGM12) | (0 << CS12) | (0 << CS11)
| (1 << CS10);
ICR1 = 0x3ff;//pwm
//setup timer2
TCCR2A = 0x00;
TCCR2B |= (1 << CS12) | (1 << CS11) | (1 << CS10);
TIMSK2 |= (1 << TOIE2);
TCNT2 = 100;
Serial.begin(9600);
Serial.println("Serial Ready...");
}
void loop() {
pwmAdd = 187.5+275*(range/100);
defSpd = (int)(pwmAdd);
x_max = (range/100.0) + cog_robot;
t_max = x_max * tan(th) / (2*g);
Vo = sqrt(t_max*2*g) / sin(th);
sp = Vo * 9.5493 / r;
// put your main code here, to run repeatedly:
newPos = enc.read()/4;
if (newPos != oldPos) {
oldPos = newPos;
//Serial.println(newPos);
}
if(newPos > max_enc)command=2;
switch(command){
case 0:
pwmVal = 0;break;
case 1:
//if(newPos<10)pwmVal = 1022;
//else pwmVal = 1023;
if(newPos<10)pwmVal = pwmOut;
else pwmVal = pwmOut;
pv_throw = pv;
break;
case 2:
if(newPos<14)pwmVal = -100;
else pwmVal = -225;
break;
case 3:
if(newPos<2)pwmVal = 235;
else pwmVal = 200;
break;
case 4:
pwmVal = 140;
break;
}
//Serial.println(sp);
motor(pwmVal);
Serial.print(error);Serial.print(",");Serial.print(sp);Serial.prin
t(",");Serial.print(pv);Serial.print(",");Serial.println(pwmOut);
}
void receiveEvent(){
code = ((byte)Wire.read());
switch(code){
case 0:
if(pwmVal<200){
command = code;
Serial.println("Limit Detected");
}
else Serial.println("Limit Pushed");
newPos = 0;
enc.write(0);
break;
case 1:
command = code;
pv_throw = 0;
break;
case 2:
kp_temp = 0;
kp_temp |= Wire.read() << 8;
kp_temp |= Wire.read();
kp = (float)(kp_temp)/10;
break;
case 3:
range_temp = 0;
range_temp |= Wire.read() << 8;
range_temp |= Wire.read();
range = (float)(range_temp);
break;
case 4:
command = 3;
//newPos = 0;
//enc.write(0);
//Serial.println("all reset");
break;
case 5:
command = 4;
break;
}
}
int control_p(){
float output = 0;
error = sp - pv;
output = kp*error + defSpd;
if(output>1023)output=1023;
else if(output < -1023)output=-1023;
return output;
}