当前位置:首页 > 模拟 > 模拟
[导读]在数据采集系统中,由于成本限制和系统其他模块功能要求,系统中MCU的ADC精度有时无法满足系统测量精度要求。基于上述原因,提出一种利用MCU自带的10位ADC和DAC,结合运放、电容、电阻等元件搭建的外围硬件电路,实现将MCU自带的ADC转换为精度可调的ADC。软件设计是通过校正方法减小由硬件导致的ADC测量误差。实验结果表明,该系统可实现10~20位精度可调的ADC,测量精度最高可提高1 024倍,能够满足大多数情况下的测量精度要求。

某系统的A/D模块需实现检测输入电压值,变化范围为0~58 V。主芯片选用NXP公司的ARM7系列的LPC2368,片上自带10位ADCDAC,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.292x10-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.92x10-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=6x0.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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭