前面我們基本把有感FOC介紹得差不多了,接下來(lái)我本打算進(jìn)入無(wú)感FOC控制的深入學(xué)習(xí),奈何導(dǎo)師項(xiàng)目項(xiàng)目太多太雜........................先把自己這段時(shí)間學(xué)的東西總結(jié)分享一下再說(shuō)吧。查閱了很多無(wú)感FOC控制的相關(guān)資料,把基本原理和流程漸漸的了解了一下(以后有時(shí)間再詳細(xì)介紹了),發(fā)現(xiàn)很多環(huán)節(jié)都會(huì)用到”一階低通數(shù)字濾波器“(相電流濾波,反電勢(shì)濾波,角度、轉(zhuǎn)速濾波,校正因子濾波),雖然代碼里面只是一個(gè)簡(jiǎn)單的公式,但為了控制系統(tǒng)的參數(shù)設(shè)計(jì),我還是淺淺的去探究了一下其基本原理,如有錯(cuò)誤還望提出指正。
開(kāi)局先直接給出公式:

式中:x(k)為當(dāng)前輸入,y(k-1)為上一次的輸出,y(k)為當(dāng)前計(jì)算的輸出;a為濾波系數(shù),取值范圍0~1,a取值越小,當(dāng)前輸入權(quán)重就越小,輸出波形越平滑,但響應(yīng)靈敏度降低;
如果只是套用公式寫代碼的話,看到這里就可以結(jié)束了,想要理解其中的原理,以及采樣頻率、截止頻率和參數(shù)的計(jì)算,那么請(qǐng)接著往下看。
01. 原理及公式推導(dǎo)
”一階低通數(shù)字濾波器“對(duì)應(yīng)的物理電路模型是”一階RC低通濾波電路“,電路如下圖所示。

電容的阻抗表示為1/jωC,對(duì)于上面電路,有輸入輸出電壓關(guān)系:

上式寫成傳遞函數(shù)形式:
,
在《自動(dòng)控制原理》中稱為一階慣性環(huán)節(jié)。
由Y(s)=G(s).F(s)得到時(shí)域的微分方程:

使用一階后向差分法,對(duì)上面微分方程進(jìn)行離散化,有:

其中T為采樣周期,對(duì)上式進(jìn)行整理化簡(jiǎn)可寫成:

令
得到一般表達(dá)式:
,a稱為濾波系數(shù)。
02. 截止頻率和參數(shù)計(jì)算
對(duì)于電路模型,有截止頻率
(截止頻率定義為幅頻響應(yīng)曲線衰減 -3db,即為原來(lái)的1/sqrt(2)時(shí)的頻率,模電里面的基礎(chǔ)知識(shí)這里不細(xì)講)
可得是將常數(shù)
代入濾波系數(shù)a的表達(dá)式得:

式中f=1/T為采樣頻率。
在實(shí)際的應(yīng)用中,一般有采樣頻率遠(yuǎn)大于截止頻率,即有
,故近似有
,所以已知截止頻率和采樣頻率,我么就能夠計(jì)算濾波系數(shù)a的值了。
又會(huì)問(wèn):截止頻率和采樣頻率怎么確定呢?選取不同的值會(huì)對(duì)計(jì)算輸出有什么影響呢?下面為你簡(jiǎn)單介紹一下。
03. 頻率的選擇
3.1采樣頻率的選擇
一般人為主觀選擇,在不影響其他功能性能的條件下,盡量越大越好。
先以我之前做的電機(jī)控制為例。在程序中,PWM定時(shí)器開(kāi)啟中斷,在中斷服務(wù)函數(shù)中用ADC采集相電流,故采樣頻率就等于PWM定時(shí)器頻率,我在控制代碼中用的是20kHz,即采樣頻率f=20kHz。
3.2截止頻率的選擇
根據(jù)采樣對(duì)象信號(hào)的頻率選擇,一般稍大于被采樣信號(hào)的最大基波頻率就好。
還是以我做的電機(jī)控制為例。我用的永磁同步電機(jī)額定轉(zhuǎn)速為3000rpm,極對(duì)數(shù)為4,采樣對(duì)象為相電流。則在額定條件下,相電流的頻率為f_current=3000*4/60=200Hz,考慮到電機(jī)超負(fù)荷運(yùn)行,瞬時(shí)轉(zhuǎn)速可以大于3000,保留一定余量,我取截止頻率f_H=500Hz。如此計(jì)算得濾波系數(shù)
。
在電機(jī)運(yùn)行前,對(duì)放大器進(jìn)行校準(zhǔn)時(shí),只考慮直流偏置輸入,即被采樣的信號(hào)頻率趨近于0Hz,主要濾掉電路中的高頻干擾和噪聲,故可把截止頻率取得很小,我這里取f_H=5Hz,計(jì)算得濾波系數(shù)a=0.00157。
04頻率選擇對(duì)輸出的影響(附仿真分析)
在采樣頻率固定的情況下,截止頻率越大,濾波系數(shù)a的值越大,當(dāng)前輸入的權(quán)重就越大,計(jì)算的輸出和實(shí)際的輸出跟蹤效果更好,即動(dòng)態(tài)響應(yīng)更好,幅值衰減的影響更小。
減小截止頻率,濾波系數(shù)a的值越小,當(dāng)前輸入的權(quán)重越小,故計(jì)算的輸出信號(hào)更平滑,對(duì)噪聲干擾和諧波的濾除效果更好,但是動(dòng)態(tài)響應(yīng)變差,而且會(huì)產(chǎn)生一定程度的幅值衰減。
下面是matlab代碼和仿真結(jié)果分析:
仿真結(jié)果:

圖中,綠色為含有噪聲的采樣信號(hào),藍(lán)色為標(biāo)準(zhǔn)的正弦信號(hào),紅色為采樣信號(hào)經(jīng)過(guò)一階低通濾波器的計(jì)算輸出。
可以發(fā)現(xiàn),當(dāng)截止頻率較小時(shí),輸出信號(hào)幅值衰減明顯,且存在一定滯后;隨著截止頻率的增大,對(duì)標(biāo)準(zhǔn)正弦信號(hào)的跟蹤效果越好;當(dāng)截止頻率過(guò)大時(shí),幾乎能完全復(fù)現(xiàn)采樣信號(hào),但是對(duì)噪聲的濾波效果變差。
下面再看一下對(duì)直流信號(hào)的測(cè)試

可以看出,隨著截止頻率的減小,計(jì)算輸出的信號(hào)越來(lái)越平滑,接近直流信號(hào),但同時(shí)調(diào)節(jié)時(shí)間也增大,對(duì)應(yīng)我前面電機(jī)控制中,對(duì)放大器的校準(zhǔn)時(shí)間需要延長(zhǎng)。在實(shí)際應(yīng)用中,對(duì)于直流信號(hào)的濾波,截止頻率一般取1~50Hz我覺(jué)得就好了(當(dāng)然也有可能其它情況我沒(méi)想到)。
最后附上matlab的仿真源代碼
代碼源程序:
交流信號(hào)部分:
f_basic=200;%原信號(hào)頻率為200Hzw_basic=2*pi*f_basic;f_H=1;%截止頻率500Hzf_simple=20000;%采樣頻率20kHzPointNumber = 100000;%坐標(biāo)點(diǎn)數(shù)量x=0PointNumber-1;Standard =2+sin(w_basic*x*0.0000005);%原始標(biāo)準(zhǔn)信號(hào)noise = 0+0.1*randn(1,PointNumber);AddNoise=Standard+noise;a=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1x_now=AddNoise(i+1);y_now=(1-a)*y_last+a*x_now;output(i+1)=y_now;y_last=y_now;endfigure(1);X=0PointNumber-1;plot(X,AddNoise,'-.g');hold on;plot(X,Standard,'-..b');hold on;plot(X,output,'-..r');hold on;legend('With noise','Standard','Output')xlabel('time');ylabel('value');title('一階低通濾波器(fH=1Hz)');f_basic=200;%原信號(hào)頻率為200Hzw_basic=2*pi*f_basic;f_H=5;%截止頻率500Hzf_simple=20000;%采樣頻率20kHzPointNumber = 100000;%坐標(biāo)點(diǎn)數(shù)量x=0PointNumber-1;Standard =2+sin(w_basic*x*0.0000005);%原始標(biāo)準(zhǔn)信號(hào)noise = 0+0.1*randn(1,PointNumber);AddNoise=Standard+noise;a=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1x_now=AddNoise(i+1);y_now=(1-a)*y_last+a*x_now;output(i+1)=y_now;y_last=y_now;endfigure(2);X=0PointNumber-1;plot(X,AddNoise,'-.g');hold on;plot(X,Standard,'-..b');hold on;plot(X,output,'-..r');hold on;legend('With noise','Standard','Output')xlabel('time');ylabel('value');title('一階低通濾波器(fH=5Hz)');f_basic=200;%原信號(hào)頻率為200Hzw_basic=2*pi*f_basic;f_H=50;%截止頻率500Hzf_simple=20000;%采樣頻率20kHzPointNumber = 100000;%坐標(biāo)點(diǎn)數(shù)量x=0PointNumber-1;Standard =2+sin(w_basic*x*0.0000005);%原始標(biāo)準(zhǔn)信號(hào)noise = 0+0.1*randn(1,PointNumber);AddNoise=Standard+noise;a=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1x_now=AddNoise(i+1);y_now=(1-a)*y_last+a*x_now;output(i+1)=y_now;y_last=y_now;endfigure(3);X=0PointNumber-1;plot(X,AddNoise,'-.g');hold on;plot(X,Standard,'-..b');hold on;plot(X,output,'-..r');hold on;legend('With noise','Standard','Output')xlabel('time');ylabel('value');title('一階低通濾波器(fH=50Hz)');f_basic=200;%原信號(hào)頻率為200Hzw_basic=2*pi*f_basic;f_H=500;%截止頻率500Hzf_simple=20000;%采樣頻率20kHzPointNumber = 100000;%坐標(biāo)點(diǎn)數(shù)量x=0PointNumber-1;Standard =2+sin(w_basic*x*0.0000005);%原始標(biāo)準(zhǔn)信號(hào)noise = 0+0.1*randn(1,PointNumber);AddNoise=Standard+noise;a=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1x_now=AddNoise(i+1);y_now=(1-a)*y_last+a*x_now;output(i+1)=y_now;y_last=y_now;endfigure(4);X=0PointNumber-1;plot(X,AddNoise,'-.g');hold on;plot(X,Standard,'-..b');hold on;plot(X,output,'-..r');hold on;legend('With noise','Standard','Output')xlabel('time');ylabel('value');title('一階低通濾波器(fH=500Hz)');
直流信號(hào)部分:
f_basic=1;%原信號(hào)頻率為200Hzw_basic=2*pi*f_basic;f_H=500;%截止頻率500Hzf_simple=20000;%采樣頻率20kHzPointNumber = 100000;%坐標(biāo)點(diǎn)數(shù)量x=0PointNumber-1;Standard =2+0.05*sin(w_basic*x*0.00005);%原始標(biāo)準(zhǔn)信號(hào)noise = 0+0.05*randn(1,PointNumber);AddNoise=Standard+noise;a=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1x_now=AddNoise(i+1);y_now=(1-a)*y_last+a*x_now;output(i+1)=y_now;y_last=y_now;endfigure(1);X=0PointNumber-1;plot(X,AddNoise,'-.g');hold on;plot(X,output,'-..r');hold on;xlabel('time');ylabel('value');title('一階低通濾波器(直流信號(hào)測(cè)試)');f_H=1;%截止頻率500Hza=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1x_now=AddNoise(i+1);y_now=(1-a)*y_last+a*x_now;output(i+1)=y_now;y_last=y_now;endplot(X,output,'-..c');hold on;f_H=0.5;%截止頻率500Hza=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1x_now=AddNoise(i+1);y_now=(1-a)*y_last+a*x_now;output(i+1)=y_now;y_last=y_now;endplot(X,output,'-..m');hold on;f_H=0.2;%截止頻率500Hza=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1x_now=AddNoise(i+1);y_now=(1-a)*y_last+a*x_now;output(i+1)=y_now;y_last=y_now;endplot(X,output,'-..k');hold on;f_H=0.1;%截止頻率500Hza=2*pi*f_H/f_simple;y_last=0;y_now=0;for i = 0PointNumber-1x_now=AddNoise(i+1);y_now=(1-a)*y_last+a*x_now;output(i+1)=y_now;y_last=y_now;endplot(X,output,'-..r');hold on;plot(X,Standard,'-..b');hold on;legend('With noise','Output-500Hz','Output-1Hz','Output-0.5Hz','Output-0.2Hz','Output-0.1Hz','Standard')
-
濾波器
+關(guān)注
關(guān)注
162文章
8411瀏覽量
185680 -
數(shù)字濾波器
+關(guān)注
關(guān)注
4文章
300瀏覽量
48265 -
FOC
+關(guān)注
關(guān)注
21文章
389瀏覽量
46201
原文標(biāo)題:“一階數(shù)字低通濾波器”原理推導(dǎo)(含仿真和代碼實(shí)現(xiàn))
文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
一階低通濾波器的工作原理、電路結(jié)構(gòu)、設(shè)計(jì)方法以及應(yīng)用領(lǐng)域
零基礎(chǔ)學(xué)習(xí)一階RC低通濾波器(從原理到實(shí)踐)
請(qǐng)問(wèn)SIGMASTUDIO一階濾波器系數(shù)如何計(jì)算
關(guān)于一階RC低通濾波器的基礎(chǔ)知識(shí)
二階有源低通濾波器_最簡(jiǎn)單的二階低通濾波器電路圖
一階有源低通濾波電路與最經(jīng)典一階低通濾波器電路圖
一階低通濾波器_一階低通濾波器公式_一階低通濾波器原理
不同低通濾波器的增益大小案例公式和電路曲線
一階電路誤差分析_RC有源低通濾波器的一階二階原理分析及其推導(dǎo)!
一階數(shù)字低通濾波器原理及公式推導(dǎo)
評(píng)論