Upload
vonhi
View
232
Download
0
Embed Size (px)
Citation preview
i
TUGAS AKHIR
FLIGHT CONTROLLER PADA SISTEM QUADCOPTER
MENGGUNAKAN SENSOR IMU (INERTIAL
MEASUREMENT UNIT) BERBASIS MIKROKONTROLLER
ATMEGA 2560
Diajukan untuk memenuhi salah satu syarat
Memperoleh gelar Sarjana Teknik pada
Program Studi Teknik Elektro
Fakultas Sains dan Teknologi Universitas Sanata Dharma
disusun oleh :
RISHA ANUGERAH NENU LEMA
NIM : 125114025
JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ii
FINAL PROJECT
FLIGHT CONTROLLER ON QUADCOPTER SYSTEM
USING SENSOR IMU (INERTIAL MEASUREMENT UNIT)
BASED MICROCONTROLLER ATMEGA 2560
In partial fulfillment of requirements
for the degree of Sarjana Teknik
Department of Electrical Engineering
Faculty of Science and Technology, Sanata Dharma University
RISHA ANUGERAH NENU LEMA
NIM : 125114025
DEPARTMENT OF ELECTRICAL ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
LEMBAR PERSETUJUAN
TUGAS AKHIR
FLIGHT CONTROLLER PADA SISTEM QUADCOPTER
MENGGUNAKAN SENSOR IMU (INERTIAL
MEASUREMENT UNIT) BERBASIS MIKROKONTROLLER
ATMEGA 2560
oleh :
RISHA ANUGERAH NENU LEMA
NIM : 125114025
telah disetujui oleh :
Pembimbing
Martanto, S.T., M.T. Tanggal : 19 Juli 2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
LEMBAR PENGESAHAN
TUGAS AKHIR
FLIGHT CONTROLLER PADA SISTEM QUADCOPTER
MENGGUNAKAN SENSOR IMU (INERTIAL
MEASUREMENT UNIT) BERBASIS MIKROKONTROLLER
ATMEGA 2560
Disusun oleh :
RISHA ANUGERAH NENU LEMA
NIM : 125114025
Telah dipertahankan di depan tim penguji
pada tanggal 26 Juli 2016
Dan dinyatakan memenuhi syarat
Susunan Tim Penguji :
Nama Lengkap Tanda Tangan
Ketua : Petrus Setyo Prabowo, S.T., M.T. _______________
Sekretaris : Martanto, S.T., M.T. _______________
Anggota : Ir. Tjendro, M.Kom. _______________
Yogyakarta,
Fakultas Sains dan Teknologi
Universitas Sanata Dharma
Dekan,
Sudi Mungkasi, Ph.D.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
LEMBAR PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa tugas akhir ini tidak memuat karya
atau bagian karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka
sebagaimana layaknya karya ilmiah.
Yogyakarta, 29 Juni 2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
MOTTO :
“TAKUT AKAN TUHAN ADALAH PERMULAAN PENGETAHUAN” - AMSAL 1:7a –
Skripsi ini kupersembahkan untuk, Bapa, Tuhan Yesus, dan Roh kudusku yang Setia
My beloved papa dan mama My lovely sister
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vii
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA
ILMIAH UNTUK KEPENTINGAN AKADEMIS
Yang bertandatangan dibawah ini, saya mahasiswa Universitas Sanata Dharma :
Nama : RISHA ANUGERAH NENU LEMA
Nomor Mahasiswa : 125114025
Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas
Sanata Dharma karya ilmiah saya yang berjudul :
FLIGHT CONTROLLER PADA SISTEM QUADCOPTER
MENGGUNAKAN SENSOR IMU (INERTIAL
MEASUREMENT UNIT) BERBASIS MIKROKONTROLLER
ATMEGA 2560
Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada
Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk
media lain, mengelolanya dalam bentuk pangkalan data, mendistribusikan secara terbatas,
dan mempublikasikannya di Internet atau media lain untuk kepentingan akademis tanpa
perlu meminta ijin dari saya maupun memberikan royalty kepada saya selama tetap
menyantumkan nama saya sebagai penulis.
Demikian pernyataan ini yang saya buat dengan sebenarnya.
Yogyakarta, 29 Juni 2016
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
INTISARI
Untuk membuat sebuah alat elektronik atau robot, tentunya dibutuhkan sebuah otak
elektronik yang akan digunakan untuk mengontrol dan memberi perintah untuk robot itu
sendiri. Sama halnya dengan sebuah drone atau quadcopter, dibutuhkan adanya otak
elektronik atau flight controller untuk mengatur sistem dan memberi perintah ke sebuah
drone dengan menerima hasil output dari beberapa sensor yang akan digunakan sebagai data
untuk di proses di dalam flight controller itu sendiri.
Sistem ini menggunakan ATMega 2560 sebagai pusat kontrol pada flight controller.
Sensor yang digunakan adalah sensor gyro L3G4200D untuk mengukur rate sumbu x, y, z
dan sensor barometer BMP085 untuk mengukur level ketinggian pada wahana. Sistem akan
menerima pulsa berupa PWM dari perangkat receiver yang akan digunakan sebagai
pengendali navigasi wahana dari sebuah GCS (Ground Control Station). Kemudian flight
controller menggunakan kontroller PID untuk mengolah data sensor gyro dan pulsa receiver,
lalu diberikan kepada perangkat Electronic Speed Controller (ESC) sebagai driveruntuk
menggerakan keempat motor pada quacopter.
Flight Controller berhasil dibuat dan dilakukan pengujian menggunakan kontoler
PID dengan parameter Kp = 5, Ki = 0.08, dan Kd 55.5. Sistem ini sudah diuji dengan
melakukan perintah kanan – kiri, maju – mundur, dan berputar kekanan atau kekiri sesuai
dari perangkat navigasi serta tidak terbang lebih dari ketinggian yang ditetapkan.
Kata kunci : quadcopter, drone, flight controller.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
ABSTRACT
To make an electronic device or a robot, it need takes an electronic brain that will be
used to control and give orders to the robot itself. Like a drone or quadcopter, it takes their
electronic brains or flight controller to set up the system and give orders to a drone by
receiving the output from several sensors to be used as the data to be processed in the flight
controller itself.
The system uses ATMega 2560 as the main control on the flight controller. The
sensor that used is a L3G4200D gyro sensor for measuring axis rate x, y, z and BMP085
barometer sensor to measure the height of the vehicle level. The system will receive pulses
in the form of a PWM from receiver device to be used as a vehicle navigation controller in
a GCS (Ground Control Station). Then flight controllers use PID controller to process data
gyro sensor and receiverpulses, and then given to the ESC (Electronic Speed Controller) to
drive the four motors on quacopter.
Flight Controller successfully created and tested using PID controller parameters Kp
= 5, Ki = 0:08, and 55.5 Kd. This system has been tested by doing the commands right - left,
forward - backward, and rotates right or left according of navigation devices and not to fly
over the height that had been defined before.
Keywords: quadcopter, drones, flight controller.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x
KATA PENGANTAR
Syukur dan terimakasi kepada Tuhan Yesus Kristus atas segala karuniaNya sehingga
tugas akhir ini dapat diselesaikan dengan baik.
Penelitian yang berupa tugas akhir ini merupakan salah satu syarat bagi mahasiswa
Jurusan Teknik Elektro untuk memperoleh gelar Sarjana Teknik di Universitas Sanata
Dharma Yogyakarta. Penelitian ini dapat diselesaikan dengan baik atas bantuan, gagasan
dan dukungan dari berbagai pihak. Oleh karena itu, peneliti ingin mengucapkan terimakasih
kepada :
1. Sudi Mungkasi, S.Si., M.Math., Sc., Ph.D., selaku Dekan Fakultas Sains dan Teknologi
Universitas Sanata Dharma Yogyakarta.
2. Bapak Martanto, S.T., M.T., selaku Dosen Pembimbing tugas akhir yang telah banyak
meluangkan waktu untuk memberikan bimbingan.
3. Semua Dosen Teknik Elektro yang memberikan banyak ilmu dalam bidang akademis
dan softskill selama berkuliah di Universitas Sanata Dharma.
4. Papa dan Mama tercinta yang memberikan dukungannya berupa Cinta, Doa, dan Kerja
Kerasnya secara cuma - cuma.
5. Teman – Teman Elektro angkatan 2012 atas kerjasama dan kebersamaannya selama
penulis mejalani studi.
6. Teman – teman PMK Apotolos yang memberikan banyak motivasi, doa, dan harapanya.
7. Kezia Grace Kamea atas peminjaman laptopnya selama penulis merancang penelitian ini
sampai selesai.
Semoga Tuhan membalas kebaikan kalian semua.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
Peneliti sangat mengharapkan kritik dan saran yang dapat membangun serta
menyempurnakan tulisan. Semoga tugas akhir ini dapat dimanfaatkan dan dikembangkan
lebih lanjut oleh peneliti lain sehingga tulisan ini dapat lebih bermanfaat.
Yogyakarta, 29 Juni 2016
Peneliti,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
DAFTAR ISI
HALAMAN JUDUL (Bahasa Indonesia) ........................................................................... i
HALAMAN JUDUL (Bahasa Inggris) .............................................................................. ii
HALAMAN PERSETUJUAN ........................................................................................... iii
HALAMAN PENGESAHAN ............................................................................................ iv
HALAMAN PERNYATAAN KEASLIAN KARYA ....................................................... v
HALAMAN PERSEMBAHAN ......................................................................................... vi
HALAMAN PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH
UNTUK KEPENTINGAN AKADEMIS ......................................................................... vii
INTISARI .......................................................................................................................... viii
ABSTRACT .......................................................................................................................... ix
KATA PENGANTAR ......................................................................................................... x
DAFTAR ISI ...................................................................................................................... xii
DAFTAR GAMBAR ......................................................................................................... xv
DAFTAR TABEL ........................................................................................................... xviii
BAB 1 PENDAHULUAN .................................................................................................... 1
1.1. Latar Belakang ....................................................................................................... 1
1.2. Tujuan dan Manfaat ............................................................................................... 2
1.3. Batasan Masalah .................................................................................................... 2
1.4. Metode Penelitian .................................................................................................. 4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
BAB 2 DASAR TEORI ...................................................................................................... 5
2.1. Pengertian Quadcopter. ......................................................................................... 5
2.1.1. Motor Brushless ................................................................................................. 7
2.1.2. Baterai LiPo ....................................................................................................... 8
2.1.3. ESC .................................................................................................................... 9
2.1.4. Propeller .......................................................................................................... 10
2.1.5. Frame ............................................................................................................... 11
2.1.6. Flight Controller. ............................................................................................. 11
2.2. Modul Mikrokontroler ArduinoMega 2560 ........................................................ 12
2.2.1. Serial Peripheral Interface (SPI). ..................................................................... 17
2.2.2. SPCR – SPI Control Register .......................................................................... 19
2.2.3. SPSR – SPI Status Register. ............................................................................ 20
2.2.4. SPDR – SPI Data Register............................................................................... 21
2.3. 10 dof IMU (Inertial Measurement Unit) Sensor GY- 80 ................................... 22
2.3.1. Gyro Sensor L3G4200D .................................................................................. 22
2.3.2. Barometric Pressure Sensor BMP085 ............................................................. 26
2.4. Kontroler PID. ..................................................................................................... 29
2.4.1. Kendali PID Digital ......................................................................................... 31
2.5. Inter Integrated Circuit (I2C) ............................................................................... 32
BAB 3 PERANCANGAN ALAT .................................................................................... 35
3.1. Rancangan dan Pemilihan Hardware ................................................................... 36
3.2. Konstruksi Hardware ........................................................................................... 36
3.3. Perancangan Perangkat Lunak............................................................................. 39
3.3.1. Diagram Alir Program Utama ......................................................................... 39
3.3.2. Diagram Alir Subrutin Terbang ....................................................................... 43
3.3.3. Diagram Alir Subrutin Menghitung Sensor..................................................... 44
3.3.4. Diagram Alir Subrutin Menghitung PID ......................................................... 45
3.3.5. Receiver Input.................................................................................................. 47
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
BAB 4 HASIL DAN PEMBAHASAN ............................................................................ 49
4.1. Bentuk Fisik Wahana, dan Flight Controller ....................................................... 49
4.2. Pengujian Wahana ............................................................................................... 53
4.2.1. Pengujian Sistem Utama .................................................................................. 53
4.2.2. Pengujian Waktu Looping Program ................................................................ 56
4.2.3. Pengujian Receiver Input................................................................................. 56
4.2.4. Pengujian Output untuk ESC ........................................................................... 58
4.2.5. Pengujian Output PID ...................................................................................... 59
4.2.6. Pengujian Sensor Barometer ........................................................................... 63
4.2.7. Pengujian Navigasi dan Pengiriman Paket Data dari GCS ke Receiver ......... 65
4.2.8. Pengujian Baterai ............................................................................................. 66
4.2.9. Pengujian Fail Safe System ............................................................................. 67
4.3. Pembahasan Perangkat Lunak ............................................................................. 68
4.3.1. Inisialisasi ........................................................................................................ 68
4.3.2. Subrutin Terbang ............................................................................................. 69
4.3.3. Subrutin Menghitung Sensor ........................................................................... 71
4.3.4. Subrutin Menghitung PID ............................................................................... 71
4.3.5. Receiver Input.................................................................................................. 72
4.3.6. Program Penerima ........................................................................................... 72
BAB 5 KESIMPULAN DAN SARAN ............................................................................ 74
5.1. Kesimpulan .......................................................................................................... 74
5.2. Saran .................................................................................................................... 74
DAFTAR PUSTAKA ........................................................................................................ 75
LAMPIRAN ....................................................................................................................... 76
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xv
DAFTAR GAMBAR
Gambar 1.1 Model Sistem Quadcopter ................................................................................. 3
Gambar 2.1 Arah putaran baling – baling pada quadcopter.................................................. 5
Gambar 2.2 Gerakan dasar quadcopter berdasarkan kecepatan motor ................................. 6
Gambar 2.3 Contoh Motor Brushless .................................................................................... 7
Gambar 2.4 Baterai LiPo Turnigy 4000mAh 3S 30C ........................................................... 8
Gambar 2.5 ESC (Electronic Speed Controller) .................................................................. 10
Gambar 2.6 blok diagram ESC ............................................................................................ 10
Gambar 2.7 Propeller / baling-baling.................................................................................. 11
Gambar 2.8 Frame Quadcopter ........................................................................................... 11
Gambar 2.9 Flight Controller APM 2.5 .............................................................................. 12
Gambar 2.10 Penempatan Pin Arduino Mega 2560 ............................................................ 14
Gambar 2.11 Tampilan IDE Arduino .................................................................................. 16
Gambar 2.12 Hubungan Tuan dan Hamba pada Sistem Komunikasi SPI .......................... 18
Gambar 2.13 Register Kontrol SPI (SPCR) ........................................................................ 19
Gambar 2.14 Register Keadaan SPI (SPSR) ....................................................................... 20
Gambar 2.15 Register Data SPI (SPDR) ............................................................................. 21
Gambar 2.1610 dof IMU (Inertial Measurement Unit) Sensor GY- 80 .............................. 22
Gambar 2.17 Arah sudut rate sensor dan Pin Connection L3G4200D ............................... 23
Gambar 2.18 Grafik nilai ketinggian dengan tekanan udara terukur .................................. 26
Gambar 2.19 bagan alir Pengukuran suhu dan tekanan udara pada sensor BMP085 ......... 27
Gambar 2.20 Koefisien kalibrasi sensor BMP085 .............................................................. 27
Gambar 2.21 Perhitungan Suhu dan Tekanan Udara pada BMP085 .................................. 28
Gambar 2.22 Timming diagram untuk pengukuran tekanan udara ..................................... 29
Gambar 2.23 Blok diagram kontroler PID analog ............................................................... 30
Gambar 2.24 Hubungan dalam fungsi waktu antara sinyal keluaran dengan masukan untuk
kontroller PID ................................................................................................. 30
Gambar 2.25 Blok diagram kendali digital ......................................................................... 31
Gambar 2.26 Kondisi Sinyal Start dan Stop ........................................................................ 33
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvi
Gambar 2.27 Sinyal ACK dan NACK ................................................................................ 33
Gambar 2.28 Transfer Bit pada I2C Bus .............................................................................. 34
Gambar 3.1 Diagram blok keseluruhan Flight Controller pada sistem quadcopter
menggunakan sensor IMU (Inertial Measurement Unit) berbasis
Mikrokontroller ATMEGA 2560 .................................................................... 35
Gambar 3.2 Bentuk Fisik Rancangan Hardware Quadcopter menggunakan sensor IMU
(Inertial Measurement Unit) berbasis Mikrokontroller ATMEGA 2560 ....... 37
Gambar 3.3 Wiring Arduino Mega 2560, Sensor Gy 80, RFM12-433, dan ESC. .............. 38
Gambar 3.4 RFM01-433 sebagai receiver. ......................................................................... 38
Gambar 3.5 Konfigurasi ESC pada wahana ........................................................................ 40
Gambar 3.6 Diagram Alir Subrutin Menghitung Sensor ..................................................... 41
Gambar 3.7 Diagram Alir Utama Flight Controller pada sistem quadcopter menggunakan
sensor IMU berbasis Mikrokontroller ATMEGA 2560 .................................. 42
Gambar 3.8 Diagram alir subrutin Terbang......................................................................... 43
Gambar 3.9 Diagram Alir Subrutin Menghitung PID ......................................................... 45
Gambar 3.10 Blok Diagram PID sistem quadcopter ........................................................... 45
Gambar 3.11 Logika Dasar perhitungan Parameter P,I,D pada sistem kontrol PID
quadcopter ...................................................................................................... 46
Gambar 3.12 Diagram Alir Receiver Input ......................................................................... 47
Gambar 4.1 Bentuk Fisik Wahana Quadcopter................................................................... 50
Gambar 4.2 Wahana dengan Receiver RFM 12 menggunakan mikrokontroler tambahan. 51
Gambar 4.3 Rangkaian Flight Controller ............................................................................ 51
Gambar 4.4 wahana terbang dengan ketinggian 1m diatas lantai. ...................................... 53
Gambar 4.5 Wahana melakukan perintah sesuai dari perangkat navigasi pada GCS. ........ 54
Gambar 4.6 Grafik output ESC 1 saat wahana terbang. ...................................................... 55
Gambar 4.7 pulsa receiver throttle pada kondisi minimum yaitu 1000µS atau 1mS. ......... 57
Gambar 4.8 hasil perhitungan pulsa receiver (roll, pitch, throttle, yaw). ........................... 57
Gambar 4.9 output untuk setiap ESC (ESC 1, ESC 2, ESC 3, ESC 4). .............................. 59
Gambar 4.10 Pulsa Gelombang output 1200µS yang dihasilkan pin D10 untuk ESC1. ..... 60
Gambar 4.11 Akumulasi throttle dengan output pid pitch,roll,yaw. ................................... 60
Gambar 4.12 Grafik output kontroler PID pitch, roll, dan yaw........................................... 61
Gambar 4.13 Grafik output ESC pada pengujian ketinggian .............................................. 64
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvii
Gambar 4.14 Grafik output sensor barometer saat keadaan wahana diam .......................... 64
Gambar 4.15 Grafik nilai input untuk ESC 1 saat berosilasi............................................... 65
Gambar 4.16 Grafik daya angkat motor terhadap tegangan baterai. ................................... 66
Gambar 4.17 Grafik nilai output ESC terhadap tegangan baterai 3s................................... 67
Gambar 4.18 Grafik nilai output ESC terhadap tegangan baterai 2s................................... 67
Gambar 4.19 Grafik failsafe system .................................................................................... 69
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xviii
DAFTAR TABEL
Tabel 2.1 Keterangan Pin Arduino Mega 2560 R3[4]. ........................................................ 15
Tabel 2.2 Keterangan tombol pada tampilan IDE Arduino. ................................................ 17
Tabel 2.3 Hubungan Kecepatan Pulsa dengan Frekuensi Osilasi ....................................... 20
Tabel 2.4 Control Register pada Sensor Gyro [8]. .............................................................. 24
Tabel 2.5 Control Register 1 ............................................................................................... 25
Tabel 2.6 Control Register 4 ............................................................................................... 25
Tabel 2.7 nilai Control Register untuk setiap oversampling settings (osrs) ........................ 29
Tabel 3.1 Deklarasi Pin Arduino Mega 2560 ...................................................................... 39
Tabel 3.2 Batas batas output pwm untuk setiap kondisi terbang ......................................... 41
Tabel 4.1 Led Indikator pada wahana. ................................................................................ 52
Tabel 4.2 PIN I/O pada Flight Controller. .......................................................................... 52
Tabel 4.3 Waktu Looping Program ..................................................................................... 56
Tabel 4.4 Pengujian pengaruh motor dengan waktu LOW pada ESC. ............................... 58
Tabel 4.5 Hasil Pengujian untuk menentukan Kp, Ki, dan Kd ........................................... 62
Tabel 4.6 Pengaruh respon wahana terhadap waktu looping program ................................ 62
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
BAB 1
PENDAHULUAN
1.1. Latar Belakang
Perkembangan teknologi di era modern kini telah memberikan banyak keuntungan
dalam segala kebutuhan atau keperluan manusia, baik dalam bidang informasi, komunikasi,
transpotasi dan bidang-bidang lainnya. Berbagai jenis teknologi dan perlengkapan
diciptakan untuk membantu pekerjaan manusia agar lebih efektif, cepat dan mudah.
Salah satunya adalah drone atau lebih dikenal dengan wahana tanpa awak yang
berfungsi dengan kendali jarak jauh oleh pilot atau mampu mengendalikan dirinya sendiri.
Dengan adanya teknologi ini, persaingan teknologi guna pemanfaatan wahana tanpa awak
di Indonesia menjadi sudut pandang utama bagi masyarakatnya sendiri terutama mahasiswa
di Indonesia. Hal tersebut menjadi perhatian menarik untuk menjadi bahan penelitian bagi
mahasiswa untuk memahami sistem navigasi, sistem kendali, dan mikrokontroller yang
digunakan pada drone tersebut.
Penelitian ini dikhususkan untuk membuat sistem kendali menggunakan
mikrokontroller dan sensor yang digunakan dalam sebuah drone, dan memahami bagaimana
konfigurasi program yang digunakan dalam mikrokontroller.
Untuk membuat sebuah alat elektronik atau robot, tentunya dibutuhkan sebuah otak
elektronik yang akan digunakan untuk mengontrol dan memberi perintah untuk robot itu
sendiri. Sama halnya dengan sebuah drone, dibutuhkan adanya otak elektronik atau
mikrokontroller untuk mengatur sistem dan memberi perintah ke sebuah drone dengan
menerima hasil output dari beberapa sensor yang akan digunakan sebagai data untuk di
proses di dalam mikrokontroller itu sendiri.
Penelitian ini hanya dikhususkan untuk membuat program flight controller
(pengendali sistem drone) yang digunakan untuk memproses data keluaran sensor yang
digunakan pada drone yang akan di proses di mikrokontroller agar dapat membuat drone
bekerja dan terbang dengan menerima masukan dari sebuah Remote Control (RC) dari
Ground Control Station (GCS).
I
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
Penelitian ini pernah dilakukan sebelumnya dengan menggunakan mikrokontroller
Arduino Uno sebagai flight controller dengan sensor gyro pada drone[1]. Permasalahan
yang diangkat untuk penelitian ini berbeda dari penelitian yang pernah dibuat oleh orang
lain, dan juga menggunakan kontroller yang berbeda juga. Peneliti juga ingin mengetahui
lebih lanjut apakah dengan menggunakan kontroller dan sensor yang berbeda, drone mampu
bekerja dan terbang dengan baik atau tidak.
Keberhasilan Flight Controller yang diciptakan tentunya sangat memungkinkan untuk
menjadi bahan penelitian yang lain berbasis drone dengan penggunaan fungsi yang berbeda,
seperti contoh, Drone pengantar barang menggunakan sensor sensor yang lainnya guna
untuk membuat terbang drone agar jadi lebih presisi dan lebih baik. Karena dengan
memahami cara kerja program di dalam Flight Controller yang berhasil dibuat, penelitian
yang lain mampu dengan mudah melanjutkan penelitian sebelumnya yang berhasil
diciptakan.
1.2. Tujuan dan Manfaat
Tujuan dari penelitian ini :
1. Tujuan penelitian ini membuat flight controller pada sebuah drone
menggunakan mikrokontroller dan menggunakan sensor 10 dof (degree of
freedom) yang dapat bekerja dengan menerima perintah dari Remote Control
(RC).
Manfaat dari penelitian ini :
2. Manfaat dari penelitian ini sebagai perkembangan teknologi dalam bidang
kontrol pada wahana tanpa awak yang akan membantu pekerjaan manusia
dalam berbagai bidang antara lain bidang industri, pertanian, medis, pemasaran,
dan militer.
1.3. Batasan Masalah
Model sistem quadcopter dirancang seperti Gambar 1.1. Berdasarkan Gambar
tersebut, penelitian tentang sistem quadcopter dibagi menjadi tiga bagian, yaitu:
1. Ground control station pada sistem quadcopter.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
2. Flight controller pada sistem quadcopter menggunakan sensor imu (inertial
measurement unit) berbasis mikrokontroler atmega 2560.
3. Autonomous mode pada sistem quadcopter menggunakan modul gps dan
compass berbasis mikrokontroler atmega 2560.
Gambar 1.1 Model Sistem Quadcopter
Penelitian ini membatasi tentang pembuatan Flight Controller pada sistem quadcopter
dengan mode terbang secara manual dan menetapkan beberapa batasan pada perancangan
sebagai berikut :
1. Drone yang digunakan adalah jenis Quadcopter atau wahana multicopter
menggunakan 4 baling-baling.
2. Menggunakan kontrol PID untuk mengatur kestabilan wahana saat terbang.
3. Mikrokontroller yang digunakan adalah ATMEGA 2560 yang terdapat pada
Arduino Mega2560.
4. Sensor yang digunakan adalah sensor gyro L3G4200D dan barometer sensor
BMP085.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
5. Menerima sinyal dari Receiver pada Remote Control (RC) yang akan di
gunakan untuk perintah pada drone naik-turun, maju-mundur, kiri-kanan, dan
berputar ditempat.
6. Hanya memprogram mode terbang manual dan tidak memprogram mode
terbang autonomous.
7. Memprogram data telemetri yang akan dikirimkan menuju Ground Control
Station (GCS).
8. Wahana memiliki batas ketinggian terbang yaitu 20 meter yang akan diproses
berdasarkan barometer sensor.
1.4. Metode Penelitian
Langkah Langkah yang dilakukan dalam pengerjaan yaitu :
1. Mengumpulkan bahan-bahan referensi baik buku dan jurnal ilmiah yang
membahas mengenai sistem kontrol pada wahana terbang tak berawak,
multicopter/drone, dan sensor pada wahana.
2. Perancangan hardware dan software untuk perancangan desain quadcopter
dan alur jalan pada program.
3. Pembuatan hardware dan software berdasarkan desain yang telah dirancang
dan membuat berdasarkan alur program kerja.
4. Pengambilan data dengan melihat hasil pengamatan pada sistem terbang
wahana, kekuatan motor, dan kestabilan wahana untuk terbang.
5. Analisis dan penyimpulan hasil berdasarkan membandingkan hasil
pengamatan dengan perancangan yang diinginkan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
BAB 2
DASAR TEORI
2.1. Pengertian Quadcopter.
Quadcopter adalah salah satu jenis wahana tanpa awak yang memiliki empat motor
yang dilengkapi dengan empat propeller pada masing-masing motornya yang digunakan
untuk terbang dan bermanuver.
Masing-masing rotor (baling-baling dan motor penggeraknya) menghasilkan
daya angkat dan memiliki jarak yang sama terhadap pusat massa wahana. Dengan daya
angkat masing-masing rotor sebesar lebih dari seperempat berat keseluruhan,
memungkinkan quadcopter untuk terbang. Kecepatan quadrotor tergantung pada kekuatan
motor dan berat quadrotor itu sendiri.
Untuk menghindari terjadinya momen putar pada body, arah putaran baling-baling
pada setiap rotornya berbeda seperti terlihat pada Gambar 2.1. Terdapat 2 rotor yang
bergerak searah jarum jam (CW) dan 2 rotor yang bergerak berlawanan arah jarum jam
(CCW)
Gambar 2.1 Arah putaran baling – baling pada quadcopter [2].
II
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
Konfigurasi yang paling sering digunakan adalah X-quadcopter. Ketika quadcopter
sedang terbang dan melayang di udara (hovering) kecepatan putar pada setiap rotornya
adalah sama. Saat quadcopter melakukan gerakan maju, 2 buah baling-baling atau propeller
yang berada dibelakang akan berputar lebih cepat sehingga body quadcopter akan miring ke
depan. Gaya dorong yang dihasilkan keempat propeller akan mempunyai komponen gaya
ke atas dan ke depan sehingga quadcopter akan terdorong ke arah depan sambil
mempertahankan ketinggiannya. Gambar 2.2 adalah ilustrasi gerakan wahana yang
dipengaruhi oleh kecepatan propeller.
Gambar 2.2 Gerakan dasar quadcopter berdasarkan kecepatan motor[2].
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
2.1.1. Motor Brushless [10].
Motor merupakan alat penggerak Quadcopter. Pemilihan Motor disesuaikan dengan
kebutuhan, adapun yang digunakan merupakan motor brusless / outrunner type motor ( yang
berputar bagian luar ). Gambar 2.3 memperlihatkan contoh motor brushless.
Biasanya motor menggunakan ukuran KV = RPM/Volt dimana ukuran KV berbanding
lurus dengan kecepatan putar motor (rpm). Nilai kV yang rendah menunjukkan RPM yang
rendah dan Torsi ( daya angkat ) yang besar, Namun kecepatan terbangnya rendah (
dikarenakan RPM yang rendah ). Nikai kV yang tinggi menunjukkan RPM yang tinggi dan
torsi ( daya angkat ) yang rendah, Namun kecepatan terbangnya tinggi ( dikarenakan RPM
yang tinggi ).
Jumlah ikatan lilitan pada rotor sendiri berpengaruh pada besar Torsi yang dihasilkan.
Semakin banyak jumlah ikatan nya semakin Besar Torsinya dan berlaku sebaliknya. Itulah
penyebab mengapa motor dengan ukuran kecil cenderung mempunyai nilai kV yang lebih
besar ketimbang motor dengan ukuran besar.
Seri pada motor brushless sendiri merupakan besar ukuran sebuah motor.
Motor dengan ukuran 2212 berarti memiliki tinggi 22 mm dan lebar 12 mm.
Gambar 2.3 Contoh Motor Brushless.[10]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
2.1.2. Baterai LiPo
Gambar 2.4 Baterai LiPo Turnigy 4000mAh 3S 30C
LiPo adalah singakatan dari Lithium Polimer yaitu bahan utama yang digunakan
sebagai sumber daya / baterai didalam dunia Remote Control. Keuntungan baterai ini adalah
bobot yang ringan, kapasistas penyimpanan yang besar, dan tingkat discharge rate energi
yang tinggi.
Contoh pada Gambar 2.4 adalah baterai LiPo Turnigy 4000mAh 3S 30C. “4000mAh”
adalah arus yang diberikan baterai, “3S” adalah 3 Cell artinya baterai memberikan tegangan
11,1 volt didapatkan dari tiap cell-nya 3,7volt × 3 = 11,1 volt, dan “30C” adalah Discharge
rate.
Pada baterai 4000mAh dengan rating 30C maka baterai tersebut dapat menahan beban
maksimum hingga 120 Ampere. (30 × 4 ampere = 120 Ampere). artinya baterai dapat
menerima beban ESC dibawah 120 Ampere.
Untuk Discharge rate, apabila sebuah baterai dengan discharge rate 10C berate baterai
tersebut dapat di discharge 10 kali dari kapsistas baterai sebenarnya. Begitu juga 15C berate
15 kalim dan 20C berate 20 kali,dsb.
Jika beban maksimum baterai 120 Ampere maka akan sama dengan 2000mA per menit
dan energi baterai 4000mAh akan habis dalam 2 menit. Nilai ini diperoleh dengan
mengkalkulasi jumlah arus per menitnya. 4000mAh dibagi 60 menit = 66,67mA per menit.
Kemudian 66,67 × 30C = 2000mA beban per menit. Lalu bagi 4000 dengan 2000 = 2 menit.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
2.1.3. ESC[2].
ESC adalah singkatan dari Electronic Speed Controller yang berfungsi sebagai
pengendali putaran dan arah putaran motor seperti contoh Gambar 2.5 dan blok diagram
pada Gambar 2.6. Pada umumnya, untuk motor dapat berputar, remote control (RC)
memberikan pulsa sinyal min 1000µS dan pada kecepatan penuh sebesar 2000µS.
Ada 2 jenis ESC untuk Motor Brushless yaitu ESC dengan BEC dan ESC tanpa BEC
atau yang biasa diseput ESC OPTO ( opto berarti optional ). Ukurannya dihitung dengan
Ampere ( 10A, 15A, 20A, 25A, dst ) dimana ukuran tersebut terkait dengan kebutuhan
motor.
Untuk menentukan ESC yang akan digunakan sangatlah penting untuk mengetahui
kekuatan (peak current) dari motor. Kekuatan ESC yang digunakan seharusnya melebihi
kekuatan motor. Misalnya, dari data didapatkan kekuatan motor adalah 12A (sesuai dengan
datasheet motor) pada saat throttle terbuka penuh. sebaiknya ESC yang akan digunakan
adalah ESC yang berkekuatan 18A atau 20A. Jika dipaksakan menggunakan ESC 10A
kemungkinan pada saat throttle dibuka penuh, ESC akan panas bahkan terbakar.
Untuk menghitung max current (amp) dari sebuah motor dapat dilakukan dengan
persamaan 2.1 [9]:
𝑨𝒎𝒑 = 𝑾𝒂𝒕𝒕
𝑴𝒂𝒙 𝑽𝒐𝒍𝒕+
𝑾𝒂𝒕𝒕
𝑴𝒂𝒙 𝑽𝒐𝒍𝒕× 𝟏𝟎% (2.1)
Sebagai contoh sebuah motor Turnigy Multistar 2216 800Kv 14 Pole Multi Rotor
Outrunner, watt yang tertera di spesifikasi adalah 222 Watt, dengan max volt 12 volt. Dengan
menggunakan persamaan 2.1 didapatkan:
𝑨𝒎𝒑 = 𝟐𝟐𝟐 𝒘𝒂𝒕𝒕
𝟏𝟐 𝒗𝒐𝒍𝒕+ (
𝟐𝟐𝟐 𝒘𝒂𝒕𝒕
𝟏𝟐 𝒗𝒐𝒍𝒕× 𝟏𝟎%)
𝑨𝒎𝒑 = 𝟏𝟖. 𝟓 + 𝟏. 𝟖𝟓 𝑨
𝑨𝒎𝒑 = 𝟐𝟎. 𝟑𝟓 𝑨
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
Dari nilai diatas maka dapat ditentukan nilai ESC yang akan digunakan dengan
menambahkan nilai aman 10-20% dari max current, yakni: 20.35A + (20.35A x 10%) =
22.358 A, Maka ESC yang dibutuhkan adalah ESC dengan nilai 30A.
Gambar 2.5 ESC (Electronic Speed Controller)[2]
Gambar 2.6 blok diagram ESC[2]
2.1.4. Propeller[2].
Propeller adalah pasangan untuk motor. Untuk Quadcopter, Propeller yang digunakan
ada dua jenis yaitu Clock Wise (CW) / Searah jarum jam dan Counter Clock Wise (CCW) /
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
Berlawanan Arah Jarum Jam. Gambar 2.7 memperlihatkan contoh propeller 1 pasang CW
dan 1 pasang CCW.
Ukurannya pun ada beragam biasanya dituliskan dengan format XXYY misalnya
1045, 1150, 1355, dll. dimana nilai XX menunjukkan Panjang Propeller dan nilai YY
menunjukkan Nilai Pitch dari Propeller ( dalam satuan Inch ) dan untuk memilih Propeller
juga harus di sesuaikan dengan Motor yang digunakan.
Gambar 2.7 Propeller / baling-baling
2.1.5. Frame[2].
Frame penting karena merupakan tempat untuk meletakkan Komponen lain dari
Quadcopter. Untuk dapat menentukan arah depan pada sebuah quadcopter, maka biasanya
pada frame diberi bola pingpong atau dengan cara memberikan warna yang berbeda terhadap
propeller.Gambar 2.8 adalah contoh frame quadcopter bentuk “X”.
Gambar 2.8 Frame Quadcopter
2.1.6. Flight Controller.
Flight Controller adalah perangkat mikrokontroller yang digunakan dalam
Quadcopter untuk mengoperasikan wahana naik, turun, maju, mundur, dll. Di dalam dunia
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
drone, terdapat berbagai merk Flight Controller seperti KK Board, MultiWii, APM seperti
Gambar 2.9, Pixhawk, dan DJI, atau bias dengan membuat Fligth Controller buatan
menggunakan mikrokontroller.
Gambar 2.9 Flight Controller APM 2.5
2.2. Modul Mikrokontroler ArduinoMega 2560[11].
Arduino adalah sebuah platform elektronik yang open source dan memiliki situs resmi
di www.arduino.cc. Situs resmi ini memberikan banyak hal yang dapat digunakan oleh
pembaca dan pengguna seperti software Arduino yang selalu diperbaharui dan dapat diunduh
secara gratis, pengenalan produk-produk terbaru Arduino, dan penyedia referensi yang
sangat membantu saat melakukan pemrograman dengan software Arduino.
Nama Arduino tidak hanya digunakan untuk menamai board rangkaiannya saja, tetapi
juga untuk menamai bahasa dan software pemrogramannya, serta lingkungan
pemrogramannya atau yang dikenal dengan sebutan Integrated Development Environment
(IDE).
Menurut beberapa sumber referensi, Arduino memiliki beberapa keunggulan
dibandingkan dengan platform elektronik lainnya. Beberapa keunggulan tersebut antara lain:
1. Modul Arduino adalah sebuah platform elektronik yang open source yang
berbasis pada kemudahan dan fleksibilitas penggunaan hardware dan
software. Artinya pembaca dapat mengunduh software dan Gambar
rangkaian Arduino tanpa harus membayar kepada pembuat Arduino.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
2. IDE Arduino merupakan multiplatform yang dapat dijalankan di berbagai
sistem operasi seperti Windows, Macintosh, dan Linux.
3. Modul Arduino mudah digunakan sebagai sebuah platform komputasi fisik
yang sederhana serta menerapkan bahasa pemrograman processing.
4. Modul Arduino merupakan platform interaktif karena dapat mengambil
masukan dari berbagai tombol atau sensor, mampu mengendalikan berbagai
lampu, motor, dan output fisik lainnya.
5. Modul Arduino dapat berdiri sendiri, atau dapat melakukan komunikasi
dengan software yang berjalan di komputer seperti Flash, Processing, dan
MaxMSP.
6. Pemrograman Arduino menggunakan kabel yang terhubung dengan port
Universal Serial Bus (USB), bukan port serial. Fitur ini sangat berguna
karena banyak komputer sekarang ini tidak memiliki port serial.
7. Biaya yang dibutuhkan untuk membeli modul Arduino cukup murah,
sehingga tidak terlalu menakutkan untuk membuat kesalahan.
8. Proyek Arduino ini dikembangkan dalam dunia pendidikan, sehingga bagi
pemula akan lebih cepat dan mudah untuk mempelajarinya.
9. Proyek Arduino memiliki banyak pengguna dan komunitas di internet yang
dapat membantu setiap kesulitan yang dihadapi.
Arduino sudah memproduksi begitu banyak sistem minimum. Beberapa diantaranya
adalah Arduino Uno, Arduino Leonardo, Arduino Due, Arduino Mega 2560, Arduino Mega
ADK, Arduino Mikro, Arduino Duemilanove, Arduino Nano. Dalam pembuatan tugas Akhir
ini, akan digunakan salah satu produk Arduino yang dikenal dengan nama Arduino Mega
2560 R3.
Arduino Mega 2560 seperti yang ditunjukkan pada Gambar 2.9 adalah sebuah board
mikrokontroler yang berbasis pada IC ATmega2560.Arduino Mega 2560 memiliki 54 buah
pin digital yang dapat digunakan sebagai input ataupun output. Dari 54 buah pin tersebut, 15
pin diantaranya dapat digunakan sebagai output Pulse Width Modulation (PWM), memiliki
16 buah pin analog input, 4 buah pin UART yang berfungsi sebagai port serial hardware,
sebuah osilator kristal 16 MHz, sebuah jack female untuk koneksi USB, jack female adaptor,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
dan sebuah tombol reset. Alokasi penempatan pin dan keterangan masing-masing pin
ditunjukkan melalui Gambar 2.10 dan Tabel 2.1.
Dalam penelitian ini IC mikrokontroler yang digunakan adalah ATmega 2560.
Mikrokontroler ATmega 2560 berbentuk persegi dengan jumlah pin sebanyak 100 buah pin.
ATmega 2560 memiliki kemampuan untuk mengeksekusi instruksi program dalam satu
siklus clock tunggal, sehingga ATmega 2560 mampu mengoptimalkan konsumsi daya
dibandingkan kecepatan pemrosesan program.
Gambar 2.10 Penempatan Pin Arduino Mega 2560
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
Tabel 2.1 Keterangan Pin Arduino Mega 2560 R3[4].
No. Parameter Keterangan
1 ATmega 2560 IC mikrokontroler yang digunakan pada Arduino Mega 2560.
2 Jack USB Untuk komunikasi mikrokontroler dengan PC
3
Jack Adaptor Masukan power eksternal bila Arduino bekerja mandiri (tanpa
komunikasi dengan PC melalui kabel serial USB).
4
Tombol Reset Tombol reset internal yang digunakan untuk mereset modul
Arduino.
5 Pin Analog Menerima input dari perangkat analog lainnya.
1. Vin = Masukan tegangan input bagi Arduino ketika
menggunakan dumber daya eksternal.
2. 5 V = Sumber tegangan yang dihasilkan regulator internal
boardArduino.
6 Pin Power 3. 3,3 V = Sumber tegangan yang dihasilkan regulator internal
boardArduino. Arus maksimal pada pin ini adalah 50 mA.
4. GND = Pin ground dari regulator tegangan board Arduino.
5. IOREF = Tegangan Referensi.
6. AREF = Tegangan Referensi untuk input analog.
7 Light-Emitting Pin digital 13 merupakan pin yang terkoneksi dengan LED
Diode(LED)
internal Arduino.
8
Pin PWM Arduino Mega menyediakan 8 bit output PWM. Gunakan
fungsi analogWrite() untuk mengaktifkan pin PWM ini.
Digunakan untuk menerima dan mengirimkan data serial TTL
9 Pin Serial (Receiver(Rx), Transmitter(Tx)). Pin 0 dan 1 sudah terhubung
kepada pin serial USB to TTL sesuai dengan pin ATmega.
10 Pin Two Wire Terdiri dari Serial Data Line (SDA) dan Serial Interface Clock
Interface (TWI)
(SCL).
11
Pin Digital Pin yang digunakan untuk menerima input digital dan memberi
output berbentuk digital (0 dan 1 atau low dan high)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
Tabel 2.1 (lanjutan) Keterangan Pin Arduino Mega 2560 R3[4].
Gambar 2.11 Tampilan IDE Arduino
No. Parameter Keterangan
Terdiri dari 4 buah Pin :
1. Master In Slave Out (MISO)
Jalur slave untuk mengirimkan data ke Master.
2. Master Out Slave In (MOSI)
Pin Serial Jalur master untuk mengirimkan data ke peralatan.
12
Peripheral
3. Serial Clock (SCK)
Interface(SPI) Clock yang berfungsi untuk memberikan denyut pulsa ketika
sedang menyinkronkan transmisi data oleh master
4. Slave Select (SS)
Pin untuk memilih jalur slave pada perangkat tertentu.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
Tabel 2.2 Keterangan tombol pada tampilan IDE Arduino.
No Tombol Nama Fungsi
1
Verify
Menguji apakah ada kesalahan pada
program atau sketch. Apabila sketch
sudah benar, maka sketch tersebut
akan dikompilasi. Kompilasi adalah
proses mengubah kode pada
program ke dalam kode mesin.
2
Upload Mengirimkan kode mesin hasil
kompilasi ke board Arduino
3 New Membuat sketch baru
4
Open Membuka sketch yang sudah ada
5 Save Menyimpan sketch
6 Serial
Monitor
menampilkan data yang dikirim dan
diterima melalui komunikasi serial.
IDE Arduino membutuhkan beberapa pengaturan yang digunakan untuk mendeteksi
board Arduino yang sudah dihubungkan ke computer. Beberapa pengaturan tersebut adalah
mengatur jenis board yang digunakan sesuai dengan board yang terpasang dan mengatur
jalur komunikasi data melalui perintah Serial Port seperti terlihat pada Gambar 2.11 dan
table 2.2. Kedua pengaturan tersebut dapat ditemukan pada pull down menu Tools.
2.2.1. Serial Peripheral Interface (SPI).
SPI merupakan salah satu jenis transfer data serial tidak sinkron yang menghubungkan
dua atau lebih perangkat mikrokontroler, dimana satu perangkat berperan sebagai tuan
(master) dan perangkat lainnya sebagai hamba (slave). Hubungan antara tuan dan hamba
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
dapat dilihat pada Gambar 2.12. Terdapat duah buah register geser (shift register) dan
sebuah pembangkit pulsa yang terhubung pada empat jalur yaitu [3]:
1. SCLK yang berfungsi untuk mengatur pulsa tuan dan hamba.
2. MOSI (Master Output Slave Input) yang merupakan jalur data dari tuan
menuju hamba.
3. MISO (Master Input Slave Output) yang merupakan jalur data dari hamba
menuju tuan.
4. SS (Select Slave) yang berfungsi mengaktifkan hamba.
Gambar 2.12 Hubungan Tuan dan Hamba pada Sistem Komunikasi SPI [3]
Komunikasi SPI merupakan salah satu jenis komunikasi serial. Pada komunikasi serial
data ditransmisikan satu per satu bit, sehingga data yang masuk dan keluar di tuan atau
hamba bergeser satu per satu bit seiring dengan masukan pulsa dari pembangkit pulsa dan
akan berakhir saat telah mencapai 8 kali pergeseran (8 bit) [3].
Pengaturan komunikasi SPI pada ATmega 2560 melibatkan beberapa register, seperti:
SPCR, SPSR, dan SPDT.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
2.2.2. SPCR – SPI Control Register
Gambar 2.13 Register Kontrol SPI (SPCR) [3].
Register Kontrol SPI pada Gambar 2.13 terdiri dari delapan buah bit yang masing-
masing memiliki fungsi dan penjelasan sebagai berikut [3]:
1. Bit 7 – SPIE: SPI Interrupt Enable. SPIE merupakan bit yang mengaktifkan
fasilitas interupsi pada SPI.
2. Bit 6 – SPE: SPI Enable. SPE merupakan bit yang dapat mengaktifkan atau
menonaktifkan komunikasi SPI. Jika SPE bernilai 1 (tinggi) maka
komunikasi SPI akan aktif dan bisa digunakan, sedangkan jika bernilai 0
(rendah) maka komunikasi SPI tidak aktif.
3. Bit 5 – DORD: Data Order. DORD merupakan bit yang mengatur urutan
pengiriman data saat komunikasi berjalan. Jika DORD bernilai 1 maka urutan
pengiriman dimulai dari bit LSB (Low Sign Bit) sedangkan jika bernilai 0
maka urutan pengiriman data dimulai dari bit MSB (Most Sign Bit).
4. Bit 4 – MSTR: Master or Slave Select.MSTR merupakan bit yang mengatur
mikrokontroler bertindak sebagai tuan atau hamba. Jika MSTR bernilai 1
maka mikrokontroler bertindak sebagai tuan, sedangkan jika bernilai 0 maka
bertindak sebagai hamba. Bit MSTR tidak akan dapat diatur jika pin SS di
konfigurasi sebagai masukan, karena apabila pin SS di konfigurasi sebagai
masukan maka penentuan mikrokontroler bertindak sebagai tuan atau hamba
dilakukan dengan cara membaca level tegangan pada pin SS.
5. Bit 3 – CPOL: Clock Polarity.CPOL merupakan bit yang mengatur jenis
tepian pulsa yang digunakan sebagai acuan pembacaan data. Jika CPOL
bernilai 1 maka pembacaan data dilakukan setiap tepian turun, sedangkan jika
bernilai 0 pembacaan data setiap tepian naik.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
6. Bit 2 – CPHA: Clock Phase.CPHA merupakan bit yang mengatur
pembacaan data pada fase tepian pulsa awal atau akhir. Jika CPHA bernilai
1 maka pembacaan data dilakukan saat fase pulsa akhir, sedangkan jika
bernilai 0 maka pembacaan data saat fase awal.
7. Bit 1, 0 - SPR1, SPR0: SPI clock Rate Select 1 and 0. Kedua bit ini mengatur
kecepatan pulsa untuk komunikasi pada table 2.3. Pengaturan ini dilakukan
hanya pada saat mikrokontroler bertindak sebagai tuan. Sehingga
mikrokontroler yang bertindak sebagai hamba hanya bisa menerima pulsa
saja, tidak dapat menghasilkan pulsa sendiri. Keadaan seperti ini yang biasa
disebut dengan sinkronus, yang artinya kedua perangkat memiliki pulsa yang
sama.
Tabel 2.3 Hubungan Kecepatan Pulsa dengan Frekuensi Osilasi[3].
2.2.3. SPSR – SPI Status Register.
Gambar 2.14 Register Keadaan SPI (SPSR)[3].
SPI2x SPR1 SPR0 Frekuensi Pulsa
0 0 0 fosc/4
0 0 1 fosc/16
0 1 0 fosc/64
0 1 1 fosc/128
1 0 0 fosc/2
1 0 1 fosc/8
1 1 0 fosc/32
1 1 1 fosc/64
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
1. Bit 7 – SPIF: SPI Interrupt Flag. SPIF merupakan bit yang memberikan
tanda jika proses pengiriman data 1 byte (8 bit) sudah selesai, karena
pengirimian data dalam komunikasi SPI dilakukan per 8 bit. Jika proses
pengiriman data telah selesai maka SPIF akan bernilai 1 (tinggi), dan saat
proses pengiriman data belum genap 8 bit, maka SPIF akan selalu bernilai 0
(rendah).
2. Bit 6 – WCOL: Write Collision Flag. WCOL merupakan bit yang
memberikan tanda jika terjadi proses pembacaan data pada register data SPI
(SPDR) selama komunikasi berjalan. Selama proses pembacaan data
berlangsung bit WCOL akan bernilai 1.
3. Bit 5:1 – Reserved Bit. Bit-bit ini diabaikan (tidak digunakan dalam
komunikasi SPI) dan harus selalu bernilai 0 (rendah).
4. Bit 0 – SPI2X: Double SPI Speed Bit. SPI2X merupakan bit yang
menjadikan kecepatan pulsa menjadi dua kali lipat lebih cepat, seperti terlihat
pada Tabel 2. Hal ini berarti kecepatan komunikasi bertambah cepat dua kali
lipat.
2.2.4. SPDR – SPI Data Register.
Gambar 2.15 Register Data SPI (SPDR) [8]
Register data SPI merupakan register yang digunakan untuk menyimpan data yang
dikirim atau diterima pada komunikasi SPI pada Gambar 2.15.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
2.3. 10 dof IMU (Inertial Measurement Unit) Sensor GY- 80
Gambar 2.1610 dof IMU (Inertial Measurement Unit) Sensor GY- 80
Modul sensor 10 dof IMU (Inertial Measurement Unit) Sensor GY- 80 terdiri dari
beberapa 4 sensor yaitu, 3 axis Gyro, 3 axis Accelerometer, 3 axis Magnetometer, dan
Barometer terlihat pada Gambar 2.16. Semua sensor tersebut berkomunikasi menggunakan
protokol I2C bus sehingga dibutuhkan 4 jalur yaitu :
1. GND – Ground
2. Supply voltage atau tegangan sumber +3.5 volt dan +5 volt.
3. SCL untuk I2C clock.
4. SDA untuk I2C data.
2.3.1. Gyro Sensor L3G4200D
Gyro Sensor L3G4200D memiliki 3-axis angular rate atau rate 3 sudut sumbu XYZ,
yang artinya sensor akan memberikan data jika ada perbandingan perubahan sensor terhadap
sumbu gerak X,Y,dan Z. Gambar 2.17 memperlihatkan 3-axis angular rate pada sensor dan
pin koneksi sensor.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
Gambar 2.17 Arah sudut rate sensor dan Pin Connection L3G4200D[8].
Adapun beberapa fitur yang dimiliki Gyro Sensor L3G4200D adalah sebagai berikut
[8]:
1. Memiliki 3 pilihan skala dengan bandwidth ± 250 / ± 500 / ± 2.000 dps.
2. I2C/SPI komunikasi digital output.
3. 16 bit-rate data output.
4. Tegangan supply 2.4 volt sampai 3.6 volt.
5. Bekerja pada suhu -40°C sampai +85°C.
Tabel 2.3 menjelaskan 8 bit register yang terdapat pada Gyro Sensor L3G4200D.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
Tabel 2.4 Control Register pada Sensor Gyro [8].
Alamat SAD (Slave Address) 110100Xb juga dapat digunakan untuk memulai
komunikasi dengan sensor gyro dengan cara pin SDO dapat digunakan untuk memodifikasi
LSB slave address. Pin SDO akan terhubung dengan sumber tegangan apabila nilai LSB “1”
(address 1101001b). sebaliknya SDO akan terhubung ke ground apabila nilai LSB “0”
(address 1101000b).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
Sensor Gyro L3G4200 memiliki 3-axis angular rate data, data ini diperoleh dengan
cara mengaktifkan Control Register 1 pada sensor itu sendiri. Register mapping-nya bisa
dilihat pada table 2.4. Tabel 2.5 memperlihatkan Control Register 1
Tabel 2.5 Control Register 1
Zen, Yen, dan Xen merupakan Z axis enable, Y axis enable, dan X axis enable. Nilai
Zen, Yen, dan Xen akan enable jika diberi nilai “1”, sedangkan Pada Control Register 1 ini
mempunyai nilai default 00000111b jadi tidak perlu diubah.
Karena data transfer angular rate sebesar 2byte, maka harus dipastikan data sebesar
2byte tersebut berasal dari waktu yang sama dengan cara mengatur BDU bit (Block Data
Update) = “1”. BDU bit ini dapat diatur dengan cara merubah Control Register 4 yang
semula defaultnya 00000000b menjadi 10000000b. dapat dilihat pada table 2.6.
Tabel 2.6 Control Register 4
Fungsi dari BDU bit adalah membatasi pengiriman output register untuk sumbu X,Y,Z
agar tidak terupdate sampai pembacaan data selesai.
Setelah selesai mengaktifkan fungsi BDU bit, Sensor Gyro L3G4200D perlu di
kalibrasi untuk mendapatkan nilai offset yang akan digunakan untuk pengukuran saat
pesawat diterbangkan.
Pada Tabel 2.3 memperlihatkan bahwa masing masing sumbu angular rate X,Y,Z
memiliki 2 alamat register. Selanjutnya, program berkomunikasi dengan gyro untuk dapat
membaca data dan mendapatkan data dari 28hexa atau 40desimal untuk register data output
X, agar memperoleh data X,Y,Z yang masing masing memiliki 2 register address
dibutuhkan autoincrement dengan cara menambah MSB alamat register output = “1” . Jadi
alamat register output berubah dari 40desimal menjadi (40+128)decimal = 168desimal.
Gambar 3.4 adalah bagan alir penggunaan data output sesnsor Gyro L3G4200D pada
Flight Controller. Proses dimulai dengan pembacaan data pada alamat register output sensor
sumbu X,Y,Z dari 28h sampai 6 byte berikutnya menggunakan fungsi autoincrement.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
Selanjutnya program meminta pengiriman 6 register data menggunakan fungsi loop
while, untuk dapat mengambil data satu persatu. Dengan demikian didapatkan data berupa
angular rate sumbu X sebagai roll, sumbu Y sebagai pitch, dan sumbu Z sebagai yaw
2.3.2. Barometric Pressure Sensor BMP085
Barometric Pressure Sensor BMP085 adalah sebuah sensor tekanan udara yang
digunakan untuk mengetahui level ketinggian pada wahana atau drone. Dengan mengetahui
tekanan udara permukaan air laut, ketinggian dapat diperoleh dengan rumus[6] :
𝒌𝒆𝒕𝒊𝒏𝒈𝒈𝒊𝒂𝒏 = 𝟒𝟒𝟑𝟑𝟎 × (𝟏 − (𝑷
𝑷𝒐)
𝟏
𝟓.𝟐𝟓𝟓) (2.2)
Dengan Po = 1013.25hPa
Jadi setiap perubahan tekanan udara = 1hPa sebanding dengan 8.43 meter dari
permukaan laut. Lihat Gambar 2.18
Gambar 2.18 Grafik nilai ketinggian dengan tekanan udara terukur[6].
Gambar 2.19 memperlihatkan bagan alir cara mengukur suhu dan tekanan udara pada
sensor BMP085. Selanjutnya setiap bagian bagian pada bagan alir tersebut akan
didefinisikan pada Gambar 2.21.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
Gambar 2.19 bagan alir Pengukuran suhu dan tekanan udara pada sensor BMP085
[5].
Kalibrasi dibutuhkan untuk mendapatkan variable nilai yang akan digunakan untuk
perhitungan tekanan udara. Kalibrasi ini mempunyai beberapa koefisien yang memiliki 16
bit data dan 2 register address. Gambar 2.20 adalah koefisien kalibrasi pada sensor BMP085
Gambar 2.20 Koefisien kalibrasi sensor BMP085[5]
Pada Gambar 2.19 menunjukan algoritma untuk pengukuran tekanan udara dan suhu.
Hasilnya perhitungan suhu dan tekanan udara setiap 1 Pa (= 0.01hPa = 0.01mbar) dan suhu
setiap 0.01°C.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
Gambar 2.21 Perhitungan Suhu dan Tekanan Udara pada BMP085[5].
Pengukuran suhu dan tekanan udara dapat dilihat pada Gambar 2.22. Setelah kondisi
start, Master mengirim alamat write, register address dan control register data. Selanjutnya
BMP085 mengirim acknowledgement (ACKS) setiap 8 bit data ketika data diterima. Lalu
Master mengirim kondisi Stop setelah ACKS terakhir.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
Gambar 2.22 Timming diagram untuk pengukuran tekanan udara[5].
Keterangan :
S Start
P Stop
ACKS Acknowledge_by_slave
ACKM Acknowledge_by_Master
NACKM Not_Acknowledge_by_Master
Tabel 2.5 digunakan untuk mengatur kecepatan sampling pada pengukuran tekanan
udara. Kecepatan sampling ini bisa diatur dengan mengatur control register sesuai yang ada
pada table tersebut.
Tabel 2.7 nilai Control Register untuk setiap oversampling settings (osrs)[5].
2.4. Kontroler PID.
Setiap kekurangan dan kelebihan dari masing-masing kontroler P, I dan D dapat saling
menutupi dengan menggabungkan ketiganya secara paralel menjadi kontroler proposional
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
plus integral plus diferensial (kontroller PID) seperti pada Gambar 2.23. Elemen-elemen
kontroller P, I dan D masing-masing secara keseluruhan bertujuan untuk mempercepat reaksi
sebuah sistem, menghilangkan offset dan menghasilkan perubahan awal yang besar.
Gambar 2.23 Blok diagram kontroler PID analog
Keluaran kontroller PID merupakan jumlahan dari keluaran kontroler proporsional,
keluaran kontroler integral. Gambar 2.24 menunjukkan hubungan tersebut
Gambar 2.24 Hubungan dalam fungsi waktu antara sinyal keluaran dengan masukan
untuk kontroller PID
Karakteristik kontroler PID sangat dipengaruhi oleh kontribusi besar dari ketiga
parameter P, I dan D. Penyetelan konstanta Kp, Ti, dan Td akan mengakibatkan penonjolan
sifat dari masing-masing elemen. Satu atau dua dari ketiga konstanta tersebut dapat disetel
lebih menonjol dibanding yang lain. Konstanta yang menonjol itulah akan memberikan
kontribusi pengaruh pada respon sistem secara keseluruhan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
2.4.1. Kendali PID Digital[7].
Kontroler adalah komponen yang berfungsi mengurangi sinyal kesalahan . Tipe
kontroler yang paling populer adalah kontroler PID . Elemen – elemen kontroler P , I dan D
masing – masing secara keseluruhan bertujuan untuk mempercepat reaksi sebuah sistem ,
menghilangkan offset dan menghasilkan perubahan awal yang besar.
Fungsi utama dari kontroler digital sama dengan kontroler analog .Perbedaan yang
utama yaitu konroler digital tidak dapat menerima sinyal analog langsung. Dengan
keterbatasan tersebut maka diperlukan ADC untuk mengubah sinyal analog ke bentuk digital
dalam bentuk bilangan biner dan sebaliknya DAC untuk mengubah data digital menjadi data
analog. Gambar 2.25 memperlihatkan blok diagram sebuah kendali digital.
Pada kendali PID digital untuk memperoses algoritma PID dengan cara yang efisien
maka proses dari integral dan diferensial diubah ke dalam bentuk aljabar yang ringkas.
Bentuk aljabar yang digunakan adalah perkalian , pembagian , penjumlahan dan
pengurangan dengan mengacu pada algoritma kontroler analog.
Gambar 2.25 Blok diagram kendali digital
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
Transfer function dari sistem berdasarkan Gambar 2.25 di atas
𝑢
𝑠(𝑠) = 𝐻(𝑠) = 𝐾𝑝 (1 +
1
𝑇𝑖𝑠+ 𝑇𝑑𝑠) (2.3)
Dalam domain waktu:
𝑢(𝑡) = 𝐾𝑝 (𝑒(𝑡)1
𝑇𝑖𝑠∫ 𝑒(𝑡)𝑑𝑡
𝑡
0+ 𝑇𝑑
𝑑𝑒(𝑡)
𝑑𝑡) (2.4)
Karena data E(n+1) adalah data yang akan datang dan belum tersedia , maka
perhitungan data yang akan datang digunkan data yang saat ini E(n) jika n adalah t untuk
setiap sampel waktu maka persamaan diskritnya :
𝑉(𝑛) = 𝐾𝑝𝐸(𝑛) + 𝐾𝑖𝑇 ∑ 𝐸(𝑖)𝑖=𝑛𝑇𝑖=0 +
𝐾𝑑
𝑇[𝐸(𝑛) − 𝐸(𝑛 − 1)] (2.5)
Dengan 𝐾𝑖 = 𝐾𝑝 + 𝑇
𝑇𝑖 dan 𝐾𝑑 =
𝐾𝑝+𝑇𝑑
𝑇 T= waktu sampling
Dengan hasil penyederhanaan nilai sigma (2.9) maka di peroleh:
𝑈(𝑛) = 𝑢(𝑛 − 1) + 𝐾𝑝(𝑒(𝑛) − 𝑒(𝑛 − 1)) + 𝐾𝑖 𝑒(𝑛) + 𝐾𝑑(𝑒(𝑛) − 2𝑒(𝑛 − 1)) +
𝑒(𝑛 − 2)) (2.6)
2.5. Inter Integrated Circuit (I2C)
Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua
arah menggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima
data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang
membawa informasi data antara I2C dengan pengontrolnya. Piranti yang dihubungkan
dengan sistem I2C Bus dapat dioperasikan sebagai Master dan Slave. Master adalah piranti
yang memulai transfer data pada I2C Bus dengan membentuk sinyal Start,
mengakhiri transfer data dengan membentuk sinyal Stop, dan membangkitkan
sinyal clock. Slave adalah piranti yang dialamati master.
Sinyal Start merupakan sinyal untuk memulai semua perintah, didefinisikan sebagai
perubahan tegangan SDA dari “1” menjadi “0” pada saat SCL “1”. Sinyal Stop merupakan
sinyal untuk mengakhiri semua perintah, didefinisikan sebagai perubahan tegangan SDA
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
dari “0” menjadi “1” pada saat SCL “1”. Kondisi sinyal Start dan sinyal Stop seperti tampak
pada Gambar 2.26.
Gambar 2.26 Kondisi Sinyal Start dan Stop [11].
Sinyal dasar yang lain dalam I2C Bus adalah sinyal acknowledge yang disimbolkan
dengan ACK Setelah transfer data oleh master berhasil diterima slave, slave akan
menjawabnya dengan mengirim sinyal acknowledge, yaitu dengan membuat SDA menjadi
“0” selama siklus clock ke 9. Ini menunjukkan bahwa Slave telah menerima 8 bit data
dari Master. Kondisi sinyal acknowledge seperti tampak pada Gambar 2.27.
Gambar 2.27 Sinyal ACK dan NACK
Dalam melakukan transfer data pada I2C Bus, kita harus mengikuti tata cara yang
telah ditetapkan yaitu:
1. Transfer data hanya dapat dilakukan ketikan Bus tidak dalam keadaan sibuk.
2. Selama proses transfer data, keadaan data pada SDA harus stabil selama SCL
dalam keadan tinggi. Keadaan perubahan “1” atau “0” pada SDA hanya dapat
dilakukan selama SCL dalam keadaan rendah. Jika terjadi perubahan keadaan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
SDA pada saat SCL dalam keadaan tinggi, maka perubahan itu dianggap
sebagai sinyal Start atau sinyal Stop.
Gambar 2.28 Transfer Bit pada I2C Bus
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
BAB 3
PERANCANGAN ALAT
Flight Controller pada sistem quadcopter menggunakan sensor IMU (Inertial
Measurement Unit) berbasis Mikrokontroller ATMEGA 2560 terdiri dari 3 bagian, yaitu unit
input, pengolah, dan unit output seperti pada Gambar 3.1. Unit input terdiri atas, Receiver
dan sensor IMU. Unit Pengolah terdiri atas mikrokontroler Arduino Mega 2560. Unit Output
terdiri atas ESC (Electronic Speed Controller) dan Motor Brushless.
Gambar 3.1 Diagram blok keseluruhan Flight Controller pada sistem quadcopter
menggunakan sensor IMU (Inertial Measurement Unit) berbasis Mikrokontroller
ATMEGA 2560
Receiver akan menerima data yang akan diubah menjadi sinyal 4 channel ( naik-turun,
maju-mundur, kanan-kiri, putar kanan-kiri ) dan akan dihubungkan ke Arduino Mega 2560
melalui pin 50 sampai pin 53 dan D10 berdasakan protocol komunikasi SPI. Sensor IMU
menggunakan 10dof (degree of freedom) IMU Sensor module duhubungkan dengan
mikrokontroler Arduino Mega 2560 pin SDA.20 dan SCL.21. Pada Output mikrokontroler
Arduino Mega 2560 untuk ESC menggunakan pin PWM.4 sampai PWM.7.
III
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
3.1. Rancangan dan Pemilihan Hardware
Flight Controller pada sistem quadcopter menggunakan sensor IMU (Inertial
Measurement Unit) berbasis Mikrokontroller ATMEGA 2560 tersusun atas :
1. Frame Quadcopter konfigurasi “X”.
2. Modul ArduinoMega 2560.
3. 10 dof IMU Sensor GY-80
4. Batterai LiPo 4000mAh.
5. ESC Hobbyking 30A.
6. Motor Brushless Turnigy 800Kv.
7. Propeller 8 inch.
Berdasarkan spesifikasi sistem, dibutuhkan sensor 10 dof IMU GY-80 karena modul
sensor ini memiliki 4 buah sensor didalamnya dan memungkinkan wahana untuk dapat
memanfaatkan semua sensor untuk kebutuhan yang lebih baik. Selain itu biaya lebih murah
daripada sebuah modul hanya 1 macam sensor.
Peneliti memilih Arduino Mega 2560 R3 karena tersedia port SDA dan SCL sebanyak
2 pasang untuk port compass modul GPS-Compass pada autonomous mode dan port
compass sensor IMU pada manual mode. Selain itu pada Arduino Mega 2560 R3
Pada bagian output, peneliti menggunakan brushless motor Turnigy Multistar 2216-
800KV 14Pole Multi-Rotor Outrunner. Brushless motor dipilih untuk quadcopter karena
ringan dan memiliki daya yang besar. Jika motor yang digunakan adalah brushless motor,
maka tipe ESC yang digunakan adalah brushless ESC. Peneliti menggunakan brushless
ESC/UBEC 30A/3A Hobbyking karena nilai batas arus ESC ini lebih besar daripada arus
yang dikeluarkan oleh brushless motor yang digunakan. Selain itu UBEC 3A bisa digunakan
sebagai power supply mikrokontroller Arduino Mega 2560.
3.2. Konstruksi Hardware
Bentuk fisik dari wahana quadcopter menggunakan sensor IMU (Inertial
Measurement Unit) berbasis Mikrokontroller ATMEGA 2560 dapat dilihat pada Gambar 3.2.
masing masing komponen telah ditunjukkan anak panah didalam Gambar tersebut.dimensi
wahana adalah 50cmx50cm, dengan tinggi 30cm.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
Posisi sensor harus berada pada tengah atau perpotongan Motor 1 - 3 dan Motor 2 – 4.
Dalam memposisikan Arduino 2560 dan Sensor harus diberi spacer dan menggunakan
peredam getaran seperti busa atau karet. Hal ini dilakukan supaya arduino dan sensor tidak
mengalami gangguan getaran karena output motor brushless saat wahana terbang.
Gambar 3.3 memperlihatkan wiring mikrokontroler arduino mega 2560 dengan
beberapa komponen pendukung penelitian antara lain, modul Sensor Gy-80, RFM12-
433Mhz, dan 4 ESC. Di dalam Gambar memperlihatkan jika Servo adalah sebagai ESC.
Gambar 3.4 memperlihatkan modul receiver RFM01-433Mhz yang dihubungkan
melalui pin ICSP pada arduino mega 2560. Modul receiver ini yang akan digunakan sebagai
penerima kontrol dari GCS dalam bentuk beberapa paket data.
Terdapat wiring tambahan seperti pembagi tegangan supply yang diinputkan ke pin
A0. Hal ini dilakukan supaya program dapat mengetahui level baterai atau tegangan supply
yang akan digunakan sebagai sistem fail-safe. Output dari sistem fail-safe level baterai ini
berupa led indikator pada pin D12.
Gambar 3.2 Bentuk Fisik Rancangan Hardware Quadcopter menggunakan sensor
IMU (Inertial Measurement Unit) berbasis Mikrokontroller ATMEGA 2560
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
Gambar 3.3 Wiring Arduino Mega 2560, Sensor Gy 80, RFM12-433, dan ESC.
Gambar 3.4 RFM01-433 sebagai receiver.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
Tabel 3.1 Deklarasi Pin Arduino Mega 2560
3.3. Perancangan Perangkat Lunak
Diagram alir utama sistem Flight Controller pada sistem quadcopter menggunakan
sensor IMU (Inertial Measurement Unit) berbasis Mikrokontroller ATMEGA 2560 dapat
dilihat pada Gambar 3.2. Sedangkan untuk pendeklarasian pin pin pada Arduino Mega 2560
dapat dilihat pada table 3.1
3.3.1. Diagram Alir Program Utama
Pada diagram alir Gambar 3.6, saat kontroler on, program akan memulai proses awal
yaitu inisialisasi. Pada tahap ini, program akan memproses deklarasi, pengaturan sensor
gyro, kalibrasi sensor gyro, pengaturan Receiver, kalibrasi ESC, ataupun perhitungan level
baterai.
Pada proses pengambilan keputusan untuk siap terbang, Receiver akan mengirimkan
data. Jika data Receiver nilai throttle = 0 pwm dan yaw = 0 pwm, maka status Flight
Controller menjadi Siap Terbang. Jika data Receiver nilai throttle ≠ 0 pwm atau yaw ≠ 0
pwm, maka program terus akan mengulang sampai nilai throttle = 0 pwm dan yaw = 0 pwm.
Setelah itu proses persiapan akan memberikan output pada ESC 10 pwm untuk menandakan
motor berputar dan siap untuk diterbangkan.
Nomor Pin Arduino Tipe Keterangan
A0 Analog Input Pin pembacaan level baterai
50 Komunikasi SPI
51 Komunikasi SPI
52 Komunikasi SPI
53 Komunikasi SPI
D10 Komunikasi SPI
SDA20 Komunikasi Input SDA IMU Sensor GY-80
SCL21 Komunikasi Input SCL IMU Sensor GY-80
PWM4 Output PWM Output ke ESC 1
PWM5 Output PWM Output ke ESC 2
PWM6 Output PWM Output ke ESC 3
PWM7 Output PWM Output ke ESC 4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
Selanjutnya program akan menunggu apakah Receiver mengirimkan data throttle. Jika
Receiver sudah mengirimkan data nilai throttle, maka program akan memulai proses
subrutin Terbang.
Pada subrutin terbang, program akan memproses beberapa data antara lain, pembacaan
sensor gyro, pembacaan sensor barometer, perhitungan PID, dan pemberian nilai output pada
ESC.
Selama wahana terbang, data ketinggian akan terus dibaca sampai mencapat batas
ketinggian yang di tetapkan, misal 20 meter. Jika wahana melewati batas ketinggian yang
ditetapkan, program akan mengurangi output ESC yang akan berpengaruh terhadap
kecepatan motor, sehingga wahana tidak akan lebih tinggi dari batas ketinggian 20 meter.
Jika nilai output untuk ESC < 1050 artinya setiap kecepatan motor berada pada kondisi
terendah, dengan kata lain wahana berada pada tanah. Pada tahap ini program akan meminta
klarifikasi apakah wahana akan diterbangkan lagi atau berhenti dengan cara memberikan
output pada ESC = 1000 yang artinya motor berhenti.
Jika mendarat maka Receiver akan memberikan nilai throttle = 0 pwm dan yaw = 255
pwm untuk membuat perintah yang akan memberikan nilai output pada ESC = 1000 yang
artinya motor berhenti dan proses selesai. Jika tidak maka program akan menunggu apakah
Receiver mengirimkan data throttle dan wahana melakukan penerbangan lagi.
1 2
34
depan
kanan
belakang
kiri
Gambar 3.5 Konfigurasi ESC pada wahana
Gambar 3.5 memperlihatkan konfigurasi ESC pada wahana. Adapun batas batas
output pwm (0 sampai 255) untuk tiap kondisi terbang pada ESC dapat dilihat pada Tabel
3.2.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
Tabel 3.2 Batas batas output pwm untuk setiap kondisi terbang
Kondisi ESC 1 ESC 2 ESC 3 ESC 4
Maju Tetap Tetap +30 +30
Mundur +30 +30 Tetap Tetap
Kiri Tetap +30 +30 Tetap
Kanan +30 Tetap Tetap +30
Berputar CW +10 Tetap +10 Tetap
Berputar CCW Tetap +10 Tetp +10
Gambar 3.6 Diagram Alir Subrutin Menghitung Sensor
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
Gambar 3.7 Diagram Alir Utama Flight Controller pada sistem quadcopter
menggunakan sensor IMU berbasis Mikrokontroller ATMEGA 2560
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
3.3.2. Diagram Alir Subrutin Terbang
Gambar 3.8 Diagram alir subrutin Terbang
Pada Gambar 3.7 menjelaskan diagram alir subrutin terbang. Diagram alir dimulai
dengan memulai proses subrutin menghitung sensor. Pada subrutin menghitung sensor,
program menghitung nilai sensor gyro untuk diambil beberapa parameter data sensor gyro
yang akan digunakan untuk perhitungan PID kestabilan wahana. Bukan hanya menghitung
sensor gyro, program juga menghitung sensor barometer yang akan diambil nilai tekanan
udaranya dan selanjutnya dihitung level ketinggian wahana. Nilai level ketinggian wahana
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
ini yang akan digunakan sebagai parameter untuk membatasi level ketinggian wahana tidak
boleh lebih dari 20 meter.
Selanjutnya setelah pembacaan sensor gyro, program memulai proses perhitungan
nilai input PID sensor gyro.
Pada subrutin menghitung PID, program akan mulai menghitung parameter parameter
PID seperti input PID sensor gyro yang telah didapatkan di proses sebelumnya, perhitungan
error, perhitungan Pout, Iout, Dout, dan PID output.
Setelah subrutin menghitung PID, program akan menghitung pulsa untuk input ESC.
Perhitungan ini didapatkan dengan nilai throttle dikurangi dengan PID output. Karena input
ESC harus 1000µS sampai 2000µS, maka nilai input ESC tidak boleh lebih dari 2000. Jika
nilai ESC > 2000, maka nilai input ESC = 2000.
Selanjutnya, data ESC dikirimkan ke port output PWM untuk menggerakkan motor.
3.3.3. Diagram Alir Subrutin Menghitung Sensor
Pada Gambar 3.8 diagram alir subrutin menghitung sensor program akan memproses
2 data, yaitu data sensor gyro berupa angular rate sumbu XYZ dan data sensor barometer
berupa ketinggian.
Pada proses menghitung sensor gyro, program akan berkomunikasi dengan sensor
gyro menggunakan protokol komunikasi I2C. untuk dapat mengetahui nilai angular rate
sumbu XYZ, program akan menyimpan data angular rate sumbu XYZ dari alamat register
28h + 6byte berikutnya. Data output sensor gyro adalah data yang sudah di kalibrasi pada
proses inisialisasi pada Gambar 3.6.
Pada proses menghitung sensor barometer, program akan menjalankan bagan alir pada
Gambar 2.14 untuk memperoleh nilai tekanan udara. Selanjutnya nilai untuk memperoleh
level ketinggian wahana, ketinggian dapat diperoleh menggunakan persamaan 2.2.
Selanjutnya program akan kembali ke main program untuk digunakan nilai output
gyro sensor sebagai perhitungan PID untuk kestabilan wahana dan output sensor barometer
sebagai parameter untuk membatasi level ketinggian wahana agar tidak melebih dari
ketinggian 20 meter.
wahana telah mencapat batas yang telah ditetapkan, misal 30 meter, program akan
memberikan nilai output pada setiap ESC = -100 pwm. Pemeberian nilai output pada ESC
ini digunakan untuk wahana tidak melebihi batas ketinggian yang telah ditetapkan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
3.3.4. Diagram Alir Subrutin Menghitung PID
Gambar 3.9 Diagram Alir Subrutin Menghitung PID
Gambar 3.10 Blok Diagram PID sistem quadcopter
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
Pada Gambar 3.10 memperlihatkan bagaimana PID pada wahana memproses sensor
gyro sebagai parameter untuk mengatur kestabilan terbang wahana. Nilai sensor gyro harus
sama dengan nilai Receiver, karena jika pilot tidak menginginkan ada perubahan wahana
saat terbang dan berada pada posisi level tertentu, maka output gyro = 0 = Receiver input.
Agar wahana stabil, nilai setpoint gyro harus = 0 dan nilai Receiver harus = 0.
Dari persamaan 2.6, dapat dihitung nilai masing masing elemen pada kontroler PID
seperti pada Gambar 3.11.
Gambar 3.11 Logika Dasar perhitungan Parameter P,I,D pada sistem kontrol PID
quadcopter
Gambar 3.9 adalah bagan alir subrutin menghitung PID sistem kestabilan wahana.
Pertama, user akan memberikan nilai Kp, Ki, dan Kd pada program pada proses inisialisasi
pada Gambar 3.4.
Nilai Kp, Ki, dan Kd diperoleh dengan melakukan uji coba wahana, dengan
memberikan nilai awal masing masing parameter untuk setiap sumbu pada sensor gyro, Kp
= 1 , Ki = 0.03 dan Kd = 15 [1]. Setelah itu dilakukan uji coba dengan mengganti ganti nilai
Kp,Ki, dan Kd sampai wahana mencapat batas kestabilan yang diinginkan.
Selanjutnya perhitungan PID output masing masing controller seperti kestabilan untuk
roll, pitch dan yaw.Selanjutnya program akan kembali ke main program sebagai parameter
untuk memberikan nilai input pada masing masing ESC guna mengatur kestabilan wahana.
P_out = (gyro – Receiver) x Kp
I_out = I_outt-1 + ((gyro – Receiver) x Ki)
D_out = (gyro – Receiver – gyrot-1 – Receivert-1 ) x Kd
+ PID output
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
3.3.5. Receiver Input
Gambar 3.12 Diagram Alir Receiver Input
Receiver Input pada sistem navigasi wahana menggunakan komunikasi SPI. Pada
Gambar 3.12 memperlihatkan diagram alir dari paket data diterima sampai data menjadi
command untuk navigasi wahana throttle, roll, pitch, dan yaw.
Karena GCS memberi perintah setiap saat untuk navigasi wahana melalui receiver
input, maka program receiver input harus berada pada fungsi interrupt pada mikrokontroler
ATMEGA 2560.
Dengan menggunakan komunikasi SPI, paket data untuk navigasi wahana throttle,
roll, pitch, yaw adalah :
@Aa-Bb-Cc-Dd#
Paket data tersebut berada pada EEPROM mikrokontroler ATMEGA 2560, sehingga
program perlu pembacaan paket data.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
Setelah pembacaan EEPROM, data harus dibagi dengan format karakter “@” adalah
header komunikasi SPI, karakter “A”,”B”,”C”,”D” berturut-turut adalah karakter data untuk
throttle, yaw, pitch, yaw. Dan karakter “a” adalah data 8 bit mewakili pwm.
Setelah didapatkan masing masing perintah navigasi, data dikonversi menggunakan
fungsi mapping pada arduino 2560 untuk mendapatkan input receiver rendah 0 = 1000 dan
255 = 2000. Selanjutnya pengubahan data akan menjadi parameter untuk perhitungan PID
dan keluaran ESC.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
BAB 4
HASIL DAN PEMBAHASAN
Bab ini berisi Gambar fisik hardware yang dibuat, pengujian wahana, hasil
pengambilan data, pembahasan tentang data yang diperoleh, dan pembahasan program yang
digunakan di mikrokontroller. Data yang akan dibahas terdiri dari hasil pengambilan data
sensor, data output kontroller PID, dan pengiriman paket data ke wahana.
Hasil pengujian berupa data-data yang diperoleh dapat memperlihatkan bahwa
hardware dan software yand dirancang telah bekerja dengan baik atau tidak. Berdasarkan
data-data tersebut dapat dilakukan analisis terhadap proses kerja alat yang kemudian dapat
digunakan untuk menarik kesimpulan akhir.
4.1. Bentuk Fisik Wahana, dan Flight Controller
Bentuk fisik wahana secara keseluruhan ditunjukkan Gambar 4.2. Sistem
menggunakan 2 buah mikrokontroler, mikrokontroler pertama digunakan sebagai Flight
Controller seperti pada Gambar 4.1, mikrokontroller ke 2 digunakan sebagai pengolah paket
data dari transceiver RFM12. Hal ini dilakukan supaya flight controller tidak mengubah
parameter Kp, Ki, dan Kd pada kontroler PID, karena jika modul komunikasi RFM12
digunakan bersamaan dalam mikrokontroler pada flight controller maka akan memakan
waktu hingga 400 mS dalam proses looping untuk menerima paket data navigasi dari GCS.
Frame yang digunakan adalah Frame jenis SK450 untuk quadcopter. Frame tidak
membuat sendiri karena tidak adanya alat pendukung yang baik dalam pembuatan frame
untuk wahana quadcopter, karena dalam pembuatan frame quadcopter sangat diutamakan
letak jarak antara keempat motor yang presisi, titik pusat keseimbangan, berat, kekuatan dan
efek gangguan getaran saat motor dijalankan. Untuk itu, perancangan yang digunakan adalah
frame SK450 karena memiliki berat 300 gram, bahan menggunakan serat karbon, dan
memiliki fitur peredam getaran antar motor yang menggunakan batang serat karbon.
Saat keadaan hover, Flight Controller tetap akan menerima getaran yang ditimbulkan
akibat motor jika flight controller dihubungkan frame dengan menggunakan spacer plastik.
Akibatnya wahana akan menjadi tidak terkendali, untuk itu digunakan peredam getaran
IV
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
untuk flight controller menggunakan busa. Peredam menggunakan busa ini mampu
meredam getaran yang ditimbulkan akibat dari putaran motor.
Pada wahana juga diberi satu buah modul battery checker. Modul ini digunakan untuk
mengukur tegangan baterai dan mengatur setpoint tegangan baterai yang diinginkan. Jika
mencapai level tegangan battery low voltage, modul ini akan membunyikan buzzer sehingga
pilot akan mengetahui bahwa baterai mencapai level low voltage.
Rangkaian flight controller ditunjukan pada Gambar 4.3 . Untuk perancangan
rangkaian flight controller menggunakan aplikasi Fritzing pada PC dalam membuat jalur
I/O, led indikator, dan power distribution pada PCB. Terdapat 3 buah led indikator yang
disediakan oleh flight controller. Penjelasan led indikator dapat dilihat pada Tabel 4.1. Selain
itu juga terdapat 4 buah blinking led pada setiap motor sebagai indikator navigasi wahana ke
kanan kiri, depan belakang, atau berputar.
Gambar 4.1 Bentuk Fisik Wahana Quadcopter
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
Gambar 4.2 Wahana dengan Receiver RFM 12 menggunakan mikrokontroler
tambahan.
Gambar 4.3 Rangkaian Flight Controller
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
Tabel 4.1 Led Indikator pada wahana.
Tabel 4.2 PIN I/O pada Flight Controller.
Warna Led Fungsi Indikator Status Waktu
HIJAU
Deklarasi variable dan
deklarasi pin I/O On 2 detik
Kalibrasi sensor gyro Berkedip 4 detik
Menunggu sinyal receiver Berkedip sampai receiver on
Mengetahui jenis baterai
3 sell On 2 detik
Motor berputar On Sampai motor off
MERAH
Mengetahui jenis baterai
2 sell On 2 detik
Tegangan baterai rendah On Sampai ganti baterai
Hilang komunikasi
dengan GCS On
Sampai terhubung
kembali
BLINKING
LED Selama proses terbang On
Sampai hilang
komunikasi
Pin Fungsi Keterangan
Power sumber daya pada flight controller tersedia 2 pasang pin
5 volt menyediakan daya 5 volt tersedia 3 pin
3.3 volt menyediakan daya 3.3 volt tersedia 3 pin
GND ground tersedia 3 pin
A0 menghitung tegangan baterai tersedia 1 pin
A8-A15 receiver input untuk receiver
D10 ESC 1 motor depan kanan
D11 ESC 2 motor belakang kanan
D12 ESC 3 motor belakang kiri
D13 ESC 4 motor depan kiri
D20 SDA untuk sensor
D21 SCL untuk sensor
D23 led blingking motor 1
led indikator pada motor D25 led blingking motor 2
D27 led blingking motor 3
D29 led blingking motor 4
D30 led merah
led indikator D31 led hijau
D32 led blinking
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
Untuk I/O flight controller dapat dilihat letak dan fungsinya pada table 4.2. Flight
Controller menyediakan 28 pin tambahan yang bisa digunakan nantinya untuk modifikasi
wahana.
Sedangkan pin untuk sensor IMU berada dibawah papan PCB flight controller. Hal ini
dilakukan supaya kabel untuk menghubungkan sensor dengan mikrokontroller berada
dibawah dan tidak terlihat agar flight controller dapat terlihat lebih rapi.
4.2. Pengujian Wahana
4.2.1. Pengujian Sistem Utama
Gambar 4.4 wahana terbang dengan ketinggian 1m diatas lantai.
Pengujian sistem utama wahana dilakukan untuk mengetahui apakah wahana dapat
melakukan perintah sesuai navigasi atau tidak. Untuk pengujian gerak navigasi pada wahana,
pengujian dilakukan dengan mengikat keempat sisi frame pada wahana sehingga mudah
dilihat apakah wahana melakukan perintah sesuai dari perangkat navigasi pada GCS atau
tidak. Gambar 4.5 memperlihatkan bahwa wahana melakukan navigasi sesuai dengan
perintah kiri - kanan, maju - mundur, putar kanan - putar kiri yang diberikan dari perangkat
navigasi pada GCS.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
Gambar 4.4 memperlihatkan wahana dapat terbang dengan ketinggian 1 meter diatas
lantai. Pengujian pada Gambar 4.4 menggunakan perangkat navigasi Turnigy 9ch 2.4Ghz
Gambar 4.5 Wahana melakukan perintah sesuai dari perangkat navigasi pada GCS.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
Pada Gambar 4.6 memperlihatkan grafik nilai output PWM untuk salah satu ESC yaitu
ESC 1. Sistem akan memberikan pulsa sebesar 1000µS sebagai syarat utama sebagai
minimum throttle diberikan kepada ESC saat tidak ada perintah dari perangkat navigasi.
Untuk mempersiapkan wahana untuk terbang, perangkat navigasi harus memberikan
perintah throttle dan yaw pada posisi minimum, dan wahana akan memberikan pulsa sebesar
1200µS kepada masing masing ESC. Hal ini dilakukan supaya baling-baling berputar dan
menandakan bahwa wahana siap diterbangkan.
Saat wahana diterbangkan, perangkat navigasi harus mengendalikan wahana supaya
wahana dapat hovering atau melayang-layang diketinggian tertentu, karena wahana tidak
dapat hovering secara otomatis dan harus selalu dikendalikan oleh pilot. Wahana akan mulai
hover pada nilai output PWM untuk ESC sekitar 1600µS untuk baterai LiPo 2s, dan 1400µS
untuk baterai LiPo 3s.
Dalam pengujian batasan ketinggian, wahana berhasil mengurangi kecepatan masing
masing motor 50µS saat mencapai batas ketinggian yang ditetapkan,sedangkan didalam
perancangan pada bab sebelumnya adalah 100µS. Nilai 50µS ini dipilih karena wahana akan
turun secara cepat jika output motor dikurangi nilai sebesar 100µS.
Gambar 4.6 Grafik output ESC 1 saat wahana terbang.
0
200
400
600
800
1000
1200
1400
1600
1800
2000
11
72
343
514
685
856
102
71
19
81
36
91
54
01
71
11
88
22
05
32
22
42
39
52
56
62
73
72
90
83
07
93
25
03
42
13
59
23
76
33
93
44
10
54
27
64
44
74
61
84
78
94
96
05
13
15
30
25
47
35
64
45
81
5
outp
ut
ES
C
jumlah looping program
OUTPUT ESC 1
tidak siap terbang ESC = 1000µS
siap terbang ESC = 1200µS
Wahana hovering
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
4.2.2. Pengujian Waktu Looping Program
Pengujian waktu looping program ini bertujuan untuk mengetahui waktu yang
dibutuhkan untuk program mulai dari pembacaan nilai sensor, perhitungan nilai kontroller
PID, pengambilan data menggunakan fungsi Serial.print, hingga pemberian nilai untuk
masing masing ESC, termasuk program penerima dalam komunikasi menggunakan RFM12.
Tabel 4.3 memperlihatkan waktu yang dibutuhkan program selama satu kali proses sistem.
Idealnya sistem dapat bekerja dengan parameter kontroler Kp, Ki, dan Kd yang telah
ditentukan di sub bab 4.2.5 pada pengujian output PID, dengan waktu looping kurang lebih
4mS atau 4000µS.
Tabel 4.3 Waktu Looping Program
4.2.3. Pengujian Receiver Input
Pengujian Receiver ini bertujuan untuk mengetahui nilai pulsa pwm yang diterima
receiver dari GCS sesuai atau tidak. Nilai pulsa pwm pada remote control umumnya adalah
1000µS – 2000µS dengan periode 20mS. Dari nilai tersebut mikrokontroler akan
menghitung waktu lebar pulsa dengan kondisi ‘HIGH’ dalam microsecond.
Program flight controller keterangan waktu looping (µS) Status
sensor gyro disarm 2672 Bisa terbang
arming 3000 Bisa terbang
sensor gyro + baro disarm 15972 Tidak bisa terbang
arming 16250 Tidak bisa terbang
sensor gyro + Serial print 1 Serial print 4156 Bisa terbang
sensor gyro + Serial print 2 Serial print 8316 Tidak bisa terbang
sensor gyro + Serial print 3 Serial print 12480 Tidak bisa terbang
sensor gyro + Serial print 4 Serial print 16644 Tidak bisa terbang
sensor gyro + baro + Serial print
1 Serial print 16104 Tidak bisa terbang
sensor gyro + baro + Serial print
2 Serial print 16700 Tidak bisa terbang
sensor gyro + baro + Serial print
3 Serial print 16900 Tidak bisa terbang
penerima RFM 12 440000 Tidak bisa terbang
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
Gambar 4.7 memperlihatkan pulsa dari receiver yaitu pulsa throttle pada kondisi
minimum yaitu 1000µS atau 1mS. Sedangkan Gambar 4.8 memperlihatkan hasil
perhitungan pulsa receiver setelah diolah di mikrokontroler berturut-turut dari kiri (roll,
pitch, throttle, yaw). Pengujian ini membuktikan bahwa mikrokontroler menerima nilai
pulsa yang diterima receiver dari perangkat GCS.
Gambar 4.7 pulsa receiver throttle pada kondisi minimum yaitu 1000µS atau 1mS.
Gambar 4.8 hasil perhitungan pulsa receiver (roll, pitch, throttle, yaw).
Nilai throttle sesuai dengan Gambar 4.3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
4.2.4. Pengujian Output untuk ESC
Pengujian nilai output untuk ESC ini bertujuan apakah ESC mau menerima nilai yang
telah diolah mikrokontroler yang akan digunakan sebagai perintah kepada masing masing
motor. Nilai-nilai tersebut merupakan nilai perhitungan throttle dengan output kontroler PID
pada sensor gyro. Selanjutnya nilai tersebut akan diubah menjadi suatu pulsa sebesar 1000µS
– 2000µS untuk ESC dengan cara mengaktifkan pin digital 10-13 dengan kondisi HIGH
selama waktu sesuai nilai-nilai tersebut dan akan diaktifkan LOW kembali sampai looping
berikutnya.
Sistem yang digunakan tidak menggunakan fungsi pwm yang disediakan arduino
mega 2560 karena output pwm pada arduino mega2560 berbeda dengan input pwm untuk
ESC. Lebar pulsa PWM pada arduino mega2560 adalah 0 – 2mS, sedangkan untuk input
ESC membutuhkan lebar pulsa 1 – 2mS.
Pada pengujian output untuk ESC ini, semua motor berhasil berputar sesuai nilai yang
diberikan oleh pin digital 10-13 (dalam contoh ini adalah 1200µS) pada Gambar 4.9.
Sedangkan Gambar 4.10 memperlihatkan pulsa gelombang 1200µS yang dihasilkan pin
output D10 untuk ESC1.
ESC hanya akan menggerakan motor dengan duty cycle minimal 1.79 % atau waktu
saat output LOW dibawah 58.000µS. pada Tabel 4.4 ,memperlihatkan pengujian jika waktu
saat output LOW lebih dari 58.000µS, ESC tidak akan memerintahkan motor untuk berputar.
Jadi jika 1 x looping program membutuhkan waktu lebih dari 58.000µS, ESC tidak bisa
memerintahkan motor untuk berputar. Selama looping program kurang dari 58.000µS, ESC
masih bisa memerintahkan motor untuk berputar.
Tabel 4.4 Pengujian pengaruh motor dengan waktu LOW pada ESC.
output HIGH (µS)
output LOW (µS)
duty Cycle Hasil
1000 4000 25.00% motor berputar
1000 8000 12.50% motor berputar
1000 12000 8.33% motor berputar
1000 16000 6.25% motor berputar
1000 20000 5.00% motor berputar
1000 24000 4.17% motor berputar
1000 28000 3.57% motor berputar
1000 32000 3.13% motor berputar
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
Gambar 4.9 output untuk setiap ESC (ESC 1, ESC 2, ESC 3, ESC 4).
4.2.5. Pengujian Output PID
Pengujian output PID dilakukan untuk mengetahui apakah masing masing sumbu pada
sensor gyro memberikan output kontroler PID yang benar terhadap masing masing ESC.
Prinsip utamanya adalah sinyal receiver pin A10 / throttle sebagai sinyal utama yang akan
di akumulasikan dengan output PID pitch, roll, dan yaw sesuai dengan Gambar 4.11
Tabel 4.4 (Lanjutan) Pengujian pengaruh motor dengan waktu LOW
pada ESC.
1000 36000 2.78% motor berputar
1000 40000 2.50% motor berputar
1000 44000 2.27% motor berputar
1000 48000 2.08% motor berputar
1000 52000 1.92% motor berputar
1000 56000 1.79% motor berputar
1000 58000 1.72% motor Tidak berputar
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
Gambar 4.10 Pulsa Gelombang output 1200µS yang dihasilkan pin D10 untuk ESC1.
Gambar 4.12 memperlihatkan grafik output kontroler pid pitch, roll, yaw dengan
maksimum nilai output kontroler adalah 100. Dari Gambar 4.12 dapat disimpulkan bahwa
jika wahana miring kekiri, output PID roll akan memberikan nilai -63 sehingga ESC 3 dan
ESC 4 akan bertambah nilainya dan akan memnyebabkan wahana kembali ke posisi normal
/ hover.
Dari pengujian output PID memperlihatkan Gambar 4.12 bekerja sesuai dengan
perintah yang akan dikirim kepada masing masing ESC.
Gambar 4.11 Akumulasi throttle dengan output pid pitch,roll,yaw.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
Gambar 4.12 Grafik output kontroler PID pitch, roll, dan yaw.
Sedangkan untuk menentukan nilai parameter Kp,Ki,dan Kd adalah sebagai berikut:
1. Menentukan nilai Kd mulai dari nilai terkecil, contoh Kd = 2. Lalu lihat
respon wahana.
2. Lalu perbesar nilai Kd, contoh 70. Jika respon wahana bergetar kurangi nilai
Kd sampai respon wahana tidak bergetar.
3. Tentukan nilai Kp mulai dari terkecil, contoh Kp = 2 Lalu lihat respon
wahana.
4. Lalu perbesar nilai Kp, contoh Kp = 10 Lalu lihat respon wahana, jika wahana
bergetar kurangi nilai Kp 50%. Lalu atur sampai respon wahana tidak
bergetar.
5. Tentukan nilai Ki mulai dari terkecil, contoh Ki = 0.01 lalu lihat respon
wahana, perbesar sampai respon wahana mulai bergetar. Saat wahana
bergetar, kurangi nilai Ki 25%.
Dalam pengujian kontroler PID ini, nilai-nilai parameter yang digunakan adalah Kp =
5, Ki = 0.08 dan Kd = 55.5 dengan siklus looping 3mS. Pada Tabel 4.5 memperlihatkan hasil
pengujian untuk menentukan parameter Kp, Ki, dan Kd pada kontroler PID. Sendangkan
pada Tabel 4.6 memperlihatkan pengaruh respon wahana terhadap waktu looping yang
berbeda dengan nilai Kp, Ki, Kd yang sama.
-150
-100
-50
0
50
100
150
1
27
53
79
105
131
157
183
209
235
261
287
313
339
365
391
417
443
469
495
521
547
573
599
625
651
677
703
729
755
781
outp
ut
PID
Jumlah looping program
NILAI OUTPUT PID
roll pitch yaw
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
Tabel 4.5 Hasil Pengujian untuk menentukan Kp, Ki, dan Kd
Tabel 4.6 Pengaruh respon wahana terhadap waktu looping program
Kp Ki Kd waktu looping
(µS) Hasil
0 0 2 3000 mundur kebelakang
0 0 70 3000 mundur kebelakang + sedikit bergetar
0 0 50 3000 tidak bergetar
2 0 55.5 3000 susah dikendalikan + respon lambat
10 0 55.5 3000 respon terlalu cepat + berosilasi
5 0 55.5 3000 susah merespon dan dikendalikan
5 0.01 55.5 3000 bisa terbang, respon lambat
5 0.3 55.5 3000 cepat berosilasi
5 0.1 55.5 3000 bisa terbang, respon terlalu cepat,
susah stabil
5 0.05 55.5 3000 bsia terbang, respon sedikit lambat,
susah stabil
5 0.08 55.5 3000 bisa terbang, merespon dan stabil
Kp Ki Kd waktu looping
(µS) Hasil
5 0.08 55.5 3000 bisa terbang, merespon dan stabil
5 0.08 55.5 5000 bisa terbang, merespon dan kurang
stabil
5 0.08 55.5 7000 bisa terbang, merespon dan sedikit
berosilasi
5 0.08 55.5 9000 bisa terbang, susah dikendalikan dan
berosilasi
5 0.08 55.5 11000 bisa terbang, sangat susah dikendalikan, osilasi besar
5 0.08 55.5 13000 tidak bisa terbang dan semakin
berosilasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
4.2.6. Pengujian Sensor Barometer
Pengujian sensor barometer dilakukan untuk mengetahui berhasil atau tidak program
membatasi wahana terbang di ketinggian tertentu, sehingga output motor berkurang.
Pengujian dilakukan dengan mencari ketinggian awal saat power pada wahana dihubungkan
dan menentukan di setpoin ketinggian, dalam contoh ini adalah 2 meter dari wahana mulai
take-off. Saat program mulai looping, wahana akan terus membaca ketinggian hingga
wahana mencapai setpoint ketinggian. Pada saat mencapai setpoin ketinggian, output masing
masing ESC akan berkurang 50µS.
Gambar 4.13 memperlihatkan grafik output pada salah satu ESC pada pengujian
ketinggian dengan ketinggian awal 205.38 mdpl. Lingkaran merah memperlihatkan saat
wahana telah mencapat setpoin ketinggian yaitu 207.38 mdpl, sehingga output ESC
berkurang 50µS.
Pada lingkaran merah juga memperlihatkan nilai grafik naik-turun secara cepat. Hal
ini disebabkan karena pembacaan output sensor barometer yang tidak tetap dengan error
kurang lebih 1 meter pada saat diuji dengan keadaan wahana diam. Output sensor barometer
ini dapat dilihat pada Gambar 4.14.
Pengujian sensor barometer ini dilakukan dengan manual (dibawa oleh tangan) atau
tidak menerbangkan wahana. Pada saat pengujian wahana dengan sensor barometer, waktu
looping program akan bertambah 16 mS sehingga akan mempengaruhi nilai parameter Kp,
Ki, Kd pada kontroler PID. Gambar 4.15 memperlihatkan nilai osilasi output salah satu ESC
semakin besar saat wahana diterbangkan dengan pembacaan sensor barometer.
Untuk mengatasi hal tersebut, pembacaan nilai ketinggian yang menggunakan sensor
barometer ini dilakukan 1 x 350 looping. Hasilnya wahana dapat terbang sampai level
ketinggian yang diinginkan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
Gambar 4.13 Grafik output ESC pada pengujian ketinggian
Gambar 4.14 Grafik output sensor barometer saat keadaan wahana diam
0
200
400
600
800
1000
1200
1400
1600
1800
2000
12
54
97
39
71
21
145
169
193
217
241
265
289
313
337
361
385
409
433
457
481
505
529
553
577
601
625
649
673
697
721
745
769
793
817
outp
ut
ES
C
jumlah looping program
output ESC 1 saat pengujian ketinggian
204
204.5
205
205.5
206
206.5
207
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Ket
inggia
n
jumlah looping program
Output Sensor barometer
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
Gambar 4.15 Grafik nilai input untuk ESC 1 saat berosilasi.
4.2.7. Pengujian Navigasi dan Pengiriman Paket Data dari GCS ke
Receiver
Pengujian Navigasi untuk menggerakan wahana dilakukan untuk mengetahui benar
atau tidak gerak wahana saat dikendalikan menggunakan perangkat navigasi. Pengujian ini
dapat dilihat menggunakan led indicator yang terdapat dibawah masing masing motor. Dari
pengujian ini dapat disimpulkan bahwa wahana bergerak sesuai dengan perintah yang
diberikan dari perangkat Navigasi pada GCS seperti pada Gambar 4.5.
Saat pengiriman dan penerimaan paket data dari GCS ke wahana memerlukan waktu
yang cukup lama bagi siklus looping pada program, yaitu 400mS. Hal ini tentunya sangat
mempengaruhi nilai parameter Kp, Ki, dan Kd pada kontroler PID, sehingga wahana akan
merespon sangat lama.
Untuk itu sistem membutuhkan 1 buah mikrokontroler ATMEGA 2560 tambahan
sebagai penerima paket data dari GCS ke wahana sebagai kontrol untuk wahana. Dengan
adanya tambahan mikrokontroler ATMEGA 2560 lain, mikrokontroler utama untuk proses
terbang tetap akan memiliki waktu looping 4mS, sehingga dapat memungkinkan wahana
untuk terbang.
0
200
400
600
800
1000
1200
1400
1600
1800
2000
1 8
15
22
29
36
43
50
57
64
71
78
85
92
99
106
113
120
127
134
141
148
155
162
169
176
183
190
197
204
211
PW
M E
SC
jumlah looping program
Nilai output PID berosilasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
Namun dalam hal pengiriman paket data dari GCS ke wahana untuk kontrol manual
tetap memerlukan waktu kurang lebih 400mS, sehingga sulit untuk mengendalikan wahana
saat terbang.
4.2.8. Pengujian Baterai
Pengujian baterai ini dilakukan untuk mengetahui pengaruh daya angkat motor
brushless terhadap tegangan baterai. Pada Gambar 4.16 memperlihatkan grafik pengaruh
daya angkat terhadap tegangan baterai saat diberi nilai throttle 1500µS. Dari Gambar
tersebut dapat diketahui bahwa semakin rendah tegangan baterai maka semakin rendah juga
daya angkat motor. Pada spesifikasi motor brushless turnigy 1400Kv, daya angkat
maksimum dengan throttle max mencapai 780gram[].
Untuk itu output ESC memerlukan nilai tambahan seiring berkurangnya tegangan
baterai saat wahana terbang. Nilai ini didapat dengan cara menambahkan nilai ESC
sebelumnya dengan nilai 0% - 10% nilai ESC. Nilai tambahan ESC saat baterai berkurang
ini dapat dilihat pada Gambar 4.17 berupa grafik output ESC dengan tegangan baterai 12.4
volt sampai 9 volt untuk baterai LiPo 3s dan Gambar 4.18 berupa grafik output ESC dengan
tegangan baterai 8.2 volt sampai 6 volt untuk baterai LiPo 2s.
Gambar 4.16 Grafik daya angkat motor terhadap tegangan baterai.
260240
222204
187173
158
12.5 12 11.5 11 10.5 10 9.5
Day
a A
ngkat
(gra
m)
Tegangan Baterai (volt)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
Gambar 4.17 Grafik nilai output ESC terhadap tegangan baterai 3s.
Gambar 4.18 Grafik nilai output ESC terhadap tegangan baterai 2s.
4.2.9. Pengujian Fail Safe System
Pengujian fail safe system ini dilakukan untuk mengetahui respon yang dilakukan
wahana apabila hilang komunikasi dengan perangkat navigasi atau daya baterai rendah.
1400
1450
1500
1550
1600
1650
1700
124
0
122
9
121
8
120
7
119
6
118
5
117
4
116
3
115
2
114
1
113
0
111
9
110
8
109
7
108
6
107
5
106
4
105
3
104
2
103
1
102
0
100
9
998
987
976
965
954
943
932
921
910
Outp
ut
ES
C
Tegangan Baterai (1240 = 12.4 volt)
Grafik nilai output ESC dengan tegangan baterai 3s
throttle sebelum ditambah throttle setelah ditambah
1440
1460
1480
1500
1520
1540
1560
1580
1600
1620
820
813
806
799
792
785
778
771
764
757
750
743
736
729
722
715
708
701
694
687
680
673
666
659
652
645
638
631
624
617
610
603
Outp
ut
ES
C
Tegangan Baterai (820 = 8.2 volt)
Grafik nilai output ESC dengan tegangan baterai 2s
throttle sesudah ditambah throttle sebelum ditambah
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
Pengujian failsafe untuk hilang komunikasi dengan perangkat navigasi dilakukan dengan
menerbangkan wahana pada keadaan hovering, lalu mematikan sumber daya perangkat
navigasi. Hasilnya program akan membaca pembaharuan waktu didalam mengolah sinyal
receiver, apabila tidak ada sinyal receiver, maka waktu tidak akan diperbaharui, sehingga
program akan mengurangi nilai throttle yang diterima terakhir dengan 0.025% nilai throttle
sebelumnya untuk membuat wahana turun secara perlahan . Seperti pada Gambar 4.18,
menunjukkan nilai salah satu ESC berubah saat perangkat navigasi dimatikan (pada
lingkaran merah) dan nilai output ESC akan semakin turun. Sistem ini digunakan untuk
autolanding secara perlahan pada wahana.
Untuk pengujian failsafe daya baterai rendah, sistem tidak melakukan pengiriman data
daya baterai kepada GCS karena dibutuhkan waktu yang cukup besar untuk mengirimkan
data melalui perangkat RFM12 menuju GCS. Untuk mengatasi hal tersebut, sistem
memanfaatkan modul battery checker yang ada dan dipasang pada wahana. Battery checker
ini memiliki fungsi membaca tegangan baterai dan mengatur setpoin tegangan baterai
rendah. Jika baterai mencapat tegangan setpoin, maka alat ini akan membunyikan buzzer
yang cukup keras, sehingga dapat didengar oleh pilot untuk menandakan baterai pada
keadaan low voltage.
Selain itu, failsafe untuk low voltage battery dan hilang komunikasi dengan perangkat
navigasi dapat dilihat melalui led indikator warna merah. Led merah akan menyala apabila
terdapat kondisi low voltage dan lost connection.
4.3. Pembahasan Perangkat Lunak
Program yang dibuat pada perancangan ini terdiri dari bebebrapa subrutin dan
mengacu pada gambar diagram alir pada bab sebelumnya. Program ini berfungsi sesuai yang
dirancang, berikut penjelasanya.
4.3.1. Inisialisasi
Inisialisasi dimulai dengan memasukan library <Wire.h>, dan pendeklarasian
variable-variable yang akan digunakan di dalam program, selain itu juga pengaturan
parameter Kp, Ki, dan Kd pada pitch,roll,dan yaw pada sensor Gyro.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
Gambar 4.19 Grafik failsafe system
Pada bagian inisialisasi juga sudah memulai progam void setup() yang berisi tentang
konfigurasi pin output untuk ESC, konfigurasi pin untuk lampu led, konfigurasi setting pada
sensor gyro dan barometer, kalibrasi sensor gyro dan barometer, konfigurasi pin input untuk
receiver, menentukan jenis baterai, dan menghitung tegangan awal baterai, serta menunggu
sinyal receiver.
Pada proses void setup(), konfigurasi yang membutuhkan waktu lebih dari 3 detik akan
melakukan perintah untuk memberikan pulsa sebesar 1000µS ke semua ESC. Hal ini
dilakukan karena apabila saat power dihubungkan dan ESC menerima input <1000µS atau
>2000µS selama lebih dari 5 detik, maka ESC akan memberi perintah kepada motor untuk
membunyikan buzzer. Jadi hal tersebut dilakukan agar saat proses konfigurasi motor tidak
berisik.
4.3.2. Subrutin Terbang
Subrutin Terbang ada didalam program main loop atau program utama jika memiliki
kondisi start = 2. Kondisi tersebut adalah kondisi saat motor sudah arming atau siap terbang.
Dalam subrutin terbang terdapat beberapa proses yang dilakukan, yaitu ;
1. Mengambil data sensor barometer setiap 1 x 350 looping program.
0
200
400
600
800
1000
1200
1400
1600
1800
0.0
03
0.5
61
1.1
19
1.6
77
2.2
35
2.7
93
3.3
51
3.9
09
4.4
67
5.0
25
5.5
83
6.1
41
6.6
99
7.2
57
7.8
15
8.3
73
8.9
31
9.4
89
10.0
47
10.6
05
11.1
63
11.7
21
12.2
79
12.8
37
13.3
95
13.9
53
14.5
11
15.0
69
15.6
27
16.1
85
16.7
43
17.3
01
outp
ut
ES
C
waktu (detik)
Grafik failsafe sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
70
2. Mengambil data pitch, roll, dan yaw sensor gyro untuk input PID dengan cara
mengambil nilai terukur 20% yang akan ditambahkan dengan nilai
sebelumnya sebesar 80%. Hal ini dilakukan untuk mengurangi noise atau
gangguan pada sensor gyro. Nilai ini sudah di konversi kedalam desi degree
per second (ddps) dengan cara membagi nilai sensor terukur dengan hasil dari
pengubahan sensitivitas mili degree per second (mdps) menjadi desi degree
per second ddps.
3. Memberi perintah untuk led indikator sesuai perintah yang dikirim dari GCS
pada masing masing led dibawah motor.
4. Menghitung nilai setpoint yang dikirimkan dari perangkat remote GCS
dengan cara mengubah input receiver pitch, roll, yaw menjadi rate yang setara
dengan nilai input PID.
5. Memanggil subrutin menghitung PID.
6. Menghitung tegangan baterai dan juga menghitung tegangan baterai pada
saat baterai low voltage yang akan di indikasikan melalui led warna merah.
7. Mengurangi nilai masing masing ESC jika wahana terbang melebihi batas
ketinggian yang ditetapkan.
8. Mengkalkulasi output PID dengan nilai throttle. Hasil perhitungan ini yang
akan diindikasikan kepada setiap ESC untuk menggerakan masing-masing
motor. Dan juga menghitung nilai tambahan kepada setiap motor apabila
kinerja motor berkurang seiring dengan berkurangnya tegangan baterai.
9. Membuat pulsa untuk masing masing ESC sesuai dengan nilai ESC yang
telah dikalkukasikan sebelumnya. Pembuatan pulsa ini memanfaatkan fungsi
micros() yang disediakan oleh mikrokontroler ATMEGA2560 dengan cara
mengaktifkan pulsa HIGH selama waktu ESC yang telah dikalkulasi dan
mengaktifkan LOW saat waktu ESC sudah tidak berlaku lagi, sampai proses
looping berikutnya.
Didalam subrutin terbang terdapat fail safe system, system failsafe ini bertujuan
memberi perintah autolanding untuk wahana apabila terputus dari sistem navigasi pada
GCS. Cara kerjanya dengan mengukur waktu pada ISR (interrupt service routine) saat
receiver input menerima data dari perangkat receiver. Waktu tersebut digunakan sebagai
parameter pembanding waktu yang terdapat pada program main loop. Jika waktu program
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
71
mainloop lebih besar daripada waktu receiver input pada ISR, artinya receiver input tidak
menerima pulsa pwm dari perangkat receiver, maka system failsafe akan bekerja dengan
cara memberikan nilai pada throttle sebesar 1550µS, sehingga ESC akan memerintahkan
motor untuk berputar dengan pwm 1550µS dan wahana akan landing secara perlahan.
4.3.3. Subrutin Menghitung Sensor
Subrutin Menghitung Sensor dipanggil dengan perintah sensor_gyro();. Pemanggilan
ini dilakukan selama proses terbang atau dalam fungsi main loop. Perhitungan sensor ini
dimulai dengan komunikasi dengan sensor gyro pada alamat 1101001b atau 105 desimal.
Selanjutnya mulai membaca nilai sensor dengan cara membaca register 28h pada gyro dan
menerima 6byte data sensor yang masing masing mewakili nilai pitch, roll, yaw. Setelah
data diterima, nilai terukur pada masing masing sumbu akan dikurangi dengan nilai kalibrasi
sensor, sehingga didapatkan nilai sensor sesungguhnya.
Sedangkan sensor barometer dipanggil dengan perintah hitung_baro();. Pemanggilan
ini dilakukan setiap 1 x 350 looping program dalam fungsi main loop. Pada Gambar 2.21
memperlihatkan proses pengambilan nilai tekanan udara pada sensor baro yang selanjutnya
dihitung untuk diperoleh nilai ketinggian.
4.3.4. Subrutin Menghitung PID
Subrutin menghitung PID dipanggil dengan perintah menghitung_pid();. Pemanggilan
ini dilakukan selama proses terbang atau dalam fungsi main loop dan harus sesudah
mendapatkan nilai sensor yang terukur. Dalam subrutin menghitung pid, terdapat 3 proses
yang dilakukan untuk menghitung masing masing output pid pada pitch, roll, dan yaw.
Perhitungan ini dimulai dengan mencari error dari input roll dikurangi dengan setpoin
dari receiver. Selanjutnya perhitungan dilakukan dengan mengakumulasi parameter Kp, Ki,
Kd sehingga didapatkan nilai output PID pitch, roll, dan yaw. Nilai tersebut memiliki offset
yang sudah diatur di proses inisialisasi yaitu ± 100.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
72
4.3.5. Receiver Input
Subrutin receiver input berjalan diluar fungsi main loop yaitu didalam fungsi Interrupt
Service Routine (ISR) . pada bab sebelumnya, pengambilan paket data yang dikirim dari
perangkat navigasi GCS dimuat dalam satu buah mikrokontroler dengan proses terbang.
Namun, sistem merancang pengambilan paket data dimuat dalam mikrokontroler yang
berbeda seperti yang telah dibahas di Pengujian Pengiriman Paket Data dari GCS ke
Receiver sub bab 4.2.5.
Sistem menggunakan PORTK Arduino 2560 sebagai receiver input. Karena PORTK
adalah analog input A8 - A15, maka diperlukan pengubahan input analog menjadi input
digital dengan cara DDRK = 0. Karena PORTK adalah pin interrupt 16 -23, maka PCIE2
diaktifkan untuk melakukan interrupt pada pin A8 - A15. Jadi, selama proses main loop
berlangsung Fungsi ISR akan mengaktifkan interrupt vector pada PCINT2_vect sehingga
data receiver akan terus diperbaharui sesuai perintah perangkta navigasi dari GCS.
Untuk mendapatkan nilai receiver, maka sistem memanfaatkan waktu micros() yang
telah disediakan oleh mikrokontroler ATMEGA2560 untuk menghitung waktu receiver
input HIGH sampai LOW. Dalam rentang waktu HIGH ke LOW tersebut didapatkan nilai
sesuai dengan perintah receiver yang diterima dari perangkat navigasi pada GCS.
4.3.6. Program Penerima
Program untuk penerima paket data navigasi dari GCS ini terdapat didalam
mikrokontroler yang terpisah namun memiliki spesifikasi yang sama dengan mikrokontroler
yang digunakan untuk proses terbang.
Program penerima ini dimulai dengan inisialisasi data meliputi pemanggilan library
<SPI.h> untuk protocol komunikasi Serial, deklarasi variable, dan cek komunikasi untuk
menghubungkan RFM12 pada GCS dengan RFM12 pada wahana. Cek komunikasi
dilakukan dengan cara GCS akan mengirimkan paket data “??”. Jika data “??” diterima maka
wahana akan mengirimkan balasan paket data “!!” sehingga komunikasi GCS ke waha telah
terhubung.
Lalu dalam proses main loop, program akan menunggu GCS mengirimkan paket data
untuk pemilihan mode terbang manual atau autonomous. Pemilihan mode terbang dilakukan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
73
dengan cara GCS akan mengirimkan paket data “++”. Jika data “++” diterima maka wahana
akan mengirimkan balasan paket data “..” sehingga terpilih mode terbang manual dan maka
perangkat navigasi akan aktif.
Selanjutnya GCS akan mengirimkan paket data navigasi kepada wahana. Paket data
navigasi tersebut berupa nilai throttle, pitch, roll, dan yaw. Paket data navigasi yang diterima
wahana adalah,
0-511 0-511 0-511 0/4/9 #
throttle pitch roll yaw akhir data
Selanjutnya paket data tersebut akan di mapping 1000µS sampai 2000µS, sistem
membatasi untuk roll dan pitch adalah 1350µS sampai 1650µS, dan yaw 1250µS sampai
1750µS. Hal ini dilakukan supaya saat pengoprasian wahana, dengan delay penerimaan data
yang mencapai 400mS, wahana akan mempunyai batas gerak kurang lebih 35dps untuk roll
dan pitch, dan 120dps untuk yaw.
Nilai masing masing navigasi tersebut akan diproses untuk diubah menjadi pulsa
sebesar 1000µS sampai 2000µS, dengan cara mengaktifkan pin digital 10-13 bernilai HIGH
selama waktu sesuai nilai masing masing navigasi tersebut, dan akan bernilai LOW saat
waktu sudah tidak berlaku lagi sampai proses looping berikutnya.
Program penerima hanya memilih satu kali pilihan mode terbang, jika ingin diubah
dari mode manual menjadi autonomous, maka semua perangkat GCS dan wahana harus di
reset ulang dengan cara melepas dan menghubungkan kembali power GCS dan wahana.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
74
BAB 5
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Dari hasil pengujian dan pengambilan data Flight Controller pada sistem quadcopter
menggunakan sensor IMU (Inertial Measurement Unit) berbasis Mikrokontroller ATMEGA
2560, dapat disimpulkan bahwa :
1. Wahana dapat terbang dan melakukan perintah kanan – kiri, maju – mundur,
berputar kanan – berputar kiri, sesuai yang dikendalikan dari perangkat
navigasi, serta tidak terbang lebih dari level ketinggian yang ditetapkan.
2. Flight Controller dapat terbang dengan parameter kontroler PID, Kp = 5, Ki
= 0.08, dan Kd 55.5 dalam waktu looping program kurang lebih 4mS.
3. Sensor barometer tidak dapat memperbaharui data setiap 1 × looping
program. Untuk itu pembacaan data sensor barometer dilakukan setiap 1 ×
350 looping atau setiap 1.4 detik.
4. Failsafe sistem untuk tegangan baterai dilakukan dengan memanfaatkan
modul battery checker, sedangkan failsafe sistem untuk lost connection,
wahana akan melakukan autolanding secara otomatis
5.2. Saran
Saran – saran dari pengembangan Flight Controller pada sistem quadcopter
menggunakan sensor IMU (Inertial Measurement Unit) berbasis Mikrokontroller ATMEGA
2560 adalah :
1. Membuat altitude lock, sehingga wahana dapat terbang diketinggian yang
ditetapkan dengan mengunci level ketinggian.
2. Memanfaatkan sensor akeselerometer untuk penerbangan wahana yang lebih
stabil.
V
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
75
DAFTAR PUSTAKA
[1] -----,-----, https://www.youtube.com/watch?v=2MRiVSyedS4, diakses 20 November
2015.
[2] -----,-----, http://firmanikhsan.com/mengenal-quadcopter/ diakses 23 November
2015.
[3] -----,-----, http://www.atmel.com/images/atmel-2549-8-bit-avr-microcontroller-
atmega640-1280-1281-2560-2561_datasheet.pdf, diakses 23 November 2015.
[4] -----,-----, Arduino Introduction, http://arduino.cc/en/Guide/Introduction , diakses 23
November 2015
[5] -----,-----, http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Pressure/ BST-
BMP085-DS000-06.pdf, diakses 23 November 2015.
[6] -----,-----, https://www.sparkfun.com/tutorials/253, diakses 23 November 2015.
[7] -----,-----, Gupta Sudhir.,2002,Element of Control System.Prentince Hall ,London.
[8] -----,-----, http://www.st.com/stwebui/static/active/en/resource/technical/
document/datasheet/CD00265057.pdf , diakses 25 November 2015.
[9] -----,-----, http://www.medanrc.com/content/18-memilih-elektronik-wahana, diakses
25 November 2015.
[10] -----,-----, http://www.kaskus.co.id/thread/000000000000000007779353/ multirotor-
copter-quadcopter/ , diakses 25 November 2015.
[11] -----,-----, http://purnomosejati.wordpress.wordpress.com/2011/08/25/ mengenal-
komunikasi-i2cinter-integrated-cicuit/ , diakses 5 Januari 2016.\
[12] -----,-----, http://fen222.blogspot.co.id/2012/01/mengenal-baterai-lithium-polimer-
lipo.html , diakses 2 februari 2016.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
76
LAMPIRAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L1
Blok Diagram Sistem Keseluruhan
Mikrokontroler
KeypadPerangkat
Navigasi
Layar
Penampil
Transceiver TransceiverMikrokontroler
TambahanMikrokontroler
Modul
GPS-Compass
ESC
1,2,3,4
Motor
1,2,3,4
Gyrometer
Barometer
GROUND CONTROL STATION WAHANA
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L2
Gambar Rangkaian Flight Controller
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L3
Data Sensor Gyro (mdps)
g_roll g_pitch g_yaw
-7.19 2.45 0.63
-6.19 1.45 6.63
1.81 -8.55 21.63
-0.19 -4.55 2.63
8.81 5.45 12.63
-435.19 65.45 49.63
-2217.19 27.45 -59.37
289.81 11.45 -28.37
1539.81 -51.55 33.63
637.81 -19.55 19.63
478.81 -501.55 212.63
2788.81 691.45 355.63
1191.81 123.45 271.63
-1663.19 -117.55 -317.37
-1112.19 -13.55 -53.37
-252.19 9.45 -30.37
-247.19 30.45 8.63
19.81 -13.55 -0.37
-302.19 -1237.55 -224.37
-47.19 -2193.55 -58.37
-6.19 2302.45 -4.37
33.81 1106.45 79.63
238.81 963.45 203.63
9.81 -1.55 -13.37
37.81 30.45 -265.37
-63.19 1401.45 156.63
-45.19 -1.55 41.63
19.81 -1304.55 -53.37
-17.19 -679.55 22.63
48.81 -436.55 30.63
Data Sensor Barometer
Ketinggian (meter)
206.23
205.72
205.72
206.48
205.72
205.72
205.72
204.95
205.46
205.72
205.97
204.95
205.72
205.72
206.23
Data percobaan daya angkat
motor
teg baterai
volt throttle
daya angkat
(gram)
12.5 1500 260
12 1500 240
11.5 1500 222
11 1500 204
10.5 1500 187
10 1500 173
9.5 1500 158
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L4
Data Output PID
looping
ke
Output
Roll
Output
Pitch
Output
Yaw
3 -0.01 0.06 0.02
33 0.01 0.06 0.33
63 -0.07 0.01 0.11
93 -63.39 4.24 -4.91
123 -1.9 0.42 0.87
153 -1.74 -0.39 -0.97
183 29.81 -0.42 5.76
213 -15.21 0.44 -0.8
243 6.55 -1.15 1.37
273 0.5 0.25 1.46
303 0.9 -43.6 -7.07
333 0.52 7.68 2.06
363 1.07 0.02 -1.34
393 0.63 0.82 1.49
423 0.28 1.3 1.14
453 0.49 -9.36 11.21
483 0.25 1.2 3.36
513 0.55 0.8 0.23
543 0.66 0.84 0.18
573 0.93 0.84 -99.25
603 0.84 0.54 93.72
633 0.2 0.66 4.7
663 0.41 1.23 87.78
693 0.36 0.31 -93.78
723 -0.01 -0.06 -27.88
753 0.88 0.59 -2.17
783 0.82 0.77 -2.14
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L5
FLIGHT CONTROLLER TAMPAK ATAS
FLIGHT CONTROLLER TAMPAK BAWAH
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L6
Manual Penggunaan Sistem Quadcopter
Manual Penggunaan Sistem Quadcopter
Sistem quadcopter terdiri dari sebuah quadcopter sebagai wahana dan sebuah Ground
Control Stations (GCS) sebagai perangkat pemantau dan pengontrol wahana. Wahana dapat
beroperasi pada 2 jenis pilihan pengendalian, yaitu: Manual dan Autonomous. Untuk jenis
pengendalian manual, wahana akan bergerak sesuai dengan perintah perangat navigasi pada
GCS. Sedangkan untuk jenis pengendalian autonomous, wahana akan bergerak secara
mandiri dari sebuah titik awal ke sebuah titik tujuan hasil masukkan dari pengguna.
Spesifikasi Wahana
1. Menggunakan 2 buah mikokontroler Arduino Mega 2560 R3.
2. Menggunakan modul transceiver RFM12S 433MHz dengan antarmuka SPI.
3. Motor penggerak : Motor Brushless Turnigy 1400Kv
4. Ecs: 30A
5. Sensor: Barometer (manual), Gyro (manual/autonomous) , GPS (autonomous), dan
Compass (autonomous).
6. Membutuhkan catu daya baterai lithium polymer (li-po) 2 cell atau 3 cell.
Spesifikasi GCS
1. Menggunakan mikrokontoler Arduino Mega 2560 R3.
2. Menggunakan modul transceiver RFM12S 433MHz dengan antarmuka SPI.
3. Menggunakan keypad 3x4 sebagai perangkat masukkan nilai parameter.
4. Menggunakan LCD 20x4 sebagai layar penampil informasi.
5. Terdapat sebuah perangkat navigasi untuk mengontrol wahana (manual).
6. Membutuhkan catu daya AC 220 volt.
Risha Augerah Nenu Lema,
Ferdinandus Hans, dan
Adovan Pujianta Ginting
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L7
Prosedur Penggunaan
Langkah
ke Deskripsi Proses
1 Rangkai komponen penyusun Quadcopter dan GCS sesuai
panduan Wahana
2 Sambungkan power dari baterai ke wahana Wahana
3 Tunggu sampai blinking LED pada modul GPS-Compass
menyala Wahana
4 Lepas sambungan power antara baterai dan wahana Wahana
5 Lepas sambungan power rangkaian tambahan Wahana
6 Sambungkan power dari baterai ke wahana Wahana
7 Tunggu sampai blinking LED hijau pada flight controller
untuk menyala Wahana
8 Sambungkan power dari rangkaian flight controller ke
rangkaian tambahan Wahana
9 Sambungkan power ke GCS GCS
10 Tunggu proses cek komunikasi GCS
11 Pilih mode pengendalian yang diinginkan GCS
Catatan:
Masing-masing mikrokontroler pada wahana telah terinstal program
flight_controller.ino dan autonomous.ino, sedangkan pada GCS terinstal
program GCS.ino.
Proses kerja GCS berlangsung hanya untuk satu pemilihan pengendalian. Jika
menghendaki berganti jenis pengendalian maka perlu dilakukan reset ulang
GCS dengan mematikan daya GCS.
Panduan Pengendalian Manual
Pengguna dapat menghubungkan kabel konektor dari port perangkat navigasi pada
GCS ke perangkat navigasi saat pengendalian manual terpilih. Jika led indikator pada
perangkat navigasi menyala, maka perangkat navigasi telah berhasil di aktifkan dan siap
untuk digunakan. Berikut ini merupakan rangkaian dari perangkat navigasi:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L8
Untuk dapat menggerakan wahana naik dan turun dilakukan dengan menggerakkan
potensiometer throttle. Jika potensiometer throttle di gerakan ke atas maka wahana juga akan
bergerak ke atas. Pergerakan wahana maju atau mundur dilakukan dengan menggerakan
potensimeter pitch, sedangkan untuk ke kiri atau ke kanan dilakukan dengan menggerakan
potensiometer roll. Berbeda dengan throttle, pitch, dan roll, pada yaw adalah berupa push
button, sehingga untuk mengendalikan gerakan wahana berputar ke kiri dengan menekan
tombol yaw kiri dan begitu juga untuk pergerakan memutar ke kanan dengan yaw kanan.
Panduan Pengendalian Autonomous
Pada saat wahana bekerja pada pengendalian autonomous, pengguna dapat
memerintahkan wahana untuk bergerak ke sebuah titik tujuan secara otomatis. Namun
demikian, pengguna tetap dapat memantau pergerakan dan titik koordinat wahana secara
aktual melalui GCS. Pengguna tetap harus memantau secara langsung jarak pengoperasian
wahana, pengoperasian wahana harus dilakukan kurang dari 100 meter.
Berikut ini adalah prosedur penggunaan wahana dan GCS saat pengendalian
autonomous terpilih:
1. GCS akan menampilkan titik koordinat dari wahana pada LCD. Pengguna
disarankan untuk mencatat titik koordinat awal.
2. Silakan masukan koordinat tujuan tujuan dari wahana melalui keypad 3x4
pada GCS. Nilai yang diberikan pada masing-masing lattitude dan longitude
hanya enam digit terakhir. Jika koordinat tujuan sudah bener maka pengguna
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L9
dipersilakan mengunci koordinat tujuan dengan menekan tombol ‘*’. Jika
terdapat kesalahan dalam memasukan koordinat, pengguna bisa menghapus
nilai koordinat yang diberikan dengan menekan tombol ‘#’.
3. Wahana akan melakukan arming (kondisi dimana keempat mulai berputar).
4. Wahana mulai bermanuver dan akan berputar untuk menghadap ke utara.
5. Wahana akan mulai bergerak menuju ke titik tujuan dengan menyelesaikan
nilai lattitude terlebih dahulu. Setelah nilai lattitude terpenuhi, wahana akan
melanjutkan pergerakan untuk menyelasaikan nilai longitude.
6. Seluruh proses pergerakan wahana dan titik koordinat wahana dapat dipantau
di layar penampil GCS.
7. Saat prosedur 5 selesai dikerjakan, wahana akan mengecek ulang kesesuaian
titik koordinat tempat wahana berada dengan koordinat tujuan. Jika didapati
nilai koordinat belum sesuai, maka wahana akan mengulang prosedur ke-5
kembali.
8. Seluruh prosedur pengendalian autonomous akan berhenti saat koordinat
aktual wahana telah masuk ke dalam rentang nilai koordinat tujuan ±5 meter.
9. Saat wahana telah mencapai koordinat tujuan, maka wahana akan landing
dengan sendirinya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L10
Rangkaian Mikro-1, Mikro-2, dan GCS
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L11
LISTING PROGRAM FLIGHT CONTROLLER
#include <Wire.h>
//Setting PID dan level ketinggian di bawah ini
float kp_roll = 5.0;
float ki_roll = 0.08;
float kd_roll = 55.5;
int pid_offset_roll = 100;
float kp_pitch = kp_roll;
float ki_pitch = ki_roll;
float kd_pitch = kd_roll;
int pid_offset_pitch = pid_offset_roll;
float kp_yaw = 40.0;
float ki_yaw = 0.2;
float kd_yaw = 0.0;
int pid_offset_yaw = 100;
//batas ketinggian dari permukaan awal take-off (meter)
int batas_tinggi = 3;
//Deklarasi variable
byte l_1, l_2, l_3, l_4;
float rx_in_1, rx_in_2, rx_in_3, rx_in_4;
int esc_1, esc_2, esc_3, esc_4;
int throttle, teg_baterai;
unsigned long tc_1, tc_2, tc_3, tc_4, esc_timer, waktu_0_esc;
unsigned long t_1, t_2, t_3, t_4, waktu_sekarang, fail_safe_time;
int cal_int, start, jenis_baterai;
unsigned long waktu_esc, wektu, wektu1;
double g_pitch, g_roll, g_yaw;
double g_roll_kalibrasi, g_pitch_kalibrasi, g_yaw_kalibrasi;
byte highByte, lowByte;
float roll_error, pitch_error, yaw_error;
float pid_i_roll, roll_setpoint, g_roll_input, output_roll,
roll_error_sebelumnya;
float pid_i_pitch, pitch_setpoint, g_pitch_input, output_pitch,
pitch_error_sebelumnya;
float pid_i_yaw, yaw_setpoint, g_yaw_input, output_yaw,
yaw_error_sebelumnya;
float temperature, pressure, atm, altitude, alt_0, alt_lock;
float ketinggian, alt_setpoint;
int tinggi;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L12
//inisialisasi program
void setup() {
Wire.begin();
DDRB |= B11110000;
DDRC |= B11100000;
DDRA |= B10101010;
bmp085Calibration();
digitalWrite(31, HIGH);
delay(2000);
//seting sensor gyro-----------------------
Wire.beginTransmission(105);
Wire.write(0x20);
Wire.write(0x0F);
Wire.endTransmission();
Wire.beginTransmission(105);
Wire.write(0x24);
Wire.write(0x02);
Wire.endTransmission();
Wire.beginTransmission(105);
Wire.write(0x23);
Wire.write(0x90);
Wire.endTransmission();
//----------------------------------------
delay(250);
// mencari titik awal ketinggian
hitung_baro();
alt_0 = altitude;
alt_setpoint = alt_0 + batas_tinggi;
delay(100);
//Kalibrasi offset pada sensor
for (cal_int = 0; cal_int < 1000 ; cal_int ++) {
if (cal_int % 15 == 0)digitalWrite(31, !digitalRead(31));
sensor_gyro();
g_roll_kalibrasi += g_roll;
g_pitch_kalibrasi += g_pitch;
g_yaw_kalibrasi += g_yaw;
//selama menunggu receiver, semua ESC harus diberi pulsa 1000uS agar
tidak berisik
PORTB |= B11110000;
delayMicroseconds(1000);
PORTB &= B00001111;
delay(3);
}
g_roll_kalibrasi /= 1000;
g_pitch_kalibrasi /= 1000;
g_yaw_kalibrasi /= 1000;
//mengubah input analog a8 - a15 menjadi input digital
DDRK = 0;
PCICR |= (1 << PCIE2);
PCMSK2 |= (1 << PCINT16);
PCMSK2 |= (1 << PCINT17);
PCMSK2 |= (1 << PCINT18);
PCMSK2 |= (1 << PCINT19);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L13
while (rx_in_3 < 990 || rx_in_3 > 1020 || rx_in_4 < 1400) {
start ++;
//selama menunggu receiver, semua ESC harus diberi pulsa 1000uS
agar tidak berisik
PORTB |= B11110000;
delayMicroseconds(1000);
PORTB &= B00001111;
delay(3);
if (start == 125) {
digitalWrite(31, !digitalRead(31));
start = 0;
}
}
start = 0;
digitalWrite(31, LOW);
//menghitung tegangan baterai
teg_baterai = (analogRead(0) + 70) * 1.2317;
//menentukan jenis baterai 3s atau 2s
if (teg_baterai < 1270 && teg_baterai > 900) {
jenis_baterai = 3;
digitalWrite(31, HIGH);
delay(2000);
}
else if (teg_baterai < 890 && teg_baterai > 600) {
jenis_baterai = 2;
digitalWrite(30, HIGH);
delay(2000);
}
digitalWrite(30, LOW);
digitalWrite(31, LOW);
}
void loop() {
if (tinggi == 350) {
hitung_baro();
tinggi = 0;
}
tinggi ++;
sensor_gyro();
g_roll_input = (g_roll_input * 0.8) + ((g_roll / 571.4286) * 0.2);
g_pitch_input = (g_pitch_input * 0.8) + ((g_pitch / 571.4286) * 0.2);
g_yaw_input = (g_yaw_input * 0.8) + ((g_yaw / 571.4286) * 0.2);
//proses arming----------------------------------------------------------
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L14
//proses arming-----------------------------------------------------
-----
if (rx_in_3 < 1100 && rx_in_4 < 1300) {
start = 1;
}
//
if (start == 1 && rx_in_3 < 1100 && rx_in_4 > 1400) {
start = 2;
pid_i_roll = 0;
roll_error_sebelumnya = 0;
pid_i_pitch = 0;
pitch_error_sebelumnya = 0;
pid_i_yaw = 0;
yaw_error_sebelumnya = 0;
digitalWrite(31, HIGH);
}
//proses disarm---------------------------------------------------
-------
if (start == 2 && rx_in_3 < 1100 && rx_in_4 > 1700)
{
digitalWrite(31, LOW);
start = 0;
}
//menyalakan led--------------------------------------------------
-------
if (rx_in_1 > 1520) {
PORTA = B00001010;
} else if (rx_in_1 < 1480) {
PORTA = B10100000;
}
if (rx_in_2 > 1520) {
PORTA = B00101000;
} else if (rx_in_2 < 1480) {
PORTA = B10000010;
}
if (rx_in_1 < 1520 && rx_in_1 > 1480 && rx_in_2 < 1520 && rx_in_2
> 1480 ) {
PORTA = B10101010;
}
if (rx_in_3 > 1050) {
if (rx_in_4 > 1520) {
PORTA = B00100010;
} else if (rx_in_4 < 1480)
{
PORTA = B10001000;
} else if (rx_in_1 < 1520 && rx_in_1 > 1480 && rx_in_2 < 1520 &&
rx_in_2 > 1480 ) {
PORTA = B10101010;
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L15
//mengatur setipoint roll, pitch dan yaw ---------------------------
-----
roll_setpoint = 0;
if (rx_in_1 > 1510)roll_setpoint = (rx_in_1 - 1510) / 40.0;
else if (rx_in_1 < 1490)roll_setpoint = (rx_in_1 - 1490) / 40.0;
pitch_setpoint = 0;
if (rx_in_2 > 1510)pitch_setpoint = (rx_in_2 - 1510) / 40.0;
else if (rx_in_2 < 1490)pitch_setpoint = (rx_in_2 - 1490) / 40.0;
yaw_setpoint = 0;
if (rx_in_3 > 1050) {
if (rx_in_4 > 1510)yaw_setpoint = (rx_in_4 - 1510) / 15.0;
else if (rx_in_4 < 1490)yaw_setpoint = (rx_in_4 - 1490) / 15.0;
}
//----------------------------------------------------------------
----
menghitung_pid(); //menghitung PID
teg_baterai = teg_baterai * 0.92 + (analogRead(0) + 70) * 0.098;
if (jenis_baterai == 3) {
if (teg_baterai < 1090 && teg_baterai > 900) {
digitalWrite(30, HIGH); //mengaktifkan led merah jika baterai
3s mencapai level low voltage
}
}
else if (jenis_baterai = 2) {
if (teg_baterai < 700 && teg_baterai > 600) {
digitalWrite(30, HIGH);//mengaktifkan led merah jika baterai
2s mencapai level low voltage
}
}
if (altitude > alt_setpoint) {
ketinggian = 50;
}
else {
ketinggian = 0;
}
//fail safe jika lost koneksi dengan transmitter
if (fail_safe_time < waktu_sekarang)
{
digitalWrite(30, HIGH);
digitalWrite(32, LOW);
rx_in_3 -= rx_in_3 * (1 / (float)10000);
if (rx_in_3 < 1200) {
digitalWrite(31, LOW);
start = 0;
}
} else {
digitalWrite(30, LOW);
digitalWrite(32, HIGH);
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L16
throttle = rx_in_3;
if (start == 2) {
if (throttle > 1900) throttle = 1900;
esc_1 = throttle - output_pitch + output_roll - output_yaw - ketinggian;
esc_2 = throttle + output_pitch + output_roll + output_yaw - ketinggian;
esc_3 = throttle + output_pitch - output_roll - output_yaw - ketinggian;
esc_4 = throttle - output_pitch - output_roll + output_yaw - ketinggian;
//memberi nilai tambah ESC untuk voltage drop pada lipo 3s
if (jenis_baterai == 3) {
if (teg_baterai < 1240 && teg_baterai > 900) {
esc_1 += esc_1 * ((1240 - teg_baterai) / (float)3500);
esc_2 += esc_2 * ((1240 - teg_baterai) / (float)3500);
esc_3 += esc_3 * ((1240 - teg_baterai) / (float)3500);
esc_4 += esc_4 * ((1240 - teg_baterai) / (float)3500);
}
}
//memberi nilai tambah ESC untuk voltage drop pada lipo 2s
else if (jenis_baterai == 2) {
if (teg_baterai < 820 && teg_baterai > 600) {
esc_1 += esc_1 * ((820 - teg_baterai) / (float)3500);
esc_2 += esc_2 * ((820 - teg_baterai) / (float)3500);
esc_3 += esc_3 * ((820 - teg_baterai) / (float)3500);
esc_4 += esc_4 * ((820 - teg_baterai) / (float)3500);
}
}
//saat wahana arming, motor berputar dengan pwm 1200uS
if (esc_1 < 1200) esc_1 = 1200;
if (esc_2 < 1200) esc_2 = 1200;
if (esc_3 < 1200) esc_3 = 1200;
if (esc_4 < 1200) esc_4 = 1200;
//membatasi nilai esc tidak lebih dari 2000uS
if (esc_1 > 2000)esc_1 = 2000;
if (esc_2 > 2000)esc_2 = 2000;
if (esc_3 > 2000)esc_3 = 2000;
if (esc_4 > 2000)esc_4 = 2000;
}
else {//saat wahana disarm, ESC tetap diberi nilai 1000uS agar
motor tidak berisik
esc_1 = 1000;
esc_2 = 1000;
esc_3 = 1000;
esc_4 = 1000;
}
//MENCIPTAKAN PULSA UNTUK MASING MASING ESC---------------
while (micros() - waktu_esc < 4000);
waktu_esc = micros();
PORTB |= B11110000;
tc_1 = esc_1 + waktu_esc;
tc_2 = esc_2 + waktu_esc;
tc_3 = esc_3 + waktu_esc;
tc_4 = esc_4 + waktu_esc;
while (PORTB >= 16) {
waktu_0_esc = micros();
if (tc_1 <= waktu_0_esc)PORTB &= B11101111;
if (tc_2 <= waktu_0_esc)PORTB &= B11011111;
if (tc_3 <= waktu_0_esc)PORTB &= B10111111;
if (tc_4 <= waktu_0_esc)PORTB &= B01111111;
}
//MENCIPTAKAN PULSA UNTUK MASING MASING ESC---------------
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L17
SUBRUTIN RECEIVER INPUT
//Intterupt Service Routine diapnggil saat A8-A11 berubah keadaan
ISR(PCINT2_vect) {
waktu_sekarang = micros();
//Channel 1=========================================
if (PINK & B00000001) {
if (l_1 == 0) {
l_1 = 1;
t_1 = waktu_sekarang;
fail_safe_time = t_1 + 10000;
}
}
else if (l_1 == 1) {
l_1 = 0;
rx_in_1 = waktu_sekarang - t_1;
}
//Channel 2=========================================
if (PINK & B00000010 ) {
if (l_2 == 0) {
l_2 = 1;
t_2 = waktu_sekarang;
}
}
else if (l_2 == 1) {
l_2 = 0;
rx_in_2 = waktu_sekarang - t_2;
}
//Channel 3=========================================
if (PINK & B00000100 ) {
if (l_3 == 0) {
l_3 = 1;
t_3 = waktu_sekarang;
}
}
else if (l_3 == 1) {
l_3 = 0;
rx_in_3 = waktu_sekarang - t_3;
}
//Channel 4=========================================
if (PINK & B00001000 ) {
if (l_4 == 0) {
l_4 = 1;
t_4 = waktu_sekarang;
}
}
else if (l_4 == 1) {
l_4 = 0;
rx_in_4 = waktu_sekarang - t_4;
}
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L18
SUBRUTIN MENGHITUNG SENSOR GYRO
//Subrutin menghitung sensor gyro
void sensor_gyro() {
Wire.beginTransmission(105);
Wire.write(168);
Wire.endTransmission();
Wire.requestFrom(105, 6);
while (Wire.available() < 6);
lowByte = Wire.read();
highByte = Wire.read();
g_pitch = ((highByte << 8) |
lowByte);
if (cal_int == 1000)g_pitch -= g_pitch_kalibrasi;
lowByte = Wire.read();
highByte = Wire.read();
g_roll = ((highByte << 8) | lowByte);
if (cal_int == 1000)g_roll -= g_roll_kalibrasi;
lowByte = Wire.read();
highByte = Wire.read();
g_yaw = ((highByte << 8) | lowByte);
g_yaw *= -1;
if (cal_int == 1000)g_yaw -= g_yaw_kalibrasi;
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L19
SUBRUTIN MENGHITUNG PID
//subrutin menghitung PID
void menghitung_pid() {
//Roll calculations
roll_error = g_roll_input - roll_setpoint;
pid_i_roll += ki_roll * roll_error;
if (pid_i_roll > pid_offset_roll)pid_i_roll = pid_offset_roll;
else if (pid_i_roll < pid_offset_roll * -1)pid_i_roll =
pid_offset_roll * -1;
output_roll = kp_roll * roll_error + pid_i_roll + kd_roll *
(roll_error - roll_error_sebelumnya);
if (output_roll > pid_offset_roll)output_roll = pid_offset_roll;
else if (output_roll < pid_offset_roll * -1)output_roll =
pid_offset_roll * -1;
roll_error_sebelumnya = roll_error;
//Pitch calculations
pitch_error = g_pitch_input - pitch_setpoint;
pid_i_pitch += ki_pitch * pitch_error;
if (pid_i_pitch > pid_offset_pitch)pid_i_pitch = pid_offset_pitch;
else if (pid_i_pitch < pid_offset_pitch * -1)pid_i_pitch =
pid_offset_pitch * -1;
output_pitch = kp_pitch * pitch_error + pid_i_pitch + kd_pitch *
(pitch_error - pitch_error_sebelumnya);
if (output_pitch > pid_offset_pitch)output_pitch =
pid_offset_pitch;
else if (output_pitch < pid_offset_pitch * -1)output_pitch =
pid_offset_pitch * -1;
pitch_error_sebelumnya = pitch_error;
//Yaw calculations
yaw_error = g_yaw_input - yaw_setpoint;
pid_i_yaw += ki_yaw * yaw_error;
if (pid_i_yaw > pid_offset_yaw)pid_i_yaw = pid_offset_yaw;
else if (pid_i_yaw < pid_offset_yaw * -1)pid_i_yaw =
pid_offset_yaw * -1;
output_yaw = kp_yaw * yaw_error + pid_i_yaw + kd_yaw * (yaw_error
- yaw_error_sebelumnya);
if (output_yaw > pid_offset_yaw)output_yaw = pid_offset_yaw;
else if (output_yaw < pid_offset_yaw * -1)output_yaw =
pid_offset_yaw * -1;
yaw_error_sebelumnya = yaw_error;
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L20
BAROMETER
#define BMP085_ADDRESS 0x77 // alamat komunikasi dengan sensor
barometer
const unsigned char OSS = 0; // Oversampling Setting
int ac1;
int ac2;
int ac3;
unsigned int ac4;
unsigned int ac5;
unsigned int ac6;
int b1;
int b2;
int mb;
int mc;
int md;
long b5;
void hitung_baro()
{
temperature = bmp085GetTemperature(bmp085ReadUT());
pressure = bmp085GetPressure(bmp085ReadUP());
atm = pressure / 101325;
altitude = calcAltitude(pressure);
}
void bmp085Calibration()
{
ac1 = bmp085ReadInt(0xAA);
ac2 = bmp085ReadInt(0xAC);
ac3 = bmp085ReadInt(0xAE);
ac4 = bmp085ReadInt(0xB0);
ac5 = bmp085ReadInt(0xB2);
ac6 = bmp085ReadInt(0xB4);
b1 = bmp085ReadInt(0xB6);
b2 = bmp085ReadInt(0xB8);
mb = bmp085ReadInt(0xBA);
mc = bmp085ReadInt(0xBC);
md = bmp085ReadInt(0xBE);
}
// Calculate temperature in deg C
float bmp085GetTemperature(unsigned int ut){
long x1, x2;
x1 = (((long)ut - (long)ac6)*(long)ac5) >> 15;
x2 = ((long)mc << 11)/(x1 + md);
b5 = x1 + x2;
float temp = ((b5 + 8)>>4);
temp = temp /10;
return temp;
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L21
long bmp085GetPressure(unsigned long up){
long x1, x2, x3, b3, b6, p;
unsigned long b4, b7;
b6 = b5 - 4000;
// Calculate B3
x1 = (b2 * (b6 * b6)>>12)>>11;
x2 = (ac2 * b6)>>11;
x3 = x1 + x2;
b3 = (((((long)ac1)*4 + x3)<<OSS) + 2)>>2;
// Calculate B4
x1 = (ac3 * b6)>>13;
x2 = (b1 * ((b6 * b6)>>12))>>16;
x3 = ((x1 + x2) + 2)>>2;
b4 = (ac4 * (unsigned long)(x3 + 32768))>>15;
b7 = ((unsigned long)(up - b3) * (50000>>OSS));
if (b7 < 0x80000000)
p = (b7<<1)/b4;
else
p = (b7/b4)<<1;
x1 = (p>>8) * (p>>8);
x1 = (x1 * 3038)>>16;
x2 = (-7357 * p)>>16;
p += (x1 + x2 + 3791)>>4;
long temp = p;
return temp;
}
char bmp085Read(unsigned char address)
{
unsigned char data;
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(address);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 1);
while(!Wire.available());
return Wire.read();
}
int bmp085ReadInt(unsigned char address)
{
unsigned char msb, lsb;
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(address);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 2);
while(Wire.available()<2)
;
msb = Wire.read();
lsb = Wire.read();
return (int) msb<<8 | lsb;
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L22
unsigned int bmp085ReadUT(){
unsigned int ut;
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(0xF4);
Wire.write(0x2E);
Wire.endTransmission();
delay(5);
ut = bmp085ReadInt(0xF6);
return ut;
}
unsigned long bmp085ReadUP(){
unsigned char msb, lsb, xlsb;
unsigned long up = 0;
Wire.beginTransmission(BMP085_ADDRESS);
Wire.write(0xF4);
Wire.write(0x34 + (OSS<<6));
Wire.endTransmission();
delay(2 + (3<<OSS));
msb = bmp085Read(0xF6);
lsb = bmp085Read(0xF7);
xlsb = bmp085Read(0xF8);
up = (((unsigned long) msb << 16) | ((unsigned long) lsb << 8) |
(unsigned long) xlsb) >> (8-OSS);
return up;
}
float calcAltitude(float pressure){
float A = pressure/101325;
float B = 1/5.25588;
float C = pow(A,B);
C = 1 - C;
C = C /0.0000225577;
return C;
}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI