数字电位器万倍级调节精度的实现
2020-01-18谢瑞丰程磊杨李斌
文/谢瑞丰 程磊杨 李斌
电位器在电子电路中应用广泛,使用它可以方便地校正系统、调节放大器内的偏移电压或增益、调谐滤波器以及控制屏幕亮度等。数字电位器与传统机械电位器相比,拥有更高的可靠性和精度,电压毛刺更小。机械电位器更容易受到物理环境变化的影响,比如振动、冲击和游标污染等。而拥有整体结构的数字电位器,在所有上述情况下,都不会受到影响。
不同于传统机械电位器,数字电位器的滑动端游标是按抽头移动的,无法实现电阻的连续调整,但是每个抽头对应的阻值是恒定的,这使数字电位器有着很好的精确分压能力。抽头数量决定了数字电位器的调节精度,目前市面上数字电位器的调节精度最高达到1024抽头。
实现万倍级调节精度的数字电位器首先需要突破1024抽头分辨率,工程应用时主要通过堆叠或级联数字电位器等方案增加总抽头数以提高调节精度。传统的堆叠电路通常需要10个及以上的1024抽头数字电位器才能达到万倍级的调节精度,而采用级联电路仅需3个1024抽头数字电位器就可以将调节精度提升至万倍以上。级联连接的数字电位器也存在一定的缺陷,其游标抽头对应的电阻是非线性的,会影响调节精度。
本文在级联电路的基础上提出了一种误差消除电路结构与程序算法,减小了抽头电阻误差对精度的影响,实现了一种万倍级电压调节的高精度数字电位器。
1 实现万倍级调节的原理分析
如图1所示,3个电位器组成的级联电路,设单个电位器抽头数为N,级联电位器的抽头数可以提升至 N2。Rp的大小由数字电位器U3游标每移动一格时测得AW/BW端阻值改变量决定。3个1024抽头的数字电位器按图1搭建级联电路,抽头数增加至1048576,理论调节级数达到了百万级。这里的1048576是虚拟的,需要对3个数字电位器进行相干调整,才能实现级联数字电位器的游标抽头调节。
首先,引用公式1,它表示了级联电路的输入电压VA与输出电压V0的关系。
D与D3代表数字电位器游标位置所对应的抽头数,游标的抽头数从A端开始计数,游标在A端时对应抽头数为0,且有0≤D≤N-1,0≤D3≤N-1。D是第一级滑动抽头移动数值,填入数字电位器 U1和U2中。D3是第二级滑动抽头移动数值,填入数字电位器U3中。
其次,若按照公式1编写STM32内部程序会进行浮点运算产生误差,且1024的总抽头数对于1、2个抽头来说是很大的,视N为∞对公式1取极限,避免了浮点运算,将公式(1)化简为公式(2):
再次,设级联数字电位器游标抽头参数为n,通过公式(3)设置参数n可全局调整D与D3的值。即n除以1024的商作为粗调步数D,余数作为精调步数D3。
最后,游标抽头参数n决定了级联数字电位器实际接入电路中的游标抽头数,级联数字电位器的输入电压VA与输出电压V0在理想情况下满足等式通过软件程序对n值进行设定,用算法将其换算为D与D3,并填入级联数字电位器中,完成3个数字电位器游标抽头的相干调节。输出电压的实测值与理论值的偏差可以直观的体现级联数字电位器的调节级数与精度。
1.1 AD5292数字电位器
图1:由3个数字电位器组成的级联电路
图2:差分比例运算电路
本文采用3个1024抽头AD5292数字电位器组成级联数字电位器。AD5292数字可编程电位器带有16位SPI总线,可由单片机通过SPI协议对其进行编程,标称电阻50kΩ,电阻容差±1%,最大可处理33V端电压。
AD5292级联数字电位器的游标每滑动1个抽头时阻值的平均改变量为47.372Ω,因此级联电路中的Rp选用47 Ω 1%容差的金属膜电阻。
2 万倍级调节技术的难点
数字电位器存在非线性抽头电阻的问题,对输入电压的衰减能力与调节级数不匹配。AD5292级联数字电位器的抽头调节级数达到了百万级,输入电压VA=26.000V时,滑动抽头每移动一格,输出电压的平均改变量=25.4μV,接近Multisim 14.0软件模拟结果的24.8μV,调节级数为1023622。
将AD5292级联数字电位器游标设置为1抽头时,对输入电压的理论衰减能力应该是1048576倍,即输入端VA=10V时,理论输出值V0理论=9.54μV。但是输出端实际测得电压V0=20.158mV,输入电压VA只衰减了496倍。需要增设误差消除电路配合程序算法以优化级联数字电位器的调节精度。
3 万倍级调节系统的实现
3.1 增设硬件电路
在图1的级联电路输出端增设LM358减法电路,以提升级联数字电位器对电压的衰减能力,减小输出电压的误差。如图2所示的差分比例运算电路,存在以下关系:
级联电路的输出端口接在u12处,通过差分比例运算电路将u12与u11端口电压作减法运算后输出U0。使用LM358运放搭建此减法电路,单运放减法电路对于信号源的输入电阻较小,信号源电压衰减较大,需在集成运放的同相输入端和反相输入端加入LM358运放作为电压跟随器,提高输入阻抗,引入电压串联负反馈。u11电压是可调节的,由电位器Rb(W103 BOCHEN 3296旋转式微调电位器)提供u11,调整Rb阻值以改变需减去的u11的大小。增设了减法电路的级联电路如图3所示。
3.2 优化程序算法
在由公式3编写的游标抽头设置程序中,加入变量衰减倍数P,通过等式将衰减倍数P转换为游标抽头参数n,进而可对数字电位器的D与D3进行调控。编写算法使得衰减倍数P与实际测得输入输出电压之比相匹配,以实现万倍级调节的性能。STM32单片机MCU运行抽头设置程序,将衰减倍数P转换为D与D3并由开发板通过SPI总线将D与D3发送至对应数字电位器的RDAC寄存器中,改变接入电路中的抽头数,从而改变输出电压的大小。通过电脑串口改变单片机MCU中的P参数,在增设了LM358减法电路的级联电路的输出端检测输出电压U0,U0与理论值之间的差距得到了很大改善,但是当衰减倍数P>1500时,输出电压U0与理论输出值之间存在几个毫伏电压差,在大倍数衰减时,理论输出电压本就是毫伏级,几毫伏的电压误差是不能容忍的。填入衰减倍数P后,需对P值进行算法拟合优化,以减小输出电压U0的误差。使用Matlab对优化前后的P值点进行三次方曲线拟合计算,得出拟合函数表达式。
公式(4)是根据优化前后P值点拟合的函数表达式,其中Y代表优化后的P值,X代表优化前的P值,各系数是由Matlab根据测试数据计算得出(α1=1155.7、α2=2968.5、α3=6990.8、α4=7239.2、β=4875、γ=3083.1)。
图3:完善的级联数字电位器系统
优化程序算法后,填写1500至10000倍的衰减倍数P时,实测输出电压与理论输出电压的误差减小至0.23%。
4 性能测试分析
为检验级联数字电位器的调节级数与精度是否达到设计要求,测量输出电压值并与理论输出值进行比对。输入电压VA=10.000V时,上位机填入的衰减倍数由大到小,在10000至1内均匀取取点并记录输出电压,图4是使用Matlab绘制的实测输出电压曲线,并与理论输出电压曲线进行比对。当设置级联电位器的衰减倍数为10000倍时,从LM358减法电路输出端测到的输出电压为1.001mV,误差为0.1%。当设置衰减倍数为1时,输出电压为9.9327V,误差为0.6%。理论输出电压的曲线由公式 V衰减倍数 画出。从绘制的曲线中可以看出,实测值曲线与理论值曲线近乎重叠,拟合的非常好。
衰减倍数P在1至10000内调整时测得输出电压V0的平均误差为0.862%,级联数字电位器拥有了万倍级的调节能力,且拥有很高的精度。
5 结束语
级联数字电位器的抽头数增加到了百万级,输出电压的误差也随之增大。本文在级联电路的输出端增设LM358减法电路,编写算法减小输出电压误差,抵消了数字电位器非线性游标抽头对调节精度造成的影响,实现了万倍级电压调节能力的高精度数字电位器。
图4:1~10000衰减倍数 实测电压与理论值电压图像