微控制器ADC取樣演算法 一階低通濾波

2021-10-04 09:50:23 字數 1270 閱讀 8957

演算法實現的公式如下:

其中y(n)為輸出,x(n)為輸入,y(n-1)為上一次輸出值,其中q為濾波係數。取值範圍為0--1.

看一下在微控制器中c**的實現

//引數:com 為取樣的原始數值

//返回值:idata 經過一階濾波後的取樣值

unsigned int lowv( unsigned int com )

//主函式

void main( void )

}

通過adc取樣輸入電壓,然後將取樣值經過一階濾波運算,通過串列埠分別列印取樣值和經過一階濾波運算後的值。

通過串列埠波形顯示軟體可以看到取樣的結果為:

當濾波係數q=0.1時,本次取樣資料佔取樣結果的10%,上一次取樣資料佔取樣結果的90%,也就是說取樣資料突變時對取樣結果影響不大,取樣的波形比較平滑。

由上面的波形也可以看出,藍色波形為原始資料波形,波動範圍比較大,橙色波形為經過一階濾波演算法後的波形,波形比較平穩。

將q值改為0.5時,看看取樣情況。

可以看到當濾波係數增大到0.5時,本次取樣資料和上次取樣資料對結果的影響分別佔50%。通過波形可以看到,經過濾波後的波形也出現了波動,但是波動範圍相對於原始波形來說小了一點。

將q值繼續增大,改為0.9時,看看取樣情況。

通過波形可以看到將取樣係數增大後,本次取樣資料對取樣結果影響佔到了90%,經過一階濾波後的波形基本和原始波形保持了同步,實時性比較好,但是穩定性會差一點。

通過不同濾波係數的對比發現:

濾波係數越小,濾波結果越平穩,但是靈敏度越低;

濾波係數越大,靈敏度越高,但是濾波結果越不穩定。

在實際應用中根據不同的需求,選擇合適的濾波係數,以滿足系統要求。

微控制器ADC取樣演算法 中位值平均濾波法

中位值平均濾波法濾波法就是通過連續取樣n個資料,然後對資料從小到大排序,然後去掉最大值和最小值,對剩餘的n 2個值計算算數平均值。也就是中位值濾波和算數平均濾波的結合。下面看c 的實現 define n 12 unsigned int filter5 void for j 0 j n 1 j for...

微控制器ADC取樣演算法 限幅平均濾波法

限幅平均濾波法相當於 限幅濾波法 遞推平均濾波法 每次取樣到的新資料先進行限幅處理,再送入佇列進行遞推平均濾波處理。下面看c 的實現 define a 200 define n 20 返回兩個整數差 unsigned int num sub unsigned int a,unsigned int b...

微控制器ADC取樣演算法 消抖濾波法

消抖濾波法的實現步驟為 設定乙個濾波計數器,將每次取樣值與當前有效值比較,如果取樣值等於當前有效值,則計數器清零。如果取樣值不等於當前有效值,則計數器 1,並判斷計數器是否 上限n 溢位 如果計數器溢位,則將本次值替換當前有效值,並清計數器。也就是只有取樣值連續變化n次之後,才將取樣值做為有效值。下...