51单片机上电瞬间I/O口高电平的研究-张兆友

本文介绍了51单片机在上电瞬间I/O口可能出现的高电平问题,该问题可能导致安全风险。作者通过实验分析了网友提出的更换三极管类型和添加下拉电阻两种解决方案,并发现这些方法各有局限。最终,作者提出利用电容吸收瞬时高电平的方法,通过选择不同电容值来避免三极管误导通,同时讨论了电容参数选择对效果的影响。实验证明,该方法能够消除瞬时高电平,但可能导致一定延迟。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

51单片机上电瞬间I/O口高电平的研究

  • 作者/张兆友,山东省宁阳县职业中等专业学校
  • 电动车充电原理图
    在这里插入图片描述

去年我设计了一款基于单片机的电动车充电定时器,在设计过程中,发现了一个细节问题:单片机在开机时出现的高电平,图1是我设计的电动车充电定时器的控制输出部分,在电路中使用了89C2051单片机,电路要求P3.7的初始状态为低电平,当按下按键“ON”后才输出高电平,使继电器动作来控制主电路。由于单片机开机瞬间P3.7会输出高电平,所以在通电的瞬间Q1会瞬间导通,由于电路中接的是220V交流电,可能会对操作者造成伤害。现在就把这一问题的发现及处理方法和大家一起分享。

网友采取的方法

  • 通过上网查阅,网友给出了两种方案:一种是更换三极管的类型把NPN类型的8050更换为PNP类型的8550;另外一种方法是为IO添加下拉电阻。

我对这两个方法都进行了实验:当我把三极管8050改为8550时,利用程序设置“OUT”初始状态为高电平,Q1截止,按下“ON”键后,Q1导通;当需要关断三极管时,让“OUT”输出高电平5V,三极管却没有被关断。仔细分析后可知,本电路采用双电源,VC1采用12V电源,单片机供电为5V,当输出高电平5V时,仍然满足饱和的外部条件而不能退出饱和。因此,第一种方法只能适用于三极管、单片机使用同一5V电压时的情况。
对于第二种解决方法,网友做了一些实验,实验原理图如图2所示,其实验过程及结果为:为10添加一个5k的下拉电阻R65,测试有效,上电瞬间不是高电平了;更换R65为30k下拉电阻,依然有效,上电瞬间I0的电压被拉到低了;再换为60k电阻,也可以;但后面程序运行时候现象就不同了,如果使用5k电阻,那么l/0(DO2)无法启动9013,而30k、60k可以正常启动或关闭9013.还有一个现象,就是如果使用万用表电压档对DO2处进行电压测量,会导致9013断开,而后再无法通过控制10电平启动9013,必须电路板重新上电才能再启动。
从图2电路可知,由于单片机的驱动能力有限,如果加下拉电阻,会降低其驱动能力,会对电路造成影响。

在这里插入图片描述

对单片机瞬间高电平的测试

为解决这一问题,我用示波器对这一高电平测试并进行录像,逐帧观察。在电路中,P3.7的初始状态设置为低电平,当按下“ON”时,转为高电平使Q1饱和导通。在通电瞬间,用示波器测出的波形如图3所示。经计算可以得出这一高电平的时间大约为40ms,在这一时间内Q1饱和导通会使继电器闭合。

利用电容吸收瞬时高电平

如何降低瞬时高电平呢?我想到了利用电容的暂稳态把这一高电平吸收,使输出的高电平降低,不足以使三极管导通。测试电路如图4所示,在图中P3.7端口并联了一个电解电容C7。
工作过程:当单片机得电后未运行程序的瞬间,P3.7输出高电平,但由于电容C7两端的电压不能突变,所以C7正极的电压将缓慢增大,在单片机输出高电平的时间内,升高的电压如果达不到三极管的导通电压,则Q1不会产生误动作。当P3.7通过软件变为低电平时,C7上的电压回流到单片机,对电路不会造成影响。

电容器参数的选择实验

由原理可以得出,在51单片机的1/O外部并接一个电解电容可以把瞬间高电平吸收掉但是电容器的参数对这一吸收影响较大,我选用了10F、47uF和100uF的三个电容器。

  • 图1、外部并接10uF的电解电容

当在外部并接10uF的电容器时,输出电压的峰值接近3.5V,这一电平能使三极管导通;另外充完后的电压回流时间较短,电容器上的电压基本上是瞬时消失。

  • 图2、外部并接47uF的电解电容

当在外部并接47uF的电容器时,输出电压的峰值接近2.3V,这一电平还能使三极管导通;另外充完后的电压回流时间变长,但电容器上的电压会迅速降低到0.3V以下。

  • 图3、外部并接100uF的电解电容当在外部并接100uF的电容器时,输出电压的峰值接近0.5V,这一电平已经不能使三极管导通;另外充完后的电压回流时间变得更长,但不会超过5ms。

实验结果

通过实验,在单片机I/O口并接电解电容后,可以消除其输出的瞬时高电平,符合我设计的电路要求,不过这种方法也存在一定的弊端:通电瞬间,后级电路不会因为单片机的瞬时高电平而得电,但在电路接通时会有一定的延时通电,单片机控制断电时不会即时断电,也会有一定的延时。
不过对我设计的电路来说,电动车充电时间在8个小时左右,毫秒级的时间对电路不会造成影响。
在这里插入图片描述
-👉 这是一篇在道客巴巴网站上的一片PDF文档:https://www.doc88.com/p-0724520807266.html

  • 🥕为了方便学习,将内容转载过来,供有需要的学习。

🎉个人见解

对于第一种方案应该是可行的,只不过需要考虑一个不同控制电路外设驱动电压共地的问题,需要考虑单片机的电源地要和被控制电路的电源地相连。

📙其他相关资料

  • 📑STC手册相关内容:
    在这里插入图片描述
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值