Professional Documents
Culture Documents
Sensor
Sensor
2
Introduction
•Inertial Measurement Unit (đơn vị đo quán tính - IMU) là một cảm biến thông
dụng trong việc đo chuyển động của vật thể. IMU có thể đo được nhiều thông
số khác nhau như vận tốc, hướng, gia tốc, lực, tốc độ góc hoặc từ trường tùy
thuộc vào số lượng cảm biến trên IMU. Trên IMU có thể có các cảm biến sau:
•◮ Accelerometer: đo gia tốc chuyển động theo 3 trục XYZ.
•◮ Gyroscope: đo vận tốc xoay quanh trục XYZ.
•◮ Magnetometer: đo từ trường theo 3 trục XYZ.
• ◮ Barometer: đo áp suất không khí.
•Degree of Freedom (DOF) là bậc tự do. Ví dụ một IMU gồm cảm biến accel và
gyro thì người ta gọi là 6-DOF IMU, một IMU gồm accel + gyro + mag thì được
gọi là 9-DOF IMU,. . .
3
Introduction
• MPU6050 là một IMU với sáu bậc tự do (6 DoF), bởi vì nó bao gồm một gia
tốc kế 3 trục và một máy đo tốc độ góc 3 trục. Cảm biến này thường được sử
dụng cho việc cân bằng, điều hướng và đo góc quay.
Thông số kỹ thuật
4
Đặc điểm
• Kết hợp giá trị gia tốc 3 trục và tốc độ góc 3
trục từ MEMS
• Điện áp hoạt động: 3-5V
• Giao tiếp: Giao thức I2C
• Được tích hợp bộ chuyển đổi ADC 16 bit cho
độ chính xác cao
• Có sẵn DMP tích hợp giúp tính toán mạnh
mẽ
• Có thể sử dụng để giao tiếp với các thiết bị
I2C khác như cảm biến từ trường
• Địa chỉ I2C có thể được cấu hình
5
How Does a MEMS Accelerometer Work?
Phạm vi đo của cảm biến nằm trong dải : ±2g, ±4g, ±8g và
±16g.
Khi cảm biến đặt yên trên mặt phẳng, kết quả trả về
trục X, Y là 0(g) và trục Z là: +1 g.
6
How Does a MEMS Gyroscope Work?
7
DMP in MPU-6050
MPU6050 có một đơn vị xử lý DMP(Digital Motion Processor) riêng biệt được tích hợp,
giúp giảm tải xử lý cho vi điều khiển chính và cung cấp dữ liệu chuyển động đã được xử lý.
DMP thực hiện một số chức năng quan trọng trong MPU6050:
• 1. **Sensor Fusion (Hợp nhất cảm biến)**: DMP kết hợp dữ liệu từ cảm biến gia tốc
và máy đo tốc độ góc để tính toán một hình ảnh chính xác về chuyển động và hướng
của thiết bị hoặc vật thể. Điều này giúp giảm sai số và nhiễu trong dữ liệu, cung cấp
thông tin chuyển động ổn định hơn.
• 2. **Orientation Estimation (Ước tính hướng)**: DMP có khả năng tính toán hướng
hoặc góc quay của thiết bị trong không gian dựa trên dữ liệu từ cảm biến. Điều này
giúp xác định hướng của thiết bị hoặc đối tượng một cách chính xác.
• 3. **Motion Processing (Xử lý chuyển động)**: DMP có khả năng theo dõi và phân
tích chuyển động của thiết bị hoặc vật thể, cung cấp thông tin về vận tốc, gia tốc và
góc quay.
DMP giúp đơn giản hóa việc lấy dữ liệu và tích hợp cảm biến MPU6050 vào các ứng dụng
như điều khiển bay, robotics, thực tế ảo và nhiều ứng dụng khác đòi hỏi thông tin chuyển
động chính xác và ổn định.
8
Pinouts
• Pinouts
Pin Number Pin Name Description
9
Connect to Arduino
10
Read Raw Values
11
Understanding MPU6050 Raw Values
Độ nhạy:
•Điện áp tương tự đọc từ cảm biến điện dung được chuyển đổi thành tín
hiệu kỹ thuật số trong khoảng từ 0 đến 32750 giá trị.
•MPU6050 phân bổ các đơn vị đo của nó bằng cách tạo bốn cấp độ độ
nhạy, như được thể hiện trong slide dưới đây. Cấp độ độ nhạy mà bạn
chọn phụ thuộc vào cách bạn sử dụng IMU.
•Điều này có nghĩa 131 đơn vị đo mỗi giây mỗi độ, cung cấp một mức độ
chính xác rất cao.
12
• Set- up MPU6050
Wire.beginTransmission(MPU6050_addr);
Wire.write(0x1C);
Wire.write(0);
Wire.endTransmission(true);
13
14
Read Raw Values
Wire.beginTransmission(MPU6050_addr);
Wire.write(0x3B); // Start with register 0x3B (ACCEL_XOUT_H)
Wire.endTransmission(false);
Wire.requestFrom(MPU6050_addr,14,true); // Read 14 registers total, each axis value is stored in 2
registers
AccX=Wire.read()<<8|Wire.read();
AccY=Wire.read()<<8|Wire.read();
AccZ=Wire.read()<<8|Wire.read();
Temp=Wire.read()<<8|Wire.read();
GyroX=Wire.read()<<8|Wire.read();
GyroY=Wire.read()<<8|Wire.read();
GyroZ=Wire.read()<<8|Wire.read();
15
Read Raw Values
Wire.beginTransmission(MPU6050_addr);
Wire.write(0x3B);
Wire.endTransmission(false);
Thanh ghi 0x3B, 0x3C lưu trữ giá trị Gia tốc theo trục X,
Tương tự với Gia tốc các trục Y, Z và Gia tốc góc X, Y, Z.
16
Read Raw Values
Wire.requestFrom(MPU6050_addr,14,true);
AccX=Wire.read()<<8|Wire.read();
AccY=Wire.read()<<8|Wire.read();
AccZ=Wire.read()<<8|Wire.read();
Temp=Wire.read()<<8|Wire.read();
GyroX=Wire.read()<<8|Wire.read();
GyroY=Wire.read()<<8|Wire.read();
GyroZ=Wire.read()<<8|Wire.read();
17
Read Raw Values
Kết quả:
18
Calibrate Sensor
19
Readable Values
20
Complementary filter vs Kalman filter
21
Using the Digital Motion Processor (DMP)
22
Roll Pitch Yaw Values using DMP
23
Calibrating the Sensors
Results
24
25
26
27
28
Simulator
Using Processing
29
30
Matlab
31
32
33
34
THANK YOU !
35