CHƯƠNG 3: NỘI DUNG NGHIÊN CỨU
3.2 Giới thiệu các module
3.2.2 Module cảm biến gia tốc MPU6050
Cảm biến MPU-6050 là dòng cảm biến chuyển động tích hợp bên trong 3 cảm biến gia tốc và 3 con quay hồi chuyển, cho phép tính toán sự chuyển động của cảm biến hoặc hệ vật được gắn cảm biến. Dữ liệu được số hóa thông qua các bộ ADCs và có thể xử lí thông qua bộ xử lí chuyển động (Digital Motion Processor) trước khi đưa vào các thanh ghi. MPU-6050 có thể được cài đặt các thông số từ vi điều khiển bên ngoài thông qua giao thức I2C hoặc SPI.
Hình 3.23: Module MPU6050 Một số đặc tính của cảm biến MPU-6050 :
Dải điện áp hoạt động : 2.3 - 3.4V Nhiệt độ hoạt động tốt nhất 25°C.
Dải nhiệt hoạt đông:-40 đến +85°C.
Chuẩn giao tiếp I2C (Fast mode và Normal mode) hoặc SPI Khả năng chịu chấn động: 10000g
Khoảng đo lường của cảm biến gia tốc: 2g-4g-8g-16g
Khoảng đo lường của con quay hồi chuyển: 250-500-1000-2000 (Degree/sec)
Hình 3.24: Sơ đồ nguyên lý của module MPU 6050 Bảng 3.3: Chức năng các chân của module MPU 6050
Chân Tên Chức năng
PIN 1 VCC Chân nguồn 3.3V
PIN 2 GND Chân Mass
PIN 3 INT Chân Interrupt PIN 4 SCL Serial Clock PIN 5 SDA Serial Data
PIN 6 DA0 Chọn địa chỉ I2C (0x68 hoặc 0x69) PIN 7 ASCL Auxilary Serial Clock
PIN 8 ASDA Auxilary Serial Data
Bảng 3.4: Các thanh ghi cơ bản thiết lập hoạt động của MPU 6050 Địa chỉ (Hex) Tên thanh ghi Chức năng
0x19 SMPLRT_DIV Thiết lập hệ số chia tính tốc độ lấy mẫu 0x1A CONFIG Cài đặt bộ lọc hạ thông, đồng bộ dữ liệu 0x1B GYRO_CONFIG Thiết lập tốc độ lấy mẫu cho con quay hồi
chuyển
0x1C ACCEL_CONFIG Thiết lập tốc độ lấy mẫu cho cảm biến gia tốc
0x6B PWR_MGMT_1 Khởi động cảm biến
0x75 WHO_I_AM Kiểm tra kết nối với cảm biến
**Thiết lập cấu hình cảm biến hoạt động:
-Thiết lập thanh ghi PWR_MGMT_1 (địa chỉ 0x6B):
Thanh ghi này cho phép người dùng cấu hình chế độ nguồn và xung clock của cảm biến. Nó cũng hỗ trợ bit Reset thiết bị hoặc khóa hoạt động của cảm biến nhiệt độ.
Hình 3.25: Cấu trúc thanh ghi PWR_MGMT_1
Bit DEVICE_RESET: khi bit này có giá trị là 1, tất cả các thanh ghi sẽ đưa về trạng thái mặc định ban đầu, bit sẽ tự động chuyển giá trị 0 khi quá trình reset kết thúc.
Bit SLEEP: Khi thiết lập bit này lên 1, cảm biến sẽ vào chế độ ngủ
Bit CYCLE: khi thiết lập bit này lên 1 và khóa chế độ SLEEP, cảm biến sẽ thay đổi liên tục giữa 2 trạng thái ngủ và thức để đọc dữ liệu.
Bit TEMP_DIS khi thiết lập bit này lên 1, cảm biến nhiệt độ sẽ bị khóa.
Bit CLKSEL: dùng để lựa chọn nguồn xung clock cho cảm biến Bảng 3.5: Nguồn xung clock cho con quay hồi chuyển
Ta sẽ ghi giá trị 0x08 vào thanh ghi PWR_MGMT_1 nhằm khóa cảm biến nhiệt độ khi module hoạt động và đưa cảm biến vào chế độ hoạt động liên tục.
Thiết lập thanh ghi CONFIG (địa chỉ 0x1A)
Thanh ghi CONFIG dùng để cấu hình chân đồng bộ khung mở rộng (external Frame Sychronization) và bộ lọc hạ thông số cho cảm biến gia tốc và con quay hồi chuyển.
Hình 3.26: Cấu trúc thanh ghi CONFIG Bit EXT_SYNC_SET: thiết lập lấy mẫu chân FSYNC theo bảng Bit DLPF_CFG: dùng để thiết lập bộ lọc hạ thông số theo bảng
CLKSEL Clock Source
0 Internal 8MHz oscillator
1 PLL with X axis gyroscope reference 2 PLL with Y axis gyroscope reference 3 PLL with Z axis gyroscope reference 4 PLL with external 32.768kHz reference 5 PLL with external 19.2MHz reference 6 Reserved
7 Stops the clock and keeps the timing generator in reset
Bảng 3.6: Bảng tham chiếu đồng bộ mở rộng
EXT_SYNC_SET FSYNC Bit Location 0 Input disabled
1 TEMP_OUT_L[0]
2 GYRO_XOUT_L[0]
3 GYRO_YOUT_L[0]
4 GYRO_ZOUT_L[0]
5 ACCEL_XOUT_L[0]
6 ACCEL_YOUT_L[0]
7 ACCEL_ZOUT_L[0]
Bảng 3.7: Trị số bộ lọc hạ thông số
DLPF_CFG Accelerometer (Fs = 1kHz)
Gyroscope
Bandwidth (Hz)
Delay (ms)
Bandwidth (Hz)
Delay (ms)
Fs (kHz)
0 260 0 256 0.98 8
1 184 2.0 188 1.9 1
2 94 3.0 98 2.8 1
3 44 4.9 42 4.8 1
4 21 8.5 20 8.3 1
5 10 13.8 10 13.4 1
6 5 19.0 5 18.6 1
7 RESERVED RESERVED 8
Sử dụng bộ lọc hạ thông 42Hz cho cảm biến gia tốc và con quay hồi chuyển Ghi giá trị 0x03 vào thanh ghi CONFIG
Thiết lập thanh ghi SMPLRT_DIV (địa chỉ 0x19):
Thanh ghi này chứa thông số cho bộ chia dùng để thiết lập tốc độ lấy mẫu dựa vào tốc độ ngõ ra của con quay hồi chuyển của MPU-6050.
Tốc độ ngõ ra của cảm biến được xác định bằng công thức sau:
Sample Rate = Gyroscope Output Rate / (1 + SMPLRT_DIV)
Hình 3.27: Cấu trúc thanh ghi SMPLRT_DIV
Để thiết lập tốc độ lấy mẫu của MPU-6050 là 100Hz thì ta cần chọn SMPLRT_DIV = 9. Vậy ghi giá trị 0x09 vào thanh ghi SMPLRT_DIV.
Thanh ghi GYRO_CONFIG:
Thanh ghi này cho phép kích hoạt quá trình tự kiểm và cấu hình khoảng đo đạc của con quay hồi chuyển.
Quá trình tự kiểm tra sẽ cho phép người dùng kiểm tra phần cơ khí cũng như phần điện của con quay hồi chuyển. Tự kiểm tra trên mỗi trục có thể được kích hoạt bằng việc điều khiển các bit XG_ST, YG_ST và ZG_ST trong thanh ghi. Quá trình tự kiểm tra của mỗi trục có thể hoạt động độc lập hoặc cùng một lúc, kết quả của tự kiểm tra được xác định như sau:
Đáp ứng quá trình tự kiểm tra = giá trị đo đạc khi tự kiểm tra được cho phép - giá trị đo đạc khi tự kiểm tra không được cho phép
Hình 3.28: Cấu trúc thanh ghi GYRO_CONFIG Bit XG_ST: khi nhận giá trị 1, cho phép tự kiểm tra trục x
Bit YG_ST: khi nhận giá trị 1, cho phép tự kiểm tra trục y Bit ZG_ST : khi nhận giá trị 1, cho phép tự kiểm tra trục z Bit FS_SEL: lựa chọn khoảng đo đạc cho con quay hồi chuyển Bảng 3.8: Các khoảng đo đạc của con quay hồi chuyển
FS_SEL Full Scale Range 0 ± 250 °/s 1 ± 500 °/s 2 ± 1000 °/s 3 ± 2000 °/s
Đối với thanh ghi này, ta không cần quá trình tự kiểm tra, chỉ cần thiết lập khoảng đo đạc cho con quay hồi chuyển là 1000 độ/sGhi giá trị 0x10 vào thanh ghi GYRO_CONFIG
Thanh ghi ACCEL_CONFIG:
Thanh ghi này cho phép kích hoạt quá trình tự kiểm và cấu hình khoảng đo đạc của cảm biến gia tốc.
Quá trình tự kiểm tra sẽ cho phép người dùng kiểm tra phần cơ khí cũng như phần điện của cảm biến gia tốc. Tự kiểm tra trên mỗi trục có thể được kích hoạt bằng việc điều khiển các bit XA_ST, YA_ST và ZA_ST trong thanh ghi. Quá trình tự kiểm tra của mỗi trục có thể hoạt động độc lập hoặc cùng một lúc, kết quả của tự kiểm tra được xác định như sau:
Đáp ứng quá trình tự kiểm tra = giá trị đo đạc khi tự kiểm tra được cho phép - giá trị đo đạc khi tự kiểm tra không được cho phép
Hình 3.29: Cấu trúc thanh ghi ACCEL_CONFIG Bit XA_ST: khi nhận giá trị 1, cho phép tự kiểm tra trục x
Bit YA_ST: khi nhận giá trị 1, cho phép tự kiểm tra trục y Bit ZA_ST : khi nhận giá trị 1, cho phép tự kiểm tra trục z Bit AFS_SEL: lựa chọn khoảng đo đạc cho cảm biến gia tốc
Bảng 3.9: Các khoảng đo đạc của gia tốc kế
AFS_SEL Full Scale Range 0 ± 2g 1 ± 4g 2 ± 8g 3 ± 16g
Đối với thanh ghi này, ta không cần quá trình tự kiểm tra, chỉ cần thiết lập khoảng đo đạc cho cảm biến gia tốc là 2 g/s.
Ghi giá trị 0x00 vào thanh ghi ACCEL_CONFIG
**Đọc giá trị từ cảm biến MPU-6050
Cảm biến sau khi đo đạc với tần số lấy mẫu đã thiết lập sẽ lưu các giá trị vào thanh ghi 8 bit. Do bộ ADC của cảm biến có 16 bit nên dữ liệu gia tốc và vận tố gốc mỗi trục sẽ được chứa trong 2 thanh ghi: 1 thanh ghi chứa dữ liệu 8 bit cao và 1 thanh ghi chứa dữ liệu 8 bit thấp. Để có được dữ liệu thì ta phải ghép các bit ở thanh ghi chứa dữ liệu mức cao và thanh ghi chứa dữ liệu mức thấp.
Bảng 3.4: Các thanh ghi chứa dữ liệu của cảm biến