新闻中心

EEPW首页 > 电源与新能源 > 设计应用 > 基于片上ADC/DAC实现精度可调ADC的方法

基于片上ADC/DAC实现精度可调ADC的方法

作者: 时间:2011-03-11 来源:网络 收藏

  3.1 软件过程

  软件设计过程主要包括MCU的进行初始化,建立输入电压校正表,计算表达式(5)的值,拉格朗日插值计算输入电压,显示输入电压值。软件设计流程如3所示。

软件设计流程图

图3 软件设计流程图

  设X为MCU的数字量十进制的值,Y为MCU的数字量十进制的值。

  则VDAOUT=XVR/1024,VADO=YVR/1024

  设K1=R116/R106,K2=R103/R100,则式(2)可化简为式(4):


  由式(4)可得式(5):


  3.1.1 初始化

  主要是对MCU的ADC进行初始化,主要包括ADC寄存器配置、选择I/O口的工作模式、选择ADC的通道、启动ADC。

  3.1.2 校正

  校正是在测量输入电压前,首先利用基准电压源输入多个基准电压值,并通过读MCU的ADC寄存器值记录对应的数字量的值,并将这两项的值保存到校正表中。在测量输入电压时,将所得的数字量的值利用拉格朗日插值算法代入校正表可得精确的输入电压值。

  1)校正表内容校正的过程主要是通过建立校正表建立起实际输入电压值与测量输入电压值的联系。校正表存放两项数据。一项是1~59 V的整数电压值,另一项是式(5)的和。因为系统测量的输入电压值是只保留到小数点后2位的近似值,而式(5)中包含测量的ADC和的十进制数字量值更为精确。由式(4)可看出式(5)的值与测量的输入电压值存在比例关系,所以它们与实际输入电压的曲线关系相同。因此,另一项的内容存放的是式(5)的和。

  2)建立校正表的过程从1~59 V,用电压源每隔1 V输入一次电压,通过读MCU的ADC和寄存器的值,记录每次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。



上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭