片上ADC/DAC實現精度可調ADC的方案

3.1.1 初始化ADC
主要是對MCU的ADC進行初始化,主要包括ADC寄存器配置、選擇I/O口的工作模式、選擇ADC的通道、啟動ADC。
3.1.2 校正
校正是在測量輸入電壓前,首先利用基準電壓源輸入多個基準電壓值,并通過讀MCU的ADC寄存器值記錄對應的數字量的值,并將這兩項的值保存到校正表中。在測量輸入電壓時,將所得的數字量的值利用拉格朗日插值算法代入校正表可得精確的輸入電壓值。
1)校正表內容校正的過程主要是通過建立校正表建立起實際輸入電壓值與測量輸入電壓值的聯系。校正表存放兩項數據。一項是1~59 V的整數電壓值,另一項是式(5)的和。因為系統測量的輸入電壓值是只保留到小數點后2位的近似值,而式(5)中包含測量的ADC和DAC的十進制數字量值更為精確。由式(4)可看出式(5)的值與測量的輸入電壓值存在比例關系,所以它們與實際輸入電壓的曲線關系相同。因此,另一項的內容存放的是式(5)的和。
2)建立校正表的過程從1~59 V,用電壓源每隔1 V輸入一次電壓,通過讀MCU的ADC和DAC寄存器的值,記錄每次ADC和DAC的數字量十進制的值。將記錄的ADC和DAC的值代入式(5)計算其和并保存到校正表中。
3.1.3 計算式(5)的和值
通過程序改變MCU的DAC寄存器的值實現改變DAC的輸出電壓值,在改變DAC寄存器的值的同時通過觀察ADC的寄存器的值確定ADO的輸入電壓值是否在量程范圍之內。當ADO的輸入在量程范圍之內時,通過讀DAC寄存器和ADC的寄存器值可分別獲得MCU的DAC和ADC的數字量十進制值,將獲得的值代入式(5)可得其和。
3.1.4 計算輸入電壓
計算輸入電壓函數實現功能是利用拉格拉日插值公式計算出輸入電壓。通過坐標軸觀察校正表中數據,實際輸入電壓值與測量值滿足線性關系。在輸入電壓校正表中,查找與式(6)的值最接近的2個點,然后代入拉格拉日線性插值公式計算出輸入電壓。

3.2 實驗結果
利用傳統方法直接送入ADC測量輸入電壓的精度理想情況下最高為59.1/1024=57.7mV,由于硬件參數誤差和干擾等原因會使測量誤差大于20mV,無法滿足系統的測量精度和準確度要求。利用本文所提出的17位高精度A/D測量方法測量精度可減小為0.45mV,通過軟件校正的方法測量誤差可控制在10mV以內,滿足了設計要求。通過本文所述提高測量精度的方法,最高可實現20位ADC,測量精度可減小為0.056 mV。

評論