搜索
写经验 领红包

有继电器引发对单片机驱动能力的思考吗(继电器对单片机干扰问题)

最近,我在用单片机制作一个简易的门禁开锁系统,用到的器件和电子模块有STM32单片机、矩阵键盘、光耦隔离继电器(12V单路)、电磁锁、RFID-RD522射频模块和指纹模块。在测试继电器的时候,发现12v的继电器触发端口的高低电平和数字电子的高低电平不是统一区分的。该继电器的高电平需要4.5v才能触发,但我使用的SM32单片机的IO口只能输出3.3v的高电平。为了测试该模块的好坏,就用了一块51单片机,这就引出了今天的话题。

在测试过程中,发现51单片机原本应该输出高电平的管脚在接了继电器模块后,电压直接被拉低到了3v。看到这个现象,就猜测造成此现象的原因应该是IO口驱动能力不足造成的。取下继电器模块,用万用表测了一下继电器的阻抗,400欧姆左右,相对来说,明显就是一个大负载。

这里介绍2个概念:拉电流和灌电流。

拉电流:IO口输出端向外界提供电流。相当于外界将电流从IO口拉向自己。

灌电流:IO口输出端从外界吸收电流。相当于外界将电流注入IO口。

单片机的数据手册上标明了每个端口的驱动能力,51单片机的端口最大的灌电流才6mA。6mA什么概念6mA的驱动电流要使负载达到5v电压需要多大的负载根据欧姆定律,至少需要接近1K的电阻。而上述继电器的阻值才400欧姆左右,当然输出达不到5v。

IO口驱动能力理解

以51单片机的P1口为例,我们看一下它的内部结构

当晶体管导通时,P1端口输出0(低电平)。当晶体管截止时,P1口输出1(高电平)。当P1端口接负载RL时,晶体管截止时,就相当于内部上拉电阻和负载RL串联。此时RL两端真的能够输出高电平吗

答案是不一定的!根据电阻分压。Vout = VCC/(1+R/RL)只有分母接近1的时候,输出才是高电平VCC。能够输出高电平的条件是:RL >> R 。而R是IO口内部固定的,是某一个值。我们可以得出串联电路中电流(驱动电流)的表达式,从表达式中,我们可以看出,负载小(电阻R大)的时候,需要的驱动电流就小,负载大(电阻R小)的时候,需要的驱动电流就大。

提高单片机的IO驱动能力

1、用低电平+非门的组合驱动。单片机输出低电平的时候的驱动能力要高于输出高电平时候的驱动能力,单片机输出0,经过非门就变成了1。

2、外部加三极管驱动电路。但需要注意的是,驱动一些电感性元器件的时候,一定要在电感性元器件两端加一个二极管来泄流(泄流二极管)。三极管导通的时候,电感性器件上肯定会有电流存在。当三极管截止时,由于电感电流不能突变,所以如果不加二极管续流,电感上的电流会直接加在三极管上,很有可能损坏三极管。

免责声明:本文内容由互联网优秀作者用户自发贡献,本站仅提供存储空间服务,不拥有所有权,不承担相关法律责任。若有涉嫌抄袭侵权/违法违规的内容,请与我们取得联系举报,一经查实立刻删除内容。本文内容由快快网络小涵创作整理编辑!