ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于CD4013的硬件自锁开关电路:低功耗设计、消抖与上电复位实战

基于CD4013的硬件自锁开关电路:低功耗设计、消抖与上电复位实战 1. 从机械按键到逻辑自锁为什么值得折腾这套电路做硬件的人大概都有过这种体验想给一个设备加个电源开关手头只有普通的轻触按键按下去通、松手就断根本锁不住状态。要么去翻抽屉找那种六脚自锁开关要么干脆用单片机写几行代码做软开关。但前者手感差、寿命有限、体积还大后者又得搭一颗MCU进去成本和功耗都不划算。我最近在做一个低功耗的便携采集板主控平时要休眠整机静态电流压到微安级别用MCU做软开关的话光是维持MCU待机就吃掉不少电。翻来覆去想了个办法用两个D触发器搭一个硬件自锁开关电路一个轻触按键按一下开机、再按一下关机纯逻辑器件实现不需要任何程序介入。实测下来静态功耗几乎可以忽略成本也就几毛钱。这套电路的核心器件是CD4013一颗双D触发器CMOS工艺工作电压范围宽3V到15V输入阻抗极高静态电流典型值只有零点几微安。用它做自锁开关本质上就是把按键的瞬时脉冲转换成稳定的电平状态再通过反馈回路把状态锁住。听起来简单但实际搭起来有几个坑按键抖动怎么处理、上电初始状态怎么保证、关断时怎么彻底切断后级供电这些都得想清楚。这篇文章适合谁看如果你正在做低功耗设备、想省掉机械自锁开关、或者单纯想搞明白D触发器在实战中怎么用那接下来的内容应该对你有用。我会从设计思路讲起把每一步的参数选择、计算过程、实操细节都摊开说最后附上我踩过的坑和排查方法。整个电路不复杂但细节决定成败。2. 整体设计思路与方案选型拆解2.1 为什么选D触发器而不是其他方案做自锁开关思路其实有好几条路。最简单的用三极管搭双稳态电路两个管子交叉耦合也能实现按一下翻转、再按一下翻转。但三极管方案有个问题输入阻抗低按键需要提供足够的基极电流才能触发翻转而且温度漂移会影响翻转阈值批量生产时一致性不好保证。另一条路是用555定时器把它接成施密特触发器或者双稳态模式。555的好处是驱动能力强但静态电流偏大双极型555静态电流在毫安级别CMOS版的7555虽然好一些但比起CD4013还是高出一个数量级。对于我这种追求微安级待机的场景555直接出局。还有用单片机的方案前面说了功耗和成本都不划算。而且对于纯粹想做个电源开关的需求上MCU属于杀鸡用牛刀。D触发器的优势在这里就很明显了。CD4013是CMOS器件静态电流极小输入阻抗高达10的12次方欧姆级别按键信号几乎不需要驱动能力。它的逻辑功能清晰D端决定下一状态CLK上升沿触发Q输出跟随DQ非输出相反。要做自锁只需要把Q非反馈回D端每来一个时钟脉冲输出就翻转一次。这个反馈结构就是经典的二分频电路也是自锁开关的核心。注意CD4013的CLK是上升沿触发不是下降沿。选型时如果手头是CD4013BE或者HEF4013都是上升沿触发逻辑一致。但如果是74HC74也是上升沿触发引脚兼容但电压范围窄一些3V到6V低功耗场景也能用。2.2 自锁开关的核心逻辑反馈翻转把D触发器的Q非输出接回D输入会发生什么假设初始状态Q为低、Q非为高那么D端就是高。来一个时钟上升沿Q翻转为高Q非翻转为低D端跟着变成低。再来一个时钟上升沿Q翻转为低Q非翻转为高D端又变回高。每来一个脉冲输出状态翻转一次这就是二分频也是自锁开关需要的“按一下开、再按一下关”的逻辑。但这里有个关键问题按键按下时会产生抖动一次按下可能产生几十个甚至上百个脉冲。如果不处理触发器会疯狂翻转最后停在哪个状态完全随机。所以消抖是必须的。消抖方案有两种硬件RC消抖和利用触发器自身的特性消抖。我选的是RC消抖加施密特触发器整形后面会详细讲参数怎么算。另一个问题是上电初始状态。CD4013有置位SET和复位RESET引脚上电时如果这两个脚悬空输出状态不确定。我需要在电路里加一个上电复位网络确保每次上电时Q输出为低后级电路处于关断状态。这个用RC加二极管就能搞定成本几乎为零。2.3 关断时彻底切断后级供电的设计自锁开关不只是逻辑状态翻转最终目的是控制后级电路的供电。如果只用Q输出去控制一个三极管或者MOS管关断时虽然逻辑电平是低但后级电路可能还有漏电流路径。我见过有人直接用Q输出接负载结果关断时负载上还有零点几伏的电压对于低功耗设备来说这是致命的。我的做法是用Q输出驱动一个P沟道MOS管控制整机电源的通断。P-MOS管接在电源正极和负载之间栅极由Q输出通过一个NPN三极管反相驱动。这样当Q为高时NPN导通P-MOS栅极拉低P-MOS导通负载得电当Q为低时NPN截止P-MOS栅极被上拉电阻拉到源极电压P-MOS彻底关断负载完全断电。这个结构关断漏电流只有MOS管的漏电流纳安级别完全满足低功耗要求。提示P-MOS选型时注意导通电阻和栅极阈值电压。如果系统电压是3.3V要选Vgs(th)在1V到2V之间的逻辑电平MOS管比如AO3401或者SI2301否则3.3V驱动不充分导通电阻会很大。3. 核心细节解析与实操要点3.1 CD4013引脚功能与关键参数CD4013是14脚封装内部有两个独立的D触发器。做自锁开关只需要用其中一个另一个可以闲置或者用来做其他逻辑。先把这个触发器的引脚搞清楚引脚名称功能说明1Q1触发器1的输出2Q1非触发器1的反相输出3CLK1触发器1的时钟输入上升沿触发4RESET1触发器1的复位端高电平有效5D1触发器1的数据输入6SET1触发器1的置位端高电平有效7VSS地8SET2触发器2的置位端9Q2触发器2的输出10Q2非触发器2的反相输出11CLK2触发器2的时钟输入12RESET2触发器2的复位端13D2触发器2的数据输入14VDD电源正极关键参数方面CD4013的电源电压范围是3V到15V我用的系统是5V在推荐工作范围内。输入高电平阈值在5V供电时大约是3.5V输入低电平阈值大约是1.5V噪声容限还不错。输出驱动能力在5V时大概能拉灌几毫安驱动LED或者MOS管栅极足够了。注意CD4013的SET和RESET端是高电平有效而且优先级高于CLK。也就是说不管CLK什么状态只要SET为高Q就置为高只要RESET为高Q就置为低。正常工作时这两个脚必须接低电平不能悬空否则会误触发。3.2 按键消抖的RC参数计算按键抖动是个老生常谈的问题但参数选不对照样翻车。机械按键的抖动时间一般在5ms到20ms之间取决于按键质量和按压力度。我的消抖方案是在按键和CLK之间加一级RC低通滤波再加一级施密特触发器整形。RC低通滤波的时间常数τRC要大于抖动时间。取R10kΩC1μFτ10ms刚好覆盖典型抖动时间。但这里有个细节RC滤波后的信号边沿变缓如果直接接CLK缓慢的上升沿可能导致触发器在阈值附近震荡反而引入新的不确定性。所以RC后面必须加施密特触发器把缓变信号整形成陡峭的边沿。施密特触发器我用的是74HC14六路反相施密特用一路就够了。它的正向阈值和负向阈值之间有几百毫伏的迟滞能有效抑制阈值附近的噪声。RC加施密特之后按键按一次CLK端只收到一个干净的上升沿触发器只翻转一次。提示如果手头没有施密特触发器也可以用CD4013的另一半触发器搭一个但那样电路会复杂一些。74HC14便宜且好买建议直接用它。3.3 上电复位网络的设计上电时CD4013的输出状态是不确定的如果Q上电就是高后级电路会直接开机这不符合“按一下才开机”的需求。所以需要加一个上电复位网络确保上电瞬间RESET端得到一个高电平脉冲把Q强制置为低。最简单的做法是用RC加二极管RESET端接一个10kΩ下拉电阻到地同时通过一个100nF电容接到VDD再反接一个二极管从RESET到VDD。上电瞬间电容两端电压不能突变RESET端被电容拉到高电平触发器复位。随着电容充电RESET端电压下降最终被下拉电阻拉到低电平复位结束。二极管的作用是在断电时给电容提供快速放电通路保证下次上电时复位网络能正常工作。这个网络的时间常数τRC10kΩ×100nF1ms复位脉冲宽度大约1ms足够CD4013完成复位。二极管用1N4148就行反向恢复时间短漏电流小。注意上电复位网络的时间常数不能太大否则每次上电复位脉冲太宽影响正常按键响应。也不能太小否则复位不充分。1ms到10ms是比较合适的范围。4. 实操过程与核心环节实现4.1 完整电路搭建步骤先把电路整体框架理清楚再一步步搭。整个电路分为四个部分按键输入与消抖、D触发器自锁、上电复位、电源开关驱动。第一步搭建按键消抖电路。按键一端接地另一端接10kΩ上拉电阻到VDD同时接10kΩ电阻到74HC14的输入。74HC14输入对地接1μF电容。这样按键未按下时74HC14输入为高输出为低按键按下时电容通过按键放电输入变低输出变高产生一个上升沿。按键松开时电容通过10kΩ电阻充电输入缓慢恢复高电平输出变低。每次按下74HC14输出一个干净的上升沿脉冲。第二步连接D触发器。74HC14的输出接CD4013的CLK1引脚3。D1引脚5接Q1非引脚2形成反馈。SET1引脚6和RESET2引脚12接地。RESET1引脚4接上电复位网络。Q1引脚1作为自锁输出。第三步搭建上电复位网络。RESET1接10kΩ下拉电阻到地同时接100nF电容到VDD电容两端反并联1N4148二极管阳极接RESET1阴极接VDD。第四步搭建电源开关驱动。Q1输出接1kΩ电阻到NPN三极管比如2N3904的基极三极管发射极接地集电极接P-MOS管比如AO3401的栅极同时接10kΩ上拉电阻到VDD。P-MOS管源极接VDD漏极接负载正极。负载负极接地。整个电路搭下来用一块小洞洞板就能搞定元件数量不超过十五个。4.2 关键参数计算与选择过程P-MOS管的栅极上拉电阻选10kΩ这个值决定了关断时栅极充电速度。10kΩ和MOS管栅极电容典型几百皮法组成的时间常数在微秒级别关断速度足够快。如果选太大比如100kΩ关断会变慢但静态功耗更低。我选10kΩ是折中兼顾速度和功耗。NPN基极电阻选1kΩCD4013在5V时输出电流大概几毫安1kΩ电阻上压降约1V到2V三极管基极电流约2mA到3mA足够让2N3904饱和导通。如果选太大比如10kΩ基极电流只有零点几毫安三极管可能工作在放大区集电极电压降不下来P-MOS管关不断。RC消抖的10kΩ和1μF组合时间常数10ms前面算过了。这里有个细节74HC14的输入漏电流很小纳安级别所以10kΩ电阻上的压降可以忽略电容充电最终能到VDD。如果漏电流大比如用普通CMOS门电路可能需要减小电阻值。提示实际搭电路时CD4013的未用触发器引脚要处理好。SET2和RESET2接地CLK2和D2可以悬空但最好也接地或者接VDD避免悬空引脚引入噪声。Q2和Q2非悬空没关系不影响触发器1的工作。4.3 实测波形与状态验证电路搭好后我用示波器抓了几个关键点的波形。按键按下时74HC14输入端的电压从5V缓慢下降到0V下降时间大约10ms输出端从0V快速上升到5V上升时间几十纳秒边沿很干净。CD4013的CLK端收到这个上升沿后Q输出翻转从0V跳到5V上升时间也在纳秒级别。再按一次74HC14输出又一个上升沿Q输出从5V跳回0V。用万用表测负载端的电压Q为高时负载端接近5VQ为低时负载端电压为零完全关断。整机静态电流在关断状态下测出来是0.3μA主要是CD4013的静态电流和MOS管的漏电流完全满足低功耗要求。这里有个细节值得说CD4013的Q输出翻转时由于反馈路径的存在D端电平会跟着变化。用示波器同时看CLK、Q和D三个信号可以看到CLK上升沿到来后Q先翻转然后D跟着翻转中间有几十纳秒的延迟。这个延迟是触发器内部传播延迟造成的不影响逻辑功能但如果你用高速逻辑分析仪看会看到这个时序关系。5. 常见问题与排查技巧实录5.1 按键按一次翻转多次怎么办这是最常遇到的问题现象是按一下按键负载闪一下又灭了或者状态随机。原因基本可以锁定在消抖没做好。先检查RC时间常数够不够如果按键抖动时间比较长10ms可能不够可以加大电容到2.2μF或者4.7μF。但电容太大也有副作用按键响应会变慢按下去要等一会儿才动作。另一个可能的原因是74HC14的施密特阈值不合适。74HC14在5V供电时正向阈值大约2.9V负向阈值大约2.1V迟滞0.8V。如果RC充电曲线在阈值附近变化太慢仍然可能产生多个脉冲。解决办法是减小RC时间常数让信号快速穿过阈值区同时保证滤波效果。我试过10kΩ加1μF的组合在大多数按键上都能稳定工作。还有一种情况是按键本身质量太差抖动时间超过20ms。这种按键建议直接换掉消抖电路再厉害也救不了。5.2 上电时负载直接开机这说明上电复位网络没起作用。先检查RESET端的RC和二极管方向对不对。二极管阳极接RESET阴极接VDD这个方向不能反。如果反了上电时电容通过二极管直接充电RESET端得不到高电平脉冲。再检查电容值。100nF可能偏小如果CD4013的RESET端输入电容比较大或者PCB走线有寄生电容复位脉冲可能被吃掉。可以加大到1μF试试。但也不能太大否则复位脉冲太宽上电后要等很久才能按键。还有一个隐蔽的问题如果VDD上升沿太慢比如电源有软启动功能RC复位网络可能失效。因为VDD缓慢上升时电容通过电阻充电的速度可能快于VDD上升速度RESET端始终为低。这种情况需要在RESET端加一个施密特触发器或者用专门的复位芯片。5.3 关断后负载仍有微弱电流用万用表测负载端电压为零但用微安表测电流发现还有几微安。这个电流通常来自两个地方P-MOS管的漏电流和CD4013的输出漏电流。P-MOS管关断时漏电流在纳安级别一般不是问题。CD4013的输出漏电流也在纳安级别。如果测到微安级可能是NPN三极管没有完全截止。检查NPN基极在Q为低时的电压。如果Q输出低电平不够低比如还有0.5VNPN可能微导通集电极有漏电流导致P-MOS栅极电压不够高P-MOS微导通。解决办法是在NPN基极加一个下拉电阻确保Q为低时基极电压被拉到0V。或者在Q输出和NPN基极之间加一个二极管利用二极管正向压降确保低电平时NPN可靠截止。注意如果负载对关断漏电流要求极高比如低于1μA建议在P-MOS管后面再加一级负载开关或者用两个MOS管背靠背串联彻底切断漏电流路径。5.4 常见问题速查表现象可能原因排查方法解决方案按一次翻转多次消抖不足示波器看CLK波形加大RC时间常数或换施密特触发器上电直接开机复位网络失效测RESET端上电波形检查二极管方向加大电容关断后仍有电流NPN未完全截止测NPN基极电压加下拉电阻或二极管按键无反应CLK无脉冲测74HC14输出检查按键连接和上拉电阻状态随机SET/RESET悬空测SET/RESET电压确保接地负载电流不足P-MOS驱动不够测P-MOS栅极电压换逻辑电平MOS管6. 电路优化与扩展玩法6.1 降低静态功耗的几个细节虽然CD4013本身静态电流很小但外围电路如果设计不当整体功耗还是会上去。第一个要注意的是上拉电阻。按键上拉电阻10kΩ在按键未按下时VDD通过10kΩ电阻到地没有直接通路但74HC14输入端有漏电流纳安级别10kΩ上的压降可以忽略。但如果用1kΩ上拉漏电流在1kΩ上产生的压降也很小功耗增加有限。真正影响功耗的是P-MOS栅极上拉电阻关断时VDD通过10kΩ电阻到NPN集电极如果NPN有漏电流这个路径会持续消耗电流。所以NPN要选漏电流小的比如2N3904的漏电流在纳安级别没问题。第二个要注意的是CD4013未用触发器的处理。如果SET2和RESET2接地CLK2和D2悬空悬空引脚可能因为噪声而震荡增加功耗。最好把CLK2和D2也接地或者接VDD让未用触发器处于确定状态。第三个是74HC14未用通道的处理。74HC14有六路我只用了一路剩下五路输入悬空可能震荡。把未用通道的输入接地输出悬空这样功耗最低。6.2 增加状态指示LED给自锁开关加一个状态指示LED能直观看到当前是开还是关。LED接在Q输出和地之间串一个1kΩ限流电阻。Q为高时LED亮Q为低时LED灭。但这样接有个问题LED的电流会从Q输出灌入CD4013的输出驱动能力有限5V时大概能灌几毫安1kΩ电阻对应5mA在CD4013的驱动能力范围内但会增加整体功耗。如果对功耗敏感可以把LED接在P-MOS输出和地之间这样LED只在开机时亮关机时完全不耗电。限流电阻根据LED正向压降和电流算比如红色LED正向压降1.8V想要5mA电流电阻取(5V-1.8V)/5mA640Ω取680Ω标准值。6.3 扩展为多路自锁开关CD4013有两个触发器如果两个都用上可以做两路独立的自锁开关。第二路用触发器2按键接CLK2D2接Q2非SET2和RESET2接地Q2输出控制另一路负载。两路共用同一个上电复位网络RESET1和RESET2接在一起。这样一块CD4013就能控制两路电源成本几乎不变。如果需要更多路可以级联多片CD4013或者用CD4014、CD4021等移位寄存器做更多路的自锁。但路数多了之后按键消抖电路也要相应增加PCB面积和成本都会上去。一般两路以内用CD4013最划算。提示两路自锁开关如果共用按键可以用二极管隔离按键按下时同时触发两路CLK两路状态同时翻转。但这样两路状态始终一致不能独立控制。要独立控制就得用两个按键。7. 我在实际搭建中的几点体会这套电路我前后搭了三次第一次用洞洞板飞线第二次画了PCB打样第三次优化了布局和参数。踩过的坑主要集中在消抖和复位两个环节。第一次搭的时候没加施密特触发器RC直接接CLK结果按键按一次翻转好几次后来加了74HC14才稳定。第二次PCB打样时忘了给RESET端加二极管上电时好时坏补焊了一个1N4148才解决。参数方面RC消抖的10kΩ加1μF组合在我用过的几种按键上都表现稳定包括那种便宜的6mm轻触按键和12mm的贴片按键。如果你用的按键抖动特别大可以把电容加到2.2μF但响应会慢一点按下去要等大概20ms才动作手感上能感觉到一点延迟。P-MOS管我试过AO3401和SI2301两者都能用AO3401的导通电阻更小一些大概50mΩSI2301大概100mΩ。如果负载电流在几百毫安以内两者都够用。如果负载电流超过1A建议选导通电阻更小的MOS管比如AO3401的升级版或者专门的低压MOS管。最后分享一个小技巧调试时如果手头没有示波器可以用万用表的频率档测CLK端的脉冲。按键按一次如果频率档显示一个短暂的脉冲说明消抖电路工作正常。如果显示多个脉冲或者频率很高说明消抖没做好。这个方法虽然不如示波器直观但应急够用了。这个电路后续还可以扩展成软关机功能用MCU的一个IO口控制RESET端MCU想关机时拉高RESET触发器复位电源关断。这样既有硬件自锁开关的可靠性又有软件关机的灵活性适合需要定时关机或者低电量自动关机的场景。
返回列表