mpu6050 感測器 傾斜角度 低通濾波器(Low-Pass Filter)

閱讀時間約 4 分鐘

上篇介紹如何使用 mpu6050 感測器 加速度 感測器取得傾斜角度,這篇介紹如何使用低通滤波器(Low-Pass Filter) 來改善 傾斜角度數值。

低通濾波器的想法是去除高頻率的干擾,當mpu6050左右搖晃時,因為加速度數值改變,造成傾斜角度數值變化,但實質上傾斜角度並沒有變化,因此要使用低通滤波器(Low-Pass Filter)去除劇烈的數值改變。


pitchN=0.9*pitchOld+0.1*pitchM; (讀取的Pitch 角度=0.9 舊角度+0.1新角度)

rollN=0.9*rollOld+0.1*rollM;(讀取的Roll 角度=0.9 舊角度+0.1新角度)


程式寫法是讀取的新角度是舊角度加上量測到新角度的數值,給予舊角度0.9的權重,新角度0.1的權重,比較相信原本的數值,意味者當數值在短時間劇烈改變時,因為量測到的角度佔的權重小,因此不會造成量測角度太大的變化。


#include <basicMPU6050.h>
#include <math.h>

// Create instance
basicMPU6050<> imu;


float pitchM,rollM,pitchN,rollN;
float pitchOld=0;
float rollOld=0;

void setup() {
// Set registers - Always required
imu.setup();

// Initial calibration of gyro
imu.setBias();

// Start console
Serial.begin(38400);
}


void loop() {
// Update gyro calibration
imu.updateBias();
// Angle
pitchM=atan2(imu.ay(),imu.az())*180/3.14159;
rollM=atan2(imu.ax(),imu.az())*180/3.14159;

//low pass filter
pitchN=0.9*pitchOld+0.1*pitchM;
rollN=0.9*rollOld+0.1*rollM;

Serial.print( imu.ax() );
Serial.print( " " );
Serial.print( imu.ay() );
Serial.print( " " );
Serial.print( imu.az() );
Serial.print( " " );

//Angle
Serial.print(pitchM);
Serial.print(" ");
Serial.print(rollM);
Serial.print(" ");

Serial.print(pitchN);
Serial.print(" ");
Serial.print(rollN);
Serial.println(" ");
//assign now value to old value
pitchOld=pitchN;
rollOld=rollN;

delay(100);

}


讀取數值如下

raw-image


左右搖晃時感測器讀取的數據

raw-image


但是還是有些缺點,使用low pass filter 過濾的數值無法立即顯示目前傾斜角度,數值會漸進的爬升至22度。

raw-image


low pass filter的權重會影響數值的爬升速度,原本的權重分別為0.9 和0.1

pitchN=0.9*pitchOld+0.1*pitchM; (讀取的Pitch 角度=0.9 舊角度+0.1新角度)

將權重改成0.5和0.5時

pitchN=0.5*pitchOld+0.5*pitchM;(讀取的Pitch 角度=0.5 舊角度+0.5新角度)

會使讀取的數值爬升速度快(反應較快),但搖晃時傾斜角度的數值較易被影響。

權重改成0.5和0.5時 y軸傾斜時

權重改成0.5和0.5時 y軸傾斜時



權重0.5和0.5時 左右搖晃時

權重0.5和0.5時 左右搖晃時



若希望傾斜角度可以立即反應到數值上,就給予新角度較高的權重,若希望能降低搖晃的干擾,就給予舊角度較高的權重,使用Low-Pass Filter會面臨到反應速度和降低干擾的取捨。

這是簡單的Low-Pass Filter 應用在mpu6050感測器介紹。

2會員
21內容數
寫程式的筆記,把一些自學寫過的程式放上來
留言0
查看全部
發表第一個留言支持創作者!
程式_筆記 的其他內容
你可能也想看
電動自行車如何挑選:感測器現行的電動自行車內部至少存在3種以上不同應用的感測器,本文就針對各種不同用途的感測器種類一一介紹說明之。 一、馬達驅動感測器:使馬達正常運轉 於永磁馬達中,大多採用3顆霍爾感測器(Hall Sensor)為下圖中亮綠色的元件,其原理係利用永久磁鐵NS極性的不同,當磁場流經霍爾感測器感測後,會對應
Thumbnail
avatar
馬達技術傳承計畫
2024-03-13
自主學習計畫 - Arduino抽水馬達模組與水位感測器【創客樂園】在這18周的自主學習計畫中,將深入研究Arduino抽水馬達模組的原理,同時學習如何整合濕度感測器以實現一個基本的溼度控制系統。計畫內容包括模組原理的瞭解、安裝、Arduino的安裝、程式碼撰寫,以及最後的實測和反思。
Thumbnail
avatar
創客樂園
2024-01-31
Arduino電阻式濕度感測器【創客樂園】瞭解濕度感測器的工作原理及不同型號的溼度感測器。 濕度感測器是一種用於測量環境中相對濕度水平的裝置,它們通常被應用在氣象站、農業、溫室、室內環境監控等領域。這些感測器的工作原理基於材料的濕度敏感性,並且常見的技術包括電阻性、電容性、和共振式等。
Thumbnail
avatar
創客樂園
2024-01-29
專攻車用零組件及雷達感測器!為升(2231)新產品即將量產,營運出現曙光?投資理財內容聲明 文內如有投資理財相關經驗、知識、資訊等內容,皆為作者個人分享行為。 有價證券、指數與衍生性商品之數據資料,僅供輔助說明之用,不代表創作者投資決策之推介及建議。 閱讀同時,請審慎思考自身條件及自我決策,並應有為決策負責之事前認知。 希望您能從這些分享內容汲取投資養份,養成獨立
Thumbnail
avatar
存股計算機教練
2023-11-09
[Arduino] 使用類比水位感測器監控水位在本教學中,我們將學習如何使用Arduino和類比水位感測器來測量水位,並顯示結果。這個專案適合初學者,讓我們開始吧!
Thumbnail
avatar
Pochi
2023-10-03
11/26 wish大燈.保桿側扣.後雨刷更換新竹z版車友程安兄訂購原廠新品大燈 , 原車大燈用十幾年已霧黃化 原廠新品一對不貴 , 燈殼件賣4千多塊 大燈已霧黃會進水 舊大燈拆除 新舊大燈 , 方向燈泡一併換原廠新品 舊前保桿側扣已斷腳 , 這次一併換新 大燈安裝完成 新大燈就是舒服 後雨刷臂整理+雨刷條換新
Thumbnail
avatar
ANSON的人車誌
2022-11-26
眼睛是 靈感的探測器第二宇宙辭典《靈感》 【註 釋】 靈感就像是用來疏通馬桶的工具。有了它~我們就可以大量產出了! 【創作說明】當一個創作者遇到瓶頸沒有靈感的時候,就沒辦法完成創作,那個瓶頸就像是阻塞了的馬桶一樣。所以只要有了靈感,一切都通了。創作靈感可以來自我們的生活,只要多多關心身邊的人、事、物...
Thumbnail
avatar
piZa婆婆
2022-05-02
日本生活雜感(測試用)到日本工作半年後,被調到東京工作一年半的感想。 裡面有許多我實際生活的數字,給想來日本工作的人做參考。
avatar
John
2022-03-09
Callaway Big Bertha 21 木桿測試!這次來測試新款Callaway Big Bertha B21木桿。這是在2021下半年推出,從外型看起來是走易打,高容錯的風格。桿頭外型是御飯糰的3角形設計。這類桿頭風格就是高MOI,可以讓桿頭更快回正,桿面觸球可以比較方正。所以這類產品就是以新手、假日球友和高差點為主。
Thumbnail
avatar
chien
2022-01-11
《厭世機器人II:太空探索逃生手冊》讀後感 書名:厭世機器人II:太空探索逃生手冊(Rouge Protocol & Exit Strategy) 作者:瑪莎‧威爾斯(Martha Wells) 譯者:翁雅如
Thumbnail
avatar
灰藍
2020-11-13