某老师的名号早在几年前就略有耳闻,这几天躲在床上哎呦之余无意中刷到了他在头条的一个教学视频,感觉有点大跌眼镜,大抵不是他本人录的视频吧;但无论如何,他应该适当把关,否则传授错误的知识,愧对粉丝。
视频中讲到的要点
视频中分析的电路
他在视频中提到了几个要点:
1)这是一个电机的驱动电路
2) 运放输出DAC是一个跟PWM占空比一样的方波
3) DAC是连接到电机驱动电路中的MOS管的G极,通过控制MOS管的通断来控制电机
几个知识点
1)工控设备的模拟量输入接口
在工控领域,伺服电机、阀门等设备可能会提供一些模拟量的输入控制接口,常见的模拟量输入接口包括:4-20mA电流输入和0-10V/0-5V电压输入。
其中,4-20mA电流信号有以下特点:
- 4-20mA可以实现两线制,即供电线和信号线可以合二为一,从而节省导线,而电压信号至少需要三根线
- 不易受寄生热电偶和沿电线电阻压降和温漂的影响,可用非常便宜的更细的双绞线导线
- 在电流源输出电阻足够大时,经磁场耦合感应到导线环路内的电压,不会产生显著影响,因为干扰源引起的电流极小,一般情况利用双绞线就能降低干扰;
- 电容性干扰会导致接收器电阻有关误差,对于4-20mA两线制环路,接收器电阻通常为250Ω(取样Uout=1~5V)这个电阻小到不足以产生显著误差,因此,可以允许的电线长度比电压遥测系统更长更远;
- 各个单台示读装置或记录装置可以在电线长度不等的不同通道间进行换接,不因电线长度的不等造成精度的差异;
- 将4mA用于零电平,使判断输送线开路或传感器损坏(0mA状态)十分方便。
2)数模转换的两种办法
为了对接模拟量输入接口的设备,控制器需要输出模拟量信号,一般来说可以通过控制器处理器的数模转换DAC模块输出模拟量。
除此之外,PWM输出再通过低通滤波电路滤成直流也是比较常用的做法。
特别当一些便宜的处理器没有DAC模块时,或者输出的模拟量需要隔离时,采用PWM的方法是非常好的选择。
3)模拟量信号的输出隔离
为了避免设备的控制器电路之间的相互干扰,降低噪声,以及避免高压串入控制器或者设备,对设备安全以及人身安全造成威胁,需要通过电气隔离切断控制器与设备之间的电气通路。
因此,控制器输入的模拟量信号需要经过光电隔离之后再接入设备。
如果是DAC的输出,一般需要通过V/F变换变成数字信号,经数字光耦传到设备端,再转成模拟信号;
或者是通过线性光耦,直接将模拟量传到设备端;
如果是PWM的输出,则可以直接通过数字光耦传到设备端之后,再通过低通滤波电路滤成直流电压信号。
4)PWM信号的滤波
PWM信号的滤波比较简单,一般只需要通过如下的R,C低通滤波电路就可以滤成纹波很小的直流电路。
但是,需要根据PWM信号的频率选择合适的电阻和电容。
低通滤波电路
假设PWM的频率为,周期为,高电平电压为,占空比为,
该RC低通滤波网络的时间常数,C1两端的电压为,
当时间常数远大于周期,一般取;
,
纹波系数为,
输入到设备的直流信号的纹波应该尽量小,设备才能平稳的运行;
比如阀门的控制,如果输入信号的纹波过大,可能阀门的开度会在某一个范围内一直波动,阀门的执行机构一直运转,造成机械寿命迅速下降。
有些设备可以设置控制死区以过滤纹波,避免这种情况的发生。
从上面的公式可知,为了降低纹波,需要增加时间常数,但是增加时间常数又会降低整个控制系统的响应时间,特别是闭环的控制系统,可能无法对负载的变化快速响应,影响性能。
比如跑步机的控制,时间常数过大,对负载变化的响应变,可能会在跑步冲击时,会有明显的运行卡顿现象。
视频中的电路的分析
处理器输出的PWM信号经过Q3,通过光耦PC817隔离,经过Q4反相之后,再经过R13,C6构成的低通RC滤波网络滤成直流,送入运放U14的同相输出端,最后再从运放输出端送到设备的模拟输入接口。
在该电路中PWM的频率1kHz,周期为1ms,
低通RC滤波网络的时间常数,
仅为PWM周期1mS的10倍,可以预见,得到的直流电压纹波比较大,
当占空比为50%时,纹波应该在
,
这与仿真结果一致,
仿真结果
运放输出端的电压大概为:
当占空比为100%时,LM358并非轨对轨运放,运放大概仅能输出12V-1.5V=10.5V。
所以PWM的占空比的可调范围应该在0%-87.5%之间;
改进的电路
根据以上的分析,我觉得:
这个是通过PWM实现DAC数模转换隔离输出,控制具有0-10V模拟量输入接口的设备的电路。
而在某老师的教学视频中,却被说成是输出PWM信号控制MOS管的G极,可以看出,该老师既没有理论基础,又没有实践经验,实在是不应该。
下图是我改进的电路,
改进后的电路
- 处理器的GPIO口的拉电流最高可以到20mA,可以直接用IO口驱动光耦,省去一级三极管电路,在该电路中,当R1选择为300Ω时,拉电流大概为(5-1.2)/300=12.7mA,完全可以承受;
- 从实际经验来看,当传输数字信号时,光耦初级的电流越大,则次级数字信号的上升和下降沿越抖,边沿对全工作温度范围内的输出精度影响越小,需要在边沿影响和拉电流大小之间做一个平衡,选择合适的R1阻值;
- 光耦的初级以及三极管的BE极之间并联了一个泄流电流,避免漏电流让三极管误导通,误输出10V电压;
- 增大RC滤波网络中C的电容值,以降低输出电压的纹波,但是副作用可能会影响响应速度变慢,也可以增加PWM的频率来降低纹波,但是PWM的频率增加之后,光耦以及三极管的上升,下降沿对输出精度,分辨率的影响会增大。
- 运放的输出端和反相端之间并联了一个100nF的小电容,以提高运放的稳定性,防止自激震荡。
- 失效情况,当光耦发生故障时,整个电路应该输出0V电压,避免设备误动作;
仍要注意几个问题:
1) 当占空比为0时,Q1的CE极饱和导通电压可能会到100mV左右,使得输出电压不为0V
2) 运放输入失调电压的影响,以及+12V电源精度的影响
3) 处理器、三极管、运放失效时,可能导致的后果分析