[VI ĐIỀU KHIỂN PIC] - BÀI 15: Cảm Biến 6 trục Gia Tốc Góc MPU-6050 GY-521giao tiếp I2C với PIC chơi game Asphalt 8(CCS code) - BeeLab

Sunday, April 9, 2017

[VI ĐIỀU KHIỂN PIC] - BÀI 15: Cảm Biến 6 trục Gia Tốc Góc MPU-6050 GY-521giao tiếp I2C với PIC chơi game Asphalt 8(CCS code)

1. Giới thiệu về MPU6050.

MPU-6050 là cảm biến của hãng InvenSense. MPU-6050 là một trong những giải pháp cảm biến chuyển động đầu tiên trên thế giới có tới 6 (mở rộng tới 9) trục cảm biến tích hợp trong 1 chip duy nhất.

MPU-6050 sử dụng công nghệ độc quyền MotionFusion của InvenSense có thể chạy trên các thiết bị di động, tay điều khiển… Nó được điều hành ra một nguồn cung cấp 3.3V/5V, và giao tiếp thông qua I2C với tốc độ tối đa 400kHz. Chip này cũng có sẵn trong một gói SPI được gọi là MPU6000 cho tốc độ giao tiếp lên tới 10Mbs.

Thông số chuyển động:
  • Có thể lựa chọn + -2/4 / 8 / 16g phạm vi gia tốc
  • Có thể lựa chọn + -250 / 500/1000/2000 độ /s phạm vi con quay hồi chuyển
  • 16 bit đầu ra
  • Con quay nhạy cảm của gia tốc tuyến tính 0.1 độ / s, một cải tiến lớn so với con quay hồi chuyển trục tri của các công ty khác.
  • Tiếng ồn thấp trên cả hai kết quả đầu ra, xem thông số kỹ thuật
  • Tỷ lệ sản lượng dữ liệu lên đến 1000Hz, mặc dù được xây dựng bằng kỹ thuật số thấp vượt qua bộ lọc có tần số góc tối đa là 256Hz.
  • Con quay hồi chuyển 3 trục (3-axis MEMS gyroscope)
  • Cảm biến gia tốc 3 chiều (3-axis MEMS accelerometer)
Một tính năng của chip này là bộ xử lý chuyển động kỹ thuật số trên máy bay (DMP). Trong lý thuyết này có thể được sử dụng để sản xuất trực tiếp các góc Euler, quaternions, hoặc một hướng cosin ma trận, và thậm chí thực hiện lọc cùng với việc tích hợp dữ liệu từ một la bàn I2C bên ngoài.
MPU-6050 có thể kết hợp với cảm biến từ trường (bên ngoài) để tạo thành bộ cảm biến 9 góc đầy đủ thông qua giao tiếp I2C.
Hơn nữa, MPU-6050 có sẵn bộ đệm dữ liệu 1024 byte cho phép vi điều khiển phát lệnh cho cảm biến, và nhận về dữ liệu sau khi MPU-6050 tính toán xong.

2: Chân giao tiếp MPU6050


Chân giao tiếp mpu6050
Chân giao tiếp mpu6050
VCC5V/3V3
GND0V
SCLChân SCL trong giao tiếp I2C
SDAChân SDA trong giao tiếp I2C
XDAChân dữ liệu (kết nối với cảm biến khác)
XCLChân xung (kết nối với cảm biến khác)
AD0Bit0 của địa chỉ I2C
INTChân ngắt

3: Đọc dữ liệu từ MPU6050

I2c Protocol:

Chuẩn giao tiếp I2C
Chuẩn giao tiếp I2C
Với MPU6050-GY521: MCU là master, cảm biến là slave
Địa chỉ giao tiếp: #define MPU6050_ADDRESS             0xD0
Truyền dữ liệu:

MPU6050 -GY521 i2c wite
MPU6050 -GY521 i2c wite
Code truyền:








void Mpu6050_Write(unsigned char address,unsigned char Data)   {   MPU6050_I2C_Start();                 MPU6050_I2C_Wr( MPU6050_ADDRESS );       MPU6050_I2C_Wr( address);     MPU6050_I2C_Wr( Data);         MPU6050_I2C_Stop();       }
Nhận dữ liệu:
MPU6050-Gy521-I2C Read
MPU6050-Gy521-I2C Read
Code nhận 1 byte:


MPU6050 I2C table
MPU6050 I2C table

4: Ứng dụng làm tay game điều khiển Asphalt8

Code tay cầm chơi game Asphalt