• Tidak ada hasil yang ditemukan

AUTO LEVELLING MULTICOPTER MENGGUNAKAN GYRO DAN ACCELEROMETER PADA MODUL SENSOR MPU6050

N/A
N/A
Protected

Academic year: 2021

Membagikan "AUTO LEVELLING MULTICOPTER MENGGUNAKAN GYRO DAN ACCELEROMETER PADA MODUL SENSOR MPU6050"

Copied!
27
0
0

Teks penuh

(1)

AUTO LEVELLING MULTICOPTER

MENGGUNAKAN GYRO DAN

ACCELEROMETER PADA MODUL

SENSOR MPU6050

Materi ini ditranslate dari video:

 https://www.youtube.com/watch?v=j-kE0AMEWy4

(2)

i

Daftar Isi

Daftar Isi ... i

Daftar Gambar ... ii

BAB 1 PERHITUNGAN GYRO ... 1

(3)

ii

Daftar Gambar

Gambar 1.1 Multicopter setelah dipasang sensor IMU MPU-6050 untuk auto levelling 1

Gambar 1.2 Web Joop Brokking (source: brokking.net)... 2

Gambar 1.3 Sensor IMU MPU6050 ... 2

Gambar 1.4 Lokasi terbaik pemasangan Gyro MPU6050 ... 3

Gambar 1.5 Data pada datasheet MPU6050 ... 3

Gambar 1.6 Ketika kecepatan sudut gyro adalah sebesar 1 /s, maka output dari gyro adalah 65,5 ... 4

Gambar 1.7 Rumus menghitung kecepatan sudut dalam derajat per detik (°/s). ... 4

Gambar 1.8 Maksimum kecepatan sudut yang dapat diukur (jika FS_SEL = 1) [cek Gambar 1.5] ... 5

Gambar 1.9 Nilai raw data dari output gyro berubah-ubah meskipun gyro dalam keadaan diam ... 5

Gambar 1.10 Kode Arduino untuk kalibrasi gyro pada MPU6050 ... 6

Gambar 1.11 Grafik output gyro sebelum motor berjalan, hampir mendekati nol. ... 6

Gambar 1.12 Grafik output gyro saat motor berjalan, output gyro membesar disebabkan getaran motor dan propeller. ... 7

Gambar 1.13 Cara gyro melakukan perhitungan sudut dari kecepatan sudut ... 7

Gambar 1.14 Penjelasan tentang refresh rate gyro 250 Hz. ... 8

Gambar 1.15 Tampilan pada kode Arduino ... 8

Gambar 1.16 Contoh perhitungan sudut oleh gyro untuk rotasi 1 menit. ... 8

Gambar 1.17 Hasil pembacaan sudut gyro ditampilkan pada LCD, dengan refresh rate 250 Hz ... 9

Gambar 1.18 Standar Acuan yang digunakan untuk rotasi roll, pitch dan yaw pada video ini. ... 9

Gambar 1.19 Hasil pengukuran sudut oleh gyro sangat dekat dengan nilai yang sebenarnya. ... 10

Gambar 1.20 Masalah yang perlu diselesaikan ... 10

Gambar 1.21 Pengukuran sudut dengan pitch gauge untuk perbandingan ... 11

Gambar 1.22 Gambaran tentang perubahan sudut pitch vs rotasi yaw (plot dilakukan tiap 5 gerakan yaw) ... 11

Gambar 1.23 Grafik setelah ditambahkan fungsi sinus ... 12

Gambar 1.24 Contoh kode Arduino untuk menyelesaikan masalah di atas. ... 12

Gambar 1.25. Jika dibiarkan beberapa lama, nilai pembacaan sudut oleh gyro akan mengalami penyimpangan (drift) (misalnya, before: pitch = 0.3, after: pitch = -6.7) .. 13

Gambar 2.1 Gyro’s drift : nilai pengukuran sudut oleh gyro akan menyimpang setelah sekian lama dinyalakan ... 14

Gambar 2.2 Contoh grafik ketika gyro’s drift terjadi, nilainya menyimpang sedikit-demi sedikit setelah sekian lama dinyalakan. ... 14

Gambar 2.3 Gyro WAJIB ditempatkan di tempat yang datar ketika pertama kali dinyalakan (butuh kalibrasi awal), karena gyro tidak memliki referensi ke salah satu level. ... 15

Gambar 2.4 Visualisasi model 2D dari accelerometer ... 15

Gambar 2.5 Datasheet MPU6050 pada bagian sensitivitas accelerometer. ... 16

Gambar 2.6. Output raw data dari accelerometer ... 16

(4)

iii

Gambar 2.8 Gaya yang bekerja serta panjang total vektor gravitasi ketika sensor dimiringkan 45 . ... 17 Gambar 2.9. Contoh sederhana perhitungan sudut menggunakan accelerometer menggunakan fungsi arccos... 18 Gambar 2.10 Kode Arduino sederhana untuk perhitungan sudut roll dan pitch menggunakan accelerometer. ... 18 Gambar 2.11 Nilai roll dapat berubah ketika accelerometer dimiringkan. ... 19 Gambar 2.12 Hasil pengukuran sudut oleh accelerometer menjadi tidak berguna ketika accelerometer terdapat vibrasi di sekitar sensor... 19 Gambar 2.13 Alasan kenapa accelerometer tetap membutuhkan gyro untuk menghitung sudut yang akurat. ... 20 Gambar 2.14 Rata-rata pengukuran sudut oleh accelerometer selanjutnya akan digunakan untuk kompensasi gyro’s drift. ... 20 Gambar 2.15 Kode Arduino untuk complementary filter. Pengukuran sudut oleh accelerometer digunakan untuk kompensasi gyro’ drift. ... 21 Gambar 2.16 Prosedur ketika akan memulai pengukuran sudut oleh gyro dan accelerometer menggunakan complementary filter. ... 21 Gambar 2.17. PENTING! Beberapa masalah akan timbul ketika MPU6050 (dengan

complementary filter) digunakan untuk terbang dengan sudut lebih dari 60 , terbang

jarak jauh ataupun terbang dalam waktu yang lama... 22 Gambar 2.18 Web Joop Brokking (brokking.net) ... 23

(5)

1

BAB 1

PERHITUNGAN GYRO

Auto Levelling sebuah multicopter cukup menantang. Artinya saat Anda tidak melakukan kontrol pitch dan roll secara manual dari transmitter Anda, multicopter akan melakukan auto levelling sendiri. Agar ini berfungsi, flight controller dari multicopter perlu tahu persis jalan mana yang menurun seperti waterpass yang ada di atas multicopter untuk sumbu pitch dan roll, seperti pada Gambar 1.1. Sangat sering orang bertanya kepada saya bagaimana membuat fitur auto levelling untuk multicopter mereka. Jawaban atas pertanyaan seperti ini cukup rumit dan tidak dapat dijelaskan dalam satu email. Dan itulah mengapa saya membuat serial video ini.

Gambar 1.1 Multicopter setelah dipasang sensor IMU MPU-6050 untuk auto levelling Saya akan menjelaskan cara memprogram Inerial Measurement Unit (IMU) sederhana, yang memungkinkan untuk membuat fitur auto levelling untuk multicopter. Untuk mendapatkan gambaran tentang apa yang diharapkan selama video ini, anda mungkin akan berpikir bahwa saya akan menjelaskan tentang sudut Euler, Kalman Filter, Gimbal lock, dan akhirnya menyelesaikan video dengan hal seperti ini. Tidak, tentu saja tidak. Pernahkah Anda melihat situs web saya? Mari sederhanakan saja. Ini mungkin bukan IMU yang paling canggih, tetapi ini akan berhasil.

(6)

2

Gambar 1.2 Web Joop Brokking (source: brokking.net)

Baiklah, itu prinsip yang sama seperti yang saya gunakan dalam video ini. Jadi tanpa basa-basi lagi, Mari kita mulai dengan hardware-nya. Dalam serial video ini, saya akan menggunakan MPU-6050, seperti pada Gambar 1.3. Sekarang saya tidak menggunakan gyro ini untuk flight controller saya sendiri karena berbagai alasan, tetapi saya menggunakan MPU-6050 selama serial video ini karena sangat mudah diperoleh untuk viewer saya. Ini juga sangat murah dan memiliki gyro dan accelerometer dalam satu paket. Ini sangat nyaman saat memprogram dan IMU. Dengan video ini dan sebagian besar video saya yang lain, saya mencoba membuat viewer saya lebih pintar. Ini berarti bahwa kita juga perlu membahas dasar-dasarnya dan saya akan mulai dengan gyro.

Gambar 1.3 Sensor IMU MPU6050

Gyro hanya mengukur kecepatan sudut dan diukur dalam derajat per detik ( /s) atau

sejenisnya, tetapi gyro selalu merupakan kecepatan sudut dari waktu ke waktu. Kecepatan sudut pada multicopter sama di semua tempat, jadi tidak masalah di mana gyro berada, tetapi sebaiknya pasang gyro di tengah multicopter dimana sebagian besar waktu getarannya (vibrasi) paling rendah adalah ide yang bagus, seperti pada Gambar 1.4.

(7)

3

Gambar 1.4 Lokasi terbaik pemasangan Gyro MPU6050

Untuk mengetahui output pasti dari MPU-6050, kita perlu melihat di datasheet. Dinyatakan di sini bahwa output akan menjadi 65,5 ketika kecepatan sudut gyro adalah 1 /s. Ini jika kita menggunakan skala penuh, maksimum bisa mencapai ±500 /s, yang akan saya gunakan selama video ini. Output dari gyro adalah sign value 16 bit yang mirip dengan integer Arduino. Perhatikan Gambar 1.5 untuk lebih jelasnya.

Gambar 1.5 Data pada datasheet MPU6050

Artinya variabel pada raw data yang disimpan perlu dideklarasikan sebagai integer. Sehingga outputnya adalah 65,5 saat gyro berputar 1 /s.

(8)

4

Gambar 1.6 Ketika kecepatan sudut gyro adalah sebesar 1 /s, maka output dari gyro adalah 65,5

Selanjutnya, jika saya memutar gyro di sekitar sumbu gyro dan menyelesaikan putaran penuh tepat dalam satu menit, output gyro setiap saat selama putaran itu adalah 393. Ini karena setiap detik gyro bergerak 6 , jadi 6 /s dikalikan 65,5 sama dengan 393. Untuk kenyamanan, saya akan konversi output gyro ke /s. Pada kode arduino, output kecepatan sudut pada gyro merupakan raw data (data mentah). Output gyro dibagi 65,5. Sudut dalam derajat selama video ini akan diubah menjadi float sehingga kami dapat menangani titik desimal. Perhatikan Gambar 1.7 untuk lebih jelasnya.

Gambar 1.7 Rumus menghitung kecepatan sudut dalam derajat per detik (°/s). Dan ketika rotasi sudut gyro adalah 500 /s, raw data output dari gyro adalah 500 x 65,5 , yang sama dengan 32750, lihat Gambar 1.8. Ini hampir merupakan nilai maksimum integer seperti yang dapat kita baca di halaman web Arduino (range integer: -32768 sampai 32767).

(9)

5

Gambar 1.8 Maksimum kecepatan sudut yang dapat diukur (jika FS_SEL = 1) [cek Gambar 1.5]

Sebelum bagian yang menyenangkan benar-benar dimulai, penting untuk diketahui bahwa gyro perlu dikalibrasi sebelum digunakan. Di sini Anda dapat melihat raw data yang diambil dari gyro. Terlepas dari kenyataan bahwa gyro tidak bergerak, hasilnya menunjukkan bahwa gyro sedang bergerak.

Gambar 1.9 Nilai raw data dari output gyro berubah-ubah meskipun gyro dalam keadaan diam

(10)

6

Untuk mendapatkan hasil terbaik, output gyro perlu di-set ke nol. Ini dilakukan hanya dengan mengambil offset rata-rata dari beberapa pembacaan sensor dan menguranginya dari raw output. Ini dilakukan dalam potongan kecil kode ini. Di sini kita akan menghitung offset rata-rata dari pembacaan gyro sebanyak 2000 data dan menyimpan nilai-nilai ini untuk digunakan nanti. Ini adalah kode yang sama seperti yang saya gunakan untuk YMFC-3D flight controller (Your Multicopter Flight Controller 3 Dimensi). Perhatikan Gambar 1.10.

Gambar 1.10 Kode Arduino untuk kalibrasi gyro pada MPU6050

Hal berikutnya yang ingin saya lakukan adalah membuat grafik dari data gyro ketika dipasang pada desk setup ini, setup ini akan mensimulasikan getaran (vibrasi) multicopter saat terbang. Ini hanyalah sebuah contoh dan nilainya mungkin berbeda untuk setiap multicopter. Saya akan memplot sudut dalam derajat per detik ( /s) terhadap 1 sumbu gyro ke serial plotter Arduino IDE. Sebelum motor berjalan dan setelah kalibrasi, output dari gyro hampir nol sepanjang waktu, lihat Gambar 1.11.

(11)

7

Saat motor berjalan, gyro akan mengeluarkan perbedaan yang lebih besar. Terlepas dari kenyataan bahwa gyro tidak bergerak. Ini disebabkan oleh getaran (vibrasi) motor dan propeller (baling-baling). Oke, kita hampir selesai. Jadi tinggallah bersamaku sebentar saja.

Gambar 1.12 Grafik output gyro saat motor berjalan, output gyro membesar disebabkan getaran motor dan propeller.

Seperti yang telah kita bahas, keluaran dari gyro dalam derajat per detik ( /s). Jadi apa yang terjadi jika saya menambahkan semua nilai output raw gyro setiap detik? Mari kita ambil contoh rotasi satu menit kita setiap saat, outputnya adalah 393, seperti yang saya jelaskan sebelumnya. Sekarang, nilai apa yang saya dapatkan jika saya menambahkan 393 setiap detik? Ini akan menjadi 23580. Tapi apa artinya ini? Nah, mari kita bagi nilai ini dengan 65,5. Memang kita mendapatkan nilai 360 . Jadi dengan menambahkan semua nilai gyro ini dari waktu ke waktu, yang disebut integrasi (integrating), dimungkinkan untuk menghitung sudut total yang telah dilalui gyro. Sekarang ini mulai menyenangkan, bukan?

Gambar 1.13 Cara gyro melakukan perhitungan sudut dari kecepatan sudut Jika saya mengambil YMFC-3D flight controller, misalnya. Misalnya, refresh rate dari gyro adalah 250 Hz atau setiap 4 ms, jadi output gyro dapat diintegrasikan setiap 4 ms, bukan setiap 1 detik. Ini juga berarti bahwa kita harus membagi raw data gyro dengan 250, dan setelah itu dibagi lagi dengan 65,5 untuk mendapatkan sudut yang dilalui.

(12)

8

Gambar 1.14 Penjelasan tentang refresh rate gyro 250 Hz.

Pada kode arduino, ini akan menjadi output raw gyro dikalikan dengan 0.0000611 ditambahkan ke sudut multicopter, di mana sudut multicopter dideklarasikan sebagai float.

Gambar 1.15 Tampilan pada kode Arduino

Mari kita periksa matematika tersebut dengan contoh rotasi satu menit. Diperlukan waktu 60 detik untuk menyelesaikan rotasi. Selama rotasi ini, data gyro ditambahkan 250 kali per detik, menghasilkan total 15000 pembacaan. Jadi 15000 x 393 x 0.0000611 = 360,1845 , yang artinya cukup mendekati untuk contoh IMU ini.

Gambar 1.16 Contoh perhitungan sudut oleh gyro untuk rotasi 1 menit.

Di sini saya memiliki program kecil yang mengintegrasikan nilai gyro pada refresh rate 250 Hz, seperti yang baru saja saya jelaskan. Layar LCD akan menampilkan sudut yang

(13)

9

diukur saat ini. Saya akan membagikan program ini di video berikutnya ketika semua potongan terakhir ditambahkan.

Gambar 1.17 Hasil pembacaan sudut gyro ditampilkan pada LCD, dengan refresh rate 250 Hz

Ngomong-ngomong, saya selalu mengacu pada Gambar 1.18 untuk menstandarkan rotasi roll, pitch dan yaw. Sebagai catatan, meningkatkan sudut pitch yang sama untuk sayap kiri ke atas dan mengetahui dengan benar sumbu roll dan sumbu yaw.

Gambar 1.18 Standar Acuan yang digunakan untuk rotasi roll, pitch dan yaw pada video ini.

Dan seperti yang Anda lihat, sudut yang diukur sangat dekat dengan nilai yang seharusnya diukur. Jika trik ini diterapkan pada akses pitch and roll multicopter, menjadi jelas bahwa kami telah membuat Inertial Measurement Unit yang sangat sederhana.

(14)

10

Gambar 1.19 Hasil pengukuran sudut oleh gyro sangat dekat dengan nilai yang sebenarnya.

Sekarang saya akan menunjukkan salah satu masalah yang perlu kita selesaikan. Jika saya menaikkan noise multicopter, sudutnya meningkat sebagaimana mestinya. Sekarang perhatikan apa yang terjadi ketika saya putar multicopter 90 searah jarum jam. Sumbu pitch aktual dari multicopter sekarang horizontal dan sudut roll meningkat karena tidak ada gerakan sudut pada arah pitch dan roll. Sudut pada tampilan tetap sama persis.

Gambar 1.20 Masalah yang perlu diselesaikan

Untuk mengatasi masalah ini, sumbu yaw perlu digabungkan dengan sumbu pitch dan roll. Jadi, saat sumbu yaw merasakan adanya rotasi, sudut roll dipindahkan ke sudut pitch dan sumbu pitch ditransfer ke sumbu roll. Tapi apa rumus matematika untuk melakukan ini? Baiklah, mari kita coba mencari tahu ini dengan cara yang mudah. Di sini saya memiliki pitch gauge digital bersudut 45 derajat yang mungkin mewakili sudut pitch multicopter. Jika pitch gauge diputar 45 derajat di sekitar sumbu yaw, yaitu setengah dari 90 derajat, sudut pitch yang terukur pitch gauge kira-kira 30 . Ini hanya 33% dari 45 , jadi transfernya tidak linier.

(15)

11

Gambar 1.21 Pengukuran sudut dengan pitch gauge untuk perbandingan

Untuk mendapatkan gambaran tentang perubahan sudut pitch versus rotasi yaw, saya membuat plot ini untuk setiap 5 gerakan yaw. Sekarang Anda mungkin mengenali bentuk ini karena ini adalah fungsi sinus.

Gambar 1.22 Gambaran tentang perubahan sudut pitch vs rotasi yaw (plot dilakukan tiap 5 gerakan yaw)

Dalam grafik ini, saya menambahkan fungsi sinus lainnya, dan seperti yang Anda lihat, keduanya hampir identik. Jadi fungsi untuk mentransfer sudut pitch dan roll adalah fungsi sinus.

(16)

12

Gambar 1.23 Grafik setelah ditambahkan fungsi sinus

Dan sederhananya, dua baris kode Arduino inilah yang akan melakukan pekerjaan selama rotasi yaw. Nilai sinus sudut pitch dikurangkan dari sudut roll, dan nilai sinus sudut roll ditambahkan ke sudut pitch. Harap dicatat bahwa fungsi sinus membutuhkan sudut dalam radian, dan itulah mengapa nilai 0.0000611 dikalikan dengan PI dibagi 180.

Gambar 1.24 Contoh kode Arduino untuk menyelesaikan masalah di atas.

Dan akhirnya kita dapat menguji IMU berbasis gyro, dan seperti yang anda lihat, ini berfungsi dengan baik untuk beberapa saat. Setelah beberapa saat, sudut akan drift (melayang) dan ini normal dan disebabkan oleh drift (penyimpangan) dari gyro. Getaran (vibrasi) yang disebabkan oleh multicopter akan mempercepat proses drift, dan masalah ini akan diselesaikan pada video berikutnya.

(17)

13

Gambar 1.25. Jika dibiarkan beberapa lama, nilai pembacaan sudut oleh gyro akan mengalami penyimpangan (drift) (misalnya, before: pitch = 0.3, after: pitch = -6.7)

(18)

14

BAB 2

PERHITUNGAN ACCELEROMETER

Dalam video sebelumnya, saya menjelaskan bagaimana memprogram Inertial Measurement Unit sederhana atau disingkat IMU hanya dengan gyro, dan itu bekerja dengan cukup baik. Saya akan memasukkan link ke video ini dalam deskripsi. Salah satu masalah yang ditemui IMU berbasis gyro adalah drift (penyimpangan) dari sudut.

Gambar 2.1 Gyro’s drift : nilai pengukuran sudut oleh gyro akan menyimpang setelah sekian lama dinyalakan

Gambar 2.2 Contoh grafik ketika gyro’s drift terjadi, nilainya menyimpang sedikit-demi sedikit setelah sekian lama dinyalakan.

Masalah lain terjadi ketika IMU dimulai pada permukaan bersudut. Ini karena IMU tidak memiliki referensi ke salah satu level.

(19)

15

Gambar 2.3 Gyro WAJIB ditempatkan di tempat yang datar ketika pertama kali dinyalakan (butuh kalibrasi awal), karena gyro tidak memliki referensi ke salah satu

level.

Dalam video ini, kedua masalah ini diselesaikan dengan penggunaan accelerometer. Hal pertama yang pertama, Mari kita mulai dengan pertanyaan utama, apa itu accelerometer? Yang terbaik adalah memvisualisasikannya dengan menggunakan model dua dimensi ini.

Gambar 2.4 Visualisasi model 2D dari accelerometer

Ya, saya tahu itu Lego, Kubus ini memegang bola di tengahnya dan bola tersebut dipasang ke sensor di setiap sisi kubus dengan tali. Gravitasi bumi mencoba untuk mempercepat (accelerate) bola yang tegak lurus dengan permukaan bumi karena bola memiliki massa dan tetap di dalam kubus ini, sebuah Gaya (force) tercipta. Gaya ini juga tegak lurus dengan permukaan bumi. Tali yang terpasang akan membuat gaya berlawanan arah untuk mencegah bola jatuh. Gaya inilah yang diukur oleh sensor di accelerometer, dan ini dilakukan untuk setiap sumbu (axis).

(20)

16

Ketika kubus tersebut diputar 45 , gaya pada tali terbagi rata, menyebabkan kedua sensor ini menghasilkan nilai yang sama. Tapi berapa nilai pasti dari sensor tersebut? Untuk menjawab pertanyaan ini, kita perlu memeriksa datasheet.

Gambar 2.5 Datasheet MPU6050 pada bagian sensitivitas accelerometer.

Selama video ini, pengaturan accelerometer akan berada pada ± 8g, seperti yang Anda lihat di sini, pada datasheet. Hasil dari pengaturan (setting) ini, output dari accelerometer adalah 4096 saat 1g diterapkan ke sensor. Percepatan rata-rata bumi adalah sekitar 9,8 ⁄ , yang sama dengan 1g. Jadi output dari accelerometer harus 4096 saat diam. Dan seperti yang Anda lihat di sini, hasilnya sekitar 4096. Saat accelerometer dibalik, percepatan berlawanan arah dan nilainya negatif. Oke, sejauh ini masuk akal. Output sensor dalam accelerometer 3D (dimensi) didasarkan pada arah gaya gravitasi bumi. Jadi dengan menggunakan nilai sensor, dimungkinkan untuk menghitung sudut MPU6050.

Gambar 2.6. Output raw data dari accelerometer

Di sini, Anda dapat melihat output sumbu Z saat MPU6050 memiliki sudut 45 . Outputnya berubah dari sekitar 4132 menjadi 2920.

(21)

17

Gambar 2.7 Output raw data dari accelerometer ketika dimiringkan pada 45 . Oke, kembali ke model 2D. Seperti yang dikatakan sebelumnya, gaya pada kedua sensor sama jika dimiringkan pada 45 , jadi kedua sensor menghasilkan 2920. Jika kita menjumlahkan vektor-vektor ini, kita dapat menghitung panjang total vektor gravitasi. Karena sensor bersudut 90 , kita dapat menggunakan teori Pythagoras. Jadi akar kuadrat dari 2920 kuadrat ditambah 2920 kuadrat menghasilkan 4129, yang merupakan nilai yang sama jika MPU6050 dalam posisi horizontal.

Gambar 2.8 Gaya yang bekerja serta panjang total vektor gravitasi ketika sensor dimiringkan 45 .

Dan sekarang kita dapat menghitung sudut antara vektor gravitasi dan salah satu sensor dengan menerapkan inverse cosine (arccos). Membagi 2920 dengan 4129 menghasilkan 0,707 dan inverse cosine (atau arccos) memberi kita sudut 45 .

(22)

18

Gambar 2.9. Contoh sederhana perhitungan sudut menggunakan accelerometer menggunakan fungsi arccos.

Jika perhitungan ini diterapkan pada sumbu pitch and roll MPU-6050, kita mendapatkan baris kode Arduino ini. Pertama, dihitung vektor gravitasi total. Setelah itu, sudut roll dan pitch dihitung pada kedua baris ini. Untuk memperjelas, fungsi asin Arduino mempunyai output radian. Dan itulah mengapa outputnya dikalikan dengan 57,296. Jadi outputnya dalam derajat.

Gambar 2.10 Kode Arduino sederhana untuk perhitungan sudut roll dan pitch menggunakan accelerometer.

Di sini saya menjalankan kode Arduino, dimana sudut roll dan pitch ditampilkan di layar LCD. Dan seperti yang Anda lihat, ini berfungsi dengan baik. Dan sama sekali tidak ada drift.

(23)

19

Gambar 2.11 Nilai roll dapat berubah ketika accelerometer dimiringkan.

Sekarang Anda mungkin bertanya-tanya mengapa tetap harus mengunakan gyro ketika Anda dapat menggunakan metode ini untuk mendapatkan sudut roll dan pitch multicopter. Nah, lihat apa yang terjadi saat saya memberikan percepatan (akselerasi) MPU-6050 ke arah yang berbeda. Nilai sudutnya menjadi naik turun dan menjadi tidak berguna sama sekali. Hal yang sama terjadi pada multicopter saat motor berputar, mereka selalu menghadirkan getaran (vibrasi) percepatan kecil yang akan membuat nilai accelerometer tidak bisa diandalkan.

Gambar 2.12 Hasil pengukuran sudut oleh accelerometer menjadi tidak berguna ketika accelerometer terdapat vibrasi di sekitar sensor.

Mari buat grafik untuk lebih memahami masalah ini. Saya akan menampilkan sudut pitch ini ke output serial dan menyalin nilai-nilai ini ke dalam lembar Excel. Dalam grafik ini, Anda dapat dengan jelas melihat lonjakan sudut yang disebabkan oleh percepatan ke berbagai arah. Jika saya memfilter data ini dengan menerapkan rolling average, Anda dapat melihat bahwa data menjadi lebih berguna. Ini sebenarnya cukup bagus dan memiliki kurang dari satu derajat variasi. Tapi lihat apa yang terjadi di sini. Saya mengubah sudut MPU-6050 pada titik ini, tetapi dengan rolling average, sudutnya berubah lama sekali, membuatnya sama sekali tidak berguna untuk levelling multicopter.

(24)

20

Gambar 2.13 Alasan kenapa accelerometer tetap membutuhkan gyro untuk menghitung sudut yang akurat.

Oke, sekarang waktunya untuk ringkasan singkat (brief summary).

 IMU yang dibuat hanya dengan gyro kurang sensitif terhadap getaran (vibrasi).  IMU yang dibuat hanya dengan gyro menghasilkan drift (nilainya menyimpang)

kecil dari waktu ke waktu.

 Getaran (vibrasi) membuat IMU yang hanya dibuat dengan accelerometer tidak berguna.

 Hanya rata-rata dari IMU yang hanya dibuat dengan accelerometer yang dapat digunakan.

Jadi pertanyaan terakhirnya adalah, bagaimana kita membuat nilai yang dapat digunakan dengan accelerometer yang dapat digunakan untuk mengkompensasi drift (penyimpangan) gyro?

Izinkan saya menambahkan grafik lain. Di kolom B, saya akan membagi sudut raw accelerometer sebesar 25. Dengan cara ini tidak ada delay dan nilainya hanya berubah sedikit. Dan saya akan menambahkan nilai-nilai ini ke grafik.

Gambar 2.14 Rata-rata pengukuran sudut oleh accelerometer selanjutnya akan digunakan untuk kompensasi gyro’s drift.

Seperti yang Anda lihat, tidak ada delay dan nilainya hanya berubah sedikit. Dan inti masalahnya adalah bahwa ini lebih dari cukup untuk mengimbangi drift (penyimpangan) dari gyro. Jadi bagaimana kita menerjemahkan ini ke dalam Arduino

(25)

21

code kita? Nah, hanya dua baris inilah yang akan melakukan pekerjaan itu. Dibutuhkan porsi yang lebih besar dari sudut gyro dan menambahkan sedikit bagian dari sudut accelerometer untuk mengimbangi/kompensasi drift dari gyro.

Gambar 2.15 Kode Arduino untuk complementary filter. Pengukuran sudut oleh accelerometer digunakan untuk kompensasi gyro’ drift.

Oke, satu-satunya masalah yang masih ada di daftar tugas kita (to do list) adalah start up procedure (prosedur ketika akan memulai pengukuran). Saat IMU dimulai dan setelah kalibrasi gyro, sudut gyro perlu di-set ke sudut accelerometer. Ini dimungkinkan karena accelerometer dalam keadaan diam. Ini dilakukan di bagian kode ini.

Gambar 2.16 Prosedur ketika akan memulai pengukuran sudut oleh gyro dan accelerometer menggunakan complementary filter.

Pada permulaan pertama, sudut gyro di-set ke sudut accelerometer. Setelah itu, tanda awal (start flag) pertama di-set ke true dan saat start flag di-set ke true, koreksi accelerometer berlangsung di bagian ini. Hal terakhir yang akan saya tunjukkan adalah kalibrasi. Letakkan waterpass MPU-6050 dan catat nilainya. Sekarang kurangi nilai-nilai ini dari sudut accelerometer seperti yang saya lakukan di sini.

Untuk sebagian besar aplikasi, ini sudah cukup. Dan itu IMU yang sangat robust (kuat) namun masih sangat sederhana yang dapat digunakan untuk auto levelling pada quadcopter Anda. Metode yang sama persis seperti yang saya gunakan selama

(26)

22

presentasi keseluruhan altitude (ketinggian) ini. Satu-satunya batasan (limitation) IMU ini adalah sudut maksimum yang dapat digunakan kira-kira 60 , jadi jangan gunakan untuk terbang 3D. Dan sekarang masalah kecil terjadi setelah terbang jauh atau jangka panjang. Akselerasi quadcopter selama manuver ini searah dengan props. Hal ini menyebabkan vektor gravitasi menjadi miring, bukan lurus ke bawah. Sudut accelerometer sedikit melenceng dan akan mengoreksi sudut gyro ke arah yang salah.

Gambar 2.17. PENTING! Beberapa masalah akan timbul ketika MPU6050 (dengan

complementary filter) digunakan untuk terbang dengan sudut lebih dari 60 , terbang

jarak jauh ataupun terbang dalam waktu yang lama.

Tetapi untuk konsep multicopter, kode ini akan berfungsi dengan baik dan memberi Anda titik awal yang baik untuk membuat sesuatu yang indah. Kode Arduino yang saya gunakan selama video ini dapat diunduh dari situs web saya. Saya memberi tautan ke halaman proyek dalam deskripsi. Sekarang silakan bagikan pemikiran Anda di komentar di bawah dan berikan video ini jempol jika Anda mempelajari sesuatu.

(27)

23

Gambar 2.18 Web Joop Brokking (brokking.net)

Alhamdulillah, selesai juga translate video ini, semoga bermanfaat untuk teman-teman yang sedang belajar tentang auto levelling menggunakan MPU-6050 

Gambar

Gambar 1.1 Multicopter setelah dipasang sensor IMU MPU-6050 untuk auto levelling  Saya akan menjelaskan cara memprogram Inerial Measurement Unit (IMU) sederhana,  yang  memungkinkan  untuk  membuat  fitur  auto  levelling  untuk  multicopter
Gambar 1.2 Web Joop Brokking (source: brokking.net)
Gambar 1.5 Data pada datasheet MPU6050
Gambar 1.6 Ketika kecepatan sudut gyro adalah sebesar 1  /s, maka output dari gyro  adalah 65,5
+7

Referensi

Dokumen terkait

Apabila kualitas air dibandingkan terhadap baku mutu air berdasarkan PP No.82 tahun 2001 yang disajikan pada Tabel 6 diperoleh bahwa kualitas air Sungai

“ Konsumen (consumer) adalah seseorang yang membeli barang Konsumen (consumer) adalah seseorang yang membeli barang atau menggunakan jasa”.. atau

Puji syukur ke hadirat Allah SWT yang telah melimpahkan rahmat, hidayah, serta inayah-Nya kepada penulis sehingga peneliti dapat menyelesaikan skripsi dengan

• Asam, lebih korosif dari pada basa (alkali). • Air berlumpur,bertanah lebih korosif air bersih. • Udara lembab lebih korosif dari udara kering. • Suhu tinggi lebih

Dari penelitian mengenai pengaruh kecepatan blower dan sekat vertikal terhadap nilai efisiensi kolektor panas tenaga surya, yang telah dilakukan pada hari Senin, 2

dengan pipa Ø 1”.. Tangki septik yang baru sebelum digunakan sebaiknya diisi dengan air cukup seember saja yang kotor berwarna hitam, sudah mengandung

Ho ditolak.Berdasarkan hal tersebut, dapat disimpulkan bahwa Yoga memberikan pengaruh yang signifikan terhadap kemampuan konsentrasi belajar siswa Sekolah Dasar

Elisabeth (Bekasi) Jl. Raya Narogong No. Raya Harapan Indah Kawasan Sentra Niaga No. Gramapuri Blok C-I No. Kelurahan Jatimakmur No. Global Awal Bros) Jl. Noer Alie Kav. Legenda