BAB III PERANCANGAN
3.1. Arsitektur Perancangan Secara keseluruhan, perancangan Autonomous Quadcopter yang dibuat memiliki beberapa layer seperti yang divisualisasikan pada Gambar 3.1.
High Layer Application Mid Layer Control High level command protocol Flight algorithm
PID Flight Controller Electronic Speed Controller
AHRS & Altitude sensor
Tahapan kerja
Low Layer Control
Physical Layer BLDC motor
Propeller
Frame
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
48
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. Bluetooth Module
high level command and response via UART 3.3V
ESC IMU
Electronic Speed Controller
M1
Electronic Speed Controller
M2
Electronic Speed Controller
M3
Electronic Speed Controller
M4
accelerometer I2C BUS
gyroscope
4 x BLDC
Microcontroler
magnetometer
Ultrasonic Range Sensor
11.1V
voltage regulator and battrey level sensing 11.1 Volt Lithium Polymer Battery
Gambar 3.4. Sistem Elektronik Quadcopter
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] (InterIntegrated 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 Tegangan kerja Jumlah sumbu pengukuran Jangkauan Pengukuran Sensitivitas (FS=0, 12bit)
Nilai 2.16-3.6 Volt 3 ±2.0 g (FS=0), ±6.0 g (FS=1) 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 Tegangan kerja Jumlah sumbu pengukuran
Nilai 2.1-3.6 Volt 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 Tegangan kerja Frekuensi operasi
Nilai 3.3 Volt 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 DCMIMU 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 Arsitektur
Nilai 32 bit ARM Cortex M0
RAM
8KB
Flash Memory
32KB
Speed Protokol komunikasi IO Timer
50 MHz UART,RS485,I2C,SSP0, SSP1,CAN 42 pin 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
LPC1114 LQP48
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
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.
+
C
B
A
ESC
ESC
-
+
C
B
-
+
5V/2A
-
5V/2A
5V/2A
PWM
A
ESC
ESC
+
C
B
BLDC
PWM
A
5V/2A
C
B
PWM
A
BLDC
BLDC
PWM
BLDC
+ -
battery
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.
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
LIS3LV02DL
0x3A
Register Pengukuran X 0xA9
0xA8
ITG3205
Y 0xAA
X
0xD0 0xD0
Z 0xAB
0xAC
Y 0xD1
0xD2
0xAD
Z 0xD3
0xD5
0xD6
Heading
CMPS10
0xC0 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 a. Polling
b. Interrupt driven hardware I2C proses utama
Proses transfer
Proses lain
Proses awal akuisisi
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:
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.
high layer application Response
high level command
mid layer control ωhover ψset φset θset hset PID
ω1 ω2
Δ ω(ψ,θ,φ) Δ ωalt
Mixer
ω3 ω4
Controller
h
F1 F2 Rotor
F3 F4
AHRS Altitude Refererence (Ultrasonic)
low layer control
Gambar 3.14. Blok Diagram Kontrol Gerak Quadcopter
Quadcopter Dynamics
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 kompensasi dari masing-masing besaran (roll, pitch, yaw dan
kontrol PID merupakan
ketinggian) berdasarkan set value dari mid layer control dan nilai aktual dari AHRS dan altitude reference. Setiap kontrol memenuhi persamaan sebagai berikut:
ealt h hset alt kpalt ealt kdalt
d (ealt ) kialt ealt dt dt
(3.1)
d ( e ) k i e dt dt
(3.2)
d ( e ) k i e dt dt
(3.3)
e set k p e k d e set k p e k d e set k p e k d
d ( e ) ki e dt dt
(3.4)
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
last_error;last_error=error; 3. Hitung nilai keluaran proporsional: P = kp * error;
sebelumnya:
d_error=error-
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. Fp1 Fp4
M4
Zb ω4
ω1
ψ
M1
Yb F p3
θ φ Fg
M3
Xb
Fp2 ω2
ω3 M2
Gambar 3.15. Gaya Dorong, Yawing Moment, dan Sudut Quadcopter
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
start
Inisialisasi peripheral dan sensor
Jalankan task untuk mid layer control. Kalkulasi roll,pitch dan yaw dengan algoritma DCM-IMU
akuisisi data ketinggian
Kalkulasi kontrol PID untuk gerak Quadcopter
Mixing
Update kecepatan rotor
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.
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.
START
take_off() idle
take off take_off: done
landing: done
landing
alt_set: done
altitude corection
landing() Altitude & attitude hold
altitude_set(x)
set_direction(x) navigate: done or stop()
yaw correction
yaw_set: done
move(x,y,dt)
navigate
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
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
get_state
‘S’
000000000000
state[3]
get_yaw
‘Y’
000000000000
yaw[3]
get_altitude
‘H’
000000000000
altitude[4]
take_off
‘T’
000000000000
status[1]
00000000
landing
‘L’
000000000000
status[1]
00000000
altitude_set
‘A’
status[1]
00000000
move
‘M’
X[3]
status[1]
00000000
set_direction
‘D’
D[3]
status[1]
00000000
stop
‘X’
status[1]
00000000
A[4]
Response Payload
00000000 Y[3]
Z[3] 000000000
000000000000
dt[3]
batt[3]
00000
000000000 00000000