本期要分享的是第三款两线制4~20mA的实现方式(也可以做为仪表的无源4~20mA的实现方案),电路图如下所示,主要由逻辑门,LDO,基准源,运放和三极管组成:

电路实现原理:
电路通过外部供电,将外部供电通过LDO输出5V给单片机MCU供电,同时这个5V也给反相器做供电,单片机的MCU通过定时器输出PWM给反相器输入端,反相器输出后通过电阻分压以及二阶RC滤波后(Vdac = 0~0.6V),控制后级的恒流源电路,输出公式为:
Iout = (1.2V-2*Vdac)/49.9Ω
通过上述公式,可以看到,当Vdac等于0V的时候对应输出24mA,当Vdacn输出0.6V的时候对应恒流源输出0mA。输出保持线性。
那么我们也就一步步分析一下他的输出公式和控制侧PWM的关系吧。
首先在第一个反相器的左侧输出的PWM的占空比是D,那么经过两级反相之后,占空比依旧是D,然后我们看到这个两级反相之后他是加了一个电阻的分压网络,分压之后5V的PWM波就变成了幅值为0.6V左右的方波,那么整流之后最终施加到运算放大器反相端的电压也就是D*0.6V:
5V*6.4k/(47k+6.4k)≈0.6V

然后我们接着就分析一下这个电路的公式推导吧。首先我们通过刚才的分析知道了第一个公式,就是:
Vn = 0.6V*D
然后我们又可以知道在R20(检流电阻)下方的电压是- iloop*R20
Vsense = - iloop*R20
然后基准有U10输出的电压值是1.2V的基准值。
根据叠加定理或基尔霍夫电压电流定律可以求Vp,求得Vp为:
Vp=(Vsense+1.2V)/2
Vp = 0.6V- iloop*25Ω
然后又由于Vp=Vn,所以联立方程可以求取:
iloop ≈ (0.6V - 0.6V*D)/25Ω
然后下面是搭建的简化版的仿真图,可以看到输入电压为0V的时候,环路电流为24mA。当输入电压为0.6V的时候,环路电流为0mA。对输入电压进行扫描,可以看到环路电流与输入电压呈线性对应关系。


设计缺陷:
第一点,这个反相器的供电是由LDO线性稳压器提供,稳压器的精度会直接影响到PWM二阶滤波后的0.6V*D的精度,进而影响最终的环路电流精度。精度可以校准掉,但是温漂很难进行校准。并且ADJ版本的反馈电阻的温度漂移也会直接影响到最终的环路电流的输出精度。他这个电路用ADR3412完全是在浪费,因为他的主要精度不由ADR3412主导。精度被LDO限制住了。


第二点,在输入端口位置并没有加防反接二极管,如果外部电源反接,有可能导致电路损坏。

第三点,这个是值得注意的一点,因为最终的输出iloop并非上述我们推算的公式,我们刚刚推算的公式是个大概的式子。实际的输出中,iloop环路电流会包含蓝色分支带来的误差电流。
ierror = (1.2V - 0.6V*D)/R21
不过这个还能计算出来,软件上应该可以做优化补偿掉,不算什么特别大的问题。仿真如下所示,可以看到这个误差电流ierror会随输出也是线性变化,最大是在输入为0V的时候,此时Ierror为12uA,最小是在输入为0.6V的时候,此时ierror为6uA。


好的,那么本期的分享也就到此结束了,感谢你的观看,谢谢~
