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感測器介紹。

留言
avatar-img
留言分享你的想法!
avatar-img
程式_筆記
3會員
29內容數
寫程式的筆記,把一些自學寫過的程式和東西放上來
程式_筆記的其他內容
2025/03/12
本文介紹如何使用Open Drone map 中的WebODM開源軟體。
Thumbnail
2025/03/12
本文介紹如何使用Open Drone map 中的WebODM開源軟體。
Thumbnail
2025/03/05
本文介紹如何使用Open Drone Map,Open drone map 是一個開源無人機建模軟體,為Github上的免費開源專案,利用電腦視覺影像的技術,可以使無人機拍攝的影像轉換成正射影像,數值地形模型,3D建模,植物健康圖。 Open Done Map 有很多種使用方法,本文主要介紹如何使
Thumbnail
2025/03/05
本文介紹如何使用Open Drone Map,Open drone map 是一個開源無人機建模軟體,為Github上的免費開源專案,利用電腦視覺影像的技術,可以使無人機拍攝的影像轉換成正射影像,數值地形模型,3D建模,植物健康圖。 Open Done Map 有很多種使用方法,本文主要介紹如何使
Thumbnail
2024/12/23
本文簡單介紹如何使用SQLite。 先到官方網站下載SQLite 檔案。
Thumbnail
2024/12/23
本文簡單介紹如何使用SQLite。 先到官方網站下載SQLite 檔案。
Thumbnail
看更多
你可能也想看
Thumbnail
在科學和工程領域中,「示波器」是一種無可替代的工具。「示波器」是一種電子測量儀器,能夠將電壓變化為數位資訊,使我們能夠觀察到訊號波形。這使得示波器成為了電子工程師的重要工具,因為「示波器」可以用來分析和測試電子系統的性能。此外,示波器的功能並不僅僅限於電子領域,在其他眾多領域中,「示波器」也都有著廣
Thumbnail
在科學和工程領域中,「示波器」是一種無可替代的工具。「示波器」是一種電子測量儀器,能夠將電壓變化為數位資訊,使我們能夠觀察到訊號波形。這使得示波器成為了電子工程師的重要工具,因為「示波器」可以用來分析和測試電子系統的性能。此外,示波器的功能並不僅僅限於電子領域,在其他眾多領域中,「示波器」也都有著廣
Thumbnail
傳統馬達會利用調整電阻值的大小,來直接限制馬達輸入電流的上限;但電阻值的增加也會導致銅損值上升,是種如同雙面刃的技法。所幸隨著電控技術的進步,馬達電流的限制工作可以轉交給驅動電路掌控,馬達僅需要盡可能地降低電阻值即可;更直白的說就是漆包線徑越粗越好,暨可以降低馬達電阻,還同時強化散熱能力,以得到更優
Thumbnail
傳統馬達會利用調整電阻值的大小,來直接限制馬達輸入電流的上限;但電阻值的增加也會導致銅損值上升,是種如同雙面刃的技法。所幸隨著電控技術的進步,馬達電流的限制工作可以轉交給驅動電路掌控,馬達僅需要盡可能地降低電阻值即可;更直白的說就是漆包線徑越粗越好,暨可以降低馬達電阻,還同時強化散熱能力,以得到更優
Thumbnail
變壓器在現代電子設備中扮演著重要角色,根據應用需求可分為高頻和低頻兩種類型。 高頻變壓器注重效率和體積,使用精密繞線技術和高品質材料。低頻變壓器強調穩定性和耐用性,採用矽鋼片和精密繞組設計。
Thumbnail
變壓器在現代電子設備中扮演著重要角色,根據應用需求可分為高頻和低頻兩種類型。 高頻變壓器注重效率和體積,使用精密繞線技術和高品質材料。低頻變壓器強調穩定性和耐用性,採用矽鋼片和精密繞組設計。
Thumbnail
實際上就算直接使用專業檢試設備對馬達進行量測,仍然會受限於裝置的硬體使用範圍條件,無法完整的量測到馬達特性數據,僅有可量測範圍內的數據資料。退而求其次,針對無法直接量測的部分,可藉由數學演算的方式,將整份馬達特性曲線圖及數據表產出。 而當馬達特性是藉由演算獲得,也就代表可以簡單地透過excel就得
Thumbnail
實際上就算直接使用專業檢試設備對馬達進行量測,仍然會受限於裝置的硬體使用範圍條件,無法完整的量測到馬達特性數據,僅有可量測範圍內的數據資料。退而求其次,針對無法直接量測的部分,可藉由數學演算的方式,將整份馬達特性曲線圖及數據表產出。 而當馬達特性是藉由演算獲得,也就代表可以簡單地透過excel就得
Thumbnail
這篇介紹如何使用低通滤波器(Low-Pass Filter) 來改善 傾斜角度數值。
Thumbnail
這篇介紹如何使用低通滤波器(Low-Pass Filter) 來改善 傾斜角度數值。
Thumbnail
這篇介紹如何用加速度取得傾斜角度。 用的是和前篇一樣的<basicMpu6050.h>
Thumbnail
這篇介紹如何用加速度取得傾斜角度。 用的是和前篇一樣的<basicMpu6050.h>
Thumbnail
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
Thumbnail
直觀理解 導數:考慮的是單一變數的函數,描述的是函數在某點的斜率或變化率。 偏導數:考慮的是多變數函數,描述的是函數在某個變數變化時的變化率,其他變數保持不變。  (針對各維度的調整 或者稱變化 你要調多少) 應用 導數:在物理學中應用廣泛,例如描述速度和加速度。 偏導數:在多變量分析、優
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News