变阻器是一种简单且随处可见的电路元件,主要组件就是一个电位器,该电位器连接两端成为一个可调的电阻。手动电位器的阻值范围从欧姆到兆欧姆,因此很容易选择最适合的标称电阻。但是,当某个应用需要数字电位器(Dpot)时,问题就变得棘手了。
与手动电位器相比,Dpot的电阻范围较窄,并且它们通常还存在游标电阻和电阻公差过高的问题,这些限制使得Dpot难以实现精密的变阻器。最近的EDN设计实例(DI)通过各种策略和拓扑解决了一系列Dpot相关的问题。
不过这些设计都是只能解决Dpot的一小部分问题,没有一个方案能解决所有问题,有些设计本身还会带来麻烦。例如,交叉失真、对电阻公差的敏感度未降低、编程电阻的非线性会降低分辨率等,以及纯粹变得更加复杂。
图1的电路也不是完美的解决方案。但它合成了一个精确的编程电阻,该电阻等于参考电阻R1线性的乘以U1的Rbw/Rab数字设置(端子B与游标电阻和总元件电阻之间的比率)。
图1:精密数字变阻器,可合成精确的编程电阻,该电阻等于参考电阻R1与U1的Rbw/Rab线性乘积。
它的工作原理如下。
R = (Va – Vb)/Ia
R = R1/(Raw/Rbw + 1) = R1 Rbw/Rab
Rab = Raw + Rbw = 5k-10k(通常)
其中,R为编程合成电阻,R1为参考电阻,Raw为A端与游标端之间的电阻,Rbw为B端与游标端之间的电阻,Rab为元件总电阻。
U1工作在“分压器”(电位器)模式下,用于设置反相放大器A2的增益。电位器模式使增益不受U1的游标电阻(Rw)和Rab的影响。它们实际上并不重要—请参阅Microchip MCP41XXX/42XXX datasheet数据手册中的图4-4。
对图1的方程进行数学推导,我们得到:
Ga2 = Raw/Rbw
其中,Ga2为A2的增益。此外,
R1两端的电压 = (Va – Vb) + Ga2(Va – Vb) = (Raw/Rbw + 1)(Va – Vb) = Rab/Rbw(Va – Vb)
流过R1的电流 = Ia = Rab/Rbw(Va – Vb)/R1
那么,由于R=(Va–Vb)/Ia:
R = R1*Rbw/Rab
Va的负载很小,因为A1的输入偏置约为10 pA,因此R1的阻值范围可以从几百欧姆到几兆欧姆,具体取决于应用。阻值应该是精确的,公差肯定是1%或更好,然后,开始编程和进行上述数学运算。
图2绘制了R和Rbw之间的线性关系。
图2:R和Rbw之间的线性关系表明电路合成了一个精确的编程电阻,该电阻等于参考电阻R1与U1的Rbw/Rab线性乘积。
对于图1中所示的A2和U1的组件选择,可能不需要补偿电容器(C1)。但如果选择速度更快的放大器或电阻更大的Dpot,则10pF至20pF的补偿电容可能会比较稳妥。
同时,我认为这一设计在同类产品中具有竞争力。但正如我之前所说它并不完美,那么除了是单端子拓扑外,它还有哪些地方不能完全解决数字变阻器(Digistat)的问题?
如图3所示,当R的编程值下降时,A2的增益(Ga2)必须上升。从右到左看,我们可以看到增益随着R从R1下降到R1/4才开始迅速上升,此时,Rbw/Rab=64/256 增益=3。这往往会夸大输入偏移、有限GBW和其他运算放大器的非理想性误差,同时在相对较低的信号电平下造成A2过早饱和的可能性。
图3:Ga2(红色)和R/R1(黑色)与x轴上的Rbw/Rab的关系图。当R的编程值下降时,Ga2必须上升。
这些缺点影响设计效用的严重程度(无论是轻微、严重还是致命)将取决于您需要将R/R1降低到多低,以及应用的其他具体情况。因此,它肯定不是完美的,但也许在某些方面还是有用的。
关于单端子问题,如果你的应用必须要双端子可编程电阻,你可以考虑图4。根据外部电路的不同,它可能不会产生振荡。
图4:复制并交叉连接图1的电路,以获得双端子可编程电阻。
(原文刊登于EDN美国版,参考链接:A precision digital rheostat,由Ricardo Xie编译)