01引言
如果單純依靠模擬電路,是不可能將50Hz干擾徹底抑制掉的,所以這時候就體現(xiàn)出數(shù)字信號處理的優(yōu)越性了。
數(shù)字信號處理里面的濾波器分兩種:一種是IIR濾波器,另一種是FIR濾波器,本質(zhì)區(qū)別就是IIR濾波器的當(dāng)前輸出與以前的輸出和輸入有關(guān),F(xiàn)IR濾波器只與輸入有關(guān),看一下差分方程就一目了然了。
來看一下海寧濾波器的結(jié)構(gòu)和傳遞函數(shù),
很明顯這是一個FIR濾波器,因?yàn)檩敵鲋慌c輸入有關(guān)。而它的濾波器系數(shù)也非常好記(1/4)*[1 2 1]=[0.25 0.5 0.25],這個數(shù)值運(yùn)算量非常小,把它放到單片機(jī)里面使用也是毫無壓力的,因?yàn)?,不論?/4還是1/2都可以在程序中用移位>>運(yùn)算來實(shí)現(xiàn)。
02matlab濾波器設(shè)計
廢話少說,接下來進(jìn)入正題, 1Hz信號里面混有較強(qiáng)的50Hz和178Hz干擾,觀察圖形看一下是這樣的。
利用MATLAB的fdatool工具來設(shè)計一個能夠兼具低通和50Hz陷波功能的濾波器。
參數(shù)設(shè)置為:FIR濾波,低通,10階,通帶截止頻率4Hz,阻帶截止頻率46Hz,采樣率400Hz,生成的幅度響應(yīng)曲線中虛線是未進(jìn)行量化后的曲線,可以發(fā)現(xiàn),阻帶的衰減幅度最小也有25db,50Hz的衰減頻率則達(dá)到了70db,
觀察下濾波器的參數(shù)
未量化的浮點(diǎn)數(shù)據(jù)還是比較長的,但是效果是最好的,量化后的數(shù)據(jù)會比較短,具體長度是我們自己設(shè)置的,量化的目的是降低運(yùn)算量,但是以犧牲濾波效果為代價的,我們先把數(shù)據(jù)導(dǎo)出來進(jìn)行驗(yàn)證。
在matlab里面進(jìn)行驗(yàn)證,代碼如下
Ts=0.0025;%采樣率400hz
len=500; >> n=0:len-1;
%3種頻率的信號混合
x=0.1*sin(2*pi*1*n*Ts)+sin(2*pi*50*n*Ts)+0.5*sin(2*pi*178*n*Ts);
CO=[0.04675 0.05845 0.084 0.1068 0.1225 0.1282 0.1225 0.1068 0.084 0.05845 0.04675];
W=[0 0 0 0 0 0 0 0 0 0 0];
for i = 1:len
W(1) = x(i);
y(i) = W(1)*CO(1)+W(2)*CO(2)+W(3)*CO(3)+W(4)*CO(4)+W(5)*CO(5)+W(6)*CO(6)+W(7)*CO(7)+W(8)*CO(8)+W(9)*CO(9)+W(10)*CO(10)+W(11)*CO(11);
W(11)=W(10);
W(10)=W(9);
W(9)=W(8);
W(8)=W(7);
W(7)=W(6);
W(6)=W(5);
W(5)=W(4);
W(4)=W(3);
W(3)=W(2);
W(2)=W(1);
end
subplot(211);
plot(x);
subplot(212);
plot(y)
axis([0 500, -1.5, 1.5]);
結(jié)果如下圖:
由于1Hz的信號幅值較低,所以所以看起來會有點(diǎn)小,但是50Hz和178Hz已經(jīng)消失不見了,但是這個濾波器存在一個問題,就是階數(shù)有點(diǎn)高--10階,然后浮點(diǎn)運(yùn)算太多了,在單片機(jī)上運(yùn)行是個負(fù)擔(dān),所以還得改進(jìn)一下。
0350Hz精準(zhǔn)陷波
這次只定點(diǎn)濾除50Hz信號,實(shí)際上通過上面的操作大家應(yīng)該清楚了,不同的濾波器不過是在調(diào)整濾波器的系數(shù)而已,那么我們不妨直接來通過修改系數(shù)的方式設(shè)計濾波器,matlab也提供了這樣的功能,見下圖:
這里面的系數(shù)B=[ 0.125 0.53 -0.75 0.53 0.125];是我反復(fù)調(diào)整得到的,未量化時是精準(zhǔn)的50Hz陷波,量化后會有偏移,如果單片機(jī)運(yùn)算能力尚可的話,就不要量化了,因?yàn)楸旧磉@里浮點(diǎn)的數(shù)據(jù)并不長,不多說了,代碼與上面沒有太大差異,故省略,直接看效果吧。
04結(jié)語
實(shí)際上階數(shù)還可以繼續(xù)降低,比如這篇文獻(xiàn)里面設(shè)計的陷波器就只有4階,他的采樣率是200Hz。
可以發(fā)現(xiàn),數(shù)字濾波不過是各種乘加運(yùn)算,只不過系數(shù)不同,濾波的效果和功能也不同。
至于IIR濾波器,實(shí)際上設(shè)計的方法與上面相差也不大,matlab的代碼也與C語言極為相似,如何轉(zhuǎn)化,也不再贅述了。
-
模擬電路
+關(guān)注
關(guān)注
125文章
1591瀏覽量
103915 -
濾波器
+關(guān)注
關(guān)注
162文章
8137瀏覽量
182036 -
FIR
+關(guān)注
關(guān)注
4文章
151瀏覽量
34259 -
干擾
+關(guān)注
關(guān)注
0文章
214瀏覽量
27750 -
數(shù)字信號
+關(guān)注
關(guān)注
2文章
997瀏覽量
48360
發(fā)布評論請先 登錄
評論