48
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
ap
an
k
er
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
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).
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.
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).
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 BU
S
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
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
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.
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]
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].
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.
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.
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.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
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 /2A BLDCA B C
+
-
ESC PW M 5V /2A BLDCA B C
+
-
ESC PW M 5V /2A BLDCA B C
+
-
ESC PW M 5V /2A BLDC +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.
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.
Gambar 3.13. Perbandingan akuisisi polling dan interruptdriven
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
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.
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 Re sp on se high layer application
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
alt
alt p alt d i alt
e
h h
d e
k e
k
k e dt
dt
 
 
( )
setp d i
e
d e
k e
k
k e dt
dt
        
 
 
( )
setp d i
e
d e
k e
k
k e dt
dt
        
 
 
( )
setp d i
e
d e
k 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)
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
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
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
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
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
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
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
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 levelCommand 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