前言介紹:
隨著信息科技的發展,信號處理得到了大幅推動,已被廣泛應用于雷達、通信、自動化、航空航天等領域。在信號處理系統中,輸入信號通常含有各種噪聲和干擾。為對信號進行準確的測量和控制,必須削弱或濾除被測信號中的噪聲和干擾。一般在系統中可選用硬件濾波和 軟件濾波 。
硬件濾波介紹:
硬件濾波又分為無源濾波和有源濾波,無源濾波是通過 RC 濾波器或 LC 濾波器等模擬濾波器進行濾波。硬件濾波的優勢是不需要進行復雜的程序處理,反應靈敏。
軟件濾波介紹:
軟件濾波有時候也稱數字濾波是通過一定的算法削弱噪聲的影響軟件濾波的優勢是不需要硬件的投入,僅僅靠代碼就可以完成,而且可靠穩定。
10種經典的軟件濾波方法包括:
- 限幅濾波法
- 中位值濾波法
- 算術平均濾波法
- 遞推平均濾波法
- 中位值平均濾波法
- 限幅平均濾波法
- 一階滯后濾波法
- 加權遞推平均濾波法
- 消抖濾波法
- 限幅消抖濾波法
限幅濾波介紹:
限幅濾波基本思路是根據被測對象確定相鄰兩次采樣所允許的最大差值△Y, 然后在每次采樣后和上次有效采樣值進行比較, 如果變化幅度不超過△Y,則本次采樣有效;否則,則這次采樣值被視為干擾而放棄,而以上次采樣值為準。
其原理可用如下公式表示:
|yn-yn-1|≤△Y :yn 有效 如果本次值與上次值之差<=DEVIATION_MAX,則本次值有效;
|yn-yn-1|>△Y :yn-1 有效 如果本次值與上次值之差>DEVIATION_MAX,則本次值無效,放棄本次值,用上次值代替本次值。
yn 為第 n 次采樣值, yn-1 為第(n-1)次采樣值
△Y一般根據經驗來設定,確定兩次采樣允許的最大偏差值(設為DEVIATION_MAX);
C語言示例代碼:
/* DEVIATION_MAX,根據實際情況調整。value為有效值,new_value為當前采樣值;
濾波程序返回有效的實際值 */
注:本文假定從16位AD中讀取數據(若采用更高位的AD可定義數據類型為int);子程序為get_ad(),用于獲取AD采樣數值;
#define DEVIATION_MAX 10
int16_t value;
int16_t filter(void)
{
int16_t new_value;
new_value = get_ad();
if ((new_value - value > DEVIATION_MAX) || (value - new_value > DEVIATION_MAX))
{
return value;
}
else
{
return new_value;
}
}
限幅濾波優/缺點:
優點:能有效克服因偶然因素引起的脈沖干擾;缺點:無法抑制那種周期性的干擾、平滑度差;
-
濾波器
+關注
關注
161文章
7795瀏覽量
177996 -
軟件濾波
+關注
關注
0文章
8瀏覽量
8171 -
C語言
+關注
關注
180文章
7604瀏覽量
136692 -
無源濾波
+關注
關注
1文章
20瀏覽量
12747 -
硬件濾波
+關注
關注
0文章
2瀏覽量
1578
發布評論請先 登錄
相關推薦
評論