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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 分析如何提高單片機(jī)的模數(shù)轉(zhuǎn)換精度

          分析如何提高單片機(jī)的模數(shù)轉(zhuǎn)換精度

          作者: 時(shí)間:2013-02-20 來源:網(wǎng)絡(luò) 收藏


            但是,如果模擬量(0~400V電壓)輸入值非常穩(wěn)定,每間隔一定時(shí)間采集的10位數(shù)據(jù)Di都相同,以上方法就達(dá)不到要求了。

           ?、谌绻贏/D轉(zhuǎn)換過程中要得到局部更高精度的數(shù)據(jù),例如檢測(cè)蓄電池充放電過程中的電壓,電壓范圍是0~18 V,一般精度達(dá)到0.02 V即可,但用戶更關(guān)心8~13 V的電壓,8~13 V內(nèi)精度要達(dá)到0.01 V。為了解決這個(gè)問題,設(shè)計(jì)了原理如圖4所示的電路。


            有內(nèi)置10位A/D模塊,Ui(0~20 V)電壓經(jīng)過R1、R2、P1衰減得到0~5 V的電壓,該電壓直接送到的AN1輸入口,即VAN1=Ui/4。

            U2A接成減法運(yùn)算電路,即U2A 1端電壓VU2A1=VAN1-2 V=Ui/4-2 V=(Ui-8 V)/4。U2B接成4倍放大電路,U2B 7端的電壓VU2B7=VU2A×4=Ui-8 V。AN2輸入并聯(lián)一只5 V穩(wěn)壓二極管,以保證當(dāng)輸入電壓大于8 V時(shí),AN2可以得到O~5 V電壓。單片機(jī)先采集AN1的數(shù)據(jù),通過采集的數(shù)據(jù)判斷輸入電壓是否在8~13 V之間,如果不在8~13 V,則采集到的數(shù)據(jù)就是模擬量(U)對(duì)應(yīng)的數(shù)字量(D:000H~3FFH),精度為20 V/2010=20 V/1 024≈0.02 V,電壓數(shù)據(jù)U=D×0.02 V;如果采集的數(shù)據(jù)在8~13 V之間,單片機(jī)再采集AN2的數(shù)據(jù),采集到的數(shù)據(jù)加上8 V就是模擬量(U)對(duì)應(yīng)的數(shù)字量(D:000H~3FFH),精度為(13-8)V/210=5 V/1 024≈0.005 V,電壓數(shù)據(jù)U=8 V+D×0.005 V。這樣,在8~13 V之間的A/D轉(zhuǎn)換精度就大大提高了。

            結(jié) 語

            隨著工業(yè)自動(dòng)控制的不斷發(fā)展,單片機(jī)在工業(yè)自動(dòng)控制的應(yīng)用也越來越廣。本文介紹的提高A/D轉(zhuǎn)換精度的工作原理在實(shí)際應(yīng)用中具有一定的使用價(jià)值,特別是通過簡(jiǎn)單的模擬運(yùn)算電路,可以局部提高A/D轉(zhuǎn)換精度。利用這個(gè)原理,如果將模擬量分段放大,也可以全范圍提高A/D轉(zhuǎn)換精度。這種方法在A/D轉(zhuǎn)換領(lǐng)域有較好的應(yīng)用前景。


          上一頁 1 2 下一頁

          評(píng)論


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