• 1
    回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

STC单片机IO引脚驱动不了光耦PC817的原因及解决(带PC817参数及驱动电路)

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

这是一个单片机通过光耦来信号隔离,驱动外部负载的电路。单片机为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开发设计定制需要,可联系。

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

全部回复(1)
正序查看
倒序查看
tanb006
LV.10
2
2023-11-09 18:19

这样的设计还是有些不够稳妥。

最好是IO口直接驱动低压MOS,或者三极管,由它们去负责光耦的导通。

这样可以减轻MCU的总电流消耗,当总电流超过一定值的时候,MCU可能会工作不稳定。

例如内部RC振荡器会有明显的频率变化,或者造成MCU内部发热过大,长期工作导致损坏。

1
回复