成都控制板开发:STC单片机IO引脚驱动不了光耦PC817的原因及解决(带PC817参数及驱动电路)

发布时间 2023-03-31 21:53:26作者: yonkotech

这是一个单片机通过光耦来信号隔离,驱动外部负载的电路。单片机为STC15系列,光耦为PC817,如图 1,光耦的阳极输入端接到单片机的P20-P23引脚,光耦的输出DJ1-DJ4接到外部电路。

但是在改变P20的电平时却出现了问题,并不能改变DJ1的电平,怎么回事呢?

1、是限流电阻的问题吗?

先看看光耦的参数表。

 

由图 2和图 3可知,PC817输入侧的最大允许电流为50mA, 并且只需让输入侧电流大于3.2mA就能让光耦工作。

 

   由图 4可知,光耦输入侧光电二极管的压降为1.2V,接到5V单片机后,一般需加限流电阻,限流电阻最大值R1=(5V-1.2V)/3.2mA=1.18KΩ,限流电阻最小值R2=(5V-1.2V)/50mA=76Ω,那么图 1中选择的限流电阻为660Ω,是合适的。

那么,又是什么原因导致光耦不能被控制呢呢?再看看STC15单片机引脚的参数。

2、STC15单片机P2引脚的参数

看图 5,原来,STC15单片机的P2引脚上电默认为准双向口模式,灌电流可达20mA,但是拉电流只有270uA, 那么当P2引脚输出1时,是不可能达到PC817需要的3.2mA的,那么在这个准双向口模式下,不能驱动光耦。

3、该怎么解决呢?

3.1 方法1:设置P20-P23引脚为推挽输出模式

将对应的P20-P23引脚设置为推挽输出模式,那么该引脚的输出电流最大可达20毫安,可满足驱动光耦的要求。

要改变P2引脚的模式只需设置寄存器P2M1, P2M0即可。

3.2 方法2:将光耦输入侧改为灌电流电路

如图 6,将光耦输入侧的阳极接电源正极,阴极接入单片机的引脚,形成灌电流的电路,那么在准双向口的模式下,STC15单片机也能驱动光耦。

当然,可能不止STC15单片机有这个问题,其他也许也有,具体需要查各个单片机的手册。如有单片机、PLC、电路板、控制器/箱、仪器仪表、机电设备或系统、自动化、工控、传感、数据采集、自控系统、控制系统,软件、APP开发设计定制需要,可联系 Q:2531二六3726

修改的原则就是,能动程序就不动电路,毕竟动电路要花钱。