PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 i
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 ii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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. iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
viii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
ix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.
x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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,
xi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 xii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
xiii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
xiv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 xv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
xvii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
xviii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB 1I 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).
1
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
BAB 2II 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].
5
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
4
Tombol Reset
5
Pin Analog
Masukan power eksternal bila Arduino bekerja mandiri (tanpa komunikasi dengan PC melalui kabel serial USB). Tombol reset internal yang digunakan untuk mereset modul Arduino. 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
8
Light-Emitting
Pin digital 13 merupakan pin yang terkoneksi dengan LED
Diode(LED)
internal Arduino.
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
11
Pin Two Wire
Terdiri dari Serial Data Line (SDA) dan Serial Interface Clock
Interface (TWI)
(SCL).
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]. 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 12 Peripheral Interface(SPI)
Jalur master untuk mengirimkan data ke peralatan. 3. Serial Clock (SCK) 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.
Gambar 2.11 Tampilan IDE Arduino
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 masingmasing 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]. 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
2.2.3. SPSR – SPI Status Register.
Gambar 2.14 Register Keadaan SPI (SPSR)[3].
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 𝐸(𝑖) + Dengan 𝐾𝑖 =
𝐾𝑝 + 𝑇 𝑇𝑖
dan 𝐾𝑑 =
𝐾𝑝+𝑇𝑑 𝑇
𝐾𝑑 𝑇
[𝐸(𝑛) − 𝐸(𝑛 − 1)]
(2.5)
T= waktu sampling
Dengan hasil penyederhanaan nilai sigma (2.9) maka di peroleh: 𝑈(𝑛) = 𝑢(𝑛 − 1) + 𝐾𝑝(𝑒(𝑛) − 𝑒(𝑛 − 1)) + 𝐾𝑖 𝑒(𝑛) + 𝐾𝑑(𝑒(𝑛) − 2𝑒(𝑛 − 1)) + 𝑒(𝑛 − 2))
2.5.
(2.6)
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
BAB 3III 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.
35
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 2216800KV 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, RFM12433Mhz, 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 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
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.
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
depan
kiri
2
kanan belakang
4
3
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.
P_out = (gyro – Receiver) x Kp
I_out = I_outt-1 + ((gyro – Receiver) x Ki)
+
PID output
D_out = (gyro – Receiver – gyrot-1 – Receivert-1 ) x Kd 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.
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
BAB 4IV 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 49
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. Warna Led
HIJAU
MERAH
BLINKING LED
Fungsi Indikator Status Deklarasi variable dan On deklarasi pin I/O Kalibrasi sensor gyro Berkedip Menunggu sinyal receiver Berkedip Mengetahui jenis baterai On 3 sell Motor berputar On Mengetahui jenis baterai On 2 sell Tegangan baterai rendah On Hilang komunikasi On dengan GCS Selama proses terbang
On
Waktu 2 detik 4 detik sampai receiver on 2 detik Sampai motor off 2 detik Sampai ganti baterai Sampai terhubung kembali Sampai hilang komunikasi
Tabel 4.2 PIN I/O pada Flight Controller. Pin Power 5 volt 3.3 volt GND A0 A8-A15 D10 D11 D12 D13 D20 D21 D23 D25 D27 D29 D30 D31 D32
Fungsi sumber daya pada flight controller menyediakan daya 5 volt menyediakan daya 3.3 volt ground menghitung tegangan baterai receiver input ESC 1 ESC 2 ESC 3 ESC 4 SDA SCL led blingking motor 1 led blingking motor 2 led blingking motor 3 led blingking motor 4 led merah led hijau led blinking
Keterangan tersedia 2 pasang pin tersedia 3 pin tersedia 3 pin tersedia 3 pin tersedia 1 pin untuk receiver motor depan kanan motor belakang kanan motor belakang kiri motor depan kiri untuk sensor untuk sensor led indikator pada motor
led indikator
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.
OUTPUT ESC 1 2000 1800 1600
1200 1000
Wahana hovering
800 600
siap terbang ESC = 1200µS
400 200
tidak siap terbang ESC = 1000µS
0
1 172 343 514 685 856 1027 1198 1369 1540 1711 1882 2053 2224 2395 2566 2737 2908 3079 3250 3421 3592 3763 3934 4105 4276 4447 4618 4789 4960 5131 5302 5473 5644 5815
output ESC
1400
jumlah looping program
Gambar 4.6 Grafik output ESC 1 saat wahana terbang.
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
sensor gyro + Serial print
keterangan disarm arming disarm arming 1 Serial print
waktu looping (µS) 2672 3000 15972 16250 4156
Status Bisa terbang Bisa terbang Tidak bisa terbang Tidak bisa terbang 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
1 Serial print
16104
2 Serial print
16700
3 Serial print
16900
RFM 12
440000
Program flight controller sensor gyro sensor gyro + baro
sensor gyro + baro + Serial print sensor gyro + baro + Serial print sensor gyro + baro + Serial print penerima
Tidak bisa terbang Tidak bisa terbang Tidak bisa terbang Tidak bisa terbang
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.
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.
Nilai throttle sesuai dengan Gambar 4.3
Gambar 4.8 hasil perhitungan pulsa receiver (roll, pitch, throttle, yaw).
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 output LOW duty Cycle Hasil (µS) (µS) 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
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
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
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
NILAI OUTPUT PID roll
pitch
yaw
150
50 0 -50
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
output PID
100
-100 -150
Jumlah looping program
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 62
Tabel 4.5 Hasil Pengujian untuk menentukan Kp, Ki, dan Kd
2 70
waktu looping (µS) 3000 3000
mundur kebelakang mundur kebelakang + sedikit bergetar
0 0
50 55.5
3000 3000
tidak bergetar susah dikendalikan + respon lambat
10
0
55.5
3000
respon terlalu cepat + berosilasi
5
0
55.5
3000
susah merespon dan dikendalikan
5 5
0.01 55.5 0.3 55.5
3000 3000
5
0.1
55.5
3000
bisa terbang, respon lambat cepat berosilasi 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
0 0
0 0
0 2
Hasil
Tabel 4.6 Pengaruh respon wahana terhadap waktu looping program waktu looping Kp Ki Kd Hasil (µS) 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
5
0.08 55.5
9000
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
bisa terbang, merespon dan sedikit berosilasi bisa terbang, susah dikendalikan dan 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
output ESC 1 saat pengujian ketinggian 2000 1800 1600
output ESC
1400 1200 1000 800 600 400 200
1 25 49 73 97 121 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
0
jumlah looping program
Gambar 4.13 Grafik output ESC pada pengujian ketinggian
Output Sensor barometer 207
Ketinggian
206.5 206 205.5 205 204.5 204 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
jumlah looping program
Gambar 4.14 Grafik output sensor barometer saat keadaan wahana diam
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 65
2000 1800 1600
PWM ESC
1400 1200 1000 800
Nilai output PID berosilasi
600 400 200
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
0
jumlah looping program
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.
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
Daya Angkat (gram)
tegangan baterai 8.2 volt sampai 6 volt untuk baterai LiPo 2s.
260
12.5
240
12
222
11.5
204
11
187
10.5
173
10
158
9.5
Tegangan Baterai (volt)
Gambar 4.16 Grafik daya angkat motor terhadap tegangan baterai.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 67
Grafik nilai output ESC dengan tegangan baterai 3s 1700
Output ESC
1650 1600 1550 1500 1450
1240 1229 1218 1207 1196 1185 1174 1163 1152 1141 1130 1119 1108 1097 1086 1075 1064 1053 1042 1031 1020 1009 998 987 976 965 954 943 932 921 910
1400
Tegangan Baterai (1240 = 12.4 volt) throttle sebelum ditambah
throttle setelah ditambah
Gambar 4.17 Grafik nilai output ESC terhadap tegangan baterai 3s.
Grafik nilai output ESC dengan tegangan baterai 2s 1620 1600
Output ESC
1580 1560 1540 1520 1500 1480 1460
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
1440
Tegangan Baterai (820 = 8.2 volt) throttle sesudah ditambah
throttle sebelum ditambah
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.
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
Grafik failsafe sistem 1800 1600
output ESC
1400 1200 1000 800 600 400 200
0.003 0.561 1.119 1.677 2.235 2.793 3.351 3.909 4.467 5.025 5.583 6.141 6.699 7.257 7.815 8.373 8.931 9.489 10.047 10.605 11.163 11.721 12.279 12.837 13.395 13.953 14.511 15.069 15.627 16.185 16.743 17.301
0
waktu (detik)
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.
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
BAB 5V 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.
74
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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-microcontrolleratmega640-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/ BSTBMP085-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/ multirotorcopter-quadcopter/ , diakses 25 November 2015. [11] -----,-----, http://purnomosejati.wordpress.wordpress.com/2011/08/25/ mengenalkomunikasi-i2cinter-integrated-cicuit/ , diakses 5 Januari 2016.\ [12] -----,-----, http://fen222.blogspot.co.id/2012/01/mengenal-baterai-lithium-polimerlipo.html , diakses 2 februari 2016.
75
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN
76
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI L1
Blok Diagram Sistem Keseluruhan
Perangkat Navigasi
Modul
Keypad
Mikrokontroler
GPS-Compass
Transceiver
Layar Penampil
GROUND CONTROL STATION
Transceiver
Gyrometer Barometer
Mikrokontroler Tambahan
Mikrokontroler
Motor 1,2,3,4
ESC 1,2,3,4
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 daya angkat throttle volt (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
looping ke 3 33 63 93 123 153 183 213 243 273 303 333 363 393 423 453 483 513 543 573 603 633 663 693 723 753 783
Data Output PID Output Output Roll Pitch -0.01 0.06 0.01 0.06 -0.07 0.01 -63.39 4.24 -1.9 0.42 -1.74 -0.39 29.81 -0.42 -15.21 0.44 6.55 -1.15 0.5 0.25 0.9 -43.6 0.52 7.68 1.07 0.02 0.63 0.82 0.28 1.3 0.49 -9.36 0.25 1.2 0.55 0.8 0.66 0.84 0.93 0.84 0.84 0.54 0.2 0.66 0.41 1.23 0.36 0.31 -0.01 -0.06 0.88 0.59 0.82 0.77
Output Yaw 0.02 0.33 0.11 -4.91 0.87 -0.97 5.76 -0.8 1.37 1.46 -7.07 2.06 -1.34 1.49 1.14 11.21 3.36 0.23 0.18 -99.25 93.72 4.7 87.78 -93.78 -27.88 -2.17 -2.14
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI L5
FLIGHT CONTROLLER TAMPAK ATAS
FLIGHT CONTROLLER TAMPAK BAWAH
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI L6
Risha Augerah Nenu Lema,
Manual Penggunaan Sistem Quadcopter
Ferdinandus Hans, dan Adovan Pujianta Ginting
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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI L7
Prosedur Penggunaan Langkah ke
Deskripsi
Rangkai komponen penyusun Quadcopter dan GCS sesuai panduan 2 Sambungkan power dari baterai ke wahana Tunggu sampai blinking LED pada modul GPS-Compass 3 menyala 4 Lepas sambungan power antara baterai dan wahana 5 Lepas sambungan power rangkaian tambahan 6 Sambungkan power dari baterai ke wahana Tunggu sampai blinking LED hijau pada flight controller 7 untuk menyala Sambungkan power dari rangkaian flight controller ke 8 rangkaian tambahan 9 Sambungkan power ke GCS 10 Tunggu proses cek komunikasi 11 Pilih mode pengendalian yang diinginkan Catatan: 1
Proses Wahana Wahana Wahana Wahana Wahana Wahana Wahana Wahana GCS GCS GCS
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 esc_2 esc_3 esc_4
= = = =
throttle throttle throttle throttle
+ + -
output_pitch output_pitch output_pitch output_pitch
+ + -
output_roll output_roll output_roll output_roll
+ +
output_yaw output_yaw output_yaw output_yaw
-
ketinggian; ketinggian; ketinggian; 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 // x1 x2 x3 b3
= b5 - 4000; Calculate B3 = (b2 * (b6 * b6)>>12)>>11; = (ac2 * b6)>>11; = x1 + x2; = (((((long)ac1)*4 + x3)<
>2;
// x1 x2 x3 b4
Calculate B4 = (ac3 * b6)>>13; = (b1 * ((b6 * b6)>>12))>>16; = ((x1 + x2) + 2)>>2; = (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 = x1 = x2 = p +=
(p>>8) * (p>>8); (x1 * 3038)>>16; (-7357 * p)>>16; (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<> (8-OSS); return up; } float calcAltitude(float pressure){ float float float C = 1 C = C
A = pressure/101325; B = 1/5.25588; C = pow(A,B); - C; /0.0000225577;
return C; }