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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 數(shù)字濾波抗干擾技術(shù)在A/D轉(zhuǎn)換中的應(yīng)用

          數(shù)字濾波抗干擾技術(shù)在A/D轉(zhuǎn)換中的應(yīng)用

          作者: 時(shí)間:2013-11-11 來源:網(wǎng)絡(luò) 收藏
          1引言

          儀器儀表設(shè)備在現(xiàn)場測試過程中,由于生產(chǎn)變量的測試數(shù)據(jù)對生產(chǎn)過程具有重要的意義,因此對各種物理量測試數(shù)據(jù)精度要求是比較高的。

          在前向測試通道上采用的抗干擾措施中,濾波方法是抑制干擾的一種有效途徑。在工業(yè)現(xiàn)場中,可利用硬件濾波器電路或軟件濾波器算法提高測試數(shù)據(jù)的準(zhǔn)確性。硬件濾波措施是使用較多的一種方法,技術(shù)比較成熟,但同時(shí)也增加了設(shè)備,提高了成本,而且電子設(shè)備的增加有可能帶來新的干擾源。而采用軟件濾波算法不需增加硬件設(shè)備,可靠性高,功能多樣,使用靈活,具有許多硬件濾波措施所不具備的優(yōu)點(diǎn),當(dāng)然它需要占一定的運(yùn)行時(shí)間。

          2常用的幾種軟件濾波方法

          (1)中值濾波法:即每次

          取N個(gè)AD值,去除其中的最大值和最小值而取剩余的N-2個(gè)A/D轉(zhuǎn)換值的平均值。
          (2)程序判斷濾波法:即根據(jù)經(jīng)驗(yàn)確定出兩次采樣的最大偏差ΔY,若先后兩次采樣的信號相減數(shù)值大于ΔY,表明輸入為干擾信號,應(yīng)去除;用上次采樣值與本次采樣值比較,若小于或等于Δ Y,表明沒有受到干擾,此時(shí)本次采樣值有效,這樣可以濾去隨機(jī)干擾和傳感器不穩(wěn)定而引起的誤差。

          (3)利用格拉布斯(Grubbs)準(zhǔn)則進(jìn)行處理:根據(jù)誤差理論,要有效地剔除偶然誤差,一般要測量10次以上,兼顧到精度和響應(yīng)速度,取15次為一個(gè)單位。在取得的15個(gè)數(shù)據(jù)中,有些可能含有較大的誤差,需要對它們分檢,剔除可疑值,提高自適應(yīng)速度。對可疑值的剔除有多種準(zhǔn)則,如萊以達(dá)準(zhǔn)則、肖維勒(Chauvenet)準(zhǔn)則、格拉布斯(Grubbs)準(zhǔn)則等。以Grubbs準(zhǔn)則為例,它認(rèn)為若某測量值 xi對應(yīng)的殘差Vi滿足下式

          |Vi|=| xi-|>g(n,a)× σ(X)

          時(shí)應(yīng)將該數(shù)據(jù)舍去。式中,為n次采集到的AD 值的平均值,=(∑xi)/n ;σ(X)為測量數(shù)據(jù)組的標(biāo)準(zhǔn)差,由貝塞爾函數(shù)可得: σ(X)=[(∑Vi2 )/(n-1)]1/2;g(n, a)是取決于測量次數(shù)n和顯著性水平a (相當(dāng)于犯“棄真” 錯(cuò)誤的概率系數(shù)),a通常取0.01或0.05。通過查表可得:當(dāng) n="15時(shí)",a=0.05, g(n,a)=2.41。

          把15次采集到的AD值存入一個(gè)數(shù)組中然后求平均值,計(jì)算殘差,求標(biāo)準(zhǔn)差σ(X)。將殘差絕對值與2.41倍的標(biāo)準(zhǔn)差σ(X)比較。剔除可疑值以后,再求平均值,求出新的平均值以后,應(yīng)再重復(fù)以上過程,驗(yàn)證是否還有可疑值存在。據(jù)我們對測量裝置大量的實(shí)際測試結(jié)果看,這樣做沒有什么必要,因?yàn)橐话阒挥械谝槐榧纯蛇_(dá)到要求。

          然而這種方法也有它的不足, 利用Grubbs準(zhǔn)則需要處理大量的數(shù)據(jù),而在一般的工業(yè)現(xiàn)場測試設(shè)備中,儀表結(jié)構(gòu)大多采用嵌入式結(jié)構(gòu),如AVR單片機(jī)。這些MCU程序空間和數(shù)據(jù)空間有限,若處理大量數(shù)據(jù),難以滿足資源要求。而且,由于Grubbs準(zhǔn)則要求MCU進(jìn)行大量數(shù)據(jù)處理,使得系統(tǒng)降低了信號采集速率,影響實(shí)時(shí)性。

          3.AD7705內(nèi)置的

          上述的幾種軟件濾波方法對抑制個(gè)別的異常數(shù)據(jù)方面具有一定作用,然而對于由工頻干擾引起的平穩(wěn)隨機(jī)干擾信號不太理想。隨著近幾年來集成電路的快速發(fā)展,一些器也集成到數(shù)據(jù)處理芯片當(dāng)中,而且器的設(shè)計(jì)參數(shù)通過軟件可編程實(shí)現(xiàn),具有極大的靈活性和實(shí)用性。

          3.1 芯片介紹及應(yīng)用

          目前市場上由美國AD公司新近推出的AD7705 就是一例[1]。它是內(nèi)置了數(shù)字濾波器的帶信號調(diào)理電路的16位A/D轉(zhuǎn)換器件,可應(yīng)用于低頻測量的2通道的模擬前端。該器件可以接受直接來自傳感器的低電壓輸入信號,然后產(chǎn)生串行的數(shù)字輸出,利用∑-Δ轉(zhuǎn)換技術(shù)實(shí)現(xiàn)16位無丟失代碼性能。選定的輸入信號被送到一個(gè)基于模擬調(diào)制器的增益可編程專用前端,片內(nèi)數(shù)字濾波器處理調(diào)制器的輸出信號,通過片內(nèi)控制寄存器可調(diào)節(jié)濾波器的截止點(diǎn)和輸出更新率,從而對數(shù)字濾波器的第一個(gè)陷波進(jìn)行編程。

          AD7705有以下幾個(gè)特點(diǎn):

          (1)差分輸入通道ADC,具有16位無丟失代碼和0.003%非線形誤差;

          (2)MCU的接口為串行的三線接口模式;

          (3)可編程增益1~128,信號極性以及更新速率配置有工作寄存器,通過對寄存器的操作可以選擇等;

          (4) 器件還包括自標(biāo)定和系統(tǒng)校準(zhǔn)功能,以消除器件本身或系統(tǒng)的增益和編程誤差;

          (5) 內(nèi)帶數(shù)字信號處理電路,由軟件可編程進(jìn)行設(shè)置。

          引腳排列如圖1。
          數(shù)字濾波抗干擾技術(shù)在A/D轉(zhuǎn)換中的應(yīng)用

          主要管腳說明如下:

          MCLK IN:為轉(zhuǎn)換器提供主時(shí)鐘信號,能以晶體/諧振器或外部時(shí)鐘的形式提供。

          MCLK OUT:當(dāng)主時(shí)鐘為晶體/諧振器時(shí),晶體諧振器被接在MCLK IN和MCLK OUT之間;如果在MCLK IN引腳處連接一個(gè)外部時(shí)鐘,MCLK OUT將提供一個(gè)反向時(shí)鐘信號。

          CS :片選,低電平有效的邏輯輸入。

          A1N2(+)[A1N1]:對于AD7705,差分模擬輸入通道2的正輸入端;對于AD7706,模擬輸入通道1的輸入端。

          A1N1(+)[A1N2]:差分模擬輸入通道1的正輸入端。

          A1N1(-)[COMMON]:差分模擬輸入通道1的負(fù)輸入端。

          A1N2(-)[A1N3]:差分輸入模擬通道2的負(fù)輸入端。


          上一頁 1 2 下一頁

          評論


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