基于片上ADC/DAC实现精度可调ADC的方法
。按照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,这种方法容易实现,可以应用在众多数据采集
- 12位串行A/D转换器MAX187的应用(10-06)
- 低功耗、3V工作电压、精度0.05% 的A/D变换器(10-09)
- 12位串行A/D转换器的原理及应用开发(10-09)
- 在射击探测器中增加口径确定功能的简单电路(11-13)
- 一种折叠共源共栅运算放大器的设计(11-20)
- 深入解析:模拟前端模/数转换器的三种类型 (11-26)