CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU
2.3.4. Đọc và xử lý tín hiệu cảm biến MPU6050
Cảm biến MPU6050 có nhiều chức năng so với chip đơn. Nó bao gồm một gia tốc kế MEMS, một con quay MEMS và cảm biến nhiệt độ. Module này rất chính xác trong khi chuyển đổi giá trị tương tự sang kỹ thuật số vì nó có phần cứng chuyển đổi tương tự sang kỹ thuật số 16 bit cho mỗi kênh. Module này có khả năng thu được kênh x, y, z cùng một lúc.
Giao tiếp I2C dùng để giao tiếp với bộ điều khiển máy chủ. Module MPU6050 là một con chip nhỏ gọn có cả gia tốc kế và con quay hồi chuyển.
MPU6050 giao tiếp I2C với Arduino qua chân SDA và SCL. Đọc cái giá trị thô từ cảm biến MPU6050 thật dễ dàng, chế độ ngắt phải được tắt và sau đó các thanh ghi cho gia tốc kế và con quay hồi chuyển.
Cảm biến có chứa bộ đệm FIFO 1024 byte. Các giá trị cảm biến có thể được lập trình để đặt trong bộ đệm FIFO.
Bộ đệm FIFO được sử dụng cùng với tín hiệu ngắt. Nếu MPU6050 đặt dữ liệu vào bộ đệm FIFO, nó báo hiệu cho Arduino bằng tín hiệu ngắt Arduino biết có dữ liệu trong bộ đệm FIFO đang chờ để đọc. Cảm biến có DMP, cịn được gọi là “ Bộ xử lý chuyển động động kỹ thuật số ”. DMP có thể được lập trình với phần lập trình và có thể thực hiện các phép tính phức tạp nhanh nhóng với các giá trị cảm biến.
Giá trị gia tốc kế và con quay hồi chuyển được gọi là giá trị thơ. Nên phải loại bỏ góc bù tốc độ và con quay hồi chuyển. Bằng cách sử dụng câu lệnh:
mpu.setYAccelOffset(1593); mpu.setZAccelOffset(963); mpu.setXGyroOffset(40);
Để đo góc nghiêng của xe, cần các giá trị gia tốc dọc theo trục y và z. Hàm atan2 (y, z) cho biết góc có đơn vị là radian giữa trục z dương của mặt phẳng và điểm được cho bởi tọa độ (z, y) trên mặt phẳng đó, với dấu dương cho góc ngược chiều kim đồng hồ ( nửa mặt phẳng phải), y > 0 và dấu âm cho các góc theo chiều kim đồng hồ (nữa mặt phẳng trái, y < 0).