提高TMS320F2812ADC精度的方法
圖3校正后的電壓轉(zhuǎn)換電路
2 ADC校正
2.1校正方法
通過(guò)以上分析可以看出,F2812的ADC轉(zhuǎn)換精度較差的主要原因是存在增益誤差和失調(diào)誤差,因此要提高轉(zhuǎn)換精度就必須對(duì)兩種誤差進(jìn)行補(bǔ)償。對(duì)于ADC模塊采取了如下方法對(duì)其進(jìn)行校正。
選用ADC的任意兩個(gè)通道作為參考輸入通道,并分別提供給它們已知的直流參考電壓作為輸入(兩個(gè)電壓不能相同),通過(guò)讀取相應(yīng)的結(jié)果寄存器獲取轉(zhuǎn)換值,利用兩組輸入輸出值求得ADC模塊的校正增益和校正失調(diào),然后利用這兩個(gè)值對(duì)其他通道的轉(zhuǎn)換數(shù)據(jù)進(jìn)行補(bǔ)償,從而提高了ADC模塊轉(zhuǎn)換的準(zhǔn)確度。圖1示出了如何利用方程獲取ADC的校正增益和校正失調(diào)。具體計(jì)算過(guò)程如下:
① 獲取已知輸入?yún)⒖茧妷盒盘?hào)的轉(zhuǎn)換值yL和yh。
② 利用方程y=x×ma+b及已知的參考值(xL,yL)和(xH,yH)計(jì)算實(shí)際增益及失調(diào)誤差:
實(shí)際增益ma=(yH-yL)/(xH-xL);
失調(diào)誤差 b=yL -xL×ma。
③ 定義輸入x=y×CalGain-CalOffset,則由方程y=x×ma+b得校正增益CalGain=1/ma=(xH-xL)/(yH -yL),校正失調(diào)CalOffset=b/ma=yL/ma-xL。
④ 將所求的校正增益及校正失調(diào)應(yīng)用于其他測(cè)量通道,對(duì)ADC轉(zhuǎn)換結(jié)果進(jìn)行校正。
上述即為實(shí)現(xiàn)ADC校正的全過(guò)程,通過(guò)使用這種方法,ADC的轉(zhuǎn)換精度有很大提高。由于這種方法是通過(guò)某個(gè)通道的誤差去修正其他通道的誤差,因此要采用這種方法,必須保證通道間具有較小的通道誤差。對(duì)F2812ADC轉(zhuǎn)換模塊,由于其通道間的增益及失調(diào)誤差均在0.2%以?xún)?nèi),所以可以采用這種方法對(duì)其進(jìn)行校正。
2.2 軟件實(shí)現(xiàn)
與一般的ADC轉(zhuǎn)換程序相比,帶校正的ADC轉(zhuǎn)換程序需要另外增加兩個(gè)程序段:校正值的計(jì)算以及利用校正值對(duì)ADC進(jìn)行處理。為了方便操作及轉(zhuǎn)換結(jié)果獲取,實(shí)現(xiàn)中定義了結(jié)構(gòu)體變量ADCCALIBRATIONVARS,用來(lái)保存ADC轉(zhuǎn)換后的各種數(shù)據(jù)。另外,提高程序的通用性,采樣的方式、參考電壓值及高低電壓理想的轉(zhuǎn)換值均在ADC轉(zhuǎn)換頭文件ADCCalibration.h中定義。ADCCALIBRATIONVARS定義如下:
typedefstruct{
Uint*RefHighChAddr;//參考高電壓所連通道地址
Uint*RefHighChAddr;//參考低電壓所連通道地址
Uint*ChoAddr;//0通道地址
UintAvg_RefHighActualCount;//參考高電壓實(shí)際轉(zhuǎn)換值
UintAvg_RefHighActualCount;//參考低電壓實(shí)際轉(zhuǎn)換值
UintRefHighIdealCount;//參考高電壓理想轉(zhuǎn)換值
UintRefLowCount;//參考低電壓實(shí)際轉(zhuǎn)換值
UintCalGain;//校正增益
UintCalOffset;//校正失調(diào)
//校正通道的轉(zhuǎn)換值
UintCh0;
UintCh16;
}ADC CALIBRATION VARS;
整個(gè)A/D轉(zhuǎn)換任務(wù)由中斷函數(shù)intADC()和主函數(shù)ADCCalibration()構(gòu)成。中斷函數(shù)主要用于轉(zhuǎn)換數(shù)據(jù)的讀取,而校正參數(shù)計(jì)算及各通道轉(zhuǎn)換結(jié)果的修正在主函數(shù)完成。校正完后,將結(jié)果保存到所定義的結(jié)構(gòu)體變量中。此處,對(duì)ADC的校正采用單采樣單校正的處理方法,當(dāng)然也可以采用多采樣單校正的處理方法,但是為了提高精度,如果設(shè)計(jì)系統(tǒng)開(kāi)支允許,建議最好使用單采樣單校正的方法,以提高ADC精度。
2.3實(shí)驗(yàn)結(jié)果
筆者在自己所使用的F2812系統(tǒng)上進(jìn)行了實(shí)驗(yàn),選用1 V和2 V作為參考電壓,選用通道A6和A7作為參考通道,通過(guò)對(duì)0 V、0.5 V、1.5 V、2.5 V校正前后的數(shù)據(jù)進(jìn)行比較,發(fā)現(xiàn)采用上述校正方法后,ADC的轉(zhuǎn)換準(zhǔn)確度明顯得到改善,比較結(jié)果如表2所列。
注:由參考電壓計(jì)算得:CalGain=0.965;CalOffset=6.757。
表2中所給出的數(shù)據(jù)只是筆者進(jìn)行大量實(shí)驗(yàn)后所得數(shù)據(jù)的一組,實(shí)驗(yàn)證明通過(guò)校正后ADC的誤差能被控制在0.5%以?xún)?nèi),這對(duì)大多數(shù)測(cè)控系統(tǒng)來(lái)說(shuō)已滿(mǎn)足要求,對(duì)于轉(zhuǎn)換精度要求更高的系統(tǒng),可以采用外擴(kuò)A/D轉(zhuǎn)換器。
結(jié)語(yǔ)
A/D轉(zhuǎn)換器是數(shù)據(jù)采集電路的核心部件,其良好的精度與準(zhǔn)確性是提高數(shù)據(jù)采集電路性能的關(guān)鍵。TMS320F2812作為T(mén)I公司推出的一款集微控制器及數(shù)字信號(hào)處理器于一身的32位處理器,以其運(yùn)行速度高和強(qiáng)大的處理功能得到廣泛應(yīng)用,而對(duì)其ADC模塊精度的提高,將進(jìn)一步提高其在控制領(lǐng)域中的應(yīng)用。本文提出的用于提高ADC模塊精度的校正算法,經(jīng)實(shí)際應(yīng)用證明實(shí)用可行。本文引用地址:http://m.butianyuan.cn/article/194478.htm
評(píng)論