0 引言
本文引用地址:http://www.eepw.com.cn/article/149915.htm模擬信號都必須經過A/D轉換才能被嵌入式控制器接收。但在幹擾作用於模擬信號之後,其A/D轉換結果往往會偏離真實值。因此,僅採樣一次是無法確定該結果是否可信的,而必須多次採樣,才能得到一個A/D轉換的數據系列,然後通過某種處理,才能得到一個可信度較高的結果。這種從數據系列中提取逼近真值的軟體算法,通常稱為數字濾波算法。相對於硬體濾波,數字濾波的優越性在於其無需硬體且可靠性高,尤其對頻率很高或很低的信號進行濾波。此外,由於對多輸入通道可共用一個濾波程序,故可大大降低產品成本。
1 嵌入式測控系統中常見的數字濾波算法
1.1 限幅濾波
首先根據被測對象確定相鄰兩次採樣所允許的最大差值△Y,然後在每次採樣後和上次有效採樣值進行比較,如果變化幅度不超過△Y,則本次採樣有效;否則,本次採樣值被視為幹擾而放棄,而以上次採樣值為準。其原理可用如下公式表示:
其中,yn為第n次採樣值,yn-1為第(n-1)次採樣值。
實現上述過程的參考程序(返回有效的採樣值)如下:
限幅濾波主要用於處理變化比較緩慢的數據,如溫度、溼度、液位等。該方法使用的關鍵是要選取合適的門限△Y。△Y通常可根據經驗數據獲得,必要時也可由實驗得到。
1.2中值濾波
這種濾波方式一般對目標參數連續採樣N次(N一般為奇數),然後把N次採樣值進行排序,再取中間值作為有效值。對於變化很慢的參數,也可以增加採樣次數。而對於變化較為劇烈的參數,此法不宜採用。其參考程序如下:
1.3算術平均濾波
該算法對目標參數先進行連續採樣,然後求其算術平均值作為有效採樣值。該算法適用於對具有隨機幹擾的信號進行濾波。這種信號的特點是有一個平均值。信號在某一數值附近上下波動。信號的平滑程度完全取決於採樣次數N,採樣次數越多,平滑效果越好,但系統的靈敏度也會下降。為方便求平均值,N一般取4、8、16之類的2的整數次冪,以便系統用移位法來代替除法。其參考程序如下:
1.4去極值平均濾波
算術平均濾波不能消除明顯的脈衝幹擾,而只是將其影響削弱。由於明顯幹擾會使採樣值遠離其真實值,因此可以比較容易地將其剔除,而不參加平均值計算,從而使平均濾波的輸出值更接近真實值,這就是去極值算法,又稱為防脈衝幹擾平均值濾波算法。該方法的原理是連續採樣N次,並將其累加求和,同時找出其中的最大值和最小值,再從累加和中減去最大值和最小值,再按N-2個採樣值求平均,即可獲得有效採樣值。為方便求平均值,N-2應為2、4、8、16,故N常取4、6、10、18。其參考程序如下:
linux作業系統文章專題:linux作業系統詳解(linux不再難懂)