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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 如何提高DSP的ADC精度

          如何提高DSP的ADC精度

          作者: 時間:2011-02-22 來源:網(wǎng)絡 收藏

          摘要:數(shù)字信號處理器TMS320F2812的片上模塊的轉(zhuǎn)化結(jié)果往往存在較大誤差,最大誤差甚至會高達9%,如果這樣直接在實際工程中應用,必然造成控制精度降低。對此提出了一種改進的校正方法,即用最小二乘和一元線性回歸的思想,精確擬合出的輸入/輸出特性曲線,并以此作為校正的基準在上進行了驗證,實驗表明,此方法可以將誤差提高到1%以內(nèi),適合于對控制要求較高的場合。

          本文引用地址:http://www.ex-cimer.com/article/151012.htm

            0 引言

            TI公司的C2000系列以其出色的性能、豐富的片上外設(shè)在工業(yè)自動化、電機控制、工業(yè)生產(chǎn)領(lǐng)域得到廣泛應用。TMS320F2812是C2000系列中性能出色的一個,F(xiàn)2812片上集成了12位16通道的數(shù)/模轉(zhuǎn)化器,理論上精度可以達到0.1%以上。但實際上由于增益誤差(5%)和偏移誤差(2%)的存在,使得精度只能在5%左右,所以必須對ADC進行校正。

            傳統(tǒng)的對于ADC的校正方法是在兩路通道輸入已知標準電壓,根據(jù)兩點確定一條直線的原理,確定出AD轉(zhuǎn)換的曲線,并以此校正轉(zhuǎn)化值。但由于在校正過程中存在偶然因素的影響,使得這種校正方法精度只能達到3%左右。對此,提出了利用最小二乘法和線性回歸的思想進行校正的方法,通過對多個測量點的分析計算,找出最佳的擬合曲線,使得總體的均方誤差最小。

            最小二乘法是高斯于1809年提出的,在多學科領(lǐng)域中獲得廣泛應用的數(shù)據(jù)處理方法。用最小二乘法估測未知參數(shù),可以有效消除測量中粗大誤差和系統(tǒng)誤差的影響?;貧w分析是英國統(tǒng)計學家高爾頓在18*首先提出的。一元線性回歸是利用數(shù)理統(tǒng)計中的回歸分析,來確定兩種或兩種以上變數(shù)間相互依賴的定量關(guān)系的一種統(tǒng)計分析方法之一,運用十分廣泛。一般來說,線性回歸都可以通過最小二乘法求出其方程,可以計算出對于y=bx+a的直線。

            1 校正原理與實現(xiàn)方案

            的ADC模塊的輸入、輸出是線性關(guān)系,理想情況下,輸入輸出方程應該是y=x。但實際上,ADC模塊是存在增益誤差和偏移誤差的,其中增益誤差是實際曲線斜率和理想曲線斜率之間的偏差,偏移誤差是0 V輸入時實際輸出值與理想輸出值(0 V)之間的偏差。F2812的ADC模擬輸入電壓為0~3 V,輸出為0~4 095,模擬輸入與數(shù)字輸出之間的對應關(guān)系為:數(shù)字輸出值=4 095×(模擬輸入值-參考電壓值)/3.0ADC模塊輸入/輸出特性曲線如圖1所示。

          ADC模塊輸入/輸出特性曲線


          圖1 ADC模塊輸入/輸出特性曲線


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: DSP ADC

          評論


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