<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種基于單片機的工頻干擾濾除快速算法

          一種基于單片機的工頻干擾濾除快速算法

          作者: 時間:2011-11-26 來源:網(wǎng)絡(luò) 收藏

          工頻干擾廣泛存在各種工業(yè)現(xiàn)場中,其產(chǎn)生的途徑主要包括輸電饋線、照明設(shè)備、發(fā)動機以及各種電子儀器設(shè)備等。一般可以通過濾波電路消除工頻干擾,但這必將增加硬件結(jié)構(gòu)的復(fù)雜程度。實際上,還可以采用數(shù)字信號處理的相關(guān)算法,通過軟件濾波器濾除工頻干擾。軟件濾波算法的采用,無疑會在簡化電路結(jié)構(gòu)的同時,使系統(tǒng)的硬件資源得到更加充分的利用,并達到降低產(chǎn)品成本的要求。

            AVR單片機是Atmel公司生產(chǎn)的8位精簡指令集(RISC)單片機。與同類單片機相比,在運算速度、外設(shè)資源、靈活性等方面性能均衡,性價比較高。AVR單片機適合C語言開發(fā),Mega系列AVR單片機還有一個內(nèi)部硬件乘法器單元。這些特點都為軟件濾波器的實現(xiàn)提供了極大的便利。

            1 濾波算法

            常用的單片機濾波算法包括中值濾波、增色值濾波、滑動平均以及復(fù)合濾波算法等。工頻干擾的頻率范圍在50Hz附近,可以采用一個截止頻率遠低于50Hz的低通濾波器來濾除工頻干擾。

            假設(shè)輸入信號x(t),輸出信號y(t),則一個RC低通濾波器表達式為:τ[dy(t)]/dt+y(t)=x(t),其中τ為時間常數(shù)。

            連續(xù)時間信號經(jīng)過采樣后成為離散時間信號,低通濾波器的表達式也變?yōu)椋?/P>

            τ[y(t)-y(k-1)]/ Δt+y(k)=x(t)   (1)

            Δt為采樣時間間隔,k為歸一化時間。

            由(1)式可得:

            y(k)=[1/(1+τ/Δt)]x(k)+(τ/Δt)/(1+τ/Δt)[y(k-1)  (2)

            令a=(τ/Δt)(1+τ/Δt),代入(2)式,

            y(k)=(1-a)·x(k)+a·y(k-1)   (3)

            對(3)式進行z變換,可得:

            Y(z)=(1-a) ·X(z)+a·z-1·Y(z)

            所以系統(tǒng)的傳遞函數(shù)為:

            假設(shè)采樣頻率Fs=500Hz,a分別取0.8、0.85、0.9、0.95,代入(4)式,利用matlab畫出頻率響應(yīng)曲線,如圖1。其中50Hz頻率對應(yīng)的幅度衰減見表1。

            表1 50Hz幅度衰減

          a衰減
          0.8-9.4dB
          0.85-11.9dB
          0.9-15.5dB
          0.95-21.6dB


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 工頻干擾濾除

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();