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

dang.123456

Học sinh phổ thông
#1
Đâ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 ^^~
Snapshot_20140326_1.JPG
Ư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 )
 

Đính kèm

Sửa lần cuối:

hongbme

Học sinh phổ thông
#6
^^" dạ.. con PIC siêu mạnh, siêu kinh điển 16F877A đó anh :v
^^" do nó mạnh quá nên em đang cố gắng lượt code or thay thế các phép tính toán khác nhẹ hơn.. =)) chứ chỉ mỗi đọc cảm biến mà nó chạy ì ạch rồi...
8 bít, ko có FPU nên khi lưu float dạng 0.0004 thì pic nó ko thể tính dạng 0.0003x2=0.0006 đc, nên dùng con pic32 hoặc stm32
 

lon888

Học sinh phổ thông
#7
Mình đọc code và thấy bạn mới tính kalmanX, còn Y và Z thì tương tự hay sao bạn? Mình sợ là không đủ RAM quá :\
 

sun1211

Kỹ sư
#8
Thế thì thay bằng dòng PIC mới ra đi
dsPIC33E Products - Microchip Technology Inc
, và con giá 1,86$ tham khảo R&P bán 67k

dsPIC33EP32MC202 - 16-bit PIC® and dsPIC® Microcontrollers

có đủ đồ chơi,có QEI đọc encoder , DMA , cảm ứng điện dung , xung clock cpu 70 MHZ , lõi DSP 1 lệnh 1 chu kỳ máy, hổ trợ hàm PID, sin cos, PWM có 6 kênh có deadtime lập trình được, chuyên điều khiển động cơ DC, 3 pha AC , brushless DC( động cơ xe đạp điện) , các chân có thể remap , ADC tốc độ cao, hiện tại việt nam chưa bán, có gì cứ mua ở đại lý của PIChttp://store.rpc.vn/index.php?route=product/search&search=dspic33ep32mc202
 

dang.123456

Học sinh phổ thông
#10
8 bít, ko có FPU nên khi lưu float dạng 0.0004 thì pic nó ko thể tính dạng 0.0003x2=0.0006 đc, nên dùng con pic32 hoặc stm32
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...
 

Quảng cáo Google