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

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 一種基于VB的虛擬數(shù)字濾波器的設(shè)計

          一種基于VB的虛擬數(shù)字濾波器的設(shè)計

          ——
          作者: 時間:2007-08-22 來源:現(xiàn)代電子技術(shù) 收藏

          虛擬儀器的構(gòu)成

          從構(gòu)成要素講,虛擬儀器系統(tǒng)是由計算機、應(yīng)用軟件和儀器硬件組成的。計算機與儀器硬件又稱為VI的通用儀器硬件平臺?;赑C機平臺的虛擬儀器,不但具有強大的軟件開發(fā)資源,而且造價低,適合于普通用戶。本設(shè)計就是采用PC DAQ系統(tǒng)來實現(xiàn)的。本設(shè)計的系統(tǒng)構(gòu)成如圖1所示。其采用研華公司的PCL2818LS數(shù)據(jù)采集卡為主,構(gòu)建計算機硬件外圍電路,實現(xiàn)信號調(diào)理和高速數(shù)據(jù)采集。PCL2818LS數(shù)據(jù)采集卡有如下的功能和特點:

          16路單端或8路差分模擬量輸入;40 kHz 12位A/D轉(zhuǎn)換器;可對每個輸入通道的增益進行編程;帶DMA的自動通道/增益掃描;16個量輸入和16個量輸出;一個12位模擬量輸出通道(D/A轉(zhuǎn)換);可編程定時觸發(fā)器/計數(shù)器;軟件支持包括VisiDAQ 3.1,ActiveDAQ和Windows 3.1/95/NT高速DLL驅(qū)動程序。由于信號沒有經(jīng)過硬件濾波,因此必須對采集進來的信號進行濾波,否則對結(jié)果產(chǎn)生大的干擾,影響精度。

          2 數(shù)字的結(jié)構(gòu)

          數(shù)字(Digital Filter)是指用來對輸入信號進行濾波的硬件和軟件。所謂數(shù)字是指輸入、輸出均為數(shù)字信號,通過一定運算關(guān)系改變輸入信號所含頻率成分的器件。與模擬濾波器相比,數(shù)字濾波器的主要優(yōu)點是:

          (1) 精度和穩(wěn)定性高;

          (2) 系統(tǒng)函數(shù)容易改變,因而靈活性高;

          (3) 不存在阻抗匹配問題;

          (4) 便于大規(guī)模集成;

          (5) 可以實現(xiàn)多維濾波,一個數(shù)字濾波器可以用系統(tǒng)函數(shù)表示為:

          直接由H(z)得出,表示輸入輸出關(guān)系的常系數(shù)線性差分方程為:


          可以用兩種方法來實現(xiàn)數(shù)字濾波器:一種方法是采用通用計算機,利用計算機的存儲器、運算器和控制器把濾波器所完成的運算編成程序通過計算機來執(zhí)行,也就是采用計算機軟件來實現(xiàn);另一種方法是設(shè)計專用的數(shù)字硬件來實現(xiàn)。數(shù)字濾波器有IIR和FIR兩種。從結(jié)構(gòu)上看,IIR數(shù)字濾波器采用遞歸結(jié)構(gòu),F(xiàn)IR數(shù)字濾波器主要采用非遞歸的結(jié)構(gòu)。由于無限沖激響應(yīng)濾波器IIR具有無限記憶和運算項數(shù)較少的特點,本文將介紹由IIR濾波器滿足“終端機”中濾波器技術(shù)指標(biāo)的設(shè)計方法與實現(xiàn)。

          3 IIR濾波器的設(shè)計理論和方法

          遞歸型濾波器的結(jié)構(gòu)及其轉(zhuǎn)移函數(shù)的形式?jīng)Q定了他的設(shè)計方法,遞歸濾波器的轉(zhuǎn)移函數(shù)一般為式(1)的形式。設(shè)計遞歸濾波器就是確定濾波器的系數(shù)ak和bk,使他滿足濾波器的技術(shù)指標(biāo)。

          3.1 遞歸濾波器的設(shè)計

          設(shè)計IIR數(shù)字濾波器的方法主要有兩種。一種利用模擬濾波器的理論來設(shè)計;另一種是計算機輔助設(shè)計,也就是利用最優(yōu)技術(shù)進行設(shè)計。他的設(shè)計步驟如下:

          (1) 確定滿足要求技術(shù)指標(biāo)的模擬濾波器的轉(zhuǎn)移函數(shù)H(s);

          (2) 把模擬濾波器數(shù)字化。利用模擬濾波器來設(shè)計數(shù)字濾波器,就是要把s平面映射到z平面,使模擬系統(tǒng)函數(shù)Ha(s)變換成所需的數(shù)字濾波器的系統(tǒng)函數(shù)H(z),這種由復(fù)變量s到復(fù)變量z之間的映射關(guān)系,必須滿足兩條基本要求:

          ① H(z)的頻率響應(yīng)要能模仿Hz(s)的頻率響應(yīng),即s平面的虛軸jΩ必須映射到z平面的單位圓ejΩ上,也就是頻率軸要對應(yīng);

          ② 因果穩(wěn)定的Ha(s)應(yīng)能映射成因果穩(wěn)定的H(z),也就是s平面Re(s)<0的左半平面必須映射到z平面單位圓的內(nèi)部|z|<1。

          上述兩個條件既保持模擬濾波器的頻率特性,亦保持模擬濾波器的穩(wěn)定性,所以,映射關(guān)系得到的數(shù)字濾波器頻率特性和穩(wěn)定性不變。

          3.2 由模擬濾波器得到數(shù)字濾波器的方案

          從模擬濾波器變換成數(shù)字濾波器方案主要有以下3種:

          沖激響應(yīng)不變法:

          階躍響應(yīng)不變法:

          雙線性變換法:



          設(shè)計步驟:按一定技術(shù)指標(biāo)將給出的數(shù)字濾波器轉(zhuǎn)換為模擬低通濾波器;根據(jù)轉(zhuǎn)換后的技術(shù)指標(biāo)設(shè)計模擬低通濾波器H(s)。再將H(s)轉(zhuǎn)換成H(z):對于高通、帶通或帶阻數(shù)字濾波器的設(shè)計,先將其技術(shù)指標(biāo)轉(zhuǎn)化為與之相應(yīng)的作為“樣本”的低通模擬濾波器的技術(shù)指標(biāo),再進行頻率變換,然后按上述步驟設(shè)計出低通H(s),再將H(s)轉(zhuǎn)換成需要的H(z)。

          沖激響應(yīng)不變法設(shè)計IIR數(shù)字濾波器的主要缺點是數(shù)字濾波器的幅度響應(yīng)產(chǎn)生混迭失真,雙線性變換法可克服這個缺點,但是他卻引起頻率失真。雙線性變換的頻率標(biāo)度的非線性失真可以通過預(yù)畸變的方法來補償,即:


          模擬濾波器按這兩個預(yù)畸變了的頻率ΩP和ΩT來設(shè)計,這樣用雙線性變換得到的數(shù)字濾波器便具有所希望的截止頻率特性,因此,本文討論的是后一種方法,雙線性變換法設(shè)計首先找出模擬濾波器的轉(zhuǎn)移函數(shù)H(s),然后求出對應(yīng)的數(shù)字濾波器的轉(zhuǎn)移函數(shù)H(z):

          T為采樣周期。

          4 虛擬IIR數(shù)字濾波器的設(shè)計與實現(xiàn)

          4.1 軟件

          在虛擬儀器的概念中,“軟件就是儀器”。虛擬儀器系統(tǒng)所用的軟件,除了計算機所必須的操作系統(tǒng)等基本軟件外,還需要設(shè)備驅(qū)動軟件和用戶應(yīng)用程序。功能強大的、現(xiàn)成的驅(qū)動軟件是數(shù)據(jù)采集系統(tǒng)的心臟,他為用戶使用不同的編程環(huán)境和語言提供了強有力的應(yīng)用程序編程接口(API)。驅(qū)動軟件在保留高性能的前提下將底層的、復(fù)雜的硬件編程細節(jié)隱藏起來,為用戶提供一個便于理解的接口。對于設(shè)備驅(qū)動軟件,一般情況下都由硬件設(shè)備或接口板的廠家提供,用戶編程時只需直接調(diào)用這些設(shè)備驅(qū)動程序,一般都符合VISA(虛擬儀器軟件結(jié)構(gòu))標(biāo)準(zhǔn)。

          對于用戶應(yīng)用軟件,我們選用了工具軟件,用他進行開發(fā)具有周期短,產(chǎn)品可視性好、可靠性高、可維護性強的特點。軟件開發(fā)步驟如下:

          (1) 根據(jù)設(shè)計要求建立窗體,然后在代碼編輯窗口編輯代碼。窗體應(yīng)包含輸入控制信息和輸出顯示信息。在程序代碼中對采集進來的原始信號進行數(shù)字濾波,為后面電氣參數(shù)的測量做好準(zhǔn)備。

          (2) 使用文件輸入輸出操作存儲數(shù)據(jù)或從文件中讀取數(shù)據(jù),以便于存儲和顯示波形數(shù)據(jù),也可用于打印和分析結(jié)果。

          (3) 6.0的調(diào)試工具包括斷點、中斷表達式、監(jiān)視表達式、逐語句運行、逐過程運行、通過窗口顯示變量和屬性的值。 6.0還包括特別的調(diào)試功能,比如在運行過程中進行編輯,設(shè)置下一個執(zhí)行語句以及在應(yīng)用程序處于中斷模式時進行過程等。

          4.2 IIR數(shù)字濾波器的設(shè)計與實現(xiàn)

          本設(shè)計采用數(shù)字巴特沃斯濾波器(Butterworth)。巴特沃斯濾波器的幅度響應(yīng)在通帶內(nèi)具有最平坦的特性,并且在通帶和阻帶內(nèi)幅度特性是單調(diào)變化的。模擬Butter-worth濾波器的幅度平方函數(shù)為:

          其中ω為角頻率,ωc為截止頻率,N是濾波器的階數(shù)。從式(9)看出,隨著N的增大,幅度響應(yīng)曲線在截止頻率附近變得更加陡,即在通帶內(nèi)有更多部分的幅度接近于1,而在阻帶內(nèi)以更快的速度下降至零。如果用s代替jω,即經(jīng)解析延拓,則式(9)可寫為:

          由此得到極點

          從上式看出,Butterworth濾波器的極點分布有如下特點:他在s平面上共有2N個極點等角距地分布在半徑為ωc的圓上,這些極點對稱于虛軸,而虛軸上無極點。N為奇數(shù)時,實軸上有兩個極點。N為偶數(shù)時,實軸上無極點。各極點間的角度距為π/N,Butterworth其傳遞函數(shù)如下:

          當(dāng)N為偶數(shù)時:

          當(dāng)N為奇數(shù)時:


          根據(jù)上述方法,我們編制了IIR數(shù)字濾波器的設(shè)計程序,采用此程序只需選擇模擬低通濾波器原型和目標(biāo)濾波器種類,輸入采樣頻率ω和目標(biāo)濾波器截止頻率ωc,即可自動完成對IIR數(shù)字濾波器的設(shè)計,如3階低通數(shù)字濾波器的設(shè)計實例如下:

          選擇歸一化的3階Butterworth低通濾波器作為設(shè)計型,采樣頻率為10 kHz,截止頻率為1 kHz,運行設(shè)計程序得到低通數(shù)字濾波器的傳遞函數(shù)為:

          幅頻圖如圖2所示。

          選擇歸一化的3階Butterworth低通濾波器作為設(shè)計型,采樣頻率為10 kHz,截止頻率ωc1為1 kHz,ωc2為2kHz,運行設(shè)計程序得到帶通數(shù)字濾波器的傳遞函數(shù)為:

          幅頻圖如圖3所示。

          5 結(jié) 語

          數(shù)字濾波器可以通過編程實現(xiàn)各種不同系統(tǒng),滿足不同的需要,又可以隨時改動系數(shù),調(diào)整濾波器參數(shù),選擇最佳方案。使用虛擬儀器逐步代替?zhèn)鹘y(tǒng)儀器已經(jīng)成為領(lǐng)域發(fā)展的趨勢。但是在實際應(yīng)用中,仍需要根據(jù)具體情況進行程序的優(yōu)化和軟硬件的結(jié)合,使虛擬儀器發(fā)揮更高的性能。本文作者創(chuàng)新點是使用了VB軟件平臺開發(fā)電氣參數(shù)測量儀等,虛擬儀器實現(xiàn)了更高的效率,節(jié)省了更多的硬件開銷,方便了系統(tǒng)的維護并減輕了儀器更新的負擔(dān)。



          評論


          相關(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); })();