项目需求:在某个项目中,使用下图所示光耦电路,进行3.3V频率信号PWM_BENG转换成5v的频率信号CTRL_BENG,CTRL_BENG直接送给气泵的速度调节端,气泵的抽气速度是通过调节CTRL_BENG信号的占空比来实现的。
STM32单片机通过调节PWM_BENG信号的占空比,经过光耦转换得到CTRL_BENG信号,从而控制气泵的抽气速度。
TLP521光耦电路
调试记录:
在调试过程中发现,当PWM_BENG信号频率为20KHz时,用示波器测量CTRL_BENG点的波形,发现波形失真严重。如下图所示。
波形已失真
经过查看TLP521 datasheet发现,TLP521的开关响应时间(ton+toff+ts=2+15+25=42us)较大,20khz的频率信号对应的周期值T=(1/20K)=50us,这样TLP521的响应时间太慢了,来不及开关,造成波形失真严重。
TLP521的开关时间参数
从上面可以看出,为了解决波形失真问题,只需要将TLP521光耦更换成开关时间更快的光耦即可!
首先第一个想法,就是直接将TLP521更换成其它光耦,PC817光耦与TLP521可以相互替换,但是仔细研究下图PC817的开关时间参数会发现,在负载电阻RL=1k时,PC817的开关时间tr+tf+ts=20+15+1=36us。可以看出PC817处理20khz信号,仍有可能会失真。
PC817开关时间参数
既然普通的光耦不能满足要求,那么更换成相同封装的高速光耦,应该可以了吧!但是在网上查找高速光耦,大部分都没有4脚直插或贴片封装的,因此如果要更换成其它封装的高速光耦,就只有等到下一版修改图纸和pcb图。
高速光耦没有4脚封装
解决办法
- 第一种解决办法:
仔细查看TLP521 的datasheet,如下图所示开关时间,减小负载电阻RL,可以有效的减小开关时间toff与ton,
TLP521开关时间与负载电阻RL之间的曲线图
第一次将下图所示中R52由4.7k改成1kΩ,同时将信号频率调低成15khz波形,测试观察波形,发现波形仍有失真。第二次直接将R52改成510Ω,信号有小幅度的失真,但是已经能够使得气泵正常运转了。
波形小幅度失真
这样虽然能够勉强驱动气泵,但是减小负载电阻,势必会增加电流,引起更多电能的消耗。所以这种方法,只是暂时在开发阶段使用,下一版PCB需要将TLP521改成高速光耦。
2.第二种解决办法:
将TLP521更换成6N137光耦,查看6N137的手册,此芯片有DIP-8或者SOP-8封装,开关时间都是纳秒级别,手册上直接标注能够处理超高频率的信号,可达10MHz。 本次20khz频率信号,处理起来肯定是没有问题。
只不过,后续还需继续针对6N137修改原理图与pcb。
6N137的特性简介
6N137管脚介绍
6N137开关时间参数
6N137测试电路
PC817光耦的开关/响应时间参数
综上所述,从这个项目中可以看出光耦的选取,一定要结合处理信号的频率来选取。如果不考虑信号频率,一旦待处理信号频率较高,势必会出现信号的失真。
当处理的信号周期快要接近光耦的开关时间时,这个时候我们应该选取开关时间更小的光耦。开关时间纳秒ns级别的光耦,开关速度肯定是要高于微妙us级别的光耦。
做项目的过程中,遇到问题别着急,从源头上找到问题,并想办法解决。
通过文字的方式记录解决问题的思路与方法。
下一次,再做这样的类似设计,就不容易犯同样的错误了。
不管是硬件设计还是软件设计,多分析,多总结,多记录!
来源:头条号 风口上的胖子