片上ADC/DAC實現(xiàn)精度可調(diào)ADC的方案
3.1.1 初始化ADC
主要是對MCU的ADC進(jìn)行初始化,主要包括ADC寄存器配置、選擇I/O口的工作模式、選擇ADC的通道、啟動ADC。
3.1.2 校正
校正是在測量輸入電壓前,首先利用基準(zhǔn)電壓源輸入多個基準(zhǔn)電壓值,并通過讀MCU的ADC寄存器值記錄對應(yīng)的數(shù)字量的值,并將這兩項的值保存到校正表中。在測量輸入電壓時,將所得的數(shù)字量的值利用拉格朗日插值算法代入校正表可得精確的輸入電壓值。
1)校正表內(nèi)容校正的過程主要是通過建立校正表建立起實際輸入電壓值與測量輸入電壓值的聯(lián)系。校正表存放兩項數(shù)據(jù)。一項是1~59 V的整數(shù)電壓值,另一項是式(5)的和。因為系統(tǒng)測量的輸入電壓值是只保留到小數(shù)點后2位的近似值,而式(5)中包含測量的ADC和DAC的十進(jìn)制數(shù)字量值更為精確。由式(4)可看出式(5)的值與測量的輸入電壓值存在比例關(guān)系,所以它們與實際輸入電壓的曲線關(guān)系相同。因此,另一項的內(nèi)容存放的是式(5)的和。
2)建立校正表的過程從1~59 V,用電壓源每隔1 V輸入一次電壓,通過讀MCU的ADC和DAC寄存器的值,記錄每次ADC和DAC的數(shù)字量十進(jìn)制的值。將記錄的ADC和DAC的值代入式(5)計算其和并保存到校正表中。
3.1.3 計算式(5)的和值
通過程序改變MCU的DAC寄存器的值實現(xiàn)改變DAC的輸出電壓值,在改變DAC寄存器的值的同時通過觀察ADC的寄存器的值確定ADO的輸入電壓值是否在量程范圍之內(nèi)。當(dāng)ADO的輸入在量程范圍之內(nèi)時,通過讀DAC寄存器和ADC的寄存器值可分別獲得MCU的DAC和ADC的數(shù)字量十進(jìn)制值,將獲得的值代入式(5)可得其和。
3.1.4 計算輸入電壓
計算輸入電壓函數(shù)實現(xiàn)功能是利用拉格拉日插值公式計算出輸入電壓。通過坐標(biāo)軸觀察校正表中數(shù)據(jù),實際輸入電壓值與測量值滿足線性關(guān)系。在輸入電壓校正表中,查找與式(6)的值最接近的2個點,然后代入拉格拉日線性插值公式計算出輸入電壓。
3.2 實驗結(jié)果
利用傳統(tǒng)方法直接送入ADC測量輸入電壓的精度理想情況下最高為59.1/1024=57.7mV,由于硬件參數(shù)誤差和干擾等原因會使測量誤差大于20mV,無法滿足系統(tǒng)的測量精度和準(zhǔn)確度要求。利用本文所提出的17位高精度A/D測量方法測量精度可減小為0.45mV,通過軟件校正的方法測量誤差可控制在10mV以內(nèi),滿足了設(shè)計要求。通過本文所述提高測量精度的方法,最高可實現(xiàn)20位ADC,測量精度可減小為0.056 mV。
評論