金魁生
(國(guó)營(yíng)第七八五廠,山西太原030024)
在實(shí)際的測(cè)量過(guò)程中,被測(cè)信號(hào)中不可避免地會(huì)混入一些干擾和噪聲。為了抑制和消除這些干擾和噪聲,可以采用硬件抗干擾的方法,如屏蔽或?yàn)V波器;也可以用軟件處理的方法,即數(shù)字濾波。硬件或軟件的方法幾乎可以達(dá)到相同的功效,毫無(wú)疑問(wèn),軟件處理方法更靈活,更經(jīng)濟(jì)。
限幅濾波;算術(shù)平均值濾波;中位值濾波;低通數(shù)字濾波。下面逐一介紹。
限幅濾波又叫程序判斷濾波。濾波原理是根據(jù)經(jīng)驗(yàn)判斷兩次采樣值之間的最大偏差δA。
如果本次采樣值 An與上次有效值 An-1之差│An-An-1│≤δA,則本次采樣值有效;
如果本次采樣值 An與上次有效值 An-1之差│An-An-1│>δA,則本次采樣值無(wú)效,以上次有效值作為本次有效值。
當(dāng)δA=5時(shí)的限幅濾波效果圖,如圖1所示。
圖1 限幅濾波效果圖
由效果圖可見(jiàn),限幅濾波能有效抑制因偶然因素引起的較大的脈沖干擾,而對(duì)周期性的干擾卻無(wú)能為力。
算術(shù)平均濾波,即連續(xù)采樣N次,并對(duì)N次采樣值進(jìn)行算術(shù)平均運(yùn)算,運(yùn)算結(jié)果作為有效值。
算術(shù)平均值法對(duì)受到隨機(jī)干擾的信號(hào)很有效,但對(duì)脈沖性干擾的抑制作用較差。N值較大時(shí),信號(hào)平滑度高,但靈敏度降低。實(shí)際應(yīng)用中,為了提高速度,程序常用移位來(lái)代替除法,則N常取2的整數(shù)次冪[2]。
所謂中值濾波是對(duì)某被測(cè)參數(shù)連續(xù)N(一般N取奇數(shù))次采樣,然后對(duì)采樣值按大小排序,取中間值作為本次有效值。中值濾波對(duì)消除偶然因素引起的波動(dòng)干擾比較有效,且N愈大濾波效果愈好。對(duì)溫度、液位等變化緩慢的被測(cè)參數(shù)采用此方法能受到良好的濾波效果;但對(duì)力、速度等變化快的參數(shù)不宜采用中值濾波。N的取值視具體情況而定,一般取3或5,對(duì)于變化很慢的對(duì)象可適當(dāng)增加N值[1]。
中值濾波的實(shí)質(zhì)就是排序,排序的算法很多,常見(jiàn)的是“冒泡法”,具體算法在此不再贅述。
將描述普通硬件RC低通濾波器特性的一階滯后方程用差分方程來(lái)表示,便可以用軟件來(lái)實(shí)現(xiàn)模擬硬件濾波器的功能。RC低通濾波器的傳遞函數(shù)如公式(1)是
式中τ=RC,為濾波器的時(shí)間常數(shù)。將上式離散可得其差分方程(2)式:
式中:X(n)為本次采樣值;Y(n)為本次濾波的輸出值;Y(n-1)為上次濾波的輸出值;α=1-e-T/τ為濾波平滑系數(shù);T為采樣周期。
采樣周期T應(yīng)遠(yuǎn)小于τ,因此α遠(yuǎn)小于1。由差分方程可以看出本次濾波的輸出值Y(n)主要取決于前一次濾波后的輸出值Y(n-1),本次采樣值的影響比較小,這就模擬了具有較大慣性的低通濾波器的功能。
一階滯后濾波對(duì)周期性的干擾具有很好的抑制作用,適用于波動(dòng)頻率較高參數(shù)的濾波,但濾波后使相位滯后,響應(yīng)靈敏度降低,α的大小決定了滯后的程度。
算術(shù)平均濾波法需N次采樣后,才能經(jīng)運(yùn)算得到一個(gè)有效值,速度較慢。為了克服這個(gè)缺點(diǎn),提出了遞推平均值原理,即建一個(gè)FIFO的隊(duì)列用來(lái)存放N次采樣的數(shù)據(jù),采得的新數(shù)據(jù)放入隊(duì)尾,并丟棄最早的隊(duì)首數(shù)據(jù),然后把隊(duì)列中的N個(gè)數(shù)據(jù)進(jìn)行算術(shù)平均運(yùn)算,結(jié)果作為有效值。即每進(jìn)行一次采樣就可計(jì)算出一個(gè)平均值,大大提高了數(shù)據(jù)處理能力和速度,但算術(shù)平均濾波法的其他缺點(diǎn)仍然存在。
這種數(shù)據(jù)存放方式可以采用環(huán)形隊(duì)列結(jié)構(gòu)來(lái)實(shí)現(xiàn),設(shè)環(huán)形隊(duì)列地址40H~4FH共16個(gè)單元,用R0作隊(duì)尾指示,其流程圖如圖2所示。
算數(shù)平均濾波對(duì)抑制隨機(jī)干擾效果較好,但對(duì)脈沖干擾的抑制能力很弱,明顯的脈沖干擾會(huì)使平均值遠(yuǎn)離實(shí)際值。但中值濾波對(duì)脈沖干擾的抑制作用很強(qiáng),于是可以將兩者結(jié)合起來(lái)形成中值平均值濾波法。中值平均濾波的方法是連續(xù)采樣N次,去掉一個(gè)最大值和一個(gè)最小值;然后計(jì)算剩余的N-2個(gè)數(shù)的平均值。中值平均濾波法在許多比賽計(jì)分中常常用到。根據(jù)其原理可作出程序流程框圖如圖3。
圖2 遞推平均值濾波
圖3 中值平均濾波
還可以將中位值濾波與遞推平均值濾波結(jié)合起來(lái)形成遞推中位值平均濾波,這樣將進(jìn)一步優(yōu)化,既可消除由于偶然出現(xiàn)的脈沖干擾引起的偏差,又提高了運(yùn)算速度。
平均濾波法的主要缺點(diǎn)是,為了提高對(duì)干擾的抑制效果,必須增大平均范圍N;但增大N將會(huì)引起有用信號(hào)的失真,特別是會(huì)引起有用信號(hào)中高頻分量豐富的峰值部位的失真。為協(xié)調(diào)干擾抑制與信號(hào)失真二者之間的關(guān)系,可以采用加權(quán)的平均濾波法。
所謂加權(quán)的平均指,參加平均運(yùn)算的各采樣值按不同的比例進(jìn)行相加求平均值。加權(quán)系數(shù)一般先小后大,以突出后幾次采樣的效果,加強(qiáng)系統(tǒng)對(duì)參數(shù)變化趨勢(shì)的辨識(shí)。N項(xiàng)加權(quán)平均濾波的算法公式如(3)式:
式中C0,C1,…,CN為常數(shù),且應(yīng)滿足 C0+C1+… +CN=1。
用于某型產(chǎn)品的溫度監(jiān)測(cè)報(bào)警設(shè)備,在應(yīng)用中發(fā)現(xiàn),當(dāng)開(kāi)啟排風(fēng)扇甚至開(kāi)照明燈就會(huì)報(bào)警,提示艙內(nèi)溫度過(guò)高。經(jīng)分析發(fā)現(xiàn),照明燈和風(fēng)扇都有儲(chǔ)能元件,在開(kāi)啟這些設(shè)備時(shí),會(huì)有較大的電流,如果走線不合適,就會(huì)有很大的干擾耦合進(jìn)入報(bào)警設(shè)備,使采樣數(shù)據(jù)超過(guò)上限。遺憾的是軟件程序也沒(méi)有采取濾波算法,只要采樣到溫度超限就報(bào)警,等待人來(lái)處理。
對(duì)于已定型的該產(chǎn)品,進(jìn)行大的改動(dòng)明顯是很麻煩也是不合適的,如果數(shù)字濾波能夠滿足需要,無(wú)疑是最經(jīng)濟(jì)方便的了。
我們首先來(lái)分析干擾的特點(diǎn):
只在開(kāi)啟照明燈或排風(fēng)扇時(shí),干擾出現(xiàn)。那么這個(gè)干擾只是脈沖干擾,但還有一點(diǎn)不知道,脈寬,也就是干擾持續(xù)時(shí)間,不過(guò)可以通過(guò)計(jì)算或試驗(yàn)獲得。
再看設(shè)備的工作特點(diǎn):當(dāng)艙內(nèi)溫度過(guò)高時(shí),報(bào)警。
由此,我們就可以對(duì)程序進(jìn)行改造了。由于只關(guān)心溫度超限,那么不超限時(shí)可以不予理睬,即不用濾波;當(dāng)采樣到溫度超限時(shí),啟動(dòng)濾波程序。由于干擾是以脈沖的形式出現(xiàn),根據(jù)上面對(duì)各種濾波方法特性的分析可知,限幅濾波和中位值濾波都能滿足要求,但濾波的目的是要躲過(guò)干擾,確認(rèn)溫度超限,最好選用限幅濾波的濾波方法。運(yùn)用方法如下:
首先求幾個(gè)要用的參數(shù)
δA的確定:采樣周期T,由工程實(shí)踐可確定升溫速度v,則δA=Tv;
跳出濾波時(shí)間(即采樣次數(shù))n的確定:脈寬最大值P可由試驗(yàn)求取,并按一定的安全系數(shù)確定,n=P/T。
程序流程框圖如圖4:
圖4 溫控軟件流程圖
數(shù)字濾波在實(shí)際的應(yīng)用中,究竟用那種濾波算法及應(yīng)用時(shí)機(jī),完全決定于干擾波形的特點(diǎn)和應(yīng)用目的??傊鶕?jù)實(shí)際情況選用合適的算法,就能達(dá)到事半功倍的效果。
[1]趙茂泰.智能儀器原理及應(yīng)用[M].北京:電子工業(yè)出版社,1999.
[2]張毅剛.MCS-51單片機(jī)應(yīng)用設(shè)計(jì)[M].第2版.哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1997.