某体系的A/D模块需完成检测输入电压值,改动规模为0~58 V。主芯片选用NXP公司的ARM7系列的LPC2368,片上自带10位ADC和DAC,ADC丈量输入电压规模是0~3 V,而DAC的规模是0~3 V。传统办法是直接将输入电压送入ADC法满意精度要求,但输入电压的改动规模大于ADC的输入电压规模。根据此,这儿给出一种使用MCU自带ADC和DAC,并结合运放、电容、电阻等元件树立外围硬件电路,完成10~20位丈量精度可调的ADC的办法。
1 高精度ADC规划原理
输入电压经过电阻分压发生电压U入,送入由运放和电阻组成的减法运算电路的同相端,分压的原因是输入电压最大值大于运放的最大输入电压。MCU的DAC输出经过同相份额运算电路扩展之后发生与U入附近的电压U近,送入减法电路的反相端。同相份额运算电路的作用是扩展DAC的输出电压规模,使U入和U近的最大值近似持平。经过减法运算电路之后的电压差值U差经过箝位电路送入MCU的ADC,经过读ADC寄存器的值可得U差的值。箝位电路是避免ADC的输入电压超越量程,而导致焚毁MCU。
在丈量时,由软件操控改动DAC寄存器的值,然后改动DAC输出电压值,使U差的电压值在量程规模(0~3 V)之内。此刻经过读DAC和ADC的寄存器的值,可得DAC输出电压与送入ADC的电压U差的值。依据DAC的输出电压和同相份额运算电路公式可得U近电压值,依据减法电路公式、U差和U近的值可得输入电压值。
体系硬件框图如图1所示。
2 体系硬件规划
图2为完成17位ADC原理图。U101、R100、R101、R102、R103组成减法电路,U102、R108、R109、R116组成同相份额运算电路。VD100组成箝位电路。VR是由基准电压源发生的3 V的基准电压。R117和R118组成分压电路,在R118上的电压为45 mV可抵消运放的零漂。ADO是MCU的ADC通道0的输入端。
图2所示的电路尽管仅仅完成17位ADC,但经过修正几个特定的电阻阻值就可完成调理丈量输入电压规模和ADC丈量分辨率。经过修正同相份额运算电路中R109与R116份额值,可完成调理输入电压的丈量规模;经过修正减法电路中的R103与R100份额值,可完成调理ADC的分辨率。下面结合完成17位ADC硬件规划电路图,详细阐明怎么完成17位高精度ADC、调理丈量输入电压规模和完成10~20位精度可调的ADC。
2.1 17位ADC的实琨进程
关于一个n位的ADC,其分辨率为可丈量最大输入电压值与2n的比值。因而,此电路图可完成的ADC的位数能够经过输入电压的最大值和分辨率核算得出。
1)核算输入电压丈量规模的办法 由图2可知,ADC的输入电压核算公式如下:
式中,VIN是输入电压,VDAOUT是当ADC的输入电压处于量程规模之内时DAC电压,VDAO是ADC输入电压。
由式(2)可知,当DAC的输出电压和ADC的输入电压刚好到达最大值3 V时,输入电压为59.1 V,此电压值为体系可丈量的最大输入电压值。由此可见输入电压的丈量规模是0~59.1 V。
2)ADC分辨率的核算办法 当DAC的输出为零时,即VDAOUT=0时,由式(2)可知输入电压VIN与VADO的电压的联络为:
VIN=VADO/10。MCU的ADC位数是1O位、最大输入电压是3 V。因而,ADC分辨率为0.292 mV。
3)完成17位ADC依据输入电压最大值与ADC分辨率的比值核算出此电路图完成的ADC的位数。由59.1/(0.292×10-3)=202 397=217.6,能够看出此电路完成了17位的ADC。
2.2 调理丈量输入电压规模的办法
因为VADO和VDAOUT的最大值都是3 V,由式(2)可知,可丈量的最大输入电压值是由R100、R103、R116、R109决议的。改动R100与R103的比值会影响ADC的丈量精度,因而,调理丈量输入电压规模首要是经过调理R116与R109的比值。由式(2)简单看出,当R116添加时,丈量电压输入规模添加,R109添加时丈量电压输入规模减小。
2.3 完成10~20位精度可调ADC的办法
由17位ADC的完成进程可知,此电路完成ADC的位数是由丈量输入电压最大值和ADC的分辨率决议的。所以在改动ADC的位数时,要经过改动丈量输入电压规模或许ADC分辨率。可是,体系丈量输入电压规模是固定的。因而,可经过改动ADC分辨率完成ADC的位数改动。
1)调理ADC分辨率的办法当DAC的输出电压为零时,将式(2)化简为式(3):
由式(3)可知,当MCU的ADC改动一个电压刻度值时,VIN改动6R100/R103。ADC位数是10位、最大输入电压是3 V。因而,ADO分辨率为3 V/1 024=2.92 mV,ADC的分辨率为2.92×10-3x6R100/R103。由此可见,R100添加时,分辨率下降;R103添加时,分辨率进步。
2)完成10~20位精度可调ADC经过可丈量的输入电压最大值与要完成的ADC的位数可核算出ADC的分辨率,再经过式(3)可求出R100与R103的份额联络。依照R100与R103的份额联络修正其阻值,即可完成要得到的ADC的位数。例如将本体系修正为20位ADC,则ADC丈量精度应该为59.1 V/220=0.056 mV。由式(3)可知0.056=6×0.292xR100/R103,所以修正R103与R100的比值为312.8,即能够完成20位的ADC。经过此办法可完成10~20位精度可调的ADC。
2.4 硬件规划阐明
U100是由运放OPA177F组成的电压跟从器,具有输入阻抗高,输出阻抗低的特色,在本体系中的作用是完成匹配U101的输入电阻和进步对输入电压分压的准确度。R101和R100第二级减法运算电路的输入匹配电阻,其阻值不宜小于10 kΩ,太小会影响ADC的丈量精度。R104为限流电阻,避免电流超越VD100的最大额定电流。
R117和R118组成分压电路,在R118上的电压为45 mv,可抵消运放的零漂。若不加此分压电路且DAC输出为零时,经过实践丈量TP102点的电压约为120 mV,这是由运放的零漂形成的,会影响ADC的丈量精度。在每一个运放输入端添加了0.1 μF的%&&&&&%,去除高频信号,进步输入信号的稳定性。
3 体系软件规划
软件部分首要功用是对输入电压的丈量。因为硬件规划中,运放和电阻自身的参数存在差错,所以它们组成的扩展电路的扩展倍数存在差错,然后形成ADC丈量发生差错。因而,传统办法直接使用它们组成的扩展电路的核算公式(式(2))核算出的输入电压值差错比较大,电压跳动显着。因而,在体系第一次丈量输入电压前,首要经过软件规划树立输入电压校对表校对的办法完成减小差错。
校对表是在第一次丈量之前树立的数据表,作用是经过此表调查输入电压值与丈量值之间满意何种曲线联络。在丈量输入电压时,经过得到的曲线联络挑选拉格朗日插值算法,并将丈量的值代入挑选的拉格朗日插值公式,核算出较为准确的输入电压值。
3.1 软件完成进程
软件规划进程首要包括MCU的ADC进行初始化,树立输入电压校对表,核算表达式(5)的值,拉格朗日插值核算输入电压,显现输入电压值。软件规划流程如3所示。
设X为MCU的DAC数字量十进制的值,Y为MCU的ADC数字量十进制的值。
由式(4)可得式(5):
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。
4 结束语
本文根据NXP的LPC2368,使用其内部集成的ADC和DAC,完成高精度且精度可调的ADC,这种办法简单完成,能够应用在很多数据收集范畴,如传感器的数据收集、电压信号的丈量等,只需选用的MCU自带ADC和DAC,就能够选用本文办法完成最高精度达20位的高精度且精度可调的ADC。