• Tidak ada hasil yang ditemukan

BAB IV HASIL DAN PEMBAHASAN

4.5. Sistem Perangkat Lunak

4.5.1. Program Pembacaan Sensor MPU-6050

Program pembacaan sensor MPU-6050 dijalankan dari pertama mikrokontroler pengirim (Tx) dijalankan. Program melakukan pendeteksian sudut dan kemiringan sensor MPU-6050 yang berada pada sarung tangan melalui data-data nilai accelerometer dan gyro yang kemudian di ubah menjadi tiga buah gerakan keluaran yaitu gerakan roll, pitch dan

yaw. Program arduino untuk pembacaan nilai accelerometer ditunjukkan pada Gambar 4.8.

Gambar 4.8. Program Pembacaan Accelerometer Pada Sensor MPU-6050

Data mentah dari sensor MPU-6050 terdiri dari nilai float accelerometer dan gyro yang menentukan percepatan dan juga orientasi sudut sensor MPU-6050. Berdasarkan Bab II, data untuk setiap sumbu accelerometer akan disimpan dalam register 6 buah register yang dimulai dari register 3B, 3C, 3D, 3E, 3F, hingga 40.

Data-data accelerometer yang diperoleh dari sensor MPU-6050 akan ditulis didalam 6 buah register yang dimulai dari register 3B, 3C, 3D, 3E, 3F, hingga 40. Kemudian, untuk membaca semua sumbu (X,Y,Z), dimulai dari register pertama dengan menggunakan fungsi requistForm() yang membaca ke 6 register untuk sumbu X, Y, dan Z. Kemudian data tersebut dibaca dari tiap register. Data yang diperoleh akan masuk ke variabel AccX, AccY, dan AccZ. Data dari sumbu X akan masuk ke variabel AccX, data dari sumbu Y akan masuk ke variabel AccY, dan data dari sumbu Z akan masuk ke variabel AccZ. Pembacaan nilai

accelerometer pada sensor MPU-6050 menggunakan range ±2g, karena nilai awal dari

register 0x1C adalah 0x00, maka nilai dari AFS_SEL tidak perlu diatur, sehingga range yang dipilih adalah ±2g dan nilai accelerometer dari sensor MPU-6050 harus dibagi dengan 16384 seperti yang terdapat pada Bab II untuk mendapatkan nilai sensitifitas 16384 LSB/g. Agar nilai roll, pitch dan yaw dapat dibaca, maka nilai gyro dari sensor MPU-6050 juga perlu dibaca terlebih dahulu. Program arduino untuk pembacaan nilai gyro ditunjukkan pada Gambar 4.9.

Gambar 4.9. Program Pembacaan Gyro Pada Sensor MPU-6050

Data-data gyro yang diperoleh dari sensor MPU-6050 akan ditulis didalam 6 buah register yang dimulai dari register 43, 44, 45, 46, 47, hingga 48, berdasarkan Bab II. Pembacaan data gyro sama halnya dengan pembacaan data accelerometer. Untuk membaca semua data gyro, dimulai dari register pertama dengan menggunakan fungsi requistForm() yang membaca ke 6 register dan kemudian data tersebut dibaca dari tiap register. Data yang diperoleh akan masuk ke variabel GyroX, GyroY, dan GyroZ. Data dari gyro X akan masuk ke variabel GyroX, data dari gyro Y akan masuk ke variabel GyroY, dan data dari gyro Z akan masuk ke variabel GyroZ. Pembacaan nilai gyro pada sensor MPU-6050 menggunakan

tidak perlu diatur, sehingga range yang dipilih adalah ±250g/s dan nilai gyro dari sensor MPU-6050 harus dibagi dengan 131 seperti yang terdapat pada Bab II untuk mendapatkan sensitifitas 131 LSB/º/s.

Apabila nilai dari accelerometer dan gyro telah didapatkan, maka nilai tersebut akan

diubah menjadi nilai roll, pitch, dan yaw. Nilai-nilai tersebut masing-masing mewakilkan satu gerakan, gerakan roll mewakilkan gerakan kemiringan kiri-kanan sensor MPU-6050 pada sarung tangan, gerakan pitch mewakilkan gerakan keatas-bawah (mengangguk) sensor MPU-6050 pada sarung tangan, gerakan yaw mewakilkan gerakan kiri-kanan (menggeleng) sensor MPU-6050 pada sarung tangan. Masing-masing gerakan tersebut (roll, pitch, yaw) kemudian dikonversikan menjadi gerakan 3 buah motor servo. Program arduino untuk pembacaan sensor MPU-6050 (roll, pitch, yaw) ditunjukkan pada Gambar 4.10.

Gambar 4.10. Program Pembacaan Sensor MPU-6050 (roll, pitch, yaw)

Nilai-nilai mentah yang didapatkan berupa gyroAngleX, gyroAngleY, gyroX, gyroY, gyroZ, accAngleX, dan accAngleY. Nilai-nilai ini kemudian diubah menjadi sudut

roll, pitch, dan yaw menggunakan cara seperti Gambar 4.12. Sensor MPU-6050 memiliki drift data atau pergeseran data tiap kali membaca data sensor, sehingga untuk mengurangi

kesalahan itu digunakan complementary filter untuk nilai sudut roll, dan pitch, namun

complementar filter tidak dapat digunakan pada nilai sudut yaw karena nilai accelerometer

pada sudut Z (accAngleZ) tidak dapat dibaca. Penggunaan complementar filter pada nilai

roll, dan pitch dengan cara mengalikan nilai gyroangle dengan 0,96 dan menjumlahkannya

dengan nilai accAngle yang dikalikan dengan 0,04. Penggunaan koefisien filter 0,96 dan waktu sampling 0,04 lebih baik dibandingkan menggunakan koefisien filter atau nilai alpha 0,95; 0,97; 0,98 dan 0,99 [17].

Setelah didapatkan nilai roll, pitch, dan yaw nilai tersebut kemudian dikonversikan menjadi nilai sudut servo. Gerakan roll, dan pitch dikonversi menjadi sudut 60º hingga 120º, sedangkan gerakan yaw dikonversi menjadi sudut 180º. Nilai roll, pitch, dan yaw yang

didapatkan adalah -90 pada posisi sensor MPU-6050 berada pada 0º dan 90 pada posisi sensor MPU-6050 berada pada 180º. Program konversi nilai sensor MPU-6050 menjadi nilai servo roll, pitch, dan yaw dapat dilihat pada Gambar 4.11.

Gambar 4.11. Program Konversi Nilai Sensor MPU-6050 Menjadi Nilai Servo

Nilai -90 dan 90 pada program diatas didapatkan dari nilai yang diperoleh sensor pada saat sensor berada pada sudut 0º dan 180º, pada saat sensor berada pada sudut 0º nilai yang didapatkan pada serial monitor sensor adalah -90 dan pada saat sensor berada pada sudut 180º nilai yang didapatkan pada serial monitor sensor adalah 90, sehingga nilai tersebut digunakan sebagai batas bawah dan batas atas pada konversi nilai sensor MPU-6050 dengan menjadi nilai servo. Nilai 60 dan 120 pada program roll dan pitch diatas adalah nilai batas bawah dan atas dari keluaran nilai servo nantinya, nilai tersebut disesuaikan dengan keterbatasan model pesawat yang hanya dapat bergerak dari 60º hingga 120º sehingga nilai yang digunakan sebagai batas bawah dan atas pada program pitch dan roll adalah 60 dan 120. Sedangkan untuk yaw, nilai yang digunakan sebagai batas bawah dan atas adalah 0 dan 180, nilai tersebut disesuaikan dengan gerakan yaw pada model pesawat yang dapat bergerak dari 0º hingga 180º. Nilai roll, pitch, dan yaw yang diperoleh sensor MPU-6050 dapat dilihat pada Tabel 4.8.

Tabel 4.8. Nilai Roll, Pitch & Yaw Sebelum Dikonversi Ke Nilai Servo

Posisi Sudut Sensor Nilai Roll Sensor Nilai Pitch Sensor Nilai Yaw Sensor 86,98 88,16 89,33 30º 41,81 40,41 45,38 60º 22,13 24,56 18,84 90º 0,23 0,31 0,01 120º -26,33 -25,06 -32,33 150º -59,11 -44,43 -66,56 180º -93,71 -89,98 -91,23

Program konversi nilai sudut servo dengan sudut sensor MPU-6050 mengubah nilai sensor MPU-6050 pada gerakan roll dan pitch setiap kenaikan 3 nilai sensor MPU-6050 maka sudut servo naik menjadi 1º dengan nilai awal sensor MPU-6050 adalah 0, yang berarti pada saat nilai sensor MPU-6050 adalah 0 maka nilai sudut servo adalah 90º, pada saat nilai sensor 6050 adalah 3 maka nilai sudut servo adalah 91º, pada saat nilai sensor MPU-6050 adalah 6 maka nilai sudut servo adalah 92º, dst. Dan apabila nilai sensor MPU-MPU-6050 adalah -3 maka nilai sudut servo adalah 89º, pada saat nilai sensor MPU-6050 adalah -6 maka nilai sudut servo adalah 88º, dst. Untuk gerakan yaw setiap kenaikan 1 nilai sensor MPU-6050 maka sudut servo naik menjadi 1º dengan nilai awal sensor MPU-6050 adalah 0, yang berarti pada saat nilai sensor MPU-6050 adalah 0 maka nilai sudut servo adalah 90º, pada saat nilai sensor MPU-6050 adalah 1 maka nilai sudut servo adalah 91º, pada saat nilai sensor MPU-6050 adalah 2 maka nilai sudut servo adalah 92º, dst. Dan apabila nilai sensor MPU-6050 adalah -1 maka nilai sudut servo adalah 89º, pada saat nilai sensor MPU-6050 adalah -2 maka nilai sudut servo adalah 88º, dst. Berikut adalah nilai roll, pitch, dan yaw yang didapatkan dari serial monitor sebelum nilai dikonversi ke nilai servo roll, pitch, dan

yaw.

Dokumen terkait