Tutorial Arduino Accelerometer and gryoscope MPU6050

Tutorial Arduino mengakses module accelerometer & Gyroscope MPU6050

Module MPU6050 merupakan sensor yang berfungsi sebagai accelerometer sekaligus gyroscope yang dipackage kedalam 1 module yang kompatibel dengan Arduino.

Apa itu Accelerometer?

Merupakan sensor berfungsi untuk mengukur percepatan suatu benda atau objek yang bergerak yang bersifat dynamic maupun static.

Module MPU6050 - Accelerometer

Pengukuran dynamic merupakan pengukuran percepatan pada objek benda yang bergerak, sedangkan pengukuran static merupakan pengukuran percepatan objek terhadap gravitasi bumi.

Untuk hal ini accelerometer lebih sering digunakan untuk mengukur sudut kemiringan (tilt) dan secara dasarnya prinsip kerja dari accelerometer yaitu menggunakan prinsip percepatan (acceleration).

Contoh pada accelerometer di kehidupan sehari – hari yaitu fungsi shake control Handphone. Dimana dengan fungsi ini kita dapat mengikuti kuis – kuis yang misalnya diadakan oleh online shop seperti Shopee, dan tokopedia.

Selain itu fungsi ini dapat diaplikasikan pada music player dimana untuk mengganti lagu ke lagu selanjutnya hanya dengan menggoyakan Handphone kita.

Contoh lainnya yaitu mengubah tampilan layar dari semula vertical (portrait) menjadi horizontal (landscape) untuk melihat video youtube misalnya.


Apa itu Gyroscope MPU6050

Gyroscope merupakan sensor yang berfungsi untuk menentukan orientasi gerak dengan bertumpu pada roda yang berotasi dengan cepat pada sumbu yang berdasarkan momentum sudut.

Gryoscope

Sebelum digunakan, gyro sensor harus dilakukan kalibrasi terlebih dahulu dengan menggunakan bandul. Proses kalibrasi tersebut berfungsi untuk memperoleh nilai faktor kalibrasi.

Gyroscope memiliki keluaran berupa kecepatan sudut dari arah 3 sumbu yaitu, sumbu x yang nantinya akan menjadi sudut phi (kanan dan kiri) dari sumbu y nantinya menjadi sudut theta (atas dan bawah), dan sumbu z nantinya menjadi sudut psi (depan dan belakang).


Module MPU6050

Module Accelerometer and gryoscope

Kemampuan sensor ini dapat dikatakan akurat karena terdapat hardware yang bekerja untuk mengkonversi data analog ke digital yang memiliki resolusi 16-bit pada masing-masing chanelnya.

Sehingga modul ini mampu untuk membaca data dari chanel X, Y, dan Z secara bersamaan dalam 1 waktu.

Untuk komunikasi, sensor ini menggunakan komunikasi I2C yang artinya hanya memerlukan 2 kabel data (SDA dan SCL) serta 2 kabel power.

Spesifikasi dari module MPU6050 :

  • tentunya menggunakan chip IC MPU6050
  • Tegangan operasional di range antara 3Vdc – 5Vdc
  • Menggunakan antarmuka komunikasi I2C (SCL, SDA)
  • Range dari Gyroscope :  250 500 1000 2000 / s
  • Chip built-in 16bit AD converter, 16-bit data output
  • Difungsikan sebagai sensor accelerometer dan gyroscope
  • Ukuran modul : 2.2cm x 1.7cm

Pin Out dari Module MPU6050

Module MPU6050 Pin Out

Contoh Implementasi Module sensor ini

Module ini dapat diaplikasi pada proyek elektronika yang memerlukan fungsi akselerasi dan keseimbangan, contoh dalam kehidupan sehari – hari yaitu stabilizer atau gimbal kamera.

Gimbal kamera difungsikan untuk menyeimbangkan posisi kamera sesuai koordinat seimbang sehingga pengambilan video maupun gambar menjadi lebih stabil.

Contoh lainnya yaitu pada drone DJI PHAMTOM, terdapat module sensor accelerometer dan gryoscope yang berfungsi menjaga keseimbangan drone pada saat kondisi terbang, serta untuk mengetahui sudut kemiringan dan membantu saat manuver.

Dimana pada drone tersebut secara konsep hampir sama dengan implementasi module sensor ini.


Tutorial Sederhana mengakses module MPU6050

Modul ini tergolong “Inertia Measurement Unit” atau alat pengukur momen inersia sensor dan terdapat accelerometer 3 axis dan gyroscope 3 axis.

Bahan yang perlu dipersiapkan untuk tutorial ini antara lain :

  • Arduino Uno
  • Komputer + Software IDE Arduino
  • Modul MPU6050
  • Breadboard
  • Kabel Jumper

Skema yang perlu dirangkaikan

tutorial arduino uno mengakses module mpu6050

Sebelum melakukan pembuatan program, dapat digunakan libraries dari pihak untuk di ekstrak ke libraries Arduino sehingga memudahkan dalam pemrogramannya.

  • Libraries MPU6050 : [ddownload id=”2719″]
  • Libraries i2c LCD : [ddownload id=”1087″]

Peletakan Library pada masing – masing Operation System :

  • PC (Windows) : Program file(x86)/Arduino/ libraries
  • Mac : (home directory)/Applications/Arduino (Show Package Content)/Contents/Java/Libraries
  • Linux : (home directory)/sketchbook/libraries

Contoh program untuk menampilkan pembacaan sensor MPU6050 dengan penampil LCD

[sociallocker id=”1344″]

//www.nyebarilmu.com

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

LiquidCrystal_PCF8574 lcd(0x3F);
// dapat dicek menggunakan i2c finder

MPU6050 mpu;

byte degree[8] = {
  0b00000,
  0b00110,
  0b01111,
  0b00110,
  0b00000,
  0b00000,
  0b00000,
  0b00000
};

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

  lcd.begin(16,2);
  lcd.createChar(00, degree);
  Serial.begin(9600);
  Serial.println("Initialize MPU6050");

  while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))
  {
    Serial.println("tidak ada sensor MPU6050 yang terpasang!");
    delay(500);
  }

  //Kalibrasi gyrometer
  mpu.calibrateGyro();
  mpu.setThreshold(3);

  lcd.clear();
  lcd.print("Module MPU6050");
  lcd.setCursor(00,1);
  lcd.print("nyebarilmu");
  delay(2000);
  lcd.clear();
}

void loop()
{
  //untuk pembacaan gyrometer
  Vector rawGyro = mpu.readRawGyro();

  Serial.println("Gryometer");
  Serial.print("X : ");
  Serial.print(rawGyro.XAxis);
  Serial.print("Y : ");
  Serial.print(rawGyro.YAxis);
  Serial.print("Z : ");
  Serial.println(rawGyro.ZAxis);

  lcd.setCursor(00,00);
  lcd.print(rawGyro.XAxis);
  lcd.setCursor(5,00);
  lcd.print(rawGyro.YAxis);
  lcd.setCursor(10,00);
  lcd.print(rawGyro.ZAxis);

  //untuk pembacaan accelerometer
  Vector rawAccel = mpu.readRawAccel();

  Serial.println("Accelerometer");
  Serial.print("X : ");
  Serial.print(rawAccel.XAxis);
  Serial.print("Y : ");
  Serial.print(rawAccel.YAxis);
  Serial.print("Z : ");
  Serial.println(rawAccel.ZAxis);

  lcd.setCursor(00,1);
  lcd.print(rawAccel.XAxis);
  lcd.setCursor(5,1);
  lcd.print(rawAccel.YAxis);
  lcd.setCursor(10,1);
  lcd.print(rawAccel.ZAxis);

  float celc = mpu.readTemperature();

  Serial.println("temperature ");
  Serial.print(celc);
  Serial.println(" *C");

  lcd.print("Temperature");
  lcd.setCursor(13,1);
  lcd.print(celc);
  lcd.write((byte)00);

  delay(500);
}

[/sociallocker]

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *