在我们日常生活中,用的最多的电子产品,比如电脑、手机等,一般都有开关机键,当我们想开机或者关机的时候,我们就必须长按(比如5s)才会产生动作响应。
图1 应用场景
这样设计的目的就是防止误操作,防止不小心碰到了,然后就开关机了,影响体感。
今天给大家分享一种按键防误触延时开关电路。
该电路主要由PMOS管,NPN三极管和按键组成。由按键S1和软件GPIO1来控制MOS管Q1的通断,达到控制设备开关机的效果。
图2 电路
电路分析:
步骤一:
按键S1按下,MOS栅极被拉低,Vgs=Vg-Vs=VA-12V<0V。
通过设定电阻R3,R4的阻值,为PMOS的Vgs提供一个合适的电压,因为不同MOS的gs不同,超过其工作范围,管子可能会坏。
阻值设定好后,MOS导通(电流流向路径①),电源12V向后级供电,比如DC/DC芯片,运放,单片机或电路其他部分;
图3 按键S1按下,电流方向
步骤二:
后级电路通电后,单片机开始工作,单片机的GPIO1产生一个高电平,从而三极管Q2开通,MOS管Q1栅极被拉低,MOS导通,完成供电自锁。自锁后,电路就就一直有电。
图4 Q2导通,电流方向
整个电路的工作过程很简单,那它是怎么做到防误触延时开关的呢?
细心的同学可能有注意到,图中还有一个GPIO2信号检测口:
当按键S1松开时,GPIO2被3.3V拉高,为3.3V高电平;
当按键S1闭合时,形成如图所示的电流回路,GPIO2被拉低,为0.7V低电平;
图5 按键S1按下,GPIO2检测电压发生变化
由上可知,单片机另外提供一个GPIO口用来检测控制信号(按键输入),我们可以设定一个时间,比如按键按下5s,即GPIO2从高电平变为低电平5s后,再触发GPIO1产生一个高电平,即使松开按键S1,MOS也会沿着电流路径②,从打开MOS,为后级负载供电。
这种情况下,在5s内GPIO1不是高电平,如果松开按键,Q1就不会打开,达到防误触开机的效果。
同理,当我们想关机时,假设长按5s关机,按下按键S1,单片机GPIO2检测到信号从高电平变为低电平5s后,再触发GPIO1产生一个低电平,这时松开按键,就可以关机了。
可以看出开关延时都是软件来做的,单片机开个定时器和IO口中断就可以解决。
可能有同学会问,图中D1,D2的作用是什么,可以不要吗?
图6 D1,D2的作用
①假设没有D1,即:D1短路。
当GPIO1为高电平时,Q2导通,GPIO2被拉低,MOS导通,此时按键不管怎么按都GPIO2都为低,即按键失灵,无法控制。
图7 没有D1,电流方向
如果有D1,就可以隔离三极管集电极低电平对于GPIO2控制检测口的影响,
即:当GPIO1为高电平时,Q2导通时,GPIO2不会产生变化,起到隔离作用。只能通过按键的开关来改变GPIO2的高低电平,进而通过控制按键按下的时间长短,来控制开关机。
②假设没有D2,即:D2短路。
图8 没有D2,电流方向
当按键松开、Q2关闭时,电流会沿着如图箭头所示路径,主电源12V会对单片机电源3.3V造成冲击,从而损坏单片机。
加上二极管D2,可隔离电源对于IO口和单片机电源的冲击。
另外二极管选型,选用普通的二极管即可。