Chia sẻ Đọc dữ liệu từ cảm biến MPU6050 dùng bộ lọc Kalman (code for PIC)

sky.kiz1612

Học sinh phổ thông
#21
Bác ơi, có tài liệu nào về cái Kalman filter mà bác dùng thì quăng link hộ mình cái :"> Để tài mình dùng chỉ để xác định xem xe đang đi thẳng hay chệch hướng mà đang băn khoăn không biết dùng độ chính xác cỡ nào :( để còn chọn cảm biến.
Bác tư vấn hộ với ạ :x
 

ticknick

Học sinh phổ thông
#25
Đây là một phần project môn học của mình. ^^" Và hiện mình cũng chưa hoàn thành 100% project này.
Do đó code vẫn còn đang trong quá trình chỉnh sửa.
Mong anh chị em đã xem qua sẽ đóng góp thêm nhiều ý kiến để project của mình có thể ngày càng hoàn thiện hơn. Cảm ơn anh chị em rất nhiều ^^~
Ưu điểm đạt được:
Build code, đổ chạy. Không tốn công calib.
Khi dùng thêm bộ lọc Kalman xử lý dữ liệu đọc về, thì góc xoay đọc được gần như không bị trôi. ^^

Trong quá trình tiến đến hoàn thành project. Mình rất cảm ơn sự giúp đỡ nhiệt tình của các bạn
Nguyễn Xuân Hảo
Phan Đình Huy
Vũ Trần Thành Công
và đặc biệt là thầy Trương Quốc Toàn ^^~

Code của mình biên dịch bằng PIC C Compiler ver 5.021
Link download file: MPU6050_for_PIC_Complete
Pass: ngotrankhanhdangbk

( ^^" ver 5.021 mình để lạc đâu mất rồi...
các bạn có thể dùng tạm ver 5.xxx chắc cũng uki thôi he...
5.015 Full )
bạn ơi sao mình k chạy được, báo lỗi miết thôi :(
 

dang.123456

Học sinh phổ thông
#26
Bác ơi, có tài liệu nào về cái Kalman filter mà bác dùng thì quăng link hộ mình cái :"> Để tài mình dùng chỉ để xác định xem xe đang đi thẳng hay chệch hướng mà đang băn khoăn không biết dùng độ chính xác cỡ nào :( để còn chọn cảm biến.
Bác tư vấn hộ với ạ :x
^^" bạn search google Kalmanfilter Library nó sẽ hiện cả nùi thư viện giống giống cái của mình viết thui...
 

dang.123456

Học sinh phổ thông
#27
mroscar, ticknick,.. và các bạn khác chú ý.. là mình:
+ Build code bằng CCS 5.021 nha... ^^" các bạn có thể build bằng CCS ver >=5.000 đều đc
+ Code mình test trên PIC16F877A
+ Cài đặt MPU6050 mình có ghi chú trong hàm init (trong thư viện MPU6050.c). Các bạn nên đọc kèm datasheet MPU6050 để hiểu rỏ hơn các chế độ hđ của cảm biến.
+ Điện áp cấp cho MPU6050 mua ở HCM thường là 5V. Các bạn nên hỏi kỹ chủ tiệm trước khi mua cảm biến... :D

Thanks all! ^^~
 

torikato

Học sinh phổ thông
#28
bộ loc kalman chống trôi thì bạn có thể chỉ về cách tính toán đc ko? mình đang dùng để lấy góc cho xe .
 
#29
Anh hongbme bói trúng bệnh của em rồi đó.. ^^" vì bị ép chạy gần hết công suất ( em đang tham gia thêm 2 cái project khác cũng thú vị cỡ hơn như vầy :D ).. nên tuy em đã thấy cái lỗ hổng này từ lâu rồi.. =,= nhưng mà hông có time để ngâm cứu...
Khi code trên C, C++, C#, Matlab,... ^^" khi cần tính toán chính xác em đều dùng đến ép kiểu.. test thì thấy nó chạy đúng.. còn cách thức, nguyên lý để ép kiểu dữ liệu như thế nào thì đến nay em vẫn chưa biết.. ^^"
Còn với con PIC16F877A... chuyện này em cũng không để ý lắm.. ^^" quên mất nó chỉ có 8bit... @@ vậy mà tại sao lúc lấy dữ liệu thô.. nó xuất được LCD16x2 chạy sau dấu phẩy 8 chữ số vậy anh...
^^" à.. còn nữa.. a có tài liệu nào liên quan đến ép kiểu dữ liệu, cách thức tính toán các kiểu dữ liệu khác nhau của vi điều khiển hông anh.. :) em cần nó để lấp có lỗ này lại mới được.. hôm nào xui.. sụp phải cái lỗ này là chỉ có tiêu và tiêu thui...
Bạn đã thử dùng dữ liệu kiểu factional chưa ? gần giống số thực dấu phẩy tĩnh ấy, như vậy sẽ bớt gánh nặng cho MCU. Ví dụ nhé: làm phép chia 123/96, bạn khai báo 1 số nguyên 16bit, trong đó 9 bit cao là tử số, 7 bit thấp là mẫu số, quy ước là dạng Q7, khi tính toán cộng trừ các số thì phải cùng dạng Q7 (cùng mẫu số), khi nhân chia thì cộng trừ Qx/Qy = Q(x-y), Qx*Qy = Q(x+y), đúng như kiểu phân số. Điều này cho phép tăng độ chính xác của MCU 8 bít lên cao, nhưng phức tạp cho khâu chuyển đổi thôi. :)
 

navypro1991

Học sinh trung cấp
#30
mroscar, ticknick,.. và các bạn khác chú ý.. là mình:
+ Build code bằng CCS 5.021 nha... ^^" các bạn có thể build bằng CCS ver >=5.000 đều đc
+ Code mình test trên PIC16F877A
+ Cài đặt MPU6050 mình có ghi chú trong hàm init (trong thư viện MPU6050.c). Các bạn nên đọc kèm datasheet MPU6050 để hiểu rỏ hơn các chế độ hđ của cảm biến.
+ Điện áp cấp cho MPU6050 mua ở HCM thường là 5V. Các bạn nên hỏi kỹ chủ tiệm trước khi mua cảm biến... :D

Thanks all! ^^~
mình thử build với ccs 5.015 nhưng vẫn ra một đống lỗi chủ yếu là trong hai file khai báo cho vdk và LCD
 

Quảng cáo Google