《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 基于片上ADC/DAC實(shí)現(xiàn)精度可調(diào)ADC的方法
基于片上ADC/DAC實(shí)現(xiàn)精度可調(diào)ADC的方法
胡 亮,,韓 進(jìn),,薛慶軍
摘要: 在數(shù)據(jù)采集系統(tǒng)中,,由于成本限制和系統(tǒng)其他模塊功能要求,,系統(tǒng)中MCU的ADC精度有時(shí)無(wú)法滿足系統(tǒng)測(cè)量精度要求?;谏鲜鲈?,提出一種利用MCU自帶的10位ADC和DAC,結(jié)合運(yùn)放,、電容,、電阻等元件搭建的外圍硬件電路,實(shí)現(xiàn)將MCU自帶的ADC轉(zhuǎn)換為精度可調(diào)的ADC,。軟件設(shè)計(jì)是通過(guò)校正方法減小由硬件導(dǎo)致的ADC測(cè)量誤差。實(shí)驗(yàn)結(jié)果表明,,該系統(tǒng)可實(shí)現(xiàn)10~20位精度可調(diào)的ADC,,測(cè)量精度最高可提高1024倍,能夠滿足大多數(shù)情況下的測(cè)量精度要求,。
Abstract:
Key words :

某系統(tǒng)的A/D模塊需實(shí)現(xiàn)檢測(cè)輸入電壓值,,變化范圍為0~58 V。主芯片選用NXP公司的ARM7系列的LPC2368,,片上自帶10位ADCDAC,,ADC測(cè)量輸入電壓范圍是0~3 V,而DAC的范圍是0~3 V,。傳統(tǒng)方法是直接將輸入電壓送入ADC法滿足精度要求,,但輸入電壓的變化范圍大于ADC的輸入電壓范圍?;诖?,這里給出一種利用MCU自帶ADC和DAC,并結(jié)合運(yùn)放,、電容,、電阻等元件搭建外圍硬件電路,實(shí)現(xiàn)10~20位測(cè)量精度可調(diào)的ADC的方法,。

1 高精度ADC設(shè)計(jì)原理
   
輸入電壓經(jīng)過(guò)電阻分壓產(chǎn)生電壓U入,,送入由運(yùn)放和電阻組成的減法運(yùn)算電路的同相端,分壓的原因是輸入電壓最大值大于運(yùn)放的最大輸入電壓,。MCU的DAC輸出經(jīng)過(guò)同相比例運(yùn)算電路放大之后產(chǎn)生與U入相近的電壓U近,,送入減法電路的反相端。同相比例運(yùn)算電路的作用是擴(kuò)大DAC的輸出電壓范圍,,使U入和U近的最大值近似相等,。經(jīng)過(guò)減法運(yùn)算電路之后的電壓差值U差經(jīng)過(guò)箝位電路送入MCU的ADC,通過(guò)讀ADC寄存器的值可得U差的值,。箝位電路是防止ADC的輸入電壓超過(guò)量程,,而導(dǎo)致燒毀MCU,。
    在測(cè)量時(shí),由軟件控制改變DAC寄存器的值,,從而改變DAC輸出電壓值,,使U差的電壓值在量程范圍(0~3 V)之內(nèi)。此時(shí)通過(guò)讀DAC和ADC的寄存器的值,,可得DAC輸出電壓與送入ADC的電壓U差的值,。根據(jù)DAC的輸出電壓和同相比例運(yùn)算電路公式可得U近電壓值,根據(jù)減法電路公式,、U差和U近的值可得輸入電壓值,。
    系統(tǒng)硬件框圖如圖1所示。



2 系統(tǒng)硬件設(shè)計(jì)
   
圖2為實(shí)現(xiàn)17位ADC原理圖,。U101,、R100、R101,、R102,、R103組成減法電路,U102,、R108,、R109、R116組成同相比例運(yùn)算電路,。VD100
組成箝位電路,。VR是由基準(zhǔn)電壓源產(chǎn)生的3 V的基準(zhǔn)電壓。R117和R118組成分壓電路,,在R118上的電壓為45 mV可抵消運(yùn)放的零漂,。ADO是MCU的ADC通道0的輸入端。


    圖2所示的電路雖然只是實(shí)現(xiàn)17位ADC,,但通過(guò)修改幾個(gè)特定的電阻阻值就可實(shí)現(xiàn)調(diào)節(jié)測(cè)量輸入電壓范圍和ADC測(cè)量分辨率,。通過(guò)修改同相比例運(yùn)算電路中R109與R116比例值,可實(shí)現(xiàn)調(diào)節(jié)輸入電壓的測(cè)量范圍,;通過(guò)修改減法電路中的R103與R100比例值,,可實(shí)現(xiàn)調(diào)節(jié)ADC的分辨率。下面結(jié)合實(shí)現(xiàn)17位ADC硬件設(shè)計(jì)電路圖,,具體說(shuō)明如何實(shí)現(xiàn)17位高精度ADC,、調(diào)節(jié)測(cè)量輸入電壓范圍和實(shí)現(xiàn)10~20位精度可調(diào)的ADC。
2.1 17位ADC的實(shí)琨過(guò)程
   
對(duì)于一個(gè)n位的ADC,,其分辨率為可測(cè)量最大輸入電壓值與2n的比值,。因此,此電路圖可實(shí)現(xiàn)的ADC的位數(shù)可以通過(guò)輸入電壓的最大值和分辨率計(jì)算得出,。
    1)計(jì)算輸入電壓測(cè)量范圍的方法 由圖2可知,,ADC的輸入電壓計(jì)算公式如下:

    式中,,VIN是輸入電壓,VDAOUT是當(dāng)ADC的輸入電壓處于量程范圍之內(nèi)時(shí)DAC電壓,,VDAO是ADC輸入電壓,。
    由式(2)可知,當(dāng)DAC的輸出電壓和ADC的輸入電壓剛好達(dá)到最大值3 V時(shí),,輸入電壓為59.1 V,,此電壓值為系統(tǒng)可測(cè)量的最大輸入電壓值。由此可見(jiàn)輸入電壓的測(cè)量范圍是0~59.1 V,。
    2)ADC分辨率的計(jì)算方法 當(dāng)DAC的輸出為零時(shí),,即VDAOUT=0時(shí),由式(2)可知輸入電壓VIN與VADO的電壓的關(guān)系為:
    VIN=VADO/10,。MCU的ADC位數(shù)是1O位,、最大輸入電壓是3 V。因此,,ADC分辨率為0.292 mV。
    3)實(shí)現(xiàn)17位ADC根據(jù)輸入電壓最大值與ADC分辨率的比值計(jì)算出此電路圖實(shí)現(xiàn)的ADC的位數(shù),。由59.1/(0.292x10-3)=202 397=217.6,,可以看出此電路實(shí)現(xiàn)了17位的ADC。
2.2 調(diào)節(jié)測(cè)量輸入電壓范圍的方法
   
因?yàn)閂ADO和VDAOUT的最大值都是3 V,,由式(2)可知,,可測(cè)量的最大輸入電壓值是由R100、R103,、R116,、R109決定的。改變R100與R103的比值會(huì)影響ADC的測(cè)量精度,,因此,,調(diào)節(jié)測(cè)量輸入電壓范圍主要是通過(guò)調(diào)節(jié)R116與R109的比值。由式(2)容易看出,,當(dāng)R116增加時(shí),,測(cè)量電壓輸入范圍增加,R109增加時(shí)測(cè)量電壓輸入范圍減小,。
2.3 實(shí)現(xiàn)10~20位精度可調(diào)ADC的方法
   
由17位ADC的實(shí)現(xiàn)過(guò)程可知,,此電路實(shí)現(xiàn)ADC的位數(shù)是由測(cè)量輸入電壓最大值和ADC的分辨率決定的。所以在改變ADC的位數(shù)時(shí),,要通過(guò)改變測(cè)量輸入電壓范圍或者ADC分辨率,。但是,系統(tǒng)測(cè)量輸入電壓范圍是固定的,。因此,,可通過(guò)改變ADC分辨率實(shí)現(xiàn)ADC的位數(shù)改變,。
    1)調(diào)節(jié)ADC分辨率的方法當(dāng)DAC的輸出電壓為零時(shí),將式(2)化簡(jiǎn)為式(3):
   
    由式(3)可知,,當(dāng)MCU的ADC變化一個(gè)電壓刻度值時(shí),,VIN變化6R100/R103。ADC位數(shù)是10位,、最大輸入電壓是3 V,。因此,ADO分辨率為3 V/1 024=2.92 mV,,ADC的分辨率為2.92x10-3x6R100/R103,。由此可見(jiàn),R100增加時(shí),,分辨率下降,;R103增加時(shí),分辨率提高,。
    2)實(shí)現(xiàn)10~20位精度可調(diào)ADC通過(guò)可測(cè)量的輸入電壓最大值與要實(shí)現(xiàn)的ADC的位數(shù)可計(jì)算出ADC的分辨率,,再通過(guò)式(3)可求出R100與R103的比例關(guān)系。按照R100與R103的比例關(guān)系修改其阻值,,即可實(shí)現(xiàn)要得到的ADC的位數(shù),。例如將本系統(tǒng)修改為20位ADC,則ADC測(cè)量精度應(yīng)該為59.1 V/220=0.056 mV,。由式(3)可知0.056=6x0.292xR100/R103,,所以修改R103與R100的比值為312.8,即可以實(shí)現(xiàn)20位的ADC,。通過(guò)此方法可實(shí)現(xiàn)10~20位精度可調(diào)的ADC,。
2.4 硬件設(shè)計(jì)說(shuō)明
   
U100是由運(yùn)放OPA177F組成的電壓跟隨器,具有輸入阻抗高,,輸出阻抗低的特點(diǎn),,在本系統(tǒng)中的作用是實(shí)現(xiàn)匹配U101的輸入電阻和提高對(duì)輸入電壓分壓的精確度。R101和R100第二級(jí)減法運(yùn)算電路的輸入匹配電阻,,其阻值不宜小于10 kΩ,,太小會(huì)影響ADC的測(cè)量精度。R104為限流電阻,,防止電流超過(guò)VD100的最大額定電流,。
    R117和R118組成分壓電路,在R118上的電壓為45 mv,,可抵消運(yùn)放的零漂,。若不加此分壓電路且DAC輸出為零時(shí),經(jīng)過(guò)實(shí)際測(cè)量TP102點(diǎn)的電壓約為120 mV,這是由運(yùn)放的零漂造成的,,會(huì)影響ADC的測(cè)量精度,。在每一個(gè)運(yùn)放輸入端添加了0.1 μF的電容,去除高頻信號(hào),,提高輸入信號(hào)的穩(wěn)定性,。

3 系統(tǒng)軟件設(shè)計(jì)
   
軟件部分主要功能是對(duì)輸入電壓的測(cè)量。因?yàn)橛布O(shè)計(jì)中,,運(yùn)放和電阻本身的參數(shù)存在誤差,,所以它們組成的放大電路的放大倍數(shù)存在誤差,從而造成ADC測(cè)量產(chǎn)生誤差,。因此,,傳統(tǒng)方法直接利用它們組成的放大電路的計(jì)算公式(式(2))計(jì)算出的輸入電壓值誤差比較大,電壓跳動(dòng)明顯,。因此,,在系統(tǒng)第一次測(cè)量輸入電壓前,首先通過(guò)軟件設(shè)計(jì)建立輸入電壓校正表校正的方法實(shí)現(xiàn)減小誤差,。
    校正表是在第一次測(cè)量之前建立的數(shù)據(jù)表,,作用是通過(guò)此表觀察輸入電壓值與測(cè)量值之間滿足何種曲線關(guān)系。在測(cè)量輸入電壓時(shí),,通過(guò)得到的曲線關(guān)系選擇拉格朗日插值算法,,并將測(cè)量的值代入選擇的拉格朗日插值公式,計(jì)算出較為精確的輸入電壓值,。
3.1 軟件實(shí)現(xiàn)過(guò)程
   
軟件設(shè)計(jì)過(guò)程主要包括MCU的ADC進(jìn)行初始化,建立輸入電壓校正表,,計(jì)算表達(dá)式(5)的值,,拉格朗日插值計(jì)算輸入電壓,顯示輸入電壓值,。軟件設(shè)計(jì)流程如3所示,。


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

4 結(jié)束語(yǔ)
   
本文基于NXP的LPC2368,,利用其內(nèi)部集成的ADC和DAC,實(shí)現(xiàn)高精度且精度可調(diào)的ADC,這種方法容易實(shí)現(xiàn),,可以應(yīng)用在眾多數(shù)據(jù)采集領(lǐng)域,,如傳感器的數(shù)據(jù)采集、電壓信號(hào)的測(cè)量等,,只要選用的MCU自帶ADC和DAC,,就可以采用本文方法實(shí)現(xiàn)最高精度達(dá)20位的高精度且精度可調(diào)的ADC。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。