MPU6050: mô-đun để định vị với Arduino

Bảng MPU6050

Nếu bạn cần tạo một dự án và định vị nó, tức là, hãy biết nó được đặt như thế nào liên quan đến không gian, bạn có thể sử dụng mô-đun MPU6050. Tức là, mô-đun này là một đơn vị đo lường quán tính hoặc IMU (Inertial Measureurment Units) với 6 bậc tự do (DoF). Đó là nhờ các cảm biến loại gia tốc kế 3 trục và con quay hồi chuyển 3 trục mà nó thực hiện để hoạt động.

MPU6050 này có thể biết đối tượng chứa được định vị như thế nào để sử dụng trong ứng dụng điều hướng, đo tuyến sinh dục, ổn định, điều khiển cử chỉ, v.v. Điện thoại di động thường bao gồm loại cảm biến này, ví dụ, điều khiển một số chức năng thông qua cử chỉ, chẳng hạn như dừng nếu điện thoại thông minh bị lật, điều khiển phương tiện trong trò chơi điện tử bằng cách xoay điện thoại di động như thể đó là vô lăng, v.v.

Gia tốc kế và con quay hồi chuyển là gì?

Ví dụ về MEMS

Ví dụ về MEMS

Vâng, chúng ta hãy đi vào các phần. Điều đầu tiên là xem những loại cảm biến này là gì có thể phát hiện gia tốc và rẽ, như có thể được suy ra từ tên riêng của họ.

  • Gia tốc kế: đo gia tốc, tức là sự thay đổi tốc độ trên một đơn vị thời gian. Hãy nhớ rằng trong vật lý, sự thay đổi của vận tốc theo thời gian (a = dV / dt) là định nghĩa của gia tốc. Theo Định luật II Newton, chúng ta cũng có a = F / m, và đó là những gì gia tốc kế sử dụng để hoạt động, tức là chúng sử dụng các tham số của lực và khối lượng của vật thể. Để điều này có thể được thực hiện trong điện tử, kỹ thuật MEMS (Micro Electro Mechanical Systems) được sử dụng, khác với các kỹ thuật sản xuất chip điện tử thông thường, vì các bộ phận cơ khí được tạo ra trong MEMS. Trong trường hợp này, các đường hoặc phần tử có khả năng đo gia tốc được tạo ra. Điều này ngụ ý rằng nhiều đơn vị khác có thể được lấy, chẳng hạn như vận tốc (nếu gia tốc được tích hợp trong thời gian), nếu nó được tích hợp lại, chúng ta có độ dịch chuyển, v.v. Có nghĩa là, các thông số rất thú vị để biết vị trí hoặc phát hiện chuyển động của một đối tượng.
  • máy con quay: còn được gọi là con quay hồi chuyển, nó là một thiết bị đo vận tốc góc của một vật, tức là độ dịch chuyển góc trên một đơn vị thời gian hoặc tốc độ quay của một vật quanh trục của nó. Trong trường hợp này, kỹ thuật MEMS cũng được sử dụng để đo tốc độ này bằng cách sử dụng một hiệu ứng được gọi là Coriolis. Nhờ đó, vận tốc góc có thể được đo hoặc, bằng cách tích phân vận tốc góc với thời gian, có thể thu được độ dịch chuyển góc.

Mô-đun MPU6050

Sơ đồ chân MPU6050

Bây giờ bạn đã biết gia tốc kế và con quay hồi chuyển là gì, mô-đun MPU6050 là một bảng điện tử tích hợp hai yếu tố này để cho phép bạn đo lường những thay đổi này trong vị trí của một yếu tố và do đó có thể tạo ra phản ứng. Ví dụ, khi một vật thể di chuyển, đèn LED sẽ sáng lên hoặc những thứ khác phức tạp hơn nhiều.

Như tôi đã nói, nó có 6 trục tự do, DoF, Gia tốc kế 3 trục X, Y và Z và con quay hồi chuyển 3 trục khác để đo vận tốc góc. Bạn phải lưu ý để không mắc sai lầm trong cách bạn đặt mô-đun và hướng quay cho các phép đo, vì nếu bạn làm sai dấu hiệu, nó sẽ hơi hỗn loạn. Nhìn vào hình ảnh sau, nơi nó chỉ định hướng của các trục (tuy nhiên, hãy lưu ý rằng bản thân PCB cũng có nó được in ở một mặt):

Biểu dữ liệu MPU6050

Xem xét điều này và sơ đồ chân, ít nhiều thì bạn đã có mọi thứ rõ ràng để bắt đầu sử dụng MPU6050. Như bạn có thể thấy trong hình trước, các kết nối khá đơn giản và nó cho phép giao tiếp I2C tương thích với hầu hết các vi điều khiển, bao gồm cả Arduino. Các chân SCL và SDA có một điện trở kéo lên trên bảng để kết nối trực tiếp với bảng Arduino, vì vậy bạn không phải lo lắng về việc tự thêm chúng.

Để làm việc với cả hai hướng trên xe buýt I2C, bạn có thể sử dụng ghim và chỉ đường:

  • AD0 = 1 hoặc Cao (5v): cho địa chỉ I0C 69x2.
  • AD0 = 0 hoặc Thấp (GND hoặc Nc): cho địa chỉ 0x68 của bus I2C.

Hãy nhớ rằng điện áp hoạt động của mô hình là 3v3, nhưng may mắn là nó có một bộ điều chỉnh tích hợp, vì vậy nó có thể được ghép nối với 5v của Arduino mà không có vấn đề gì và nó sẽ biến đổi nó thành 3.3v.

Nhân tiện, có một nội trở đối với GND, nếu chân này không được kết nối, địa chỉ theo mặc định nó sẽ là 0x68, vì nó sẽ được kết nối theo mặc định với trái đất, diễn giải nó như một số 0 logic.

Tích hợp với Arduino

Kết nối Arduino và MPU6050

Bạn có thể làm được thêm thông tin về xe buýt I2C trong bài viết này. Bạn đã biết rằng tùy thuộc vào bảng Arduino mà các chân được sử dụng cho bus khác nhau, nhưng trong Arduino UNO là chân analog A4 và A5, cho SDA (dữ liệu) và SCL (đồng hồ) tương ứng. Chúng là các chân Arduino duy nhất, cùng với chân 5v và GND để cấp nguồn cho bo mạch mà bạn nên sử dụng. Vì vậy, kết nối càng đơn giản càng tốt.

Đối với các chức năng của MPU6050, bạn có thể sử dụng các thư viện mà bạn có thể lấy thêm thông tin trong liên kết này cho I2C của mô-đun và của xe buýt MPU6050.

Lập trình bảng Arduino không quá đơn giản với MPU6050, vì vậy nó không dành cho người mới bắt đầu. Ngoài ra, khi biết giới hạn của gia tốc hoặc phạm vi của các góc, bạn có thể hiệu chỉnh để xác định chuyển động hoặc gia tốc chính xác là bao nhiêu. Tuy nhiên, để ít nhất bạn có thể có một ví dụ về cách nhận xét khi sử dụng nó, bạn có thể xem mã này từ Bản phác thảo ví dụ cho Arduino IDE của bạn sẽ đọc các giá trị được ghi lại bởi gia tốc kế và con quay hồi chuyển:

// 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);
}

Nếu bạn là người mới bắt đầu và bạn chưa hiểu rõ về cách lập trình với Arduino IDE, điều này sẽ khó hiểu đối với bạn, vì vậy bạn có thể tham khảo tài liệu hướng dẫn của chúng tôi với khóa học nhập môn lập trình Arduino miễn phí ...


Hãy là người đầu tiên nhận xét

Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.