Flight controller pada sistem quadcopter menggunakan sensor imu (inertial measurement unit) berbasis mikrokontroller atmega 2560.
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.
(2)
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.
(3)
i
TUGAS AKHIR
FLIGHT CONTROLLER PADA SISTEM QUADCOPTER
MENGGUNAKAN SENSOR IMU (INERTIAL
MEASUREMENT UNIT) BERBASIS MIKROKONTROLLER
ATMEGA 2560
Diajukan untuk memenuhi salah satu syarat Memperoleh gelar Sarjana Teknik pada
Program Studi Teknik Elektro
Fakultas Sains dan Teknologi Universitas Sanata Dharma
disusun oleh :
RISHA ANUGERAH NENU LEMA NIM : 125114025
JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
(4)
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
(5)
iii
LEMBAR PERSETUJUAN
TUGAS AKHIR
FLIGHT CONTROLLER PADA SISTEM QUADCOPTER
MENGGUNAKAN SENSOR IMU (INERTIAL
MEASUREMENT UNIT) BERBASIS MIKROKONTROLLER
ATMEGA 2560
oleh :
RISHA ANUGERAH NENU LEMA
NIM : 125114025
telah disetujui oleh :
Pembimbing
(6)
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,
(7)
v
LEMBAR PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa tugas akhir ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka sebagaimana layaknya karya ilmiah.
(8)
MOTTO :
“
TAKUT AKAN TUHAN ADALAH PERMULAAN
PEN E A AN”
- AMSAL 1:7a
–
Skripsi ini kupersembahkan untuk,
Bapa, Tuhan Yesus, dan Roh kudusku yang Setia
My beloved papa dan mama
My lovely sister
(9)
vii
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA
ILMIAH UNTUK KEPENTINGAN AKADEMIS
Yang bertandatangan dibawah ini, saya mahasiswa Universitas Sanata Dharma :
Nama : RISHA ANUGERAH NENU LEMA
Nomor Mahasiswa : 125114025
Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul :
FLIGHT CONTROLLER PADA SISTEM QUADCOPTER
MENGGUNAKAN SENSOR IMU (INERTIAL
MEASUREMENT UNIT) BERBASIS MIKROKONTROLLER
ATMEGA 2560
Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data, mendistribusikan secara terbatas, dan mempublikasikannya di Internet atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun memberikan royalty kepada saya selama tetap menyantumkan nama saya sebagai penulis.
Demikian pernyataan ini yang saya buat dengan sebenarnya. Yogyakarta, 29 Juni 2016
(10)
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.
(11)
ix
ABSTRACT
To make an electronic device or a robot, it need takes an electronic brain that will be used to control and give orders to the robot itself. Like a drone or quadcopter, it takes their electronic brains or flight controller to set up the system and give orders to a drone by receiving the output from several sensors to be used as the data to be processed in the flight controller itself.
The system uses ATMega 2560 as the main control on the flight controller. The sensor that used is a L3G4200D gyro sensor for measuring axis rate x, y, z and BMP085 barometer sensor to measure the height of the vehicle level. The system will receive pulses in the form of a PWM from receiver device to be used as a vehicle navigation controller in a GCS (Ground Control Station). Then flight controllers use PID controller to process data gyro sensor and receiverpulses, and then given to the ESC (Electronic Speed Controller) to drive the four motors on quacopter.
Flight Controller successfully created and tested using PID controller parameters Kp = 5, Ki = 0:08, and 55.5 Kd. This system has been tested by doing the commands right - left, forward - backward, and rotates right or left according of navigation devices and not to fly over the height that had been defined before.
(12)
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.
(13)
xi
Peneliti sangat mengharapkan kritik dan saran yang dapat membangun serta menyempurnakan tulisan. Semoga tugas akhir ini dapat dimanfaatkan dan dikembangkan lebih lanjut oleh peneliti lain sehingga tulisan ini dapat lebih bermanfaat.
Yogyakarta, 29 Juni 2016 Peneliti,
(14)
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
(15)
xiii
BAB 2 DASAR TEORI ... 5
2.1. Pengertian Quadcopter. ... 5
2.1.1. Motor Brushless ... 7
2.1.2. Baterai LiPo ... 8
2.1.3. ESC ... 9
2.1.4. Propeller ... 10
2.1.5. Frame ... 11
2.1.6. Flight Controller. ... 11
2.2. Modul Mikrokontroler ArduinoMega 2560 ... 12
2.2.1. Serial Peripheral Interface (SPI). ... 17
2.2.2. SPCR – SPI Control Register ... 19
2.2.3. SPSR – SPI Status Register. ... 20
2.2.4. SPDR – SPI Data Register... 21
2.3. 10 dof IMU (Inertial Measurement Unit) Sensor GY- 80 ... 22
2.3.1. Gyro Sensor L3G4200D ... 22
2.3.2. Barometric Pressure Sensor BMP085 ... 26
2.4. Kontroler PID. ... 29
2.4.1. Kendali PID Digital ... 31
2.5. Inter Integrated Circuit (I2C) ... 32
BAB 3 PERANCANGAN ALAT ... 35
3.1. Rancangan dan Pemilihan Hardware ... 36
3.2. Konstruksi Hardware ... 36
3.3. Perancangan Perangkat Lunak... 39
3.3.1. Diagram Alir Program Utama ... 39
3.3.2. Diagram Alir Subrutin Terbang ... 43
3.3.3. Diagram Alir Subrutin Menghitung Sensor... 44
3.3.4. Diagram Alir Subrutin Menghitung PID ... 45
(16)
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
(17)
xv
DAFTAR GAMBAR
Gambar 1.1 Model Sistem Quadcopter ... 3
Gambar 2.1 Arah putaran baling – baling pada quadcopter... 5
Gambar 2.2 Gerakan dasar quadcopter berdasarkan kecepatan motor ... 6
Gambar 2.3 Contoh Motor Brushless ... 7
Gambar 2.4 Baterai LiPo Turnigy 4000mAh 3S 30C ... 8
Gambar 2.5 ESC (Electronic Speed Controller) ... 10
Gambar 2.6 blok diagram ESC ... 10
Gambar 2.7 Propeller / baling-baling... 11
Gambar 2.8 Frame Quadcopter ... 11
Gambar 2.9 Flight Controller APM 2.5 ... 12
Gambar 2.10 Penempatan Pin Arduino Mega 2560 ... 14
Gambar 2.11 Tampilan IDE Arduino ... 16
Gambar 2.12 Hubungan Tuan dan Hamba pada Sistem Komunikasi SPI ... 18
Gambar 2.13 Register Kontrol SPI (SPCR) ... 19
Gambar 2.14 Register Keadaan SPI (SPSR) ... 20
Gambar 2.15 Register Data SPI (SPDR) ... 21
Gambar 2.1610 dof IMU (Inertial Measurement Unit) Sensor GY- 80 ... 22
Gambar 2.17 Arah sudut rate sensor dan Pin Connection L3G4200D ... 23
Gambar 2.18 Grafik nilai ketinggian dengan tekanan udara terukur ... 26
Gambar 2.19 bagan alir Pengukuran suhu dan tekanan udara pada sensor BMP085 ... 27
Gambar 2.20 Koefisien kalibrasi sensor BMP085 ... 27
Gambar 2.21 Perhitungan Suhu dan Tekanan Udara pada BMP085 ... 28
Gambar 2.22 Timming diagram untuk pengukuran tekanan udara ... 29
Gambar 2.23 Blok diagram kontroler PID analog ... 30
Gambar 2.24 Hubungan dalam fungsi waktu antara sinyal keluaran dengan masukan untuk kontroller PID ... 30
Gambar 2.25 Blok diagram kendali digital ... 31
(18)
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
(19)
xvii
Gambar 4.14 Grafik output sensor barometer saat keadaan wahana diam ... 64
Gambar 4.15 Grafik nilai input untuk ESC 1 saat berosilasi... 65
Gambar 4.16 Grafik daya angkat motor terhadap tegangan baterai. ... 66
Gambar 4.17 Grafik nilai output ESC terhadap tegangan baterai 3s... 67
Gambar 4.18 Grafik nilai output ESC terhadap tegangan baterai 2s... 67
(20)
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
(21)
1
BAB 1
PENDAHULUAN
1.1.
Latar Belakang
Perkembangan teknologi di era modern kini telah memberikan banyak keuntungan dalam segala kebutuhan atau keperluan manusia, baik dalam bidang informasi, komunikasi, transpotasi dan bidang-bidang lainnya. Berbagai jenis teknologi dan perlengkapan diciptakan untuk membantu pekerjaan manusia agar lebih efektif, cepat dan mudah.
Salah satunya adalah drone atau lebih dikenal dengan wahana tanpa awak yang berfungsi dengan kendali jarak jauh oleh pilot atau mampu mengendalikan dirinya sendiri. Dengan adanya teknologi ini, persaingan teknologi guna pemanfaatan wahana tanpa awak di Indonesia menjadi sudut pandang utama bagi masyarakatnya sendiri terutama mahasiswa di Indonesia. Hal tersebut menjadi perhatian menarik untuk menjadi bahan penelitian bagi mahasiswa untuk memahami sistem navigasi, sistem kendali, dan mikrokontroller yang digunakan pada drone tersebut.
Penelitian ini dikhususkan untuk membuat sistem kendali menggunakan mikrokontroller dan sensor yang digunakan dalam sebuah drone, dan memahami bagaimana konfigurasi program yang digunakan dalam mikrokontroller.
Untuk membuat sebuah alat elektronik atau robot, tentunya dibutuhkan sebuah otak elektronik yang akan digunakan untuk mengontrol dan memberi perintah untuk robot itu sendiri. Sama halnya dengan sebuah drone, dibutuhkan adanya otak elektronik atau mikrokontroller untuk mengatur sistem dan memberi perintah ke sebuah drone dengan menerima hasil output dari beberapa sensor yang akan digunakan sebagai data untuk di proses di dalam mikrokontroller itu sendiri.
Penelitian ini hanya dikhususkan untuk membuat program flight controller (pengendali sistem drone) yang digunakan untuk memproses data keluaran sensor yang digunakan pada drone yang akan di proses di mikrokontroller agar dapat membuat drone bekerja dan terbang dengan menerima masukan dari sebuah Remote Control (RC) dari Ground Control Station (GCS).
(22)
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:
(23)
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.
(24)
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.
(25)
5
BAB 2
DASAR TEORI
2.1.
Pengertian Quadcopter.
Quadcopter adalah salah satu jenis wahana tanpa awak yang memiliki empat motor yang dilengkapi dengan empat propeller pada masing-masing motornya yang digunakan untuk terbang dan bermanuver.
Masing-masing rotor (baling-baling dan motor penggeraknya) menghasilkan daya angkat dan memiliki jarak yang sama terhadap pusat massa wahana. Dengan daya angkat masing-masing rotor sebesar lebih dari seperempat berat keseluruhan, memungkinkan quadcopter untuk terbang. Kecepatan quadrotor tergantung pada kekuatan motor dan berat quadrotor itu sendiri.
Untuk menghindari terjadinya momen putar pada body, arah putaran baling-baling pada setiap rotornya berbeda seperti terlihat pada Gambar 2.1. Terdapat 2 rotor yang bergerak searah jarum jam (CW) dan 2 rotor yang bergerak berlawanan arah jarum jam (CCW)
Gambar 2.1 Arah putaran baling – baling pada quadcopter [2].
(26)
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.
(27)
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.
(28)
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.
(29)
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:
� = ���� + ( ���� × %) � = �. + . � �
(30)
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) /
(31)
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
(32)
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.
(33)
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,
(34)
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.
(35)
Tabel 2.1 Keterangan Pin Arduino Mega 2560 R3[4].
No. Parameter Keterangan
1 ATmega 2560 IC mikrokontroler yang digunakan pada Arduino Mega 2560.
2 Jack USB Untuk komunikasi mikrokontroler dengan PC
3 Jack Adaptor Masukan power eksternal bila Arduino bekerja mandiri (tanpa komunikasi dengan PC melalui kabel serial USB).
4 Tombol Reset Tombol reset internal yang digunakan untuk mereset modul Arduino.
5 Pin Analog Menerima input dari perangkat analog lainnya.
1. Vin = Masukan tegangan input bagi Arduino ketika menggunakan dumber daya eksternal.
2. 5 V = Sumber tegangan yang dihasilkan regulator internal boardArduino.
6 Pin Power 3. 3,3 V = Sumber tegangan yang dihasilkan regulator internal boardArduino. Arus maksimal pada pin ini adalah 50 mA. 4. GND = Pin ground dari regulator tegangan board Arduino. 5. IOREF = Tegangan Referensi.
6. AREF = Tegangan Referensi untuk input analog.
7 Light-Emitting Pin digital 13 merupakan pin yang terkoneksi dengan LED Diode(LED) internal Arduino.
8 Pin PWM Arduino Mega menyediakan 8 bit output PWM. Gunakan fungsi analogWrite() untuk mengaktifkan pin PWM ini.
Digunakan untuk menerima dan mengirimkan data serial TTL 9 Pin Serial (Receiver(Rx), Transmitter(Tx)). Pin 0 dan 1 sudah terhubung
kepada pin serial USB to TTL sesuai dengan pin ATmega.
10 Pin Two Wire Terdiri dari Serial Data Line (SDA) dan Serial Interface Clock Interface (TWI) (SCL).
11 Pin Digital Pin yang digunakan untuk menerima input digital dan memberi output berbentuk digital (0 dan 1 atau low dan high)
(36)
Tabel 2.1 (lanjutan) Keterangan Pin Arduino Mega 2560 R3[4].
Gambar 2.11 Tampilan IDE Arduino
No. Parameter Keterangan
Terdiri dari 4 buah Pin :
1. Master In Slave Out (MISO)
Jalur slave untuk mengirimkan data ke Master. 2. Master Out Slave In (MOSI)
Pin Serial
Jalur master untuk mengirimkan data ke peralatan. 12 Peripheral
3. Serial Clock (SCK)
Interface(SPI)
Clock yang berfungsi untuk memberikan denyut pulsa ketika
sedang menyinkronkan transmisi data oleh master
4. Slave Select (SS)
Pin untuk memilih jalur slave pada perangkat tertentu.
(37)
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
(38)
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.
(39)
2.2.2.
SPCR
–
SPI Control Register
Gambar 2.13 Register Kontrol SPI (SPCR) [3].
Register Kontrol SPI pada Gambar 2.13 terdiri dari delapan buah bit yang masing-masing memiliki fungsi dan penjelasan sebagai berikut [3]:
1. Bit 7 – SPIE: SPI Interrupt Enable. SPIE merupakan bit yang mengaktifkan fasilitas interupsi pada SPI.
2. Bit 6 – SPE: SPI Enable. SPE merupakan bit yang dapat mengaktifkan atau menonaktifkan komunikasi SPI. Jika SPE bernilai 1 (tinggi) maka komunikasi SPI akan aktif dan bisa digunakan, sedangkan jika bernilai 0 (rendah) maka komunikasi SPI tidak aktif.
3. Bit 5 – DORD: Data Order. DORD merupakan bit yang mengatur urutan pengiriman data saat komunikasi berjalan. Jika DORD bernilai 1 maka urutan pengiriman dimulai dari bit LSB (Low Sign Bit) sedangkan jika bernilai 0 maka urutan pengiriman data dimulai dari bit MSB (Most Sign Bit).
4. Bit 4 – MSTR: Master or Slave Select.MSTR merupakan bit yang mengatur mikrokontroler bertindak sebagai tuan atau hamba. Jika MSTR bernilai 1 maka mikrokontroler bertindak sebagai tuan, sedangkan jika bernilai 0 maka bertindak sebagai hamba. Bit MSTR tidak akan dapat diatur jika pin SS di konfigurasi sebagai masukan, karena apabila pin SS di konfigurasi sebagai masukan maka penentuan mikrokontroler bertindak sebagai tuan atau hamba dilakukan dengan cara membaca level tegangan pada pin SS.
5. Bit 3 – CPOL: Clock Polarity.CPOL merupakan bit yang mengatur jenis tepian pulsa yang digunakan sebagai acuan pembacaan data. Jika CPOL bernilai 1 maka pembacaan data dilakukan setiap tepian turun, sedangkan jika bernilai 0 pembacaan data setiap tepian naik.
(40)
6. Bit 2 – CPHA: Clock Phase.CPHA merupakan bit yang mengatur pembacaan data pada fase tepian pulsa awal atau akhir. Jika CPHA bernilai 1 maka pembacaan data dilakukan saat fase pulsa akhir, sedangkan jika bernilai 0 maka pembacaan data saat fase awal.
7. Bit 1, 0 - SPR1, SPR0: SPI clock Rate Select 1 and 0. Kedua bit ini mengatur kecepatan pulsa untuk komunikasi pada table 2.3. Pengaturan ini dilakukan hanya pada saat mikrokontroler bertindak sebagai tuan. Sehingga mikrokontroler yang bertindak sebagai hamba hanya bisa menerima pulsa saja, tidak dapat menghasilkan pulsa sendiri. Keadaan seperti ini yang biasa disebut dengan sinkronus, yang artinya kedua perangkat memiliki pulsa yang sama.
Tabel 2.3 Hubungan Kecepatan Pulsa dengan Frekuensi Osilasi[3].
2.2.3.
SPSR
–
SPI Status Register.
Gambar 2.14 Register Keadaan SPI (SPSR)[3].
SPI2x SPR1 SPR0 Frekuensi Pulsa
0 0 0 fosc/4
0 0 1 fosc/16
0 1 0 fosc/64
0 1 1 fosc/128
1 0 0 fosc/2
1 0 1 fosc/8
1 1 0 fosc/32
(41)
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.
(42)
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.
(43)
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.
(44)
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).
(45)
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.
(46)
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.
(47)
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.
(48)
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.
(49)
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
(50)
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.
(51)
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.
(52)
Transfer function dari sistem berdasarkan Gambar 2.25 di atas
= � = �� +�
� + (2.3)
Dalam domain waktu:
= �� �
� ∫ + (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 :
� = ��� � + �� ∑�=���= � � +���[� � − � � − ] (2.5)
Dengan �� = �� + �
�� dan � = ��+�
� T= waktu sampling
Dengan hasil penyederhanaan nilai sigma (2.9) maka di peroleh:
� = � − + ��( � − � − ) + �� � + � ( � − � − ) +
� − (2.6)
2.5.
Inter Integrated Circuit (I2C)
Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arah menggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya. Piranti yang dihubungkan dengan sistem I2C Bus dapat dioperasikan sebagai Master dan Slave. Master adalah piranti yang memulai transfer data pada I2C Bus dengan membentuk sinyal Start, mengakhiri transfer data dengan membentuk sinyal Stop, dan membangkitkan sinyal clock. Slave adalah piranti yang dialamati master.
Sinyal Start merupakan sinyal untuk memulai semua perintah, didefinisikan sebagai
perubahan tegangan SDA dari “1” menjadi “0” pada saat SCL “1”. Sinyal Stop merupakan sinyal untuk mengakhiri semua perintah, didefinisikan sebagai perubahan tegangan SDA
(53)
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
(54)
SDA pada saat SCL dalam keadaan tinggi, maka perubahan itu dianggap sebagai sinyal Start atau sinyal Stop.
(55)
35
BAB 3
PERANCANGAN ALAT
Flight Controller pada sistem quadcopter menggunakan sensor IMU (Inertial Measurement Unit) berbasis Mikrokontroller ATMEGA 2560 terdiri dari 3 bagian, yaitu unit input, pengolah, dan unit output seperti pada Gambar 3.1. Unit input terdiri atas, Receiver dan sensor IMU. Unit Pengolah terdiri atas mikrokontroler Arduino Mega 2560. Unit Output terdiri atas ESC (Electronic Speed Controller) dan Motor Brushless.
Gambar 3.1 Diagram blok keseluruhan Flight Controller pada sistem quadcopter menggunakan sensor IMU (Inertial Measurement Unit) berbasis Mikrokontroller
ATMEGA 2560
Receiver akan menerima data yang akan diubah menjadi sinyal 4 channel ( naik-turun, maju-mundur, kanan-kiri, putar kanan-kiri ) dan akan dihubungkan ke Arduino Mega 2560 melalui pin 50 sampai pin 53 dan D10 berdasakan protocol komunikasi SPI. Sensor IMU menggunakan 10dof (degree of freedom) IMU Sensor module duhubungkan dengan mikrokontroler Arduino Mega 2560 pin SDA.20 dan SCL.21. Pada Output mikrokontroler Arduino Mega 2560 untuk ESC menggunakan pin PWM.4 sampai PWM.7.
(56)
3.1.
Rancangan dan Pemilihan Hardware
Flight Controller pada sistem quadcopter menggunakan sensor IMU (Inertial Measurement Unit) berbasis Mikrokontroller ATMEGA 2560 tersusun atas :
1. Frame Quadcopter konfigurasi “X”. 2. Modul ArduinoMega 2560.
3. 10 dof IMU Sensor GY-80 4. Batterai LiPo 4000mAh. 5. ESC Hobbyking 30A.
6. Motor Brushless Turnigy 800Kv. 7. Propeller 8 inch.
Berdasarkan spesifikasi sistem, dibutuhkan sensor 10 dof IMU GY-80 karena modul sensor ini memiliki 4 buah sensor didalamnya dan memungkinkan wahana untuk dapat memanfaatkan semua sensor untuk kebutuhan yang lebih baik. Selain itu biaya lebih murah daripada sebuah modul hanya 1 macam sensor.
Peneliti memilih Arduino Mega 2560 R3 karena tersedia port SDA dan SCL sebanyak 2 pasang untuk port compass modul GPS-Compass pada autonomous mode dan port compass sensor IMU pada manual mode. Selain itu pada Arduino Mega 2560 R3
Pada bagian output, peneliti menggunakan brushless motor Turnigy Multistar 2216-800KV 14Pole Multi-Rotor Outrunner. Brushless motor dipilih untuk quadcopter karena ringan dan memiliki daya yang besar. Jika motor yang digunakan adalah brushless motor, maka tipe ESC yang digunakan adalah brushless ESC. Peneliti menggunakan brushless ESC/UBEC 30A/3A Hobbyking karena nilai batas arus ESC ini lebih besar daripada arus yang dikeluarkan oleh brushless motor yang digunakan. Selain itu UBEC 3A bisa digunakan sebagai power supply mikrokontroller Arduino Mega 2560.
3.2.
Konstruksi Hardware
Bentuk fisik dari wahana quadcopter menggunakan sensor IMU (Inertial Measurement Unit) berbasis Mikrokontroller ATMEGA 2560 dapat dilihat pada Gambar 3.2. masing masing komponen telah ditunjukkan anak panah didalam Gambar tersebut.dimensi
(57)
Posisi sensor harus berada pada tengah atau perpotongan Motor 1 - 3 dan Motor 2 – 4. Dalam memposisikan Arduino 2560 dan Sensor harus diberi spacer dan menggunakan peredam getaran seperti busa atau karet. Hal ini dilakukan supaya arduino dan sensor tidak mengalami gangguan getaran karena output motor brushless saat wahana terbang.
Gambar 3.3 memperlihatkan wiring mikrokontroler arduino mega 2560 dengan beberapa komponen pendukung penelitian antara lain, modul Sensor Gy-80, RFM12-433Mhz, dan 4 ESC. Di dalam Gambar memperlihatkan jika Servo adalah sebagai ESC.
Gambar 3.4 memperlihatkan modul receiver RFM01-433Mhz yang dihubungkan melalui pin ICSP pada arduino mega 2560. Modul receiver ini yang akan digunakan sebagai penerima kontrol dari GCS dalam bentuk beberapa paket data.
Terdapat wiring tambahan seperti pembagi tegangan supply yang diinputkan ke pin A0. Hal ini dilakukan supaya program dapat mengetahui level baterai atau tegangan supply yang akan digunakan sebagai sistem fail-safe. Output dari sistem fail-safe level baterai ini berupa led indikator pada pin D12.
Gambar 3.2 Bentuk Fisik Rancangan Hardware Quadcopter menggunakan sensor IMU (Inertial Measurement Unit) berbasis Mikrokontroller ATMEGA 2560
(58)
Gambar 3.3 Wiring Arduino Mega 2560, Sensor Gy 80, RFM12-433, dan ESC.
(59)
Tabel 3.1 Deklarasi Pin Arduino Mega 2560
3.3.
Perancangan Perangkat Lunak
Diagram alir utama sistem Flight Controller pada sistem quadcopter menggunakan sensor IMU (Inertial Measurement Unit) berbasis Mikrokontroller ATMEGA 2560 dapat dilihat pada Gambar 3.2. Sedangkan untuk pendeklarasian pin pin pada Arduino Mega 2560 dapat dilihat pada table 3.1
3.3.1.
Diagram Alir Program Utama
Pada diagram alir Gambar 3.6, saat kontroler on, program akan memulai proses awal yaitu inisialisasi. Pada tahap ini, program akan memproses deklarasi, pengaturan sensor gyro, kalibrasi sensor gyro, pengaturan Receiver, kalibrasi ESC, ataupun perhitungan level baterai.
Pada proses pengambilan keputusan untuk siap terbang, Receiver akan mengirimkan data. Jika data Receiver nilai throttle = 0 pwm dan yaw = 0 pwm, maka status Flight Controller menjadi Siap Terbang. Jika data Receiver nilai throttle ≠ 0 pwm atau yaw ≠ 0 pwm, maka program terus akan mengulang sampai nilai throttle = 0 pwm dan yaw = 0 pwm. Setelah itu proses persiapan akan memberikan output pada ESC 10 pwm untuk menandakan motor berputar dan siap untuk diterbangkan.
Nomor Pin Arduino Tipe Keterangan
A0 Analog Input Pin pembacaan level baterai
50 Komunikasi SPI
51 Komunikasi SPI
52 Komunikasi SPI
53 Komunikasi SPI
D10 Komunikasi SPI
SDA20 Komunikasi Input SDA IMU Sensor GY-80 SCL21 Komunikasi Input SCL IMU Sensor GY-80
PWM4 Output PWM Output ke ESC 1
PWM5 Output PWM Output ke ESC 2
PWM6 Output PWM Output ke ESC 3
(60)
Selanjutnya program akan menunggu apakah Receiver mengirimkan data throttle. Jika Receiver sudah mengirimkan data nilai throttle, maka program akan memulai proses subrutin Terbang.
Pada subrutin terbang, program akan memproses beberapa data antara lain, pembacaan sensor gyro, pembacaan sensor barometer, perhitungan PID, dan pemberian nilai output pada ESC.
Selama wahana terbang, data ketinggian akan terus dibaca sampai mencapat batas ketinggian yang di tetapkan, misal 20 meter. Jika wahana melewati batas ketinggian yang ditetapkan, program akan mengurangi output ESC yang akan berpengaruh terhadap kecepatan motor, sehingga wahana tidak akan lebih tinggi dari batas ketinggian 20 meter.
Jika nilai output untuk ESC < 1050 artinya setiap kecepatan motor berada pada kondisi terendah, dengan kata lain wahana berada pada tanah. Pada tahap ini program akan meminta klarifikasi apakah wahana akan diterbangkan lagi atau berhenti dengan cara memberikan output pada ESC = 1000 yang artinya motor berhenti.
Jika mendarat maka Receiver akan memberikan nilai throttle = 0 pwm dan yaw = 255 pwm untuk membuat perintah yang akan memberikan nilai output pada ESC = 1000 yang artinya motor berhenti dan proses selesai. Jika tidak maka program akan menunggu apakah Receiver mengirimkan data throttle dan wahana melakukan penerbangan lagi.
1 2
3 4
depan
kanan
belakang
kiri
Gambar 3.5 Konfigurasi ESC pada wahana
Gambar 3.5 memperlihatkan konfigurasi ESC pada wahana. Adapun batas batas output pwm (0 sampai 255) untuk tiap kondisi terbang pada ESC dapat dilihat pada Tabel 3.2.
(61)
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
(62)
Gambar 3.7 Diagram Alir Utama Flight Controller pada sistem quadcopter menggunakan sensor IMU berbasis Mikrokontroller ATMEGA 2560
(63)
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
(64)
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.
(65)
3.3.4.
Diagram Alir Subrutin Menghitung PID
Gambar 3.9 Diagram Alir Subrutin Menghitung PID
(66)
Pada Gambar 3.10 memperlihatkan bagaimana PID pada wahana memproses sensor gyro sebagai parameter untuk mengatur kestabilan terbang wahana. Nilai sensor gyro harus sama dengan nilai Receiver, karena jika pilot tidak menginginkan ada perubahan wahana saat terbang dan berada pada posisi level tertentu, maka output gyro = 0 = Receiver input. Agar wahana stabil, nilai setpoint gyro harus = 0 dan nilai Receiver harus = 0.
Dari persamaan 2.6, dapat dihitung nilai masing masing elemen pada kontroler PID seperti pada Gambar 3.11.
Gambar 3.11 Logika Dasar perhitungan Parameter P,I,D pada sistem kontrol PID quadcopter
Gambar 3.9 adalah bagan alir subrutin menghitung PID sistem kestabilan wahana. Pertama, user akan memberikan nilai Kp, Ki, dan Kd pada program pada proses inisialisasi pada Gambar 3.4.
Nilai Kp, Ki, dan Kd diperoleh dengan melakukan uji coba wahana, dengan memberikan nilai awal masing masing parameter untuk setiap sumbu pada sensor gyro, Kp = 1 , Ki = 0.03 dan Kd = 15 [1]. Setelah itu dilakukan uji coba dengan mengganti ganti nilai Kp,Ki, dan Kd sampai wahana mencapat batas kestabilan yang diinginkan.
Selanjutnya perhitungan PID output masing masing controller seperti kestabilan untuk roll, pitch dan yaw.Selanjutnya program akan kembali ke main program sebagai parameter untuk memberikan nilai input pada masing masing ESC guna mengatur kestabilan wahana.
P_out = (gyro – Receiver) x Kp
I_out = I_outt-1 + ((gyro – Receiver) x Ki)
D_out = (gyro – Receiver – gyrot-1 – Receivert-1 ) x Kd
(67)
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.
(68)
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.
(69)
49
BAB 4
HASIL DAN PEMBAHASAN
Bab ini berisi Gambar fisik hardware yang dibuat, pengujian wahana, hasil pengambilan data, pembahasan tentang data yang diperoleh, dan pembahasan program yang digunakan di mikrokontroller. Data yang akan dibahas terdiri dari hasil pengambilan data sensor, data output kontroller PID, dan pengiriman paket data ke wahana.
Hasil pengujian berupa data-data yang diperoleh dapat memperlihatkan bahwa hardware dan software yand dirancang telah bekerja dengan baik atau tidak. Berdasarkan data-data tersebut dapat dilakukan analisis terhadap proses kerja alat yang kemudian dapat digunakan untuk menarik kesimpulan akhir.
4.1.
Bentuk Fisik Wahana, dan Flight Controller
Bentuk fisik wahana secara keseluruhan ditunjukkan Gambar 4.2. Sistem menggunakan 2 buah mikrokontroler, mikrokontroler pertama digunakan sebagai Flight Controller seperti pada Gambar 4.1, mikrokontroller ke 2 digunakan sebagai pengolah paket data dari transceiver RFM12. Hal ini dilakukan supaya flight controller tidak mengubah parameter Kp, Ki, dan Kd pada kontroler PID, karena jika modul komunikasi RFM12 digunakan bersamaan dalam mikrokontroler pada flight controller maka akan memakan waktu hingga 400 mS dalam proses looping untuk menerima paket data navigasi dari GCS.
Frame yang digunakan adalah Frame jenis SK450 untuk quadcopter. Frame tidak membuat sendiri karena tidak adanya alat pendukung yang baik dalam pembuatan frame untuk wahana quadcopter, karena dalam pembuatan frame quadcopter sangat diutamakan letak jarak antara keempat motor yang presisi, titik pusat keseimbangan, berat, kekuatan dan efek gangguan getaran saat motor dijalankan. Untuk itu, perancangan yang digunakan adalah frame SK450 karena memiliki berat 300 gram, bahan menggunakan serat karbon, dan memiliki fitur peredam getaran antar motor yang menggunakan batang serat karbon.
Saat keadaan hover, Flight Controller tetap akan menerima getaran yang ditimbulkan akibat motor jika flight controller dihubungkan frame dengan menggunakan spacer plastik. Akibatnya wahana akan menjadi tidak terkendali, untuk itu digunakan peredam getaran
(70)
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.
(71)
Gambar 4.2 Wahana dengan Receiver RFM 12 menggunakan mikrokontroler tambahan.
(1)
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; }
(2)
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; }
(3)
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; }
(4)
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; }
(5)
long bmp085GetPressure(unsigned long up){ long x1, x2, x3, b3, b6, p;
unsigned long b4, b7; b6 = b5 - 4000;
// Calculate B3
x1 = (b2 * (b6 * b6)>>12)>>11; x2 = (ac2 * b6)>>11;
x3 = x1 + x2;
b3 = (((((long)ac1)*4 + x3)<<OSS) + 2)>>2; // Calculate B4
x1 = (ac3 * b6)>>13;
x2 = (b1 * ((b6 * b6)>>12))>>16; x3 = ((x1 + x2) + 2)>>2;
b4 = (ac4 * (unsigned long)(x3 + 32768))>>15; b7 = ((unsigned long)(up - b3) * (50000>>OSS)); if (b7 < 0x80000000)
p = (b7<<1)/b4; else
p = (b7/b4)<<1; x1 = (p>>8) * (p>>8); x1 = (x1 * 3038)>>16; x2 = (-7357 * p)>>16; p += (x1 + x2 + 3791)>>4; long temp = p;
return temp; }
char bmp085Read(unsigned char address) {
unsigned char data;
Wire.beginTransmission(BMP085_ADDRESS); Wire.write(address);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 1); while(!Wire.available());
return Wire.read(); }
int bmp085ReadInt(unsigned char address) {
unsigned char msb, lsb;
Wire.beginTransmission(BMP085_ADDRESS); Wire.write(address);
Wire.endTransmission();
Wire.requestFrom(BMP085_ADDRESS, 2); while(Wire.available()<2)
(6)
unsigned int bmp085ReadUT(){ unsigned int ut;
Wire.beginTransmission(BMP085_ADDRESS); Wire.write(0xF4);
Wire.write(0x2E);
Wire.endTransmission(); delay(5);
ut = bmp085ReadInt(0xF6); return ut;
}
unsigned long bmp085ReadUP(){ unsigned char msb, lsb, xlsb; unsigned long up = 0;
Wire.beginTransmission(BMP085_ADDRESS); Wire.write(0xF4);
Wire.write(0x34 + (OSS<<6)); Wire.endTransmission(); delay(2 + (3<<OSS)); msb = bmp085Read(0xF6); lsb = bmp085Read(0xF7); xlsb = bmp085Read(0xF8);
up = (((unsigned long) msb << 16) | ((unsigned long) lsb << 8) |
(unsigned long) xlsb) >> (8-OSS); return up;
}
float calcAltitude(float pressure){ float A = pressure/101325;
float B = 1/5.25588; float C = pow(A,B); C = 1 - C;
C = C /0.0000225577; return C;