设计目的
在仪表校准中,我们希望直流电压源的精度与分辨率能够足够的高,因为这是仪表能否校准好的关键所在。然而单纯使用单片DAC实现源的方法不仅成本高,而且各项性能并不能得到保证,特别是在动态范围和分辨率上会产生矛盾。因此就设想使用一片双通道的D/A转换器来实现,即使用一个通道来实现电压源的高精度,另一个通道来实现其对动态范围的要求。这样在节约了成本的同时,动态范围与精度也都达到了要求。经过分析,使用双12位D/A转换器LTC1590完全可以实现动态范围0~12.5V,分辨率为0.1mV的直流电压源的产生。
设计实现
设计的思路是先产生一个分辨率为0.02mV,动态范围为0~2.5V的基本电压信号Vstand,然后通过放大电路将该基本电压放大5倍,就可以得到 0~12.5V,分辨率为0.1mV的直流电压,从而实现高精度的电压源。因此,该设计中最核心的部分是标准电压信号Vstand的产生。
标准电压信号Vstand的产生
本设计中使用的是双12位D/A芯片LTC1590CN,示意图如图1所示。
D/A1、D/A2分别代表的是LTC1590中两个独立的、精度都为12位的D/A转换器。参考电压都采用AD780提供的2.5V电压。
D/A1用来提供粗调电压V1。D/A2输出的电压V2经过衰减200倍后得到精调电压,中间所加的精密数字电位器起调节分辨率的作用,最后精调电压与粗调电压相加便得到标准电压Vstand。
精密数字电位器采用的是8位256档的AD8400,设W为AD8400的调节比例(0≤W≤1),可以得到:V2’=V2×W
于是V1分辨率=2.5V/212=2.5V/4096=0.61035(mV)≈0.61 (mV),
V2”分辨率=V2’分辨率/200=W×V2分辨率/200=W×2.5V/4096×200 ≈0.003W(mV)
则V1=V1分辨率×N, V2”=V2”分辨率×M(N,M=0~4096的整数)
最终的输出电压V为V1、V2”之和放大5倍,于是有:
V=5×Vstand=(V1+V2”)×5=(V1分辨率×N+V2”分辨率×M)×5
由于V1是粗调电压,解决的是V的动态范围的问题,而V的最小分辨率是由细调电压V2”决定的,所以
V的分辨率=5×V2”分辨率=0.015W(mV)
由以上分析可知:使用这种方式得到的V的输出动态范围可以达到0~12.5V,而分辨率约为0.015W (mV),若W=1(即不采用AD8400),0.015mV与0.1mV不构成整数倍关系,单纯的由程序控制不能达到0.1mV的分辨率要求。这就是为 什么要采用精密数字电位器的原因。
当W=171/256时可以得到V的分辨率=0.015W =0.01mV
这样我们就从理论上得到了最后输出的电压源的分辨率可以达到0.01mV,不仅完全可以满足系统所要求的0.1mV分辨率,还留有充足的余量,使得V的输出可以通过对精密数字电位器以及D/A2的软件修正来进行校准,从而避免由于元器件温度漂移、D/A非线性误差等对输出造成的影响。
产生Vstand的电路图如图2,Vstand在图2中是网络标号STAND_VOL所代表的信号。
高精度电压源V的产生
将Vstand放大5倍输出即可得到最终需要的高精度电压源。该部分原理图如图3所示。
为了保证精度,整个系统的电路中所使用的运算放大器都是采用的高精度运放OPA2277PA。
AD780AN提供2.5V的基准参考电压,TPS76350与TC7660分别提供部分芯片需要的±5V电压,使用LT1316CS8构成24V的升压模块,这些部分的电路原理图在此不作详细介绍。
系统采用单片机SST89E58RD2进行控制,另外的功能模块以及外围的键盘输入、液晶显示电路在此不作详细介绍。最终的硬件实物如图4所示。
硬件电路搭好之后,通过单片机程序将AD8400的值设为(向AD8400的寄存器写数据),然后通过算法将预输出的电压值分别拆分成D/A1、D/A2各自需要输出的电压再将值写入LTC1590的寄存器中,便可从输出端得到直流电压V。
以上是整个系统的程序流程图,先前一直介绍的便是此过程校准仪所拥有的4个功能中的电压输出功能。
重写先前的算式V=5×Vstand=(V1+V2”)×5=(V1分辨率×N+V2”分辨率×M)×5,V1相对于最终输出电压V的贡献应该 是提供V1分辨率×5=0.61305×5=3.06525mV的改变量,然后通过V2来进行细调。但是实际不可能在整个动态范围得到恒定的 3.06525mV改变量,这点已经在调试的过程中得到了证实,而纯粹的使用程序消除不了这种由于器件非线性引起的误差。
于是需要测量具体V1对V贡献的电压值,再通过V2进行细调。如此的话需要测试整个V1的4096个值,这是现阶段实现不了的(在以后如果引入 自动测试的话或许可以进行)也是没有必要的。分析精调电压V2可以进行调节的范围为0.001×4096=40.96mV>30.6525mV,因 此V1可以以10倍的步进进行改变,如此需要进行测量的值最多在409个,能够做到。
具体实现的方法是:第一步,恒定V2的值为0,然后以10倍步进改变V1,即分别给V1写值0、10、20、30……4080、4090,记录 下的这些值即是对应的V1对V的贡献值;第二步,恒定V1为0,以较大步进例如100来改变V2的值,通过这些值计算出V2对应的平均步进,通过修改数字 电位器来使其满足0.01mV;第三步,把V1所对应的贡献电压值写入程序中;第四步,当要求输出某个电压时,先通过算式算出所需要的V1的值,再通过查 表得到V1对V的贡献值,然后通过算式确定V2的值,最后对V1、V2写值,得到最终电压V。
除了上述消除非线性误差的方法,还使用了针对线性误差的校准方式,在此不做详细描述,简单来讲是使用了单片机的IAP功能来记录误差然后运用算式进行消除。
测试实验
由于电压输出的动态范围0~12.5V,分辨率为0.1mV。因此,所包含的点数为125000。如此多的点数在测试时,不可能也无需完全测量,只需测量不同输出段的多个点,来说明系统整体的性能指标。
结语
观察上表,部分的输出电压有0.1mV的误差。这是由于在系统定标校准时(进行前述的消除非线性与线性误差的方式),采用的是HP34401进 行的系统定标,HP34401是五位半的万用表,与本系统的精度一致,因此在定标时就引入了系统误差,而在测试实验中依然采用的是HP34401,这就造 成了部分数据的测试误差。若采用六位半精度以上的万用表进行系统定标以及测试,相信精度以及测试结果会更好。不过如今以本人所拥有的实验条件已经得到了令 人满意的实验结果:即通过本文所阐述的此种方法确实能够低成本地实现高精度直流电压源。