BAB III PERANCANGAN -...
Transcript of BAB III PERANCANGAN -...
48
BAB III
PERANCANGAN
3.1. Arsitektur Perancangan
Secara keseluruhan, perancangan Autonomous Quadcopter yang dibuat memiliki
beberapa layer seperti yang divisualisasikan pada Gambar 3.1.
Gambar 3.1. Layered Design
Pembagian sistem menjadi beberapa layer ini bertujuan untuk membuat tahapan kerja
menjadi jelas, sistematis dan terstruktur. Setiap layer harus didahului implementasi layer
bawahnya yang telah teruji. Sehingga, perancangan pesawat, implementasi dan pengujian
Physical Layer
BLDC motor Propeller Frame
Low Layer Control
Mid Layer Control
Electronic Speed Controller AHRS & Altitude sensor
PID Flight Controller
High level command protocol
High Layer Application
Flight algorithm
Tah
apan
kerja
49
dilakukan bertahap mulai dari layer paling bawah yaitu physical layer kemudian dilanjutkan
ke low layer control, mid layer control dan implementasi high level application.
Physical layer terdiri atas BLDC (brushless DC) motor, baling-baling (propeller) dan
kerangka pesawat (frame). Pada bagian perancangan mekanik akan dijelaskan lebih lanjut
tentang perancangan layer ini.
Kendali aras rendah atau low layer control adalah lapisan yang mengatur gerak dari
pesawat yang berhubungan langsung dengan physical layer. Sebagai masukan umpan balik
dari kontrol PID, digunakan data dari AHRS (Attitude Heading Reference System) dan
keluaran kontrol diteruskan ke electronic speed controller (ESC) yang merupakan pengendali
putaran dari motor BLDC pada physical layer. Untuk berhubungan dengan layer di atasnya,
low layer control menerima set sudut dan ketinggian dari mid layer control.
Mid layer control berfungsi sebagai penerjemah perintah tingkat tinggi (high level
command) dari aplikasi aras tinggi (high layer aplication) ke dalam set sudut dan ketinggian
yang kemudian diteruskan ke low layer control. Dalam mid layer control ini terdapat beberapa
algoritma gerak pesawat, seperti algoritma tinggal landas (take off), mendarat (landing),
melayang (hovering) dan beberapa algoritma penunjang. Mid layer control juga berfungsi
sebagai penyedia informasi bagi high layer application mengenai keadaan pesawat, seperti:
ketinggian, kondisi battrey, serta status kerja mid layer control dan low layer control. Untuk
berkomunikasi dengan high layer application, akan dibuat protokol komunikasi yang
dirancang agar high layer application dapat dengan mudah memberi perintah dan menerima
respon dari kontrol pesawat.
High layer application atau aplikasi aras tinggi merupakan layer yang menentukan
kegunaan atau aplikasi dari Quadcopter. Contohnya seperti aplikasi pengintaian, aerial
50
photography dan lain sebagainya. Pada skripsi ini dirancang aplikasi aras tinggi untuk
menguji kontrol aras rendah dan aras tengah dari pesawat.
3.2. Perancangan Mekanik (Physical Layer)
Physical layer merupakan layer fisik dari Quadcopter. Bagian ini terdiri dari sistem
mekanik pesawat yaitu kerangka, motor dan baling-baling.
3.2.1. Kerangka Pesawat (Frame)
Quadcopter yang dirancang pada skripsi ini memiliki bentuk kerangka yang sederhana
dengan penempatan empat rotor yang memiliki jarak yang sama terhadap pusat massa pesawat
(Gambar 3.2).
Gambar 3.2. Kerangka Quadcopter
51
Sebagian besar, bahan yang digunakan untuk kerangka pesawat adalah aluminium,
karena ringan (massa jenis: 2.70 g·cm−3) dan mudah didapat. Penulis mengalami kesulitan
untuk mendapatkan bahan kerangka lain yang lebih ringan dan kuat seperti karbon fiber.
Tuntutan dari kerangka yang dibuat adalah ringan dan kuat. Ringan, agar daya yang
dibutuhkan untuk menerbangkan pesawat tidak terlalu besar, sehingga mampu mengangkat
payload yang lebih berat. Kuat, agar bentuk fisik dari kerangka tidak berubah saat terbang dan
jika pesawat kandas (crash), tidak mengubah bentuk kerangka. Mengingat banyaknya
percobaan terbang yang dilakukan dengan kemungkinan kandas yang cukup besar, kerangka
harus dibuat sesederhana mungkin untuk menghemat waktu pembuatan.
Hal yang harus diperhatikan pada kerangka Quadcopter adalah posisi keempat rotor
yang harus selalu datar dan sebidang. Karena jika tidak datar akan timbul proyeksi gaya
sesuai dengan kemiringan dari rotor terhadap rata-rata air, sehingga menyebabkan pesawat
akan bergerak perlahan meskipun controller sudah mengendalikan pesawat untuk hovering.
Ada dua bagian dari kerangka yang menentukan kedataran dari masing-masing rotor,
yaitu mekanik yang menghubungkan rotor dengan kerangka dan mekanik yang
menghubungkan keempat lengan rotor. Mekanik yang menghubungkan keempat lengan rotor
tidak dibuat sangat kuat (agar tidak terdeformasi), tetapi fleksibel. Dalam beberapa uji
terbang, pesawat beberapa kali mengalami crash dan menyebabkan bagian yang
menghubungkan keempat lengan rotor ini berubah bentuk dan pada akhirnya membuat
keempat rotor tidak datar. Sehingga ditambahkan PCB (Printed Circuit Board) fiber pada
bagian ini agar kerangka lebih elastis saat crash, tetapi masih tetap kuat dan datar saat terbang.
Untuk melindung baling-baling jika terjadi crash, masing-masing lengan rotor
diperpanjang. Memang, di satu sisi penambahan panjang lengan ini menambah berat pesawat,
52
namun kerugian ini tidak seberapa dibandingkan dengan keuntungan proteksi yang
didapatkan. Kemungkinan terburuk bagi baling-baling pesawat saat crash adalah saat pesawat
jatuh terbalik. Kemungkinan ini harus dihindari dengan membuat kendali gerak pesawat yang
prima dan meminimalisir kemungkinan error yang menyebabkan crash.
3.2.2. Motor dan Baling-Baling
Sebagai pemutar baling-baling digunakan motor BLDC karena lebih effisien daya dan
tidak membutuhkan perawatan jika dibandingkan dengan motor DC konvensional dengan
sikat. Dengan BLDC, baling-baling dapat dipasang langsung ke motor tanpa gir reduksi
sehingga getaran dapat diminimalisir.
BLDC yang digunakan dengan ukuran 1000 kV (1000 RPM/V). Idealnya, dengan
sumber tegangan 11.1 V didapatkan kecepatan maksimum 11100 RPM. Sebagai pengendali
kecepatan untuk motor ini digunakan ESC 30A berdasarkan rekomendasi produsen motor
tersebut. ESC yang digunakan memilki antarmuka PWM dengan periode 2 ms (0.7ms < ton
<1.9ms).
Baling-baling (Gambar 3.3) yang digunakan berbahan plastik dua bilah dengan berat ±7
gram dan ukuran 10x4.5 (diameter 10 inch, pitch 4.5 inch). Pemilihan baling-baling ini
merujuk pada rekomendasi produsen BLDC yang digunakan.
53
Gambar 3.3. Baling-baling 10x4.5
3.3. Perancangan Elektronik
Secara keseluruhan sistem elektronik Quadcopter yang dibuat terlihat pada Gambar 3.4.
Gambar 3.4. Sistem Elektronik Quadcopter
Microcontroler
accelerometer
gyroscope
magnetometer
I2C B
US
Electronic Speed
Controller
Electronic Speed
Controller
Electronic Speed
Controller
Electronic Speed
Controller
M1
M2
M3
M4
11.1 Volt Lithium Polymer Battery
voltage regulator and battrey level sensing
IMU
3.3V
11.1V
4 x BLDC
high level command and response via UART
Bluetooth Module
Ultrasonic Range
Sensor
ESC
54
Pada bagian selanjutnya akan dijelaskan masing-masing bagian dari rangkaian
elektronik pesawat.
3.3.1. Rangkaian IMU (Inertial Measurement Unit)
IMU merupakan sensor-sensor yang merupakan sumber informasi utama dari AHRS.
Sensor-sensor tersebut terdiri dari akselerometer, giroskop dan magnetometer. Masing-masing
sensor terhubung dalam jalur bus dengan protokol asinkron serial 2 kawat I2C[14] (Inter-
Integrated Circuits).
Sebagai sensor akselerometer digunakan LIS3LV02DL[5] produksi ST
Microelectronics. Tabel 3.1 menunjukkan spesifikasi penting yang perlu diperhatikan dari
sensor LIS3LV02DL.
Tabel 3.1. Spesifikasi LIS3LV02DL
Spesifikasi Nilai
Tegangan kerja 2.16-3.6 Volt
Jumlah sumbu pengukuran 3
Jangkauan Pengukuran ±2.0 g (FS=0), ±6.0 g (FS=1)
Sensitivitas (FS=0, 12bit) 1024 LSB/g
Alasan memilih sensor LIS3LV02DL adalah karena jangkauan pengukurannya (± 2g)
yang cocok jika digunakan untuk mengukur arah percepatan statis gravitasi (1g). Keputusan
ini berdasarkan asumsi bahwa pesawat tidak bergerak dengan percepatan dinamis melebihi
2x9.8ms-2 dengan frekuensi yang terlalu banyak, karena LIS3LV02DL akan mengalami
55
saturasi dan pengukuran percepatan menjadi tidak valid. Resolusi yang tinggi (12bit)
memungkinkan untuk mendapatkan hasil pengukuran dengan resolusi tinggi.
Untuk sensor giroskop digunakan ITG3205[4] produksi Invensense. Tabel 3.2
menunjukkan beberapa spesifikasi penting dari sensor ini.
Tabel 3.2. Spesifikasi ITG3205
Spesifikasi Nilai
Tegangan kerja 2.1-3.6 Volt
Jumlah sumbu pengukuran 3
Jangkauan Pengukuran ±2000°/s
Resolusi data keluaran 16bit
Sensitivitas (FS_SEL=3) 14.375 LSB/(°/s)
Sensor ITG3205 (Gambar 3.5) memiliki sensitivitas yang cukup tinggi untuk
mendeteksi perubahan sudut (14.375 LSB/(°/s)). Sensor ini digunakan pada Wii MotionPlus
sebagai ekstensi joystick Nintendo Wii [10] untuk mendeteksi gerak dan orientasi.
Gambar 3.5. ITG3205 pada Wii MotionPlus
56
Penulis mengambil sensor ITG3205 dari Wii MotionPlus karena masalah ketersediaan
barang dan harga, mengingat sensor giroskop belum banyak dijual di Indonesia dalam bentuk
chip. Wii MotionPlus memiliki host controller yang mengolah data giroskop,
mengenkripsinya dan mengirimkan ke joystick. Untuk membuat akses ke sensor ini menjadi
praktis dan memperkecil latency, jalur I2C yang menghubungkan host controller dan
ITG3205 diputus dan langsung dihubungkan ke rangkaian mikrokontroler utama.
Untuk magnetometer digunakan CMPS10 (Gambar 3.6), yang merupakan kompas
digital terkompensasi kemiringan (tilt compensated digital compass). CMPS10 dapat
mengukur medan magnet bumi yang diolah untuk menjadi referensi arah utara. Sensor ini
memiliki ketelitian 0.1° dalam mendeteksi arah utara kutub bumi.
Gambar 3.6. Pinout CMPS10[1]
Sensor LIS3LV02DL, ITG3205 dan CMPS10 dapat diakses dengan protokol
komunikasi I2C. Ketiga sensor ini dihubungkan dalam satu bus seperti pada Gambar 3.7.
57
Gambar 3.7. Bus I2C Sensor LIS3LV02DL, ITG3205 dan CMPS10
3.3.2 Altitude Sensing
Untuk mengukur ketinggian Quadcopter dari permukaan tanah digunakan sensor
ultrasonik yang diarahkan tegak lurus ke tanah. Sensor yang digunakan adalah SRF04
(Gambar 3.8)[7].
Gambar 3.8. Pinout SRF04[17]
58
Jarak diukur berdasarkan flight time dari ultrasonik yang dipancarkan dan diterima
kembali. Dibutuhkan dua pin untuk mengoperasikan sensor ini yaitu pin trigger sebagai input
dari sensor untuk memulai mengirimkan pulse ultrasonik dan pin echo yang akan
mengeluarkan pulsa saat ada sinyal pantul ultrasonik yang diterima sensor.
3.3.3 Bluetooth Module BC417143-A19
Sarana komunikasi sangat penting, terutama dalam proses debugging. Karena pada
Skripsi ini bekerja dengan wahana terbang, maka mutlak dibutuhkan piranti nirkabel untuk
komunikasi.
Komunikasi dengan bluetooth dipilih sebagai sarana komunikasi nirkabel pada Skripsi
ini dengan alasan penghematan biaya. Bluetooth dapat digunakan sebagai sarana debugging
dan sarana komunikasi dengan smart phone yang digunakan untuk mengiplementasikan high
layer application. Keterbatasan dari bluetooth adalah masalah jarak jangkauan yang terbatas,
sehingga pada proses wireless debugging dengan bluetooth harus dilakukan di dalam ruangan
atau daerah yang masih terjangkau oleh bluetooth. [3]
Modul bluetooth yang digunakan adalah BC417143-A19 (Gambar 3.9) produksi
CSR[8]. Spesifikasi dari bluetooth module ini dapat dilihat pada Tabel 3.3.
Gambar 3.9. Bluetooth module BC417143-A19
59
Tabel 3.3. Spesifikasi BC417143-A19[2]
Spesifikasi Nilai
Tegangan kerja 3.3 Volt
Frekuensi operasi 2.4GHz-2.48GHz
Bluetooth power class Class2
Antarmuka UART
Modul bluetooth BC417143-A19 memiliki antarmuka UART yang memungkinkan
menjadi penghubung mikrokontroler dengan komputer atau smart phone dengan fasilitas
bluetooth yang mendukung SPP (Serial Port Profile).
3.3.4 Rangkaian Mikrokontroler
Mikrokontroler digunakan sebagai pengendali utama dari Quadcopter. Implementasi
low layer control dan mid layer control dilakukan pada program yang ditanamkan pada
mikrokontroler ini.
Tuntutan dari mikrokontroler sebagai pengendali utama pada Quadcopter adalah
kecepatan eksekusi program, ukuran RAM (Random Access Memory) dan ROM (Read Only
Memory) yang memadai untuk menjalankan program. Pada implementasi algoritma DCM-
IMU banyak menggunakan operasi matrik dan floating point, sehingga kebutuhan akan
memori dan kecepatan eksekusi harus diperhatikan.
Tipe mikrokontroler yang dipakai pada Skripsi ini adalah LPC1114 produksi NXP.
LPC1114 berarsitektur ARM (Advanced RISC Machine) 32bit keluarga Cortex M0. Fitur dari
mikrokontroler terdapat pada Tabel 3.4.
60
Tabel 3.4. Spesifikasi LPC1114[6]
Spesifikasi Nilai
Arsitektur 32 bit ARM Cortex M0
RAM 8KB
Flash Memory 32KB
Speed 50 MHz
Protokol komunikasi UART,RS485,I2C,SSP0, SSP1,CAN
IO 42 pin
Timer Systick 24bit,2x16bit,2x32bit
Agar memudahkan dalam implementasi rangkaian dan mengakomodasi perubahan
rangkaian dalam pengujian, rangkaian mikrokontroler ini dibuat dalam bentuk stamp seperti
pada Gambar 3.10.
Gambar 3.10. LPC1114 Stamp
61
Gambar 3.11. Skematik Mikrokontroler LPC1114
Pada Gambar 3.11 ditunjukan pin assignment untuk mikrokontroler LPC1114. Ada
beberapa port yang digunakan untuk interkoneksi dengan sub-modul seperti IMU, 4 buah
ESC, bluetooth module dan ISP (In System Programming).
Port IMU merupakan jalur I2C yang dapat di-expand dengan piranti lain seperti
Serial-EEPROM yang digunakan untuk menyimpan parameter pengaturan. Port ESC
terhubung ke rangkaian 4 buah ESC dan dialokasikan 1 pin ADC (Analog to Digital
Converter) untuk mengukur tegangan battery.
LPC1114 memiliki fitur In System Programming dengan UART. Karena
mikrokontroler ini hanya memiliki satu port UART dan bluetooth module juga menggunakan
UART sebagai antarmuka-nya, maka port serial ISP dan bluetooth module digabung. Pin RX
pada ISP dan bluetooth module dapat langsung digabung. Untuk TX, karena pin ini
LPC1114 LQP48
62
merupakan pin output, untuk menghindari hubungan singkat digunakan dioda dan resistor
pull-up.
3.3.5 Rangkaian ESC dan BLDC
Untuk menggerakan baling-baling digunakan BLDC yang dikendalikan komutasinya
oleh ESC. Karena Quadcopter memiliki empat buah BLDC, sehingga dibutuhkan empat buah
ESC untuk mengendalikan masing-masing motor. Antarmuka ESC dengan mikrokontroler
menggunakan PWM, sehingga dibutuhkan empat pin PWM untuk semua ESC.
Gambar 3.12. Konfigurasi ESC dan BLDC
Setiap ESC memiliki regulator tegangan 5V 2A. Regulator ini merupakan regulator
linier yang terdiri dari dua buah LM7805 yang diparalel. Keluaran dari regulator pada ESC ini
dimanfaatkan untuk mencatu rangkaian elektronik lainnya.
A B C
+ -
ESC
PW
M
5V/2
A
BLDC
A B C
+ -
ESC
PW
M
5V/2
A
BLDC
A B C
+ -
ESC
PW
M
5V/2
A
BLDC
A B C
+ -
ESC
PW
M
5V/2
A
BLDC
+
- battery
63
Untuk mengukur tegangan battery, digunakan resistor sebagai pembagi tegangan dan
kapasitor sebagai filter. Pengukuran tegangan ini sangat penting agar battery tidak over
discharge yang menyebabkan umur battery LiPo semakin pendek.
Quadcopter memiliki dua buah motor yang berputar searah jarum jam dan dua buah
motor yang berputar berlawanan dengan arah jarum jam. Untuk mendapatkan konfigurasi arah
putar yang berbeda, BLDC hampir mirip dengan motor DC konvensional yaitu mengatur
polaritas-nya. BLDC dapat diatur arah putarnya dengan menukar urutan tiga kabel yang
dimilikinya, dengan menukar urutan kabel sama saja dengan mengatur urutan komutasinya.
3.4. Perancangan dan Realisasi Low Layer Control
Low layer control merupakan layer yang mengatur fungsi-fungsi low level dari
Quadcopter seperti akuisisi data sensor-sensor, algoritma sensor fusion pada AHRS dan
pengendalian aktuator dengan kendali PID. Layer ini diimplementasikan pada mikrokontroler
LPC1114.
3.4.1 Akuisisi Sensor
Proses akuisisi sensor adalah proses yang dilakukan oleh mikrokontroler untuk
mendapatkan data sensor yang digunakan sebagai input bagi sistem. Tuntutan dari proses
akuisisi ini adalah meminimalisir latency yang terjadi saat mikrokontroler melakukan transfer
data dengan sensor-sensor yang digunakan.
Ketiga sensor (akselerometer, giroskop dan magnetometer) yang digunakan sebagai masukan
untuk AHRS menggunakan protokol I2C dan terkoneksi dalam satu bus. Sehingga
mikrokontroler tidak bisa melakukan transfer data dalam waktu yang bersamaan. Pada Tabel
64
3.5 ditunjukkan hardware address dan register-register hasil pengukuran dari masing-masing
sensor.
Tabel 3.5. Hardware Address dan Register IMU[1; 4; 5]
Slave Hadware Address Register Pengukuran
LIS3LV02DL 0x3A X Y Z
0xA8 0xA9 0xAA 0xAB 0xAC 0xAD
ITG3205 0xD0 X Y Z
0xD0 0xD1 0xD2 0xD3 0xD5 0xD6
CMPS10 0xC0 Heading
0x02 0x03
Akuisisi sensor dapat dilakukan dengan cara konvensional yaitu polling (Gambar
3.13). Teknik ini kurang efektif karena terlalu banyak proses menunggu selesainya transfer
data dari masing-masing sensor.
LPC1114 mempunyai kendali perangkat keras untuk I2C dan dapat membangkitkan
interupsi pada setiap event yang terjadi. Fitur ini dapat dimanfaatkan untuk mengurangi waktu
tunggu yang terjadi (Gambar 3.13). Selama proses transfer berlangsung oleh kendali
perangkat keras I2C di dalam mikrokontroler, proses lainnya dapat berjalan dan tidak ada
waktu yang dihabiskan untuk menunggu proses transfer.
65
Gambar 3.13. Perbandingan akuisisi polling dan interrupt driven
Sesuai dengan spesifikasi protokol komunikasi I2C [14], setiap sensor memilki
hardware address sebagai identitas setiap sensor. Masing-masing sensor juga mempunyai
fitur burst baik pada saat membaca maupun menulis. Dengan burst read memungkinkan untuk
membaca hasil pengukuran sensor secara berurutan mulai dari alamat register pertama data
pengukuran sensor tersebut.
3.4.2 Implementasi Algoritma DCM-IMU untuk AHRS
Algoritma DCM-IMU yang digunakan sebagai AHRS, diimplementasikan ke dalam
program mikrokontroler. Langkah-langkah pada algoritma ini dibagi menjadi beberapa fungsi
sebagai implementasi persamaan-persamaan pada teori DCM-IMU. Fungsi-fungsi tersebut
adalah sebagai berikut:
Proses transfer Proses lain Proses awal akuisisi
a. Polling
b. Interrupt driven
proses utama
hardware I2C
66
1. sensor_update(), merupakan fungsi untuk memperbarui data sensor giroskop,
akselerometer dan magnetometer. Karena proses akuisisi data sensor adalah
interrupt driven, untuk mengatasi kesalahan karena penggunaan variabel secara
bersamaan, hasil dari akuisisi ini disimpan dalam dalam sebuah buffer dan
disediakan flag yang menandakan bahwa buffer sudah terbarui. Kemudian dalam
fungsi sensor_update(), jalannya program utama menunggu flag dari interupsi dan
menyalin nilai sensor tersebut ke variabel lain untuk diproses ke langkah
selanjutnya.
2. DCM_update(), fungsi ini mengimplementasikan persamaan 2.50, yaitu pembaruan
matrik rotasi sebagai representasi arah hadap dengan data dari giroskop. Karena
pada persamaan 2.50 melibatkan dt yang merupakan waktu cuplik dari akuisisi
sensor, maka untuk menghitung lamanya waktu cuplik ini digunakan timer. Pada
fungsi ini, pembaruan matrik rotasi dilakukan dengan data dari giroskop dan
kompensasi drift yang dihitung pada proses DCM_drift_detection() sebelumnya.
3. DCM_normalize(), fungsi ini merupakan implementasi dari persamaan 2.52, 2.53,
2.54, 2.55, 2.56, 2.57, 2.58 yang bertujuan untuk menjaga orthogonalitas matrik
rotasi yang terbentuk.
4. DCM_drift_detection(), merupakan fungsi untuk mendeteksi error akibat drift dari
giroskop yang nantinya diumpankan ke fungsi DCM_update(). Error yang
terbentuk merupakan matrik 3x1 dan dikalikan kP sebagai parameter kontrol
proporsional sebelum diumpankan ke fungsi DCM_update(). Pada proses ini
dideteksi pula apakah magnitude dari sensor akselerometer melebihi 1g. Jika
melebihi 1g yang artinya ada percepatan dinamis, proses kompensasi tidak
67
dilakukan (correction =[0 0 0]), karena akselerometer tidak valid lagi untuk
mengukur arah percepatan gravitasi akibat adanya percepatan dinamis dari luar.
5. DCM_to_Euler(), merupakan implementasi persamaan 2.68, 2.69 dan 2.70 untuk
mendapatkan tiga sudut Euler (roll, pitch, yaw). Tiga sudut ini merupakan sumber
masukan utama kontrol PID Quadcopter.
3.4.3 Kontrol Gerak Quadcopter
Gambar 3.14 menunjukkan kontrol gerak dari Quadcopter yang dibuat pada skripsi ini.
Gambar 3.14. Blok Diagram Kontrol Gerak Quadcopter
Quadcopter
Dynamics Rotor Mixer
PID
Controller
ωhover
Δ ω(ψ,θ,φ)
Δ ωalt
ω1
ω2
ω3
ω4
F1
F2
F3
F4
AHRS
Altitude Refererence
(Ultrasonic)
h
mid layer control
ψset φset θset hset
high level
command
Resp
on
se
high layer
application
low layer control
68
Kontrol gerak Quadcopter yang dibuat merupakan kontrol PID dengan masukan set
sudut (roll, pitch, yaw) dan set ketinggian dari mid layer control. Keluaran dari kontrol PID
kemudian diolah pada proses mixing untuk menghasilkan empat keluaran kecepatan rotor.
Kontrol PID low layer control terdiri atas empat kontrol PID, yaitu kontrol sudut roll,
kontrol sudut pitch, kontrol sudut yaw dan kontrol ketinggian. Keluaran dari masing-masing
kontrol PID merupakan kompensasi dari masing-masing besaran (roll, pitch, yaw dan
ketinggian) berdasarkan set value dari mid layer control dan nilai aktual dari AHRS dan
altitude reference. Setiap kontrol memenuhi persamaan sebagai berikut:
( )alt alt alt
alt set
altalt p alt d i alt
e h h
d ek e k k e dt
dt
( )
set
p d i
e
d ek e k k e dt
dt
( )
set
p d i
e
d ek e k k e dt
dt
( )
set
p d i
e
d ek e k k e dt
dt
Pada implementasinya dalam program mikrokontroler, kontrol PID yang dibuat dibuat
langkah-langkah program sebagai berikut:
1. Hitung error yang terjadi: error=set_value-actual_value
2. Hitung selisih error dari nilai error sebelumnya: d_error=error-
last_error;last_error=error;
3. Hitung nilai keluaran proporsional: P = kp * error;
(3.1)
(3.2)
(3.3)
(3.4)
69
4. Hitung nilai keluaran integral: I=constraint(I + (ki * error), max_I);
5. Hitung nilai keluaran derivatif: D=kd * d_error;
6. Jumlahkan nilai proporsional, integral dan derivatif sebagai keluaran PID:
output=P+I+D;
Fungsi constraint() pada langkah 4 merupakan fungsi untuk membatasi nilai keluaran
kontrol integral untuk menghindari nilai integral yang berlebihan. Pembatasan ini sangat
efektif terutama saat Quadcopter melakukan lepas landas di permukaan yang kurang datar.
Pada saat awal kontrol bekerja di permukaan yang tidak datar, nilai I akan terakumulasi dan
memungkinkan nilainya melebihi batas.
Setelah nilai-nilai kompensasi didapatkan (Δωφ, Δωθ, Δωψ dan Δωalt) proses
selanjutnya adalah memadukan keempat keluaran kontrol untuk mendapatkan empat
kecepatan motor.
Gambar 3.15. Gaya Dorong, Yawing Moment, dan Sudut Quadcopter
Fg
Xb
Yb
Zb
Fp4
F p3 Fp2
Fp1
M1
M2 M3
M4
φ θ
ψ ω4 ω1
ω3
ω2
70
Pada Gambar 3.15, ω1, ω2, ω3, dan ω4 adalah kecepatan putar masing-masing rotor.
Setiap rotor menghasilkan gaya dorong yang berbanding lurus dengan kuadrat kecepatan
sudut rotor (persamaan 2.1). Berdasarkan persamaan 2.5, setiap rotor menghasilkan yawing
moment pada sumbu Zb (sudut yaw).
Jika Fp4 lebih besar dari Fp2, maka Quadcopter akan berotasi terhadap sumbu Yb atau
sudut pitch(θ) positif. Begitu juga pada sudut roll(φ), jika Fp1 lebih besar dari Fp3, Quadcopter
akan berotasi ke sudut roll positif. Yawing moment positif pada sudut yaw(ψ) dihasilkan oleh
rotor-1 dan rotor-3, sedangkan rotor-2 dan rotor-4 menghasilkan yawing moment negatif.
Dengan mekanisme tersebut, keluaran kompensasi kontrol PID untuk sudut roll, pitch dan
yaw dipadukan untuk mengendalikan kecepatan empat rotor:
1 hover alt
2 hover alt
3 hover alt
4 hover alt
ωhover merupakan kecepatan minimum dari rotor untuk menghasilkan gaya dorong
sebesar seperempat berat Quadcopter. Jika tidak ada kompensasi dan hanya ωhover saja yang
bekerja pada masing-masing rotor, Quadcopter dalam kondisi siap terbang.
Low layer control direalisasikan dalam bentuk loop dalam program sesuai dengan
diagram alir pada Gambar 3.16.
71
Gambar 3.16. Diagram alir low layer control
Low layer control dan mid layer control diimplementasikan dalam satu mikrokontroler
LPC1114. Pada low layer control, periode siklus looping program dibuat kurang dari 2 ms,
sesuai dengan periode PWM dari ESC sehingga perubahan kecepatan yang diberikan kontrol
PID dapat langsung di-update oleh ESC.
start
Kalkulasi roll,pitch dan yaw
dengan algoritma DCM-IMU
Jalankan task untuk mid layer
control.
Kalkulasi kontrol PID untuk gerak
Quadcopter
Mixing
Update kecepatan rotor
Inisialisasi peripheral dan sensor
akuisisi data ketinggian
72
3.5. Perancangan Mid Layer Control
Mid layer control terdiri dari dua bagian penting, yaitu algoritma autonomous yang
bekerja bersama-sama dengan low layer control dan high level command protocol sebagai
protokol komunikasi paket data antara high layer application dengan mid layer control.
3.5.1 Algoritma Autonomous
Algoritma autonomous Quadcopter diimplementasikan dengan mesin kondisi terbatas
(FSM, finite state machine) seperti pada Gambar 3.17.
Gambar 3.17. Diagram Finite State Machine dari Mid Layer Control
FSM yang dibuat terdiri dari beberapa kondisi (state), yaitu: idle, take off , attitude &
altitude hold, altitude correction, yaw corection dan navigate. Kondisi-kondisi ini dapat
beralih ke kondisi-kondisi tertentu yang terbatas jika ada pemicu (trigger) yang sesuai. Ada
idle
Altitude &
attitude hold
altitude
corection
landing
yaw
correction
navigate
take_off() take off
take_off: done
landing: done
landing()
altitude_set(x)
alt_set: done
navigate: done or stop()
yaw_set: done
set_direction(x)
START
move(x,y,dt)
73
dua jenis trigger yang berlaku, yaitu perintah dari high layer application dan trigger internal
seperti terpenuhinya kondisi dari sebuah state. Penjelasan dari setiap state tersebut adalah
sebagai berikut:
1. Idle
Merupakan kondisi awal dari pesawat. Semua rotor dalam kondisi berhenti, tetapi
proses low layer seperti akuisisi sensor dan algoritma DCM-IMU masih berjalan.
2. Take off
Proses take off atau lepas landas dilakukan setelah ada perintah dari high layer
application untuk lepas landas dari kondisi idle. Sudut set untuk roll dan pitch diberi
nilai 0, yang artinya low layer control harus mempertahankan Quadcopter pada posisi
seimbang mendatar. Saat proses ini dipicu, sudut yaw disimpan dan dijadikan sudut
set, sehingga tidak ada koreksi pada sudut yaw yang mengganggu kontrol
keseimbangan Quadcopter, terutama komponen proporsional pada kontrol PID low
layer control. State ini akan memicu state attitude & altitude hold jika ketinggian
pesawat menyentuh nilai default yaitu 1 meter.
3. Attitude & altitude hold
State attitude & altitude hold atau hovering merupakan kondisi di mana Quadcopter
mempertahankan keseimbangan, sudut yaw dan ketinggian. Sudut set untuk yaw
diambil dari sudut yaw aktual pertama kali saat state ini dipicu. State ini merupakan
state idle dari Quadcopter saat berada di udara. Dari state ini dapat dipicu oleh
perintah high layer application untuk berpindah ke state altitude correction, yaw
correction atau navigate.
74
4. Altitude correction
State altitude correction dipicu dari state attitude & altitude hold setelah ada perintah
dari high layer application untuk menyesuaikan ketinggian pesawat. Pada kondisi ini,
set ketinggian disesuaikan secara bertahap sesuai dengan perintah yang dikirimkan
oleh high layer application. Setelah set ketinggian dianggap sudah terpenuhi
(magnitude error ketinggian kurang dari 10 cm selama 3 detik atau 1500 siklus
kontrol), state ini memicu kembali state attitude & altitude hold.
5. Yaw correction
State yaw correction dipicu dari state attitude & altitude hold setelah ada perintah dari
high layer application untuk menyesuaikan arah hadap Quadcopter. Besarnya sudut
yaw perintah diteruskan ke set sudut yaw pada kontrol PID. State yaw correction akan
memicu state attitude & altitude hold jika sudut yaw yang diperintahkan dianggap
sudah terpenuhi (magnitude error sudut yaw kurang dari 5 derajat selama 3 detik atau
1500 siklus kontrol).
6. Navigate
State navigate adalah kondisi di mana Quadcopter bergerak sesuai dengan perintah
dari high layer application. Pergerakan Quadcopter dilakukan dengan mengatur set
sudut pitch dan roll pada kontrol PID. Pada saat state ini dipicu, parameter perintah
arah gerak (x dan y) dari high layer application diubah menjadi set sudut untuk roll
dan pitch yang dibatasi sampai ± 20° agar pergerakan dari Quadcopter tidak terlalu
ekstrim. State ini akan memicu state attitude & altitude hold dengan dua kemungkinan
trigger, yaitu saat parameter perintah dt yang merupakan perintah lamanya
75
Quadcopter bergerak sudah berakhir, dan saat high layer application memerintahkan
untuk berhenti dengan perintah stop().
3.5.2. High Level Command Protocol
Untuk menghubungkan mid layer control dan high layer application digunakan
komunikasi UART dengan bluetooth. Pada skripsi ini dirancang format paket data yang
digunakan untuk bertukar data antar kedua layer tersebut.
LPC1114 memilki FIFO (First In First Out) buffer sebesar 16 byte baik untuk mengirim
maupun untuk menerima [6]. Dengan FIFO buffer ini memungkinkan untuk mengirim
ataupun menerima data tanpa harus menunggu proses selesai, tetapi dengan catatan FIFO
buffer tidak penuh.
Perancangan paket data dibuat dengan meminimalisir latency pada saat mikrokontroler
mengirim paket data. Satu paket data dibuat dengan ukuran kurang dari 16 byte (total 15 byte),
sehingga pada sekali transfer, program tidak akan menunggu sampai transfer selesai karena
ada FIFO buffer untuk pengiriman.
Komunikasi dirancang dengan sistem master-slave dengan high layer application
sebagai master dan mid layer control sebagai slave. Format paket data dibagi menjadi dua,
yaitu perintah (command) dan balasan (response). Command (Tabel 6) merupakan paket data
dari high layer application dan response (Tabel 7) merupakan paket data dari mid layer
control. Master menginisiatif komunikasi dengan mengirimkan command, selanjutnya slave
membalasnya dengan response. Setiap command memiliki command id, dan parameter
perintah dalam payload. Setiap command akan dibalas dengan response id yang sama dengan
command id dari command yang diterima oleh low layer control. 12 byte data pada payload
76
dari command dan response direpresentasikan dengan huruf ASCII ‘0’ – ‘9’. Pada Tabel 8
diperlihatkan keseluruhan perintah tingkat tinggi yang dapat digunakan oleh high layer
application.
Tabel 3.6. Format Paket Data Command
Header (‘C’) Command ID Payload Checksum
1 byte 1 byte 12 byte 1 byte
Tabel 3.7. Format Paket Data Response
Header (‘R’) Response ID Payload Checksum
1 byte 1 byte 12 byte 1 byte
Tabel 3.8. High level Command Set
Command ID Command Payload Response Payload
get_state ‘S’ 000000000000 state[3] batt[3] 00000
get_yaw ‘Y’ 000000000000 yaw[3] 000000000
get_altitude ‘H’ 000000000000 altitude[4] 00000000
take_off ‘T’ 000000000000 status[1] 00000000
landing ‘L’ 000000000000 status[1] 00000000
altitude_set ‘A’ A[4] 00000000 status[1] 00000000
move ‘M’ X[3] Y[3] Z[3] dt[3] status[1] 00000000
set_direction ‘D’ D[3] 000000000 status[1] 00000000
stop ‘X’ 000000000000 status[1] 00000000