Anda di halaman 1dari 95

KONTROL PROPORTIONAL KECEPATAN PELONTAR

PADA ROBOT PASSING

SKRIPSI

Oleh:

Ahmad Fahreza Rahman NIM. 1641170075

PROGRAM STUDI D-IV TEKNIK ELEKTRONIKA

JURUSAN TEKNIK ELEKTRO

POLITEKNIK NEGERI MALANG

2020
KONTROL PROPORTIONAL KECEPATAN PELONTAR PADA

ROBOT PASSING

SKRIPSI

Oleh:

Ahmad Fahreza Rahman NIM. 1641170075

PROGRAM STUDI D-IV TEKNIK ELEKTRONIKA

JURUSAN TEKNIK ELEKTRO

POLITEKNIK NEGERI MALANG

2020

i
HALAMAN PENGESAHAN

KONTROL PROPORTIONAL KECEPATAN PELONTAR PADA ROBOT


PASSING
Oleh:
Ahmad Fahreza Rahman
NIM 1641170075

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 :

Malang, 15 Juli 2020


Mengetahui, Menyetujui,
Ketua Jurusan Teknik Elektro Ketua Program Studi Teknik
Elektronika

Mochammad Junus, ST., MT Ir. Totok Winarno, MT


NIP 197206191999031002 NIP 196001011985031012

ii
PERNYATAAN KEASLIAN SKRIPSI

Saya yang bertanda tangan dibawah ini:


Nama Ahmad Fahreza Rahman
NIM 1641170075
Jurusan/Program Studi Teknik Elektro/D4 Teknik Elektronika
Judul KONTROL PROPORTIONAL
KECEPATAN PELONTAR PADA
ROBOT PASSING
Menyatakan dengan sebenarnya bahwa :
1. Karya tulis ini benar – benar merupakan hasil karya saya sendiri, bukan
merupakan alihan penelitian, tulisan atau pikiran orang lain yang saya akui
sebagai hasil penelitian, tulisan atau pikiran saya sendiri.
2. Apabila di kemudian hari terbukti atau dapat dibuktikan bahwa karya tulis
ini hasil jiplakan (plagiasi), dan saya tidak dapat memenuhi pernyataan
saya ini maka saya bersedia menerima sanksi atas perbuatan saya tersebut.

Malang, 15 Juli 2020

Ahmad Fahreza Rahman


NIM. 1641170075

iii
ABSTRAK

Ahmad Fahreza Rahman.2020.Kontrol Proportional Kecepatan Pelontar Pada


Robot Passing.Skripsi, Jurusan Teknik Elektro, Politeknik Negeri Malang.

Pembimbing(I)Ir.TotokWinarno,MT.Pembimbing(II)Ir.Achmad
Komarudin.,MMT

Robot Pengumpan bola pada ABU Robocon merupakan robot otomatis


yang berfungsi untuk mengikuti Kontes Robot Abu Indonesia (KRAI). Pada
perlombaan kali ini, robot diharuskan dapat mengumpan bola ke robot penendang.
Untuk dapat mengumpan bola menggunakan motor DC geared yang disertai
Rotary Encoder sedangkan untuk mengendalikan kecepatan motor saat
melemparkan bola menggunakan metode kontrol Proportional.

Pada hasil percobaan dapat dianalisa bahwa penggunaan kontrol


Proportional sangan berpengaruh terhadap lemparan bola. Penggunaan kontrol
Proportional menjadikan robot dapat mengumpan bola menjadi lebih stabil dalam
melakukan lemparan ke target. Setelah dilakukan pengujian pada jarak 1,5m dan
2,5m ditemkan nilai Kp = 6.

Kata Kunci : Sensor Rotary Encoder, Pelontar, kontrol proportional

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.

Advisors : (I)Ir.TotokWinarno,MT.Pembimbing(II)Ir.Achmad Komarudin.,MMT

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.

In the experimental results it can be analyzed that the use of proportional


control greatly affects the throwing of the ball. The use of Proportional control
makes the robot able to feed the ball to be more stable in throwing the target.
After testing at a distance of 1.5m and 2.5m, it was found that the value of Kp = 6.

Keywords: Rotary Encoder Sensor, Thrower, proportional control.

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

Malang, Juli 2020

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

3.6 Perancangan Elektrik ..............................................................................31


3.6.1 Rangakaian Kontroller Shield Arduino Mega..................................31
3.6.2 Rangkaian LCD 16x4.......................................................................33
3.6.3 Konvigurasi Driver IBT_2...............................................................34
3.6.4 Konfigurasi Sensor Rotary Encodary..............................................35
3.6.5 Konvigurasi Sensor PING................................................................36
3.6.6 Konfigurasi Limit Switch.................................................................36
3.6.7 Konfigurasi Receiver Stick..............................................................37
3.7 Perancangan Software.............................................................................38
3.8 Perancangan Kontrol Proportional.........................................................40

BAB IV PENGUJIAN DAN ANALISA...............................................................41


4.1 Pengujian dan Analisa LCD 20x4...........................................................41
4.2 Pengujian dan Analisa Remote Control...................................................42
4.3 Pengujian dan Analisa Sensor Rotary Encoder.......................................43
4.4 Pengujian dan Analisa Sensor PING.......................................................45
4.5 Pengujian dan Analisa Limit Switch.......................................................48
4.6 Pengujian dan Analisa Driver IBT_2......................................................48
4.7 Pengujian dan Analisa Kecepatan Putar (RPM) Motor PG-45...............49
4.8 Pengujian Jarak Target Terhadap Kecepatan Motor PG45.....................52

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

1.1 Latar Belakang


Kemajuan dibidang ilmu pengetahuan dan teknologi adalah cara untuk
mendapatkan sesuatu dengan kualitas yang lebih baik dan efisien. Salah satunya
teknologi yang selalu berkembang pesat pada kehidupan manusia, khususnya pada
bidang elektronika. Hal ini ditandai dengan adanya berbagai peralatan elektronik
yang telah diciptakan dan dapat dioperasikan secara otomatis. Karena kemajuan
nilah , maka dikembangkan suatu ilmu yang merupakan salah satu dari ilmu
elektronika, yaitu bidang ilmu robotika.
Robot adalah sebuah alat mekanik yang dapat melakukan tugas fisik, baik
menggunakan pengawasan ataupun kontrol manusia dengan menggunakan
program yang telah didefinisikan terlebih dulu (kecerdasan buatan). Saat ini, robot
banyak digunakan dalam berbagai bidang kehidupan masyarakat. Bahkan, Setiap
tahun kontes robot selalu ada untuk memperkenalkan dan memperluas ilmu
pengetahuan tentang robot.

Kontes Robot Indonesia 2020 ( KRI 2020 ) merupakan pertandingan untuk


menentukan tim yang akan mewakili Indonesia dalam ABU ROBOCON 2020.
Tema Kontes Robot Indonesia kali ini adalah “Robo Rughby 7s”. robot yang
digunakan sebanyak 2 robot yang terdiri dari : 1 buah robot TR dan 1 buah robot
PR. Robot PR sebagai pengambil bola Ruggby sekaligus pengumpan bola Ruggby
ke robot TR untuk ditendang ke arah gawang.

Tema ini menceritakan tentang proses memasukan bola ke gawang yang


diawali dengan proses pengambilan bola dari tempat yang sudah ditentukan oleh
robot PR yang kemudian diberikan kepada robot TR untuk di arahkan ke sasaran
dan kemudian ditendang hingga masuk ke gawang

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).

1.2 Rumusan Masalah


Dari latar belakang yang telah dikemukakan, permasalahan dalam penelitian
ini dapat dirumuskan sebagai berikut:

1. Bagaimana cara merealisasikan robot dapat mengumpan bola secara


otomatis?
2. Bagaimana cara mengimplementasikan kontrol Proportional sebagai
kendali motor DC untuk pelontar bola pada robot Passing?
1.3 Batasan Masalah
Dari rumusan masalah diatas dapat dibuat suatu batasan-batasan masalah
sebagai berikut:

1. Metode kontrol yang digunakan adalah kontrol Proportional.


2. Pengontrolan hanya pada kecepatan motor pelontar.
3. Obyek lempar berupa bola Rughby dengan ukuran yang sama.
4. Perubahan target hanya terletak pada jarak 1,5m dan 2,5m
5. Robot selalu berhadapan dengan target..
1.4 Tujuan
Adapun tujuan dari skripsi ini adalah sebagai berikut:

1. Dapat merealisasikan robot dapat mengumpan secara otomatis


2. Dapat menerapkan kontrol Proportional sebagai kendali motor DC
untuk pengumpan bola
3. Robot dapat mengumpan bola dengan tepat sasaran
1.5 Urgensi
Output skripsi yang akan diperoleh nantinya adalah robot pelontar yang
digunakan untuk kontes robot ABU ROBOCON 2020, dimana perlombaan
tersebut robot Passing mampu mengumpan bola Rughby dengan tepat pada target.

1.6 Temuan / inovasi yang ditargetkan


Temuan yang ditargetkan dalam skripsi ini adalah robot Passing yang
mampu melempar bola dengan cara menentukan kecepatan motor sesuai dengan
jarak. Temuan inovasi ini mengembangkan sistem dari model robot pelempar
Shuttlecock dengan menggunakan metode PID. Kemudian akan dikembangkan
dengan menentukan jarak pada robot, dimana selanjutnya pembacaan nilai jarak
akan menentukan kecepatan putar motor pelontar yang mampu mengumpan ke
robot penendang. Pengontrolan motor disini mengggunakan metode kontrol
Proportional agar kecepatan motor pelontar mampu berubah mengikuti jarak.
Konsep ini diharapkan tujuan akan tercapai

1.7 Luaran Skripsi


Luaran yang akan dicapai meliputi :
1. Makalah yang diseminarkan
2. Laporan Skripsi.
3. Artikel Ilmiah Yang Dipublikasikan.
4. Teknologi Berupa Benda Karya Teknologi yang dikumpulkan /
sesuai perjanjian.
BAB II
TINJAUAN PUSTAKA
Pada bab kedua ini membahas penilitian-penelitian terdahulu dan
landasan teori dalam pelaksanaan skripsi in. Sistem yang akan digunakan
adalah sistem pengumpan bola yang mampu masuk ke dalam target. Dimana
jarak antara robot dan target sudah ditentukan.

2.1 Review Penelitian Terdahulu


Pada bab kedua ini akan dibahas mengenai tentang penelitian -
penelitian yang sudah ada dan akan menjadi landasan teori yang menjadi
dasar dalam pelaksanaan skripsi ini. Sistem pelempar bola yang sesuai
dengan target yang ditentukan.

Sistem pelempar menggunakan kecepatan putar motor yang


sebelumnya sudah pernah dibuat namun menggunakan metode dan objek
lempar yang berbeda-beda, adapun metode dan objek yang digunakan adalah
sebagai berikut :

Menurut Firdha Dwi (2018) dengan judul “ Kontrol Kecepatan Motor


Pelempar pada Robot Abu Robocon 2018 dengan metode PID”. Dalam
penelitian ini untuk melempar Shutllecock menggunakan motor DC geared
yang disertai Rotary Encoder sedangkan untuk mengendalikan kecepatan
motor menggunakan metode kontrol PID. Pada penelitian robot dapat
menstabilkan putaran motor sesuai set point yang diinginkan. Setelah
dilakukan pengujian ditemukan nilai PID pada jarak 3m adalah Kp=10,
Ki=0.5, Kd=9, dan pada jarak 6m adalah Kp=10, Ki=0.2,Kd=11.

Menurut Azhar Gilang Al (2017) dengan judul “Kontrol Sudut Evalasi


Robot Pelontar Softsaucer Dengan Metode PID”. Dalam penelitian ini Robot
menggunakan sensor SRF08 digunakan untuk mengukur jarak dari robot ke
bidang tembak dengan bantuan laser pointer, agar jarak yang diukur
merupakan jarak dari robot ke bidang tembak. Agar pelontar Softsaucher
konstantanya dengan cara Trial dan Error. Setelah dilakukan tuning, dengan
nilai kostanta Kp=40, Ki=5, Kd=37. Robot dapat menyesuaikan sudut elevasi
tembakan dengan respon waktu yang cepat yaitu 5 detik.

Menurut Hardiansyah Andi (2017) dengan judul “Kontrol Kecepatan


Pelontar pada ABU ROBOCON 2017 dengan metode PID”. Dalam penelitian
ini robot dapat melempar Soft Soucher untuk menjatuhkan bola. Dalam
perancangannya digunakan motor BLDC, kecepatan putaran motor akan
ditentukan oleh jauh dekatnya jarak target yang dideteksi oleh SRF 08 dan
kecepatan putaran motor akan dideteksi oleh sensor Rotary Encoder. Setelah
dilakukan tunning PID ditemukan nilai Kp = 40, Ki = 1, dan Kd = 80.

Untuk lebih memahami dan lebih jelasnya dalam tinjauan pustaka ini
maka akan diuraikan dalam tabel ringkasan refrensi penelitian berikut ini :

Tabel 2.1 Ringkasan refrensi penelitian


Penulis Judul Tahun Sistem Kesimpulan dan saran

Dwi Firdha Kontrol 2018 Kontrol Implementasi penggunaan


kecepatan PID metode PID pada robot
motor pelempar Shuttlechock
pelempar pada telah sesuai dengan yang
robot Abu diharapkan dar hasil
Robocon 2018 pengujian nilai kostanta
dengan metode kp, ki, kd yang tepat
PID untuk kontrol PID pada
jarak 3m adalah Kp=10,
Ki=0.5, Kd=9, sedangkan
pada jarak 6m adalah
Kp=10, Ki=0.2, Kd=11.
Dan untuk penentuan
jarak sebaiknya dilakukan
otomatis dengan
menambahkan sensor
jarak.
Al azhar Kontol sudut 2017 Kontrol Berdasarkan hasil
Gilang elevasi robot PID pengujian kontrol PID
pelontar pada sebagai kontrol
abu robocon pergerakan robot pelontar,
2017 dengan robot dapat mengatur
metode PID sudut elevasi dengan tepat
dan cepat dengan
menggunakan metode
Tuning Trial and error
dengan nilai Kp=40,
Ki=5, Kd=37. Disarankan
agar menggunakan sudut
elevasi yang tetap untuk
menimimalisir pergerakan
robot.
Andy Kontrol 2017 PID Hasil pengujian terhadap
Hardiansya kecepatan aplikasi kontroler PID ini
h motor pelontar ditemukan error rata-rata

pada ABU 0,11% menandakan

ROBOCON sensor dalam keadaan


baik dan layak untuk
2017 dengan
digunakan. Setelah
metode PID
dilakukan tunning PID
ditemukan Kp = 40, Ki =
1, dan Kd = 80.
Disarankan untuk pelontar
yang lebih baik dapat
menggunakan motor yang
memiliki torsi dan RPM
yang besar.
2.2 Kontes Robot Abu Robocon
Tema KRAI 2020 kali adalah “ROBO RUGHBY 7s”. Tema ini selaras
dengan tema yang telah ditentukan oleh ABU ROBOCON 2020 yaitu
“RUGHBY 7’s.

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.

2.2.1 Sistem Pertandingan


1. Setiap tim terdiri dari tiga mahasiswa dan satu pembimbing dengan
maksimum tiga orang mekanik untuk membantu di pit-stop dan set-up
saat persiapan waktu 1 menit diawal sesi.
2. Setiap tim hanya memiliki 2 buah robot yaitu robot PR (Passing Robot)
dan robot TR( Try Robot). Kedua robot ini dapat berupa manual atau
otomatis.
3. Dimensi Pass Robot saat berada di daerah start Berukuran maksimal
1000mm(L) x 1000mm(W) x 1200mm(H). dan setelah robot bergerak
dalam sesi pertandingan maka ukuran robot tidak melebihi 1200mm
untuk panjang, lebar dan tingginya. Sedangkan robot Try Robot saat
berada di daerahnya start 1000mm(L) x 1000mm(W) x 1500mm(H) dan
setelah robot bergerak dalam sesi pertandingan maka ukuran robot tidak
melebihi 1200mm(L) x 1200mm(W) x 1500mm(H).
4. Berat total robot beserta batrai, kabel, kontroler dan seluruh kebutuhan
pada robot yang digunakan dalam permainan tidak boleh melebihi
50kg.
5. Batas tegangan catu daya yang digunakan tidak boleh melebihi 24V dan
pencatu tekanan pneumatik maksimal 600 kpa.
6. Ukuran arena pertandingan yang digunakan untuk tim merah dan tim
biru adalah berbentuk persegi panjang dengan ukuran 10.000mm x
13.000mm. dengan pembatas arena pertandingan dengan tinggi 100mm
dan lebar 30mm.
7. Area untuk masing masing terdapat beberapa zona yaitu “Pass Robot
Start Zoneí” yaitu zona mulai untuk pass robot dengan ukuran panjang
dan lebar 1000mm X 1000mm, ” Try Robot Start Zone” yaitu zona
mulai untuk pass robot dengan ukuran panjang dan lebar 1000mm X
1000mm, “ Passing Zone”yaitu zona Pass robot harus melempar bola
dari arena bola ke Try robot, “Receiving Zone” yaitu zona dimana Try
robot menerima bola rugby dari Pass Robot, “Kicking Zone” yaitu zona
tempat robot harus menendang bola tendangan. Zona Menendang
dibagi menjadi tiga bagian. KZ1, KZ2, dan KZ3 tim dapat memperoleh
nilai tergantung pada peletakan bola dan akurasi tendangan.
8. Didalam arena terdapat “Obstacle” yaitu lima buah tiang yang
ditempatkan dilapangan permainan, “Try Spot” yaitu tempat peletakan
bola yang terdiri lima dari masing masing tim, “Ball Rack” yang terdiri
dari 5 bola pada masing masing arena.
9. Sebelum pertandingan dimulai, tim diberikan waktu 1 menit untuk
persiapan dalam waktu tersebut setiap tim harus menata bola yang
disediakan oleh panitia dan mencoba arena sampai dengan batas waktu
yang sudah ditentukan.
10. Setelah pertandingan dimulai, Pass Robot diharuskan mengambil bola-
normal dan kemudian melembar bola tersebut ke Try Robot yang
kemudian dibawa menuju “Try Spot” dengan melewati rintangan
tersebut.
11. Robot boleh menendang bola-emas dengan syarat berhasil meletakkan
sedikitnya satu bola di rak bola untuk satu tendangan namun, tim robot
tersebut tidak boleh bergerak saat salah satu seorang tersebut
meletakkan bola-emasnya.
12. Bola-emas hanya terdapat 7 buah untuk kedua tim. Bola-emas dapat
diambil sesuai dengan berapa jumlah bola-normal yang diletakkan di
rak bola.
13. Pertandingan berlangsung selama 3(tiga) Menit.
14. Apabila tidak ada tim yang mencetak gol, maka pertandingan
dihentikan dan tim yang berhasil mengumpulkan Nilai tertinggi
dinyatakan sebagai pemenang.
2.2.2 Spesifikasi Arena Pertandingan
1. Warna merah dan biru yang berbentuk persegi merupakan posisi awal
robot sebelum pertandingan dimulain
2. Warna hijau tua pada masing masing tim merah dan tim biru adalah
tempat penerimaan bola-normal.
3. Warna hijau muda pada masing masing tim merah dan tim biru
merupakan pengumpan bola normal.
4. Tempat penendang warna merah pada tim merah merupakan daerah
penendang tim merah. Dan tempat penendang warna biru pada tim
biru merupakan daerah penendang tim biru.
5. Warna hijau dan kuning yang berada di tengah arena merupakan
tempat peletakan bola-normal.
6. Warna biru muda didalam arena merupakan tempat bola-normal dan
biru muda diluar arena adalah biru-emas.

Gambar 2.1 Lapangan Pertandingan


(Sumber : ttps://www.aburobocon2020.com.fj/wp-
content/uploads/2019/10/Changes-to-Rulebook-30-September.pdf)
2.2.3 Spesifikasi Bola

Gambar 2.2 Bola


(Sumber : ttps://www.aburobocon2020.com.fj/wp-
content/uploads/2019/10/Changes-to-Rulebook-30-September.pdf)

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.

2.4 Kontrol Proportional


Kontroler Proportional merupakan salah satu kontrol yang bisa
menghasilkan Output apabila terjadi perbedaan antara Input dengan Output. Atau
dengan kata lain kontroler Proportional selalu membutuhkan Error untuk
menghasilkan Output. Jika nilai Proportional semakin kecil maka waktu respon
menuj steady state akan semakin kecil begitu pula sebaliknya jika nilai
Proportional semakin besar maka waktu respon menuju staedy state akan semakin
besar.
Gambar 2.5 Diagram Blok Kontrol Proportional
(Sumber : Astoro, 2019)

Ciri-ciri kontroler proporsional harus diperhatikan ketika kontroler


tersebut diterapkan pada suatu sistem. Secara eksperimen, pengguna
kontroler proporsional harus memperhatikan ketentuan-ketentuan berikut ini
:
1. Kalau nilai Kp kecil, kontroler proprorsional hanya mampu melakuakn
koreksi kesalahan yang kecil, sehingga akan menghasilkam respon
sistem yang lambat.
2. Kalau nilai Kp dinaikkan, respon sistem menunjukan semakin cepat
mencapai keadaan mantabnya.
3. Namun jika nilai Kp diperbesar sehingga mencapai harga yang
berlebihan, akan mengakibatkan sistem bekerja tidak stabil, atau
respon sistem akan berosilasi (Azhar,2017)
2.5 Ultrasonic Sensor PING
Dalam sistem ini sensor PING digunakan untuk mendeteksi jarak dari taget,
agar robot mampu mengumpan bola maka jarak dari haruslah diketahui. Sensor
PING dapat mendeteksi jarak obyek dengan cara memancarkan gelombang
ultrasonik dengan frekuensi 40 kHz.

Gambar 2.8 Sensor PING

(Sumber : https://www.parallax.com/product/28015)

Tabel 2.2 Spesifikasi sensor PING


Voltage 5 volt
Current 30mA
Frequency 40kHz
Maximum Range 3m
Minimum Range 2 cm
Operating Temperature 0 - 70°
Comunication Positive TTL pulse
Weight 9g
Size 22 mm H x 46 mm W

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)

Gambar 2.9 Limit Switch

(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

CW atau berlawanan arah jarum jam (counter clock-wise, CCW).


Sedangkan jumlah pulsa (baik A atau B) dapat dihitung (menggunakan
prinsip counter) sebagai banyak langkah yang ditempuh. Dengan demikian
arah gerakan dan posisi dapat dideteksi dengan baik oleh Rotary Encoder,
Biasanya encodeer dipasang segari dengan poros (shaft) motor, Gearbox,
sendi atau bagian berputar lainnya. Beberapa tipe encoder memiliki poros
brlubang (hollow shaft encoder) yang didesain untuk system sambungan
langsung ke poros obyek dideteksi.

2.8 Arduino Mega


Board Arduino Mega 2560 adalah sebuah Board Arduino yang
menggunakan ic Mikrokontroler ATmega 2560.Board ini memiliki Pin I/O yang
relatif banyak, 54 digital Input / Output,15 buah di antaranya dapat di gunakan
sebagai output PWM, 16 buah analog Input, 4 UART. Arduino Mega 2560 di
lengkapi kristal 16. Mhz Untuk penggunaan  relatif sederhana tinggal
menghubungkan power dari USB ke PC / Laptop atau melalui Jack DC dengan
memakai power supply 7-12 V DC.
Gambar 2.10 Arduino Mega

(Sumber : https:// https://store.arduino.cc/usa/mega-2560-r3)

Tabel 2.3 Spesifikasi Arduino Mega

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

2.9 Driver IBT_2


Kontrol Motor DC High Current pada driver motor DC ini dapat
mengeluarkan arus hingga 43A, dengan memiliki fungsi PWM. Tegangan
sumber DC yang dapat diberikan antara 5.5V – 27V DC, sedangkan
tegangan input level antara 3.3V – 5Vdc, driver motor ini menggunakan
rangkaian full H-bridge dengan IC BTS7960 dengan perlindungan saat
terjadi arus yang Panas atau Berlebihan

Gambar 2.15 Driver Motor


Sumber :
(https://www.handsontec.com/dataspecs/module/BTS7960%20Motor
%20Driver.pdf)

Detail Pin Input

 RPWM = Input PWM Forward Level ,Aktif High


 LPWM = Input PWM Reverse Level ,Aktif High
 R_EN   = Input Enable Forward Driver, Aktif High
 L_EN   = Input Enable Reverse Driver, Aktif High
 R_IS     = Forward Drive ,Side current alarm output
 L_IS     = Reverse Drive  ,Side current alarm output
 Vcc      = +5 V Power Supply Mikrokontroler
 Gnd     = Gnd   Power Supply Mikrokontroler

Detail Pin Output

 W-  = Di hubungkan ke Motor DC (V-)


 W+= Di hubungkan ke Motor DC (V+)
 B+ = Tegangan Input V+ Motor
 B-   = Tegangan Input V-  Motor

2.10 LCD (Liquid Crystal Display)


LCD (Liquid Crystal Display) adalah sebuah alat yang berfungsi untuk
menampilkan huruf, angka, symbol-simbol ataupun karakter-karakter tertentu.
Tipe LCD yang digunakan adalah LCD 16 x 2 (16 kolom 2 baris).

Gambar 2.11 Modul Display LCD Line 2x16


(Sumber : data Primer)

Dalam robotik. LCD digunakan sebagai alat penampil pembacaan sensor


dan penampilan menu pada robot. Dalam pengoperasian LCD ada tiga buah line
control, yaitu line RS, line RW dan line EN, jika LCD dioperasikan sebagai mode
4 bit maka diperlukan 7 buah line (3 line kontrol dan 4 data bus). Sedangkan jika
LCD dioperasikan sebagai mode 8 bit diperlukan 11 line (3 line kontrol dan 8 data
bus) terdapat juga pin anoda dan katoda sebagai pengaktifan lampu LED pada
Background LCD..
Tabel 2.4 Konfigurasi pin pada LCD
Simb I/ Deskripsi
Pi ol O
n
1 VSS - Ground
2 VCC - +5V power supply
3 VEE - To control contrast of character
4 RS I Register select : RS =0 to select
instruksi
Command register, RS=1 to select
data reg
5 R/W I Read/Write: R/W=0 for write, R/W=1
for read
6 EN I Enable
7 DBO I/ 8–bit data bus
O
8 DB1 I/ 8–bit data bus
O
9 DB2 I/ 8–bit data bus
O
DB3 I/ 8–bit data bus
1 O
0
DB4 I/ 8–bit data bus
1 O
1
DB5 I/ 8–bit data bus
1 O
2
DB6 I/ 8–bit data bus
1 O
3
DB7 I/ 8–bit data bus
1 O
4
BPL - Back Plane Light
1
5
GND - Ground
1
6

Adapun fitur pada LCD adalah :


1. Terdiri dari 16 karakter dan 2 baris
2. Mempunyai 192 karakter tersimpan
3. Terdapat karakter generator terprogram
4. Dapat dialamati dengan 4-bit dan 8-bit
5. Dilengkapi dengan back light
Display karakter pada LCD, diatur oleh pin EN, RS, dan RW : Jalur EN
dinamakan Enable. Jalur ini digunakan untuk memberitahu LCD bahwa operator
sedang mengirimkan sebuah data. Untuk mengirimkan data ke LCD, maka
melalui program EN harus dibuat logika low “0” dan set pada dua jalur kontrol
yang lain RS dan RW. Ketika dua jalur yang lain telah siap, set EN dengan logika
“1” dan tunggu untuk sejumlah waktu tertentu (sesuai dengan datasheet dari LCD
tersebut). Berikutnya set EN ke logika low “0” lagi. Jalur RS adalah jalur Register
Select. Ketika RS berlogika low “0”, data akan dianggap sebagai perintah atau
instruksi khusus (seperti clear screen, posisi kursor dll). Ketika RS berlogika high
“1”, data yang dikirim merupakan data text yang akan ditampilkan pada display
LCD. Sebagai contoh, untuk menampilkan huruf “W” pada layar LCD maka RS
harus diset logika high “1” (Sasmito, 2015).
2.11 Motor DC
Motor DC merupakan salah satu jenis motor listrik yang bekerja
menggunakan sumber tegangan DC. Motor DC berfungsi untuk mengubah energi
listrik menjadi energi gerak atau energi mekanik. Pedoman motor listrik itu
sendiri mengacu pada kaidah tangan kiri. Satu pasang magnet permanen utara
selatan menghasilkan garis medan magnet. kawat pada penghantar di atas telapak
tangan kiri ditembus garis medan magnet. Ketika kawat dialirkan arus listrik DC
sebesar I searah keempat jari tangan, maka kawat mendapatkan gaya sebesar F
searah ibu jari.
Gambar 2.12 Kaidah tangan kiri untuk prinsip kerja motor DC

( Sumber : Firdha Dwi, 2018)

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.

Gambar 2.13 Motor PG45

(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.

3.1.1Kerangka konsep pelaksanaan skripsi


Dalam penulisan untuk menegetahui hasil pengontrolan kecepatan motor
pelontar dengan metode kontrol Proportional. Langkah awal untuk memulai
penelitian ini adalah merancang system berdasarkan studi literature. Setelah
sistem dirancang, sistem tersebut dibuat dan dikontrol dengan
mengimplementasikan sistem kontrol yang telah ditentukan. Berikut ini
merupakan diagram alir metode penyelesaian masalah :

Gambar 3.1 Flowchart Kerangka Penelitian


3.1.2Studi Literatur
Adapun langkah-langkah yang dilakukan dalam skripsi ini
diantaranya adalah melakukan pengumpulan dan mempelajari semua
literatur yang berhubungan dengan kontrol kecepatan pada motor
dengan menggunakan Arduino Mega dan juga mempelajari literature
yang berhubungan dengan pelontar dari skripsi-skripsi sebelumnya dan
literature lainya yang berhubungan dengan skripsi ini.Study literature
yang dilakukan adalah dengan mencari jurnal-jurnal maupun Teks Book
yang berhubungan dengan desain kontrol kecepatan motor pelontar
dengan metode metode tertentu
3.1.3Diagram Blok Sistem
Diagram blok merupakan diagram yang dibuat untuk
mempetakan alur kerja sebuah sistem yang akan dirancang. Alur kerja
dimulai dari masukan sampai keluaran sesuai spesifikasi sistem kerja
alat yang telah direncanakan. Diagram blok sistem kontrol kecepatan
robot pelontar terdiri dari beberapa komponen meliputi: Push button,
Rotary Encoder, ATmega 2560, arduino nano, Motor DC , Driver
Motor, LCD seperti yang ditunjukkan dalam gambar berikut:

Gambar 3.1 Diagram Blok Sistem

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

3.2 Diagram Blok Kontrol

Gambar 3.2 Diagram Blok Kontrol

Dari gambar diatas dapat diuraikan sebagai berikut:


1. Input berasal dari pembacaan sensor ping menentukan jarak
robot yang akan menjadi set point untuk kecepatan motor.
2. Arduino mega digunakan untuk memproses perhitungan nilai
yang sudah terbaca dan mengolah data sensor, kemudian akan
dikonversikan menjadi sinyal PWM.
3. Driver Motor H-Bridge digunakan untuk mengatur kecepatan
motor DC dengan cara mengubah sinyal PWM yang dihasilkan
oleh arduino mega.
4. Motor DC digunakan untuk penggerak lengan pelontar.
5. Sensor Ping digunakan untuk pembacaan jarak yang akan di
olah oleh Arduino mega.
6. Sensor Rotary Encoder digunakan untuk menghitung putaran
motor dengan tujuan mengetahui posisi lengan pelontar ,
kemudian akan dikirim dan diproses oleh mikrokontroller.
7. Limit switch digunakan untuk mereset nilai Rotary Encoder.
8. Kecepatan motor (RPM) merupakan hasil akhir yang
dikendalikan

3.3 Prinsip Kerja


Prinsip kerja dari robot pelontar ini adalah dengan menekan tombol
start robot akan mengumpan bola ke robot penerima. Jarak antar robot
diketahui dengan menggunakan sensor ping yang di olah dengan Arduino
mega yang akan menghasilkan data. Dari hasil penentuan jarak tersebut akan
digunakan sebagai input sebuah sistem. Arduino mega akan mengatur
kecepatan putaran motor DC mengunakan kontrol Proportional. Driver akan
memutar motor DC sesuai dengan hasil perhitungan, setelah mencapai Set
point pembacan jarak antar robot, bola akan diumpankan robot penerima .
Motor pelontar akan berputar terbalik sampai lengan pelontar menyentuh
Limit Swtich dan lengan pelontar kembali ke posisi awal
Gambar 3.3 Prinsip Kerja
3.4 Penentuan Variabel
Dalam penelitian yang dilakukan ini terdapat variabel=variabel yang
mendukung, berikut in variabel-variabel yang mendukung dalam proses penelitian
:
1. Variabel bebas : jarak antara robot penerima (Try Robot) dengan robot
pengumpan (Pass Robot), konstanta Kp.
2. Vatiabel terikat : kecepatan motor,

3.5 Perancangan Alat

Gambar 3.4 Diagram Alir Perancangan Alat

3.6 Perancangan Mekanik


Pada perancangan mekanik ini akan dibahas tentang bentuk fisik robot
Passing.

Spesifikasi mekanik robot Passing.

1. Dimensi
 Panjang : 110cm
 Lebar : 83 cm
 Tinggi : 43 cm
2. Berat : 15 kg
3. Bahan casis/base : Profil alumunium
4. Actuator : Motor DC

Gambar 3.5 Tampak Atas

Gambar 3.6 Tampak Depan


Gambar 3.7 Tampak Samping

Gambar 3.8 Tampak Belakang

3.7 Perancangan Elektrik


Untuk membuat robot Passing sesuai jarak target diperlukan beberapa rangkaian
elektrik sebagai pendukung. Rangkaian tersebut terdiri dari Sensor PING, sensor
rotary, Sensor Limit Switch, Shield Arduino mega , Lcd, Driver IBT_2, motor
DC
3.7.1 Konvigurasi Sensor PING
Sensor PING adalah sensor ultrasonik yang diproduksi oleh Parallax. Sensor
ini merupakan sensor untuk mrngukur jarak. Dapat melakukan pengukuran
jarak 3 cm sampai 3 meter, namun pembacaan yang optimal dari sensor ini
adalah pada jarak 2,5 meter sesai dengan datasheet sensor. Penggunaan dari
sensor ini dengan kontroler adalah dengan dengan menghubungkan dengan
salah satu pin di kontroller. Data yang diterima oleh kontroller data berupa
jarak yang bisa diset dalam berbeda yaitu inchi atau centimeter. Dalam
aplikasinya di alat ini, data yang digunakan dalam satuan centimeter.

Gambar 3.13 Rangkaian Sensor PING

Dalam perancangan rangkaian antara kontroler dengan sensor PING


ini,Berikut ini keterangan rangkain pin sensor ping pada arduino Mega:

1. pin 5v = terhubung ke pin VCC (merah)


2. pin GND = terhubung ke pin ground (hitam)
3. pin SIG = terhubung ke pin 37 ( biru)
3.7.2 Konfigurasi Sensor Rotary Encodary
Penggunaan sensor Rotary Encoder pada pengaturan pengumpan
bola, digunakan sebagai pendeteksi kecepaan dari putaran motor
pelontar. Karena sistem pengumpan bola dilakukan secara otomatis
maka dibutuhkan sensor yang memiliki tingkat kepresisiannya cukup
baik untuk pembacaan kecepatan motor pelempar tersebut. Sensor
Rotary Encoder yang digunakan adalah sensor Rotary Encoder jenis
magnetic yang berfungsi untuk membaca kecepatan motor pelempar.
Sensor Rotary Encoder ini telah menjadi satu paket dengan motor DC.
Setiap sedikir perputaran motor maka akan memberikan data pada
sensor Rotary Enkoder. Jika motor berputar searah jarum jam (CW),
maka data pembacaan akan bertambah, namun jika motor berputar
berlawanan arah jarum jam (CCW), maka nilai data berkurang.

Gambar 3.12 Rangkaian Rotary Encoder

Berikut keterangan rangkaian enkoder pada pin arduno nano :

1. Pin VCC = terhubung ke pin VCC ( merah)


2. Pin Ground = terhubung ke pin ground ( hitam)
3. Pin chanel A = terhubung ke pin 2 (orange)
4. Pin chanel B = terhubung ke pin 3 ( abu-abu)

3.7.3 Konfigurasi Limit Switch


Sensor Limit Switch termasuk dalam kategori sensor mekanik
yaitu sensor yang akan memberika perubahan elektrik saat terjadi
perubahan mekanik pada sensor tersebut.Limit Switch memiliki 2
kontak yaitu NO (Normaly Open) dan NC (Normaly Close) dimana
salah satu kontak akan aktif jika tombolnya tertekan. Fungsi dari
penggunaan limit switch pada robot Passing ini untuk me-reset data
enkoder. me-reset data enkoder berguna untuk menentukan posisi awal
lengan robot. pada saat lengan robot melontarkan bola , lengan akan
kembai ke posisi awa sampai menyentuh limit switch.

Gambar 3.14 Rangakaian Limit Switch

Berikut konfigurasi rangkaian limit switch :

1. pin 1 = terhubung ke pin 41 (biru)


2. pin 2 = terhubung ke pin ground (hitam)
3.7.4 Konfigurasi Receiver Stick
Penggunaan pada Receiver Stick pada robot Passsing ini untuk
menerima sinyal dari stick yang akan digunakan untuk pengoperasian
robot.. Receiver yang digunakan menggunakan jenis Wireless.

Gambar 3.15 Rangkaian Receiver


Berikut konfigurasi rangkaian Receiver:

1. pin 1 (data) = terhubung ke pin 23 (biru)


2. pin 2 (command) = terhubung ke pin 25 (kuning)
3. pin 4 (ground) = terhubung ke pin GND (hitam)
4. pin 5 (Vcc) = terhubung ke pin Vcc (merah)
5. pin 6 (attetion) = terhubung ke pin 31 (hijau)
6. pin 7 (clock) = terhubung ke pin 33 (abu-abu)

3.7.5 Rangakaian Kontroller Shield Arduino Mega


Arduino Mega 2560 ini merupakan mikrokontroller utama pada
robot Passing. Data yang diperoleh oleh mikrokontroller akan diproses
dan diolah untuk melakukan perintah pada actuator robot. Pemilihan
mikrokontroller menggunakan Arduino Mega 2560 dikarenakan modul
ini sesuai dengan spesifikasi yang diperlukan. Pada kontroller Arduino
mega akan ditambahkan rangkaian tambahan yaitu Shield Arduino
mega. Hal ini dikarenakan agar penyambungan keseluruan elektrik
tidak menggunakan kabel tipe socket male. Dengan menggunakan
Shield Arduino yang didesign atau layout dan dicetak menggunakan
PCB maka akan mempermudah untuk penyambungan rangkaian
keseluruhan input ataupun output yang dibutuhkan.
Penghubung Arduino nano juga membutuhkan Shield agar lebih
mudah dalam penyambungan elektrik. Agar efisien, penempatan
Arduino mega dan Arduino nano ditempatkan pada satu buah layout
PCB. Sistem yang digunakan adalah I2C dimana Arduino Mega
digunakan sebagai master atau otak pengolahan data dan Arduino nano
digunakan sebagai slave agar mempermudah dalam pengaturan actuator
dan agar tidak mengganggu proses pengolahan utama pada
master.skematik rangkaian pin I2C adalah SDA dan SCL yang
dihubungkan pada Arduino mega ke Arduino nano.
Berikut adalah rangkaian i2C Arduino mega ke Arduino nano :

Gambar 3.9 Skematik I2C Arduino

 Pin SCL = terhubung ke pin A5 (orange)


 Pin SDA = terhubung ke pin A4 (hijau)
 Pin Ground = terhubung ke pin Ground (hitam)
3.7.6 Rangkaian LCD 16x4
Gambar 3.10 Rangkaian LCD 16x4

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 :

 Pin VSS : terhubung ke Ground


 Pin VDD : terhubung ke VCC 5V
 Pin VEE : terhubung ke keluaran trimpot sebagai variable resistor
untuk mengatur tingkat kekontrasan karakter LCD
 Pin RS : terhubung ke Pin 50
 Pin RW : tehubung ke pin Ground
 Pin EN : terhubung ke pin 48
 Pin D0-D3 : tidak digunakan
 Pin D4 : terhubung ke pin 44
 Pin D5 : terhubung ke pin 42
 Pin D6 : terhubung ke pin 40
 Pin D7 : terhubung ke pin 38
 Pin A : terhubung ke VCC 5V
 Pin K : terhubung ke Ground
3.7.7 Konvigurasi Driver IBT_2
Dalam penggunaan Driver H-Bridge sebagai driver motor DC
untuk membantu mengumpan bola menuju target. Driver IBT_2 inin
dioperasikan sebagai full bridge maka operasi yang bisa dilakukan oleh
kontroller terhadap motor DC yang dihubungkan pada driver ini, bisa
diatur arah putarannya, yaitu searah jarum jam (CW), maupun
berlawanan arah jarum jam (CCW).
Gambar 3.11 Rangkaian Driver motor

 Pin SCL = terhubung ke pin A5 (biru)


 Pin SDA = terhubung ke pin A4 (orange)
 Pin 9 = terhubung ke pin PWM 1 ( kuning)
 Pin 10 = terhubung ke pin PWM 2 (hijau)
 Pin B+ driver = terhubung ke VCC baterai (merah)
 Pin B – driver = terhubung ke ground baterai (hitam)
 Pin M+ driver = terhubung ke vcc motor ( ungu)
 Pin M- driver = terhubung ke ground motor (Hijau tosca)
 Pin VCC = terhubung ke pin VCC (merah)
 Pin Ground = terhubung ke groud (hitam)
3.8 Perancangan Software
Bahasa pemrogaman yang digunakan adalah bahasa C dan software
Arduino sebagai editor progam. Arduino Mega digunakan sebagai pengatur
data input seperti sensor ultrasonik dan Push Button, maka data output akan
diproses melalui port yang telah ditentukan mikrokontroler juga digunakan
sebagi pengolah data yang terdiri dari pembacaan Set point dan pembacaan
sensor enkoder. Dari hasil pembacaan tersebut, data yang diterima akan
dikirimkan dan diolah didalam mikrokontroler yang kemudian dijadikan
acuan dalam pengambilan keputusan oleh kontrol Proportional.
Gambar 3.16 Perencanaan Software
3.9 Perancangan Kontrol Proportional
Pada robot Passing ini, setpoint untuk kontrol proportional adalah
panjang jarak antara kedua robot. Jarak yang diset adalah 1,5m dan 2,5m,
ketika robot berada pada jarak 1,5m atau 2,5m maka kontroler akan
memproses yang nantinya akan diteruskan untuk kontrol motor DC sebagai
aktuatornya.

Sistem kontrol Proportional terdapat konstanta Proportional (Kp)


berfungsi unutk memperkecil sinyal error sehingga dapat mempercepat nilai
respon untuk mencapai kestabilan sistem.

Penerapan pada sistem ini adalah :

P=Kp∗error

Untuk memperoleh sinyal Kp digunakan metode Ziegler-nicols atau


Ziegler-nicols 2. Metode ini merupakan metode yang sesuai dengan sistem
robot Passing dikarenakan respon yang dihasilkan pada motor DC adalah
respon yang cepat dan berosilasi
BAB IV

PENGUJIAN DAN ANALISA


Pada bab pengujian dan analisa dilakukan untuk melihat apakah system
sudah bekerja sesuai dengan perancangan. Pengujian ini dilakukan mulai dari tiap-
tiap blok hingga keselurahan sistem. Pengujian pada alat ini meliputi beberapa
bagian diantaranya :

1. Pengujian dan Analisa LCD 20x4


2. Pengujian dan Analisa Remote Control
3. Pengujian dan Analisa Rotary Encoder
4. Pengujian dan Analisa Sensor PING
5. Pengujian dan Analisa Limit Switch
6. Pengujian dan Analisa Driver Motor DC IBT_2
7. Pengujian dan Analisa Kecepatan putar (RPM) motor PG45
8. Pengujian Jarak Target Terhadap Kecepatan Motor PG 45
9. Pengujian dan Analisa Kontrol Proportional pada kecepatan putaran
motor PG45

4.1 Pengujian dan Analisa Sensor PING

Pengujian sensor ultrasonic dilakukan unutk mengetahui apakah


pembacaan sensor sudah sesuai dengan data yang ditampilkan pada serial
monitor atau tidak. Disamping itu pengujian iini memastikan bahwa sensor
sudah bekerja sesuai dengan kriteria yang dibutuhkan. Berikut hasil dari
pengujian sensor PING
Gambar 4.5 Pengukuran objek

Gambar 4.6 Tampilan Serial Monitor


Gambar 4.7 Tampilan LCD

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.

Tabel 4.1 Pengujian real time Sensor PING


NO Data (cm) Real Time Data – Real time
1 100 103 3
2 125 124 1
3 150 148 2
4 175 174 1
5 200 200 0
6 225 227 2
7 250 248 2
8 275 277 2
9 300 305 5

4.1 Pengujian dan Analisa Sensor Rotary Encoder


Pengujian pada sensor Rotary Encoder dilakukan untuk mencari data
yang didapatkan pada sensor Rotary encoder pada saat motor PG 45 berputar
dan harus bisa mendeteksi arah putaran motor PG 45, jika putaran motor
berputar searah jarum jam maka data Rotary encoder akan bertambah atau
positif (+), dan sebaliknya jika putaran motor berputar berlawanan arah jarum
jam maka data Rotary Encoder akan berkurang atau negatif (-).

Gambar 4.3 Percobaan enkoder CW

Dari gambar diatas merupakan data pembacaan Rotary Encoder ketika


motor PG 45 berputar searah jarum jam (CW).
Gambar 4.4 Percobaan Enkoder CCW

Dri gambar diatas merupakan pembacaan Rotary Enkoder ketika motor


PG45 berputar berlawanan arah jarum jam (CCW).

Dari hasil pengujian sensor Rotary encoder,berdasarkan gambar 4.4 dan


gambar 4.5 membuktikan bahwa sensor Rotary Encoder akan bernilai positif (+)
ketika motor berputar searah jarum jam (CW) dan akan bernilai negatif (-) ketika
motor berputar berlawanan jarum jam (CCW). Dengan hasil tersebut menandakan
bahwa sensor Rotary Encoder dapat bekerja dengan baik.

4.2 Pengujian dan Analisa Limit Switch

Pengujian Lmit Switch dilakukan untuk mengetahui apakah Limt


Switch dapat berfungsi dengan baik ketika tertekan. Terdapat satu Limit
Switch yang terhubung ke Arduino Mega yang memiliki fungsi untuk me-
Reset data sensor Rotary Encoder.
Gambar 4.8 Percobaan Limit Switch

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.

4.3 Pengujian dan Analisa Remote Control

Pengujian tombol dilakukan untuk mengetahui apakah tombol push


button dapat berfungsi dengan baik ketika ditekan. Terdapat beberapa tombol
push button yang terhubung pada Arduino mega yang memilki fungsi masing
masing
Gambar 4.2 Percobaan Remote Control

Tombol-tombol tersebut akan bekerja jik diberika logika “0” atau


menerima logika “LOW” , dengan sambungan tombol terhubung ke ground
atau GND, dikarenakan tombol diberikan Pull- Up internal maka tombol akan
berlogika “1” atau HIGH pada saat tertekan. Dari hasil pengujian tombol
pada sistem, tombol akan memberikan perintah atau informasi bahwa tombol
dapat bekerja dengan baik.

4.4 Pengujian dan Analisa LCD 20x4

Pengujian LCD dilakukan untuk mengetahui apakah LCD dapat


menampilkan karakter sesuai dengan progam pada kontroler. Pengujian LCD
ini menggunakan progam bahasa C dengan menggunakan software Arduino.
Gambar 4.1 Percobaan LCD

Berdasarkan hasil pengujian LCD di atas membuktikan LCD dapat


menampilkan karakter atau tulisan sesuai dengan progam yang dibuat yaitu baris
pertama “ ABUROBONEMA” dan baris kedua “SKRIPSI 2020”, begitu pula
lampu Backlight LCD juga berfungsi dengan baik. Oleh karena itu LCD ini dapat
digunakan sebagai tampilan pada robot Passing.

4.5 Pengujian dan Analisa Driver IBT_2

Pengujian driver motor DC IBT_2 bertujuan agar dapat mengetahui dan


mengerti tentang karakteristik driver motor yang nantinya akan digunakan
sebagai penggerak aktuator pada robot Passing. Pengujian dilakukan dengan
memberi inputan berupa logika “1” dan “0” pada dua pin inputan sebagai
pengatur arah putaran secara bergantian, kemudian melihat perubahan pada
pergerakan motor yang sudah disambungkan pada pin output dari driver.
Berikut tabel dari hasil pengujian driver motor IBT_2.

Tabel 4.2 Pengujian Driver IBT_2


Input PWM 1 Input PWM 2 Output

High High Berhenti melakukan pengereman maju

High Low Maju


Low High Mundur

Low Low Berhenti tanpa melakuan pengereman

Setelah melakukan pengujian driver IBT_2 seperti tabel diatas dapat


dilihat bahwa hasil tersebut sudah sesuai dengan keinginan. Untuk
mengontrol driver dengan memberi logika dari kontroler secara bergantian,
yaitu input PWM 1 dan input PWM 2 diberi logika High auatu Low.

Dari pengujian driver IBT_2 diatas dapat dibuktikan bahwa driver


mampu dioperasikan secara Fullbridge, dikarenakan motor yang
disambungkan pada driver mampu beroperasi tidak hanya berputar searah
jarum jam maupun berlawanan arah jarum jam saja, melainkan bisa di
operasikan dalam hal pengereman arah putar motor.

4.6 Pengujian dan Analisa Kecepatan Putar (RPM) Motor PG-45

Pengujian pada motor PG-45 bertujuan apakah putaran motor dapat


stabil atau dapat bekerja dengan baik. Motor PG-45 digunakan sebagai
pengumpan bola ke robot penerima. Pengujian pada motor PG-45 perlu di uji,
dikarenakan pada sistem ini, dibutuhkan kecepatan lempar yang stabil.
Sehingga motor diuji dengan cara mengukur kecepatan putaran motor,
dengan berikan nilai PWM yang berbeda-beda yang akan dikonfersikan ke
nilai RPM. Untuk pengujian dilakukan dengan cara menampilkan nilai RPM
pada LCD dan diukur menggunakan alat pengukur kecepatan motor, yaitu
menggunakan Tachometer.

Tabel 4.3 Data Pengujian Kecepatan Putar Motor PG-45

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

Gambar 4.9 Grafik PWM dan Tachometer

Bisa dilihat pada gambar 4.9 Pereubahan nilai PWM terhadap


kecepatan putar motor terjadi secara linear . selisih error yang didapat antara
pembacaan serial monitor dengan pembacaan tachometer , dengan ini
menandakan sistem dapat bekerja dengan baik, stabil, dan konstan.

Tabel 4.4 Data pengujian Kecepatan Putaran Motor PG-45 Terbeban

No PWM RPM Beban


1 0 0
2 100 85
3 200 176
4 300 285
5 400 330
6 500 455

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

Gambar 4.10 Percobaan Motor Terbeban

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.

4.7 Pengujian Jarak Target Terhadap Kecepatan Motor PG45

Pengujian ini dilakukan untuk mengetahui perubahan antara jarak 1,5m


dan 2,5m terhadap perubahan kecepatan motor apakah sudah berjalan dengan
baik.pengujian ini dilakukan untuk membandingkan kecepatan motor ,
dengan memasukan nilai PWM dan enkoder ke kontrol pada robot Passing,
apakah hasil robot dapat membuktikan bola bisa masuk 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

Pengujian ini dilakukan untuk mengetahui apakah kontrol Proportional


daat bekerja dengan baik atau tidak. Pengujian ini dilakukan dengan cara
memberi nilai Kp pada sebuah kontrol, sesuia dari rumus ziegler nichols.
Respon sistem adalah kecepatan nilai PV mencapai nilai Sp. Dimana nilai PV
adalah nilai kecepatan putaran motor PG-45 dari pembacaan sensor Rotary
Encoder. Dan nilai SP merupakan niali setpoint dari kecepatan putar motor
pelempar

4.9.1Pengujian Kontrol Proportional pada Jarak 1,5m


150

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

Gambar 4.11 Pengujian Kontrol P dengan jarak 1,5m


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 = 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

4.9.2Pengujian Kontrol Proportional pada Jarak 2,5m


100
80
60
40
20
SetPoint
0
RPM
1 3 5 7 9 11 13 1 5 17 19 21 2 3 2 5 27 2 9 31
-20
-40
-60
-80
-100

Gambar 4.12 Pengujian Kontrol P Dengan Jarak 2,5 m

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

4.9.3Pengujian Kontrol Proportional pada Jarak acak (81 cm)


150

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

Gambar 4.13 Pengujian Kontrol P Dengan Jarak 81cm

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. Robot Passsing dapat mengumpan bola dengan tepat sasaran


2. Dengan menggunakan motot PG-45 bola dapat diumpanakan ke dalam
target
3. Implementasi pengguanaan metode kontrol Proportional pada robot
Passing telah sesuai yang diharapkan dari hasil pengujian nilai konstanta
yang tepat untuk kontrol proportional pada jarak 1,5m adalah Kp = 6,
sedangkan pada jarak 2,5m adalah kp= 6. Konstanta tesebut dihasilkan
respon sistem yang cepat dan sesuai dengan yang diharapkan.
5.2 Saran
Ada beberapa saran yang dapat digunakan untuk pengembangan robot
Passing diantaranya sebagai berikut :

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-

Rulebook-30-September.pdf (Diakses, pada tanggal : 7 november 2019)

http://www.brontoseno.com/produk/pg45m775-geared-motor-series/ (Diakses, pada


tanggal : 7 november 2019)

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

bool play = false, enc_lock = false, manual_mode = true, edit_menu


= false, transmit_lock = false;
byte button_data = 0;
unsigned long pulsein = 0;

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"

volatile float or_imu[3] = {0., 0., 0.};


volatile float imu_ref = 0.;

#include <Adafruit_Sensor.h>
#include <Adafruit_BNO055.h>
#include <utility/imumaths.h>

Adafruit_BNO055 bno = Adafruit_BNO055(55);

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

extern volatile float or_imu[3];


extern volatile float imu_ref;

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();
}

void initslave(char part, unsigned char address){


switch(part){
case 'L': slave_address[0]=address;break;
case 'M': slave_address[1]=address;break;
case 'R': slave_address[2]=address;break;
case 'Q': slave_address[3]=address;break;
case 'W': slave_address[4]=address;break;
case 'E': slave_address[5]=address;break;
}
}

//===============MOTOR===============
void motor_enable(){
digitalWrite(pinMot,HIGH);
}

void motor_disable(){
digitalWrite(pinMot,LOW);
}

void transmit_pelontar(byte n){


switch(n){
case 0://reset encoder, stop motor
Wire.beginTransmission(slave_address[5]);
Wire.write((byte)(n));
Wire.endTransmission();
break;
case 1://start lontar
Wire.beginTransmission(slave_address[5]);
Wire.write((byte)(n));
Wire.endTransmission();
break;
case 2://kirim Kp
Wire.beginTransmission(slave_address[5]);
Wire.write((byte)(n));
Wire.write((byte)(kp_temp>>8));
Wire.write((byte)(kp_temp));
Wire.endTransmission();
break;
case 3://kirim setPoint
Wire.beginTransmission(slave_address[5]);
Wire.write((byte)(n));
Wire.write((byte)(jarak>>8));
Wire.write((byte)(jarak));
Wire.endTransmission();
break;
case 4://force stop pelontar
Wire.beginTransmission(slave_address[5]);
Wire.write((byte)(n));
Wire.endTransmission();
break;
case 5:
Wire.beginTransmission(slave_address[5]);
Wire.write((byte)(n));
Wire.endTransmission();
break;
}
}

void transmit_motor(int lpwm, int bpwm, int rpwm){


byte cl[3]={0,0,0};
//=========kiri
if(lpwm>0)cl[0]=1;//clockwise
else if(lpwm<0)cl[0]=2;//anticlockwise
else cl[0]=0;
//=========tengah
if(bpwm>0)cl[1]=1;//clockwise
else if(bpwm<0)cl[1]=2;//anticlockwise
else cl[1]=0;
//=========kanan
if(rpwm>0)cl[2]=1;//clockwise
else if(rpwm<0)cl[2]=2;//anticlockwise
else cl[2]=0;
//===========kirim ke motor kiri===========
for (int x=0;x<3;x++){
Wire.beginTransmission(slave_address[0]);
Wire.write((byte)(cl[2]));
Wire.write((byte)(abs(rpwm)>>8));
Wire.write((byte)(abs(rpwm)));
Wire.endTransmission();}
//===========kirim ke motor belakang=======
Wire.beginTransmission(slave_address[1]);
Wire.write((byte)(cl[1]));
Wire.write((byte)(abs(bpwm)>>8));
Wire.write((byte)(abs(bpwm)));
Wire.endTransmission();
//===========kirim ke motor kanan==========
Wire.beginTransmission(slave_address[2]);
Wire.write((byte)(cl[0]));
Wire.write((byte)(abs(lpwm)>>8));
Wire.write((byte)(abs(lpwm)));
Wire.endTransmission();
}

//===============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

extern volatile int enc[2], kp_temp, jarak;


extern volatile float kp, range;

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;

LiquidCrystal lcd(50, 48, 44, 42, 40, 38); //RS EN D4 D4 D6 D7

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 lcd_init(byte x, byte y){


lcd.begin(x,y);
}

void lcd_putsf(String words) {


lcd.print(words);
}

void clear_screen() {
lcd.clear();
}

void lcd_gotoxy(byte x, byte y) {


lcd.setCursor(x, y);
}

void lcd_print(String comment) {


lcd.print(comment);
}

void lcd_write(byte pos) {


lcd.write(byte(pos));
}

void lcd_puts(int num) {


lcd.print(num);
}

void lcd_puts_float(float num){


lcd.print(num);
}

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

#define lmp_on digitalWrite(lcd_lmp,HIGH)


#define lmp_off digitalWrite(lcd_lmp,LOW)
#define tb_back digitalRead(pintombol[0])==HIGH //a10 BACK
#define tb_enter digitalRead(pintombol[1])==HIGH //A11 ENTER
#define tb_bawah digitalRead(pintombol[2])==HIGH //A12
#define tb_kanan digitalRead(pintombol[3])==HIGH //A13 KANAN
#define tb_kiri digitalRead(pintombol[4])==HIGH //A14 KIRI
#define tb_atas digitalRead(pintombol[5])==HIGH //A15//A11
#define lcd_lmp 40
#define limit_sw 41

extern volatile byte pintombol[7];

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;

#define silang ps2x.Button(PSB_BLUE)


#define kotak ps2x.ButtonPressed(PSB_PINK)
#define bunder ps2x.ButtonPressed(PSB_RED)
#define segitiga ps2x.Button(PSB_GREEN)
#define up ps2x.Button(PSB_PAD_UP)
#define left ps2x.Button(PSB_PAD_LEFT)
#define right ps2x.Button(PSB_PAD_RIGHT)
#define down ps2x.Button(PSB_PAD_DOWN)
#define start ps2x.ButtonPressed(PSB_START)
#define select ps2x.ButtonPressed(PSB_SELECT)
#define L1 ps2x.Button(PSB_L1)
#define L2 ps2x.ButtonPressed(PSB_L2)
#define R1 ps2x.Button(PSB_R1)
#define R2 ps2x.ButtonPressed(PSB_R2)

volatile int code = 0;


volatile int l[9] = { 150,-150,-200, 200, -135, 135, 0, 200,
-200};
volatile int m[9] = {0 , 0 , 360,-360, -135, 135, 0, 0, 0};
volatile int r[9] = {-150, 150,-200, 200, -135, 135, 0, -200,
200};

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

extern volatile int code;


extern volatile int l[9], m[9], r[9];

int scan_tombol();
void scan_joystick();
void init_joystick();

#endif

 Roshandler.cpp

#include "roshandler.h"
#include "i2cdriver.h"
#include "bno_055.h"

volatile float odom[3] = {0. , 0. , 0.};


volatile float u_odom[3] = { 0. , 0., 0.};
volatile int w_motor[3] = { 0 , 0, 0};

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 pose_callback(const geometry_msgs::Vector3 & dat){


odom[0] = dat.x;
odom[1] = dat.y;
odom[2] = dat.z;
}

void pwm_callback(const geometry_msgs::Vector3 & dat){


w_motor[0] = dat.x; //motor belakang
w_motor[1] = dat.y; //motor kiri
w_motor[2] = dat.z; //motor kanan
}

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>

extern volatile float odom[3], u_odom[3];


extern volatile int w_motor[3];

void pose_callback(const geometry_msgs::Vector3 & dat);


void pwm_callback(const geometry_msgs::Vector3 & dat);
void publish_encoder();
void publish_imu();
void publish_pose();
void init_ros();
void ros_routine();

#endif

 Timer.cpp

#ifndef timer_cpp
#define timer_cpp
#include <Arduino.h>
#include <Wire.h>
#include "timer.h"

#define prescaler 256


#define f_cpu 16000000

int start = 0;
volatile bool tim_ovf = false;

ISR(TIMER1_OVF_vect){
tim_ovf = true;
TCNT1 = start;
}

void init_timer(int milsec){


start = 65535 - (milsec * (f_cpu / 1000) / prescaler);
TCCR1A = 0;
TCCR1B = (1<<CS12) | (0<<CS11) | (0<<CS10);
TCNT1 = start;
TIMSK1 |= (1<<TOIE1);
sei();
tim_ovf = false;
}

#endif

 Timer.h
#ifndef TIMER_H
#define TIMER_H

extern volatile bool tim_ovf;

void init_timer(int milsec);

#endif

 Robot pelontar.launch

#include <Wire.h>
#include <Encoder.h>

Encoder enc(2,3);

//#define defSpd 806


#define g 9.8
#define th 1.1338
//#define th 0.959
//#define th 0.785
#define cog_robot 3.0
#define r 0.4
#define max_enc 27

int oldPos = -999, newPos = 0, lastPos = 0, kp_temp = 0,


range_temp = 0, pwmVal = 0, counter = 0, pwmOut = 0, defSpd = 0;
float kp = 6, range = 0.0, last_range = 0, rpm = 0, pv = 0.0,
last_pv = 0, last_sp = 0, sp = 0.0, pv_throw = 0.0, h_robot =
0.27, t_max = 0;
float x_max = 0.0, Vo = 0.0, error = 0.0, last_error = 0.0, pwmAdd
= 0.0;
byte command = 0, code = 0;
bool tim_ovf = false, starting;

ISR(TIMER2_OVF_vect){//ISR interupsi timer1 ketika OVF


if(++counter>5){
tim_ovf = true;
rpm = ((newPos - lastPos)*1200.0)/133.0;
lastPos = newPos;
counter = 0;
pv = rpm;
pwmOut = control_p();
}
TCNT2 = 100;
}

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;
}
}

void analogWrite10(unsigned char pin, int pwm){


switch(pin){
case 9 : OCR1A = pwm;break;
case 10: OCR1B = pwm;break;
}
}

void motor(int pwm){


if(pwm>1023)pwm=1023;
//Serial.print("\t");Serial.println(pwm);
if(pwm>0){//forward
analogWrite10(9, pwm);//pwm
analogWrite10(10, 0);//low
//analogWrite(9, pwm);//pwm
//analogWrite(10, 0);//low
}
else if(pwm<0){//backward
analogWrite10(9, 0);
analogWrite10(10, abs(pwm));
//analogWrite(9, 0);
//analogWrite(10, abs(pwm));
}
else {
analogWrite10(9, 0);
analogWrite10(10, 0);
//analogWrite(9, 0);
//analogWrite(10, 0);
}
}

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;
}

Anda mungkin juga menyukai