<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 測試測量 > 設計應用 > 一種提高TMS320F2812 ADC精度的方法

一種提高TMS320F2812 ADC精度的方法

作者: 時(shí)間:2010-09-26 來(lái)源:網(wǎng)絡(luò ) 收藏


圖3校正后的電壓轉換電路

2 ADC校正

2.1校正方法

通過(guò)以上分析可以看出,的ADC轉換精度較差的主要原因是存在增益誤差和失調誤差,因此要提高轉換精度就必須對兩種誤差進(jìn)行補償。對于A(yíng)DC模塊采取了如下方法對其進(jìn)行校正。

選用ADC的任意兩個(gè)通道作為參考輸入通道,并分別提供給它們已知的直流參考電壓作為輸入(兩個(gè)電壓不能相同),通過(guò)讀取相應的結果寄存器獲取轉換值,利用兩組輸入輸出值求得ADC模塊的校正增益和校正失調,然后利用這兩個(gè)值對其他通道的轉換數據進(jìn)行補償,從而提高了ADC模塊轉換的準確度。圖1示出了如何利用方程獲取ADC的校正增益和校正失調。具體計算過(guò)程如下:

① 獲取已知輸入參考電壓信號的轉換值yL和yh。

② 利用方程y=x×ma+b及已知的參考值(xL,yL)和(xH,yH)計算實(shí)際增益及失調誤差:

實(shí)際增益ma=(yH-yL)/(xH-xL);

失調誤差 b=yL -xL×ma。

③ 定義輸入x=y×CalGain-CalOffset,則由方程y=x×ma+b得校正增益CalGain=1/ma=(xH-xL)/(yH -yL),校正失調CalOffset=b/ma=yL/ma-xL。

④ 將所求的校正增益及校正失調應用于其他測量通道,對ADC轉換結果進(jìn)行校正。

上述即為實(shí)現ADC校正的全過(guò)程,通過(guò)使用這種方法,ADC的轉換精度有很大提高。由于這種方法是通過(guò)某個(gè)通道的誤差去修正其他通道的誤差,因此要采用這種方法,必須保證通道間具有較小的通道誤差。對ADC轉換模塊,由于其通道間的增益及失調誤差均在0.2%以?xún)?,所以可以采用這種方法對其進(jìn)行校正。

2.2 軟件實(shí)現

與一般的ADC轉換程序相比,帶校正的ADC轉換程序需要另外增加兩個(gè)程序段:校正值的計算以及利用校正值對ADC進(jìn)行處理。為了方便操作及轉換結果獲取,實(shí)現中定義了結構體變量ADCCALIBRATIONVARS,用來(lái)保存ADC轉換后的各種數據。另外,提高程序的通用性,采樣的方式、參考電壓值及高低電壓理想的轉換值均在A(yíng)DC轉換頭文件ADCCalibration.h中定義。ADCCALIBRATIONVARS定義如下:

typedefstruct{

Uint*RefHighChAddr;//參考高電壓所連通道地址

Uint*RefHighChAddr;//參考低電壓所連通道地址

Uint*ChoAddr;//0通道地址

UintAvg_RefHighActualCount;//參考高電壓實(shí)際轉換值

UintAvg_RefHighActualCount;//參考低電壓實(shí)際轉換值

UintRefHighIdealCount;//參考高電壓理想轉換值

UintRefLowCount;//參考低電壓實(shí)際轉換值

UintCalGain;//校正增益

UintCalOffset;//校正失調

//校正通道的轉換值

UintCh0;

UintCh16;

}ADC CALIBRATION VARS;

整個(gè)A/D轉換任務(wù)由中斷函數intADC()和主函數ADCCalibration()構成。中斷函數主要用于轉換數據的讀取,而校正參數計算及各通道轉換結果的修正在主函數完成。校正完后,將結果保存到所定義的結構體變量中。此處,對ADC的校正采用單采樣單校正的處理方法,當然也可以采用多采樣單校正的處理方法,但是為了提高精度,如果設計系統開(kāi)支允許,建議最好使用單采樣單校正的方法,以提高ADC精度。

2.3實(shí)驗結果

筆者在自己所使用的系統上進(jìn)行了實(shí)驗,選用1 V和2 V作為參考電壓,選用通道A6和A7作為參考通道,通過(guò)對0 V、0.5 V、1.5 V、2.5 V校正前后的數據進(jìn)行比較,發(fā)現采用上述校正方法后,ADC的轉換準確度明顯得到改善,比較結果如表2所列。



注:由參考電壓計算得:CalGain=0.965;CalOffset=6.757。

表2中所給出的數據只是筆者進(jìn)行大量實(shí)驗后所得數據的一組,實(shí)驗證明通過(guò)校正后ADC的誤差能被控制在0.5%以?xún)?,這對大多數測控系統來(lái)說(shuō)已滿(mǎn)足要求,對于轉換精度要求更高的系統,可以采用外擴A/D轉換器。

結語(yǔ)

A/D轉換器是數據采集電路的核心部件,其良好的精度與準確性是提高數據采集電路性能的關(guān)鍵。2812作為T(mén)I公司推出的一款集微控制器及數字信號處理器于一身的32位處理器,以其運行速度高和強大的處理功能得到廣泛應用,而對其ADC模塊精度的提高,將進(jìn)一步提高其在控制領(lǐng)域中的應用。本文提出的用于提高ADC模塊精度的校正算法,經(jīng)實(shí)際應用證明實(shí)用可行。

本文引用地址:http://dyxdggzs.com/article/195285.htm

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: F2812 2812 320F TMS

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>