MPU6050: modul untuk kedudukan dengan Arduino

Papan MPU6050

Sekiranya anda perlu membuat projek dan meletakkannya, tahu bagaimana ia diletakkan mengenai ruang, anda boleh menggunakan modul MPU6050. Maksudnya, modul ini adalah unit pengukuran inersia atau IMU (Inertial Measurment Units) dengan 6 darjah kebebasan (DoF). Itu berkat sensor jenis akselerometer 3 paksi dan giroskop 3 paksi yang digunakan untuk berfungsi.

MPU6050 ini dapat mengetahui bagaimana objek yang mengandung diposisikan untuk digunakan di aplikasi navigasi, goniometri, penstabilan, kawalan isyarat, dll. Telefon bimbit biasanya merangkumi jenis sensor ini, misalnya, mengawal fungsi tertentu melalui gerak isyarat, seperti berhenti jika telefon pintar terbalik, memandu kenderaan dalam permainan video dengan memutar telefon bimbit seolah-olah roda kemudi, dll.

Apa itu pecutan dan giroskop?

Contoh MEMS

Contoh MEMS

Baiklah, mari kita bahagian. Perkara pertama ialah melihat jenis sensor ini mampu mengesan pecutan dan putaran, seperti yang dapat disimpulkan dari nama mereka sendiri.

  • Akselerometer: mengukur percepatan, iaitu, perubahan kecepatan per unit waktu. Ingat bahawa dalam fizik, perubahan halaju dengan masa (a = dV / dt) adalah definisi pecutan. Menurut Hukum Kedua Newton, kita juga memiliki a = F / m, dan itulah yang digunakan oleh akselerometer untuk bekerja, yaitu, mereka menggunakan parameter kekuatan dan jisim objek. Sehingga ini dapat diimplementasikan dalam elektronik, teknik MEMS (Micro Electro Mechanical Systems) digunakan, yang berbeza dari teknik pembuatan cip elektronik konvensional, kerana bahagian mekanikal dibuat dalam MEMS. Dalam kes ini, trek atau elemen yang mampu mengukur pecutan dibuat. Ini menunjukkan bahawa banyak unit lain dapat diambil, seperti halaju (jika percepatan diintegrasikan dalam waktu), jika ia disatukan lagi, kita mempunyai perpindahan, dll. Maksudnya, parameter yang sangat menarik untuk mengetahui kedudukan atau mengesan pergerakan objek.
  • Gyroscope: juga disebut giroskop, itu adalah perangkat yang mengukur kecepatan sudut suatu objek, yaitu, perpindahan sudut per unit waktu atau seberapa cepat badan berputar di sekitar paksinya. Dalam kes ini, teknik MEMS juga digunakan untuk mengukur kelajuan ini menggunakan kesan yang dikenali sebagai Coriolis. Berkat ini, kecepatan sudut dapat diukur atau, dengan mengintegrasikan halaju sudut dengan masa, perpindahan sudut dapat diperoleh.

Modul MPU6050

Pinout MPU6050

Sekarang anda tahu apa itu accelerometer dan giroskop, modul MPU6050 Ia adalah papan elektronik yang menyatukan dua elemen ini untuk membolehkan anda mengukur perubahan dalam kedudukan elemen dan dengan itu dapat menghasilkan tindak balas. Contohnya, apabila objek menggerakkan LED menyala, atau perkara lain yang lebih kompleks.

Seperti yang saya katakan, ia mempunyai 6 paksi kebebasan, DoF, Accelerometer pecutan 3 paksi X, Y, dan Z, dan giroskop 3 paksi yang lain untuk mengukur halaju sudut. Anda harus mengambil kira untuk tidak membuat kesalahan dalam cara anda meletakkan modul dan arah putaran untuk pengukuran, kerana jika anda membuat tanda yang salah, ia akan menjadi sedikit kacau. Lihat gambar berikut di mana ia menentukan arah paksi (namun, perhatikan bahawa PCB itu sendiri juga mencetaknya di satu sisi):

Lembaran Data MPU6050

Memandangkan ini dan peniti, lebih kurang anda mempunyai segalanya yang jelas untuk mula menggunakan MPU6050. Seperti yang anda lihat pada gambar sebelumnya, sambungannya cukup mudah dan membolehkan komunikasi I2C serasi dengan kebanyakan pengawal mikro, termasuk Arduino. Pin SCL dan SDA mempunyai perintang penarik di papan untuk sambungan terus ke papan Arduino, jadi anda tidak perlu risau untuk menambahkannya sendiri.

Untuk menggunakan kedua-dua arah pada bas I2C, anda boleh menggunakannya pin dan arah:

  • AD0 = 1 atau Tinggi (5v): untuk alamat I0C 69x2.
  • AD0 = 0 atau Rendah (GND atau Nc): untuk alamat 0x68 bas I2C.

Ingat bahawa voltan operasi model adalah 3v3, tetapi untungnya ia mempunyai pengatur terpasang, jadi ia boleh diubah dengan Arvino 5v tanpa masalah dan ia akan mengubahnya menjadi 3.3v.

By the way, mempunyai ketahanan dalaman terhadap GND, jika pin ini tidak disambungkan, alamatnya secara lalai ia akan menjadi 0x68, kerana ia akan dihubungkan secara lalai ke bumi, menafsirkannya sebagai 0 logik.

Integrasi dengan Arduino

Sambungan Arduino dan MPU6050

Anda boleh dapatkan lebih banyak maklumat mengenai bas I2C dalam artikel ini. Anda sudah tahu bahawa bergantung pada papan Arduino, pin yang digunakan untuk bas berbeza-beza, 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-sama dengan pin 5v dan GND yang boleh digunakan. Jadi sambungannya semudah mungkin.

Untuk fungsi MPU6050, anda boleh menggunakan perpustakaan yang mana anda boleh mendapatkan lebih banyak maklumat dalam pautan ini untuk I2C modul dan bas MPU6050.

Pengaturcaraan papan Arduino tidak terlalu mudah dengan MPU6050, jadi bukan untuk pemula. Di samping itu, dengan mengetahui had pecutan atau jarak sudut, anda boleh menentukur untuk menentukan apa sebenarnya pergerakan atau pecutan yang sebenarnya. Walau bagaimanapun, agar sekurang-kurangnya anda mempunyai contoh bagaimana memberi komen tentang menggunakannya, anda dapat melihat kod ini dari Contoh lakaran untuk Arduino IDE anda yang akan membaca nilai yang dicatat oleh pecutan 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);
}

Sekiranya anda seorang pemula dan anda tidak tahu dengan baik cara program dengan Arduino IDEIni akan menjadi sukar untuk anda fahami, jadi anda boleh melihat manual kami dengan kursus pengantar pengaturcaraan Arduino secara percuma ...


Menjadi yang pertama untuk komen

Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.