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