Cảm Biến Gia Tốc Accelerometer

Các chúng ta sử dụng điện thoại cảm ứng thông minh đã từng chơi qua phần lớn game như đua xe, nhấp lên xuống banh … Thường khi chơi những trò chơi đó các bạn phải nghiêng, xoay điện thoại đúng chứ. Vậy thì làm sao một chiếc smartphone lại biết các bạn nghiêng tuyệt xoay? Hôm nay, nội dung bài viết này sẽ giải đáp cho mình điều đó, cảm ứng gia tốc, góc nghiêng là chủ thể của bài viết hôm nay.

Bạn đang xem: Cảm biến gia tốc accelerometer

IMU cùng DOF

Đầu tiên, ta sẽ kể tới hai tư tưởng IMU và DOF. IMU (Inertial Measurement Unit) là 1 trong con chip để đo những chuyển động như trên. Một module IMU hay gồm gồm 2 một số loại cảm biến: cảm ứng gia tốc (accelerometer) và cảm biến quay (gyroscope).

Accelerometer (gọi tắt là accel): như cái tên gọi của nó, accel đơn giản và dễ dàng là một cảm biến đo vận tốc của bản thân module cùng thường sẽ có 3 trục xyz ứng cùng với 3 chiều không khí (loại 1 với 2 trục không nhiều dùng). Xem xét là accel đo cả gia tốc của trọng lực nên quý hiếm thực khi đo sẽ bao hàm cả trọng lực.Gyroscope (gọi tắt là gyro): là 1 trong loại cảm biến đo vận tốc quay của chính nó quanh một trục. Tựa như với accel, gyro cũng thường có 3 trục xyz.

Một ví dụ solo giản, khi chúng ta đặt một nhỏ chip IMU thẳng đứng như trên với để im không chuyển động, giá trị trả về đang là accel = <0.0, -9.8, 0.0> cùng gyro = <0.0, 0.0, 0.0> bởi vì chỉ có trọng lực trái đất công dụng lực với không có bất kể chuyển hễ quay làm sao cả. Xem xét rằng gyro chỉ đo tốc độ quay chứ không hề đo thẳng góc quay, nên khi bạn quay module một góc nào kia rồi dừng, quý hiếm của gyro sẽ tăng lên rồi hạ xuống về 0.

Vậy còn DOF ? Một module IMU khá đầy đủ sẽ được gọi là6-DOF(6 Degrees Of Freedom) có nghĩa là 6 trục độc lập (3 của accel cùng 3 của gyro). Mặc dù vậy nhiều lúc như thế vẫn chính là không đủ, những dự án công trình phức tạp hơn hoàn toàn như là là điều hướng máy bay hoặc robot rất có thể sẽ đề xuất đến9-DOF(thêm một cảm biến từ trường 3 trục -magnetometer- chuyển động gần tương đương một la bàn để định hướng), hoặc10-DOF(thêm một áp kế -barometer- dùng để đo độ cao) hoặc thậm chí11-DOF(thêm module GPS để xác định vị trí). Phù, không ít trục cần không? Đừng lo, đa phần các ứng dụng rất có thể làm trên nhà chỉ việc một IMU 6-DOF là đủ.

Với chip IMU này các chúng ta có thể làm được rất nhiều món vật "chơi" như:

Robot 2 bánh tự cân nặng bằngMáy bay tinh chỉnh từ xa (drone)Chuột laptop trên khôngTay nuốm chơi gameHệ thống giữ thăng bằng cho camera/máy ảnh.Các ứng dụng: đếm số bước chân, cảm biến rơi, cảm ứng rung/lắc...

*

Các vấn đề thường gặp

IMU - cũng như nhiều cảm ứng khác - rất cần được hiệu chỉnh trước lúc sử dụng nếu muôn tất cả một hiệu quả đáng tin cậy. Sau đây là những sự việc cần lưu chổ chính giữa khi áp dụng một module IMU:

Accelerometer:accel luôn luôn có offset trên từng trục làm cho giá trị đo được thường xuyên lệch đi so với thực tiễn một chút. Kế bên ra, giá trị này được theo accel hay khá nhiễu khiến cho việc phát âm trở cần khó khăn.Gyroscope:cũng như accel, gyro cũng đều có offset (hay nói một cách khác là bias) làm cho lệch những giá trị đo. Một vụ việc khác nữa có thể chạm mặt phải của gyro là drift, có nghĩa là bias nỗ lực cũng thay đổi chậm theo thời gian. Cho dù vậy, điểm cộng là gyro lại không nhiều bị nhiễu rộng accel.

Xem thêm: Túi Gel Chườm Lạnh Y Tế Giảm Chấn Thương Khi Chơi Thể Thao, Gel Chườm Nóng Lạnh Size 12X29Cm

Vậy thì làm thế nào ứng phó với những vấn đề này? cùng với offset là hằng số thì dễ dàng và đơn giản chỉ là đo lại quý hiếm đó cùng trừ vào giá trị đo. Với câu hỏi tín hiệu bị nhiễu thì rất có thể dùng một bộ lọc điện tử tần số tốt (digital low-pass filter), các chúng ta cũng có thể tham khảo library Filters trên diễn đàn Arduino (http://playground.arduino.cc/Code/Fi...). Sự việc drift của gyro thì có thể dùng cỗ lọc cao tần (digital high-pass filter) vày gyro drift khá chậm.

Một cách chuyên nghiệp hơn, nếu các bạn muốn đo một cách đúng mực góc cù thì có một số trong những thuật toán dùng để giám sát như:

Complementary filterKalman filterMahony filterMadgwick filter

Tất cả đều filter trên hiện nay đều đã làm được viết bên dưới dạng library đến Arduino buộc phải các bạn có thể update trực tiếp bởi IDE Arduino.

Cảm vươn lên là MPU6050 với thư viện

MPU-6050 là cảm ứng của thương hiệu InvenSense tích hòa hợp 6 trục cảm ứng bao gồm:

Con xoay hồi gửi 3 trục (Gyroscope).Cảm biến vận tốc 3 chiều (Accelerometer).

*

MPU6050 gồm kèm sensor fusion sẵn trên chip (gọi là DMP - Digital Motion Processor), breakout board có thể tìm thấy: GY-521 breakout board (không rõ xuất xứ, nhưng rẻ), breakout board của Sparkfun (đắt hơn kha khá). MPU6050 sử dụng giao thức I2C. Các bạn có thể đọc thêm cùng với thư viện Wire (có sẵn vào Arduino IDE)

Khi tìm hiểu về MPU-6050, các bạn sẽ gặp buộc phải thuật ngữ QUATERNION, YAW, PITCH, ROLL. Với theo mình, đó là cách giải thích dễ dàng và đơn giản và dể hiểu nhất:

Yaw, Pitch, Roll:https://kienthucbay.wordpress.com/tag/ailerons/

Thư viện MPU6050:https://fastmeloxicam.com/source/library/MPU6050.rar

Thư viện I2Cdev:https://fastmeloxicam.com/source/library/I2Cdev.rar

Chuẩn bị

Arduino UnoDây cắm testboardMPU6050

Lắp mạch

*

Lập trình (Simple code)

Code này sẽ giúp bạn đọc dữ liệu từ MPU6050 giải pháp thô và đơn giản và dễ dàng nhất.

Lập trình (TeaPOT)

Các bạn có thể tìm hiểu phần này thuộc với phần mềm Processing ở nội dung bài viết này: Processing bài bác 1: Arduino blink và hình ảnh cơ bản. TeaPOT là một trong những chương trình nhằm calibrate dùng làm hiệu chỉnh sensor. Các bạn tải processing với nạp code này vào.

CODE ARDUINO:

CODE PROCESSING:

Code hoàn toàn có thể tìm thấy trong tủ sách C:Users...DocumentsArduinolibrariesMPU6050examplesMPU6050_DMP6 bao gồm file .pde là tệp tin của processing với file .ino là của arduino.

Sau đó dồn phần "https://" trong code arduino(uncomment) cái 117 để rất có thể chạy TEAPOT nhé.

*

Còn vào Processing thì chỉnh cổng COM lại cho phù hợp với COM của arduino tại dòng 71.