Kalman Filter MPU6050 Accelerometer Gyroscope

Indobot Academy

Kalman Filter MPU6050
Kalman Filter MPU6050 Accelerometer Gyroscope dengan Arduino Uno Output Grafik Serial Plotter

Teknologi balancing merupakan teknologi yang menbutuhkan keseimbangan contoh nya drone , kapal yang harus memiliki kestabilan tinggi dan smooth dalam pergerakannya. Teknologi tersebut pada umumnya menggunakan sensor IMU yang di tunning secara subjektif. Untuk menunjang efektifitas pada teknologi ini diperlukan metode filter dan regresi yang bisa fleksible.

Kalman filter merupakan recursive digital filter yang dapat mengestimasi kondisi proses apapun dengan sangat efektif. Algoritma Kalman filter merupakan sebuah filter yang efisien dan mengestimasi state pada linear dynamic system dari rentetan penggukuran noise. Kalman filter juga digunakan untuk mengontrol sistem yang sensitive terhadap noise dari lingkungan karena meminimalkan square error. Filter ini dapat mengurangi pengukuran yang terkena noise dari sensor-sensor sebelum masuk kedalam sistem kontrol.

Sederhananya  Filter adalah suatu metode yang digunakan untuk melakukan estimasi suatu nilai.

Untuk membantu agar tebakan anda lebih akurat dan mulus maka anda dapat menggunakan algoritma kalman filter.  Filter mempunyai kemampuan untuk memprediksi apa yang akan terjadi, dan melakukan analisa korelasi antara berbagai macam data yang mungkin menurut anda tidak berhubungan.

Kalman filter ideal digunakan di dalam sistem yang berubah terus menerus dalam kondisi dinamis. Keunggulan dari kalman filter adalah penggunaan memori yang ringan, karena algoritma ini tidak memerlukan penyimpanan untuk data yang lampau. Sehingga penggunaan kalman filter ideal apabila kita gunakan untuk memecahkan masalah secara live di dalam embeded system.

Kalman Filter MPU6050 Accelerometer Gyroscope

 

1. Alat / Bahan

  • Arduino IDE                                     Download
  • Library: MPU6050                            Download
  • Library: Kalman Filter                       Download
  • Arduino Uno                                   1 Buah
  • Sensor MPU6050                            1 Buah
  • Kabel Jumper                                  Secukupnya
  • Laptop/PC                                      1 Buah

Untuk mendapatkan komponen elektronik di atas silahkan temukan disini.

2. Skema Rangkaian

Gambar Rangkaian Kalman Filter MPU6050 Accelerometer Gyroscope dengan Arduino Uno Output Grafik Serial Plotter

3. Langkah Kerja

  1. Siapkan alat dan juga bahan
  2. kedua Lakukan proses wiring dengan menggunakan Gambar skematik rangkaian pada gambar
  3. ketiga Buka software Arduino IDE yang telah terinstal pada laptop/komputer
  4. Unduh semua library di atas dan masukkan libray tersebut dengan cara buka Arduino IDE pilih Sketch->Include Library->Add.Zip Library 
  5. kemudianKetikkan sketch program pada halaman Arduino IDE
  6. selanjutnya Lakukan proses uploading program
  7. terakhir Buka Serial Plotter

 

Belajar Elektronika, Arduino, dan juga IoT step by step dengan bantuan tangga belajar? Daftar sekarang dan dapatkan PROMO

4. Sketch Program

 
/*
    Kalman Filter for MPU6050. Output for processing with Serial Plotter.
    Web: https://indobot.co.id
    (created) 2021 by Zamisyak Oby Indobot Academy
    The Fastest Way to Electronics Mastery
*/

#include <Wire.h>
#include <MPU6050.h>
#include <KalmanFilter.h>

MPU6050 mpu;

KalmanFilter kalmanX(0.001, 0.003, 0.03);
KalmanFilter kalmanY(0.001, 0.003, 0.03);

float accPitch = 0;
float accRoll = 0;

float kalPitch = 0;
float kalRoll = 0;

void setup() 
{
  Serial.begin(115200);

  // Inisialisasi MPU6050
  while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))
  {
    delay(500);
  }
 
  // Kalibrasi giroskop. Saat kalibrasi sensor harus diam.
  mpu.calibrateGyro();// Jika Anda tidak ingin mengkalibrasi, beri komentar pada baris ini.

  // Membuat label pada masing-masing keluaran.
  Serial.println("accPitch,kalPitch,accRoll,kalRoll");
}

void loop()
{
  Vector acc = mpu.readNormalizeAccel();
  Vector gyr = mpu.readNormalizeGyro();

  // Menghitung Pitch & Roll dari akselerometer (derajat)
  accPitch = -(atan2(acc.XAxis, sqrt(acc.YAxis*acc.YAxis + acc.ZAxis*acc.ZAxis))*180.0)/M_PI;
  accRoll  = (atan2(acc.YAxis, acc.ZAxis)*180.0)/M_PI;

  // Kalman filter
  kalPitch = kalmanY.update(accPitch, gyr.YAxis);
  kalRoll = kalmanX.update(accRoll, gyr.XAxis);

  // Menampilkan data Pitch sebelum di Filter
  Serial.print(accPitch);
  Serial.print(",");

  // Menampilkan data Pitch setelah di Filter dengan Kalman Filter
  Serial.print(kalPitch);
  Serial.print(",");

  // Menampilkan data Roll sebelum di Filter
  Serial.print(accRoll);
  Serial.print(",");

  // Menampilkan data Roll setelah di Filter dengan Kalman Filter
  Serial.print(kalRoll);
  Serial.println();

}

5. Hasil Serial Monitor

6. Hasil Serial Plotter

Kesimpulan:

Dengan menggunakan Kalman Filter, kita dapat menghasilkan nilai keluaran MPU6050 yang lebih stabil mulus dan tidak terlalu banyak noise.

Jika anda kesulitan mengerjakan proyek Arduino silahkan hubungi Jasa Arduino.

Mau belajar elektronika dasar? Arduino? atau bahkan Internet of Things? Ikuti kursus online Indobot Academy!

Ingin Tahu Program Kami Lebih Lanjut?

Silahkan isi Formulir Dibawah Ini untuk Diskusi dengan Tim Indobot Academy.

Baca Juga

Bagikan:

4 pemikiran pada “Kalman Filter MPU6050 Accelerometer Gyroscope”

  1. Kak mau tanya bagaimana caranya membuat fungsi
    ketika kalPitch mencapai nilai sekian maka LED nyala ?

    Balas
  2. Kak, mau bertanya, bagaimana jika ingin membaca pembacaan Yaw dari sensor tersebut dengan memakai kalman filter jga?

    Balas

Tinggalkan komentar

whatsapp whatsapp