MPU6050: modul untuk pemosisian dengan Arduino

Papan MPU6050

Jika Anda perlu membuat proyek dan memposisikannya, itu, tahu bagaimana itu ditempatkan mengenai ruang, Anda dapat menggunakan modul MPU6050. Artinya, modul ini merupakan unit pengukuran inersia atau IMU (Inertial Measurment Units) dengan 6 derajat kebebasan (DoF). Itu berkat sensor tipe akselerometer 3 sumbu dan giroskop 3 sumbu yang diimplementasikan untuk bekerja.

MPU6050 ini dapat mengetahui bagaimana objek yang memuat diposisikan untuk digunakan dalam aplikasi navigasi, goniometri, stabilisasi, kontrol gerakan, dll. Ponsel biasanya menyertakan sensor jenis ini untuk, misalnya, mengontrol fungsi tertentu melalui gerakan, seperti berhenti jika ponsel dibalik, mengendarai kendaraan di video game dengan memutar ponsel seolah-olah itu adalah setir, dll.

Apa itu akselerometer dan giroskop?

Contoh MEMS

Contoh MEMS

Baiklah, mari kita pergi ke beberapa bagian. Hal pertama adalah melihat jenis sensor apa itu mampu mendeteksi percepatan dan belokan, seperti yang bisa disimpulkan dari nama mereka sendiri.

  • Akselerometer: mengukur percepatan, yaitu perubahan kecepatan per satuan waktu. Ingatlah bahwa dalam fisika, perubahan kecepatan dengan waktu (a = dV / dt) adalah definisi percepatan. Menurut Hukum Kedua Newton, kita juga memiliki a = F / m, dan akselerometer digunakan untuk bekerja, yaitu menggunakan parameter gaya dan massa benda. Agar ini dapat diimplementasikan dalam elektronik, teknik MEMS (Micro Electro Mechanical Systems) digunakan, yang berbeda dari teknik pembuatan chip elektronik konvensional, karena bagian mekanis dibuat dalam MEMS. Dalam hal ini, trek atau elemen yang mampu mengukur percepatan dibuat. Ini berarti bahwa banyak satuan lain yang dapat diambil, seperti kecepatan (jika percepatan terintegrasi dalam waktu), jika digabungkan lagi, kita memiliki perpindahan, dll. Artinya, parameter yang sangat menarik untuk mengetahui posisi atau mendeteksi pergerakan suatu objek.
  • giroskop: juga disebut giroskop, yaitu alat yang mengukur kecepatan sudut suatu benda, yaitu perpindahan sudut per satuan waktu atau seberapa cepat benda berputar mengelilingi sumbunya. Dalam hal ini, teknik MEMS juga digunakan untuk mengukur kecepatan ini dengan menggunakan efek yang dikenal sebagai Coriolis. Berkat ini, kecepatan sudut dapat diukur atau, dengan mengintegrasikan kecepatan sudut terhadap waktu, perpindahan sudut dapat diperoleh.

Modul MPU6050

MPU6050 pinout

Sekarang setelah Anda mengetahui apa itu akselerometer dan giroskop, modul MPU6050 adalah papan elektronik yang mengintegrasikan kedua elemen ini untuk memungkinkan Anda mengukur perubahan posisi elemen ini dan dengan demikian dapat menghasilkan reaksi. Misalnya, ketika suatu objek bergerak, LED menyala, atau hal-hal lain yang jauh lebih rumit.

Seperti saya katakan, ini memiliki 6 sumbu kebebasan, DoF, Akselerometer akselerasi X, Y, dan Z 3 sumbu, dan giroskop 3 sumbu lainnya untuk mengukur kecepatan sudut. Anda harus memperhitungkan untuk tidak membuat kesalahan dalam cara Anda memposisikan modul dan arah putaran pengukuran, karena jika Anda membuat tanda yang salah maka akan sedikit kacau. Lihatlah gambar berikut di mana ia menentukan arah sumbu (namun, perhatikan bahwa PCB itu sendiri juga mencetaknya di satu sisi):

Lembar Data MPU6050

Mempertimbangkan ini dan pinout tersebut, kurang lebih Anda memiliki segalanya dengan jelas untuk mulai menggunakan MPU6050. Seperti yang Anda lihat pada gambar sebelumnya, koneksinya cukup sederhana dan memungkinkan komunikasi I2C agar kompatibel dengan sebagian besar mikrokontroler, termasuk Arduino. Pin SCL dan SDA memiliki resistor pull-up di papan untuk koneksi langsung ke papan Arduino, jadi Anda tidak perlu khawatir untuk menambahkannya sendiri.

Untuk bekerja dengan kedua arah di bus I2C, Anda dapat menggunakan ini pin dan petunjuk arah:

  • AD0 = 1 atau High (5v): untuk alamat I0C 69x2.
  • AD0 = 0 atau Low (GND atau Nc): untuk alamat 0x68 dari bus I2C.

Ingat bahwa tegangan operasi model adalah 3v3, tetapi untungnya model ini memiliki pengatur bawaan, sehingga dapat dihubungkan dengan 5v Arduino tanpa masalah dan itu akan mengubahnya menjadi 3.3v.

Ngomong-ngomong, memiliki resistansi internal ke GND, jika pin ini tidak terhubung, alamatnya secara default akan menjadi 0x68, karena ini akan terhubung secara default ke bumi, menafsirkannya sebagai logika 0.

Integrasi dengan Arduino

Koneksi Arduino dan MPU6050

Anda bisa mendapatkan informasi lebih lanjut tentang bus I2C di artikel ini. Anda sudah tahu bahwa tergantung pada papan Arduino, pin yang digunakan untuk bus bervariasi, tetapi di Arduino UNO adalah pin analog A4 dan A5, untuk SDA (data) dan SCL (jam) masing-masing. Mereka adalah satu-satunya pin Arduino, bersama dengan 5v dan GND yang memberi daya pada papan, yang harus Anda gunakan. Jadi hubungannya sesederhana mungkin.

Untuk fungsi MPU6050 Anda dapat menggunakan pustaka di mana Anda dapat memperoleh informasi selengkapnya di tautan ini untuk I2C modul dan bus MPU6050.

Pemrograman papan Arduino tidak terlalu mudah dengan MPU6050, jadi ini bukan untuk pemula. Selain itu, mengetahui batas percepatan atau rentang sudut, Anda dapat mengkalibrasi untuk menentukan gerakan atau percepatan yang sebenarnya. Namun, agar Anda setidaknya dapat memiliki contoh tentang cara berkomentar tentang penggunaannya, Anda dapat melihat kode ini dari Contoh sketsa untuk Arduino IDE Anda yang akan membaca nilai yang direkam oleh akselerometer dan giroskop:

// Bibliotecas necesarias:
#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"

// Dependiendo del estado de AD0, la dirección puede ser 0x68 o 0x69, para controlar así el esclavo que leerá por el bus I2C
MPU6050 sensor;

// Valores RAW o en crudo leidos del acelerometro y giroscopio en los ejes x,y,z
int ax, ay, az;
int gx, gy, gz;

void setup() {
  Serial.begin(57600);    //Función para iniciar el puerto serie con 57600 baudios
  Wire.begin();           //Inicio para el bus I2C 
  sensor.initialize();    //Iniciando del sensor MPU6050

  if (sensor.testConnection()) Serial.println("Sensor iniciado correctamente");
  else Serial.println("Error al iniciar el sensor");
}

void loop() {
  // Leer las aceleraciones y velocidades angulares
  sensor.getAcceleration(&ax, &ay, &az);
  sensor.getRotation(&gx, &gy, &gz);

  // Muestra las lecturas que va registrando separadas por una tabulación 
  Serial.print("a[x y z] g[x y z]:\t");
  Serial.print(ax); Serial.print("\t");
  Serial.print(ay); Serial.print("\t");
  Serial.print(az); Serial.print("\t");
  Serial.print(gx); Serial.print("\t");
  Serial.print(gy); Serial.print("\t");
  Serial.println(gz);

  delay(100);
}

Jika Anda seorang pemula dan Anda tidak tahu dengan baik bagaimana memprogram dengan Arduino IDE, ini akan sulit bagi Anda untuk memahaminya, jadi Anda dapat berkonsultasi dengan manual kami dengan kursus pengantar pemrograman Arduino secara gratis ...


Jadilah yang pertama mengomentari

tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.