
1. 为什么继电器控制偏偏选中了CD4013做电子DIY或者嵌入式项目做到一定程度几乎都会碰到同一个需求用一个小信号去控制一个大电流的通断。单片机或者传感器输出的信号通常只有几毫安直接驱动继电器是不现实的而继电器本身又是典型的感性负载反向电动势一上来就能打穿整个控制端。这时候触发器就派上了用场。我以前接过一个设备改造的活儿面板上要加两个按键一个负责“点动喷水”另一个负责“自锁排水”。所谓点动就是按住的时候继电器吸合松手就断开所谓自锁是每按一次按键状态翻转一次开和关交替进行。这两种工作模式恰好对应了电子学里最常见的两兄弟——单稳态和双稳态。有人可能会说这点事用单片机随便写几行代码就搞定了为什么非要用CD4013这种老掉牙的CMOS芯片这个问题我项目里也反复被问过。用单片机当然没问题但在纯硬件控制、不需要程序介入的场景里CD4013有几个不可替代的好处一是响应速度极快不存在程序扫描周期的问题二是断电之后逻辑状态是确定的双稳态也不会因为程序跑飞而误动作三是成本低、外围元件少一颗芯片几毛钱一个按键加两个电阻就能实现完整的控制逻辑。CD4013是双D触发器片内集成了两个互相独立的D触发器每个触发器都可以单独配置成单稳态、双稳态或者分频器供电范围3到15伏和TTL电平也兼容。最让我看重的一点是它的输入阻抗极高配上RC阻容网络之后定时范围可以从几微秒一直拉到几十秒甚至几分钟这在纯硬件定时电路里相当够用。先把结论摆出来单稳态接法解决的是“延时断开、脉冲展宽、防抖去毛刺”这类需求双稳态接法解决的是“一键翻转、自锁开关、状态记忆”这类需求而继电器驱动电路要解决的是“功率放大、反向电动势泄放、逻辑电平匹配”的问题。三部分电路组合在一起就是一套不需要单片机参与的完整继电器控制方案。这篇文章我就从CD4013的内部逻辑讲起把单稳态和双稳态两种接法的原理、计算、调试过程从头到尾拆一遍最后把继电器驱动的坑一个一个填平让大家看完之后能直接照着搭一套电路出来。2. CD4013的引脚逻辑先把D触发器的“脾气”摸清楚2.1 引脚定义与真值表CD4013是双D触发器常见封装是DIP-1414个引脚分配得非常规整。两个触发器完全独立各自带时钟、数据、复位、置位端。引脚号名称功能说明1Q1第一触发器同相输出2/Q1第一触发器反相输出3CLK1第一触发器时钟输入4RESET1第一触发器复位端高电平有效5DATA1D1第一触发器数据输入6SET1第一触发器置位端高电平有效7VSS电源负极地8SET2第二触发器置位端9DATA2D2第二触发器数据输入10RESET2第二触发器复位端11CLK2第二触发器时钟输入12/Q2第二触发器反相输出13Q2第二触发器同相输出14VDD电源正极CD4013属于边沿触发型D触发器数据锁存发生在时钟信号的上升沿。这一点非常关键很多人调试的时候想不通为什么D端明明已经变了输出却不跟着变其实就是没搞懂边沿触发和电平触发的区别。真值表总结下来就四种情况SETRESETCLKDQ/Q10XX1001XX0111XX1100上升沿00100上升沿110注意最后一种情况当SET和RESET都为低时触发器才处于正常工作状态输出只跟随时钟上升沿时刻的D端电平。SET和RESET的优先级高于时钟一旦拉高不管时钟怎么跳输出都会被强制置位或者复位。2.2 输出端的驱动能力边界设计继电器驱动方案之前必须先搞清楚CD4013的输出能力。CD4013在5伏供电时输出高电平电流通常只有0.5毫安左右输出低电平电流在1毫安上下。这个数值距离继电器线圈需求的几十毫安差了至少一个数量级。所以CD4013的输出绝对不能直接并联在继电器线圈上必须通过晶体管或者达林顿管做功率放大。我见过不少初学者直接把继电器接在CD4013的输出端结果要么继电器吸合无力要么芯片发热严重的直接把内部MOS管烧穿。CD4013适合的工作是信号控制、逻辑判断和定时功率输出这活必须由外围的三极管或者专用驱动芯片来完成。理解了这条边界后面整个电路架构就清晰了CD4013负责“思考”驱动管负责“出力”继电器负责“执行”。3. 单稳态电路实战脉冲展宽与延时断开的黄金搭档3.1 单稳态的基本接法把CD4013的Q端接到自己的D端就构成了单稳态触发器。原理其实不复杂D端接过来了Q端而Q和Q反是互补的所以D端总是等于Q反。初始状态Q0、/Q1此时DQ反1D端是高电平。来了一个触发脉冲时钟上升沿到来时D1Q被置成1/Q翻转为0。Q从0跳变到1的同时D端也变成了0。此时如果电路不带复位功能Q会一直保持1变成永久的双稳态。要让Q自己回到0必须引入RC定时网络让复位端在延时结束后自动拉高把Q复位回0。实际电路中的RC网络接在/Q端。当/Q翻转为0时电容通过电阻放电当/Q回到1时电容开始充电充电过程中复位端的电压逐渐升高到达阈值电压后触发复位Q回到0。整个延时时间的长短就由R和C的乘积决定。3.2 定时公式的推导与元件取值单稳态电路的定时公式是T 1.1 × R × C这个1.1倍系数不是我拍脑袋编的它来自电阻电容充放电曲线和CMOS门限电平的数学关系。CD4013的复位阈值电压大约在VDD的50%左右也就是所谓的半电源电压点RC充电曲线达到半电源电压所需的时间正好约等于1.1倍的RC时间常数。举个实际例子我需要做一个喷淋延时关闭功能按下按键继电器吸合5秒然后自动断开。选定的电阻是470千欧根据公式反推电容值C T / (1.1 × R) 5 / (1.1 × 470000) ≈ 9.7 微法实际取值用10微法的电解电容误差范围内的结果大概是5.2秒左右完全满足使用需求。元件选型上我建议电阻用金属膜电阻温漂小、精度高电容用钽电容或者低漏电的电解电容。需要特别注意定时电容的漏电电流会影响定时精度漏电越大等效电阻越小实际定时时间越短。如果定时时间要求很长比如超过30秒电解电容的漏电会明显影响精度这时候宁可增大电阻也不要往死里加大电容。3.3 触发脉冲的最小宽度单稳态电路对触发脉冲宽度有最小值要求。CD4013工作在5伏时数据建立时间和保持时间都在纳秒量级所以触发脉冲宽度的下限主要受限于芯片的输入电容和信号源的驱动能力。用机械按键做触发源的时候这个问题很隐蔽。机械按键按下再弹起会产生几毫秒甚至几十毫秒的抖动表现为一连串的毛刺脉冲。单稳态电路被这一串脉冲连续触发输出的延时时间会不断重置表现为继电器吸合时间变得时短时长。解决方法是加一个RC低通滤波器把机械抖动滤掉之后再送入时钟端。时间常数取1到10毫秒就够用了太小了滤不干净太大了影响响应速度。在这个应用中我取的是10千欧电阻配0.1微法电容时间常数1毫秒实测按键抖动完全消除。4. 双稳态电路实战一键自锁开关与按键消抖4.1 双稳态的T触发器接法双稳态电路的接法更简单把/Q端接回D端。D端和Q端之间天然是反相关系也就是D /Q。初始状态假设Q0、/Q1那么D1。来一个时钟上升沿Q被置为1/Q变为0。此时D也跟着变为0。再来一个时钟上升沿D0被锁存Q回到0/Q回到1。可以看到每来一个时钟上升沿输出状态就翻转一次这就是T触发器的标准行为T端恒为高电平。这种接法的意义在于无论现在输出是0还是1只要给一个时钟脉冲状态就一定会发生翻转。配合机械按键就能实现“按一下开再按一下关”的自锁开关效果。4.2 为什么双稳态电路也需要消抖可能有人会提出疑问双稳态本身是边沿触发状态只在上升沿翻转一次按理说机械抖动产生的多个上升沿不是会被当成多次触发吗确实如此。机械按键按下时簧片接触会经历“接触-弹开-再接触”的反复过程反映在波形上就是一串宽度不等的高电平脉冲。这一串脉冲经过时钟端后每一个上升沿都会触发一次翻转最终导致输出状态随机。按一下开、再按一下关的设计目标完全失效。消抖方案有两个路径第一种是硬件消抖RC滤波器加施密特整形成本低、响应快但多了一个运放或者施密特触发器芯片。第二种是软件消抖用单片机去读按键状态延时确认后再执行翻转但这就失去了纯硬件方案的意义。实际项目里我用的方法是把RC延迟和CD4013自身的边沿触发特性结合起来。电阻取100千欧电容取1微法时间常数100毫秒按键按下时电容充电到阈值需要一定时间抖动期间电容电压在阈值附近反复穿越会产生少量毛刺但因为CD4013的传输延迟和输入迟滞特性最终输出只会翻转一次。4.3 复位端的上电初始化问题双稳态电路还有一个容易忽略的问题就是上电初始状态。CD4013在上电瞬间触发器的初始状态是不确定的可能是Q0也可能是Q1。如果继电器控制自动排水泵上电的时候正好Q1继电器吸合设备突然启动轻则吓一跳重则引发安全问题。解决方法是给复位端加上电复位电路让R端在上电瞬间保持高电平把Q强制复位到0。电路非常简单复位端接一个10微法电容到VDD同时并一个100千欧电阻到地。上电瞬间电容充电电流大复位端电压接近VDDQ被强制清零电容充电完成后复位端电压被电阻拉到地恢复正常工作状态。这个初始化设计我建议所有双稳态应用都加上成本就两三个元件但能避免大量现场问题。5. 继电器驱动链路从触发器输出到感性负载的完整方案5.1 为什么必须用三极管做功率放大前面说过CD4013的输出电流能力只有0.5毫安左右而继电器线圈在额定电压下需要的驱动电流通常为30到100毫安。5伏继电器线圈电阻大约70欧需要的电流是5/70约等于70毫安比CD4013的输出能力大了两个数量级。所以驱动链路一定要加一级三极管放大。常用的方案有两种NPN三极管驱动发射极接地集电极接继电器线圈基极通过限流电阻接CD4013输出。NPN达林顿管驱动适合需要更大驱动电流的继电器。NPN三极管方案里选型首选2N2222、S8050这类通用小功率三极管集电极电流可达500毫安饱和压降低驱动常规继电器绰绰有余。5.2 基极限流电阻的计算基极电阻阻值的计算逻辑是这样的。三极管的电流放大倍数β通常在100到250之间继电器线圈需要70毫安那么三极管进入饱和状态所需的基极电流至少是IB IC / β 70 / 150 ≈ 0.47 毫安考虑到CD4013的高电平输出电压大约等于VDD减去内部压降按4.5伏计算基极电阻两端的电压就是4.5减去0.7三极管BE结压降约等于3.8伏。基极电阻取R 3.8 / 0.47 ≈ 8 千欧为了确保三极管深度饱和实际取值取理论值的五分之一比较稳妥也就是1千欧到2.2千欧之间。取值太小会加重CD4013的负载太大又可能让三极管工作在放大区集电极电流不够继电器无法吸合。我一般取1千欧长期运行稳定三极管完全饱和继电器的吸合声干脆利落。5.3 续流二极管的接法与原理继电器线圈是典型电感驱动管关断瞬间线圈电流不能突变会产生反方向的高压电动势。如果不加保护这个反向电压最高可以达到VDD的几十倍足以击穿三极管的集电结。续流二极管的作用就是给线圈电流提供一个续流通路把反向电动势钳位在二极管的正向导通压降附近通常0.7伏左右三极管承受的电压就安全了。关键细节二极管必须反着并接在线圈两端负极接VDD正极接三极管集电极。很多人第一次画电路容易画反画反了不但起不到保护作用反而直接短路电源。续流二极管推荐用1N4007或者1N4148反向耐压和正向电流都余量充足。需要注意的是加续流二极管之后继电器释放时间会变长一点在需要快速切换的场合需要考虑到这个影响。5.4 完整驱动电路参考整个驱动链路串起来是这样的CD4013的Q输出 → 基极限流电阻1千欧 → NPN三极管基极 → 三极管集电极接继电器线圈一端 → 继电器线圈另一端接VDD → 续流二极管反并联在线圈两端 → 三极管发射极接地 → 继电器公共端和常开端接被控负载。实测下来这套电路在12伏供电、5伏逻辑控制的状态下运行很稳定CD4013的输出负载很轻三极管饱和导通时继电器线圈两端电压接近电源电压吸合可靠关断干脆。6. 实测中的波形陷阱与故障排查6.1 继电器反复吸合断开的怪问题有一回调试设备继电器接上负载之后出现了周期性吸合断开的异常频率大概一两赫兹铛铛铛的响。第一反应是程序的逻辑写错了查了半天程序没发现问题用示波器看CD4013的Q输出波形发现输出本身就不是稳定的高电平而是一连串脉冲。后来逐步排查找到了问题根源继电器线圈的供电和CD4013的逻辑供电共用了一个稳压电源继电器吸合瞬间电流突增电源电压瞬间被拉低。电压跌落传导到CD4013的复位端VDD短暂低于最小工作电压芯片内部逻辑混乱输出跟着抖动。继电器释放后电流消失电源恢复CD4013又开始正常工作于是周而复始形成一个正反馈环路。解决办法是继电器线圈单独供电或者在继电器供电回路上加大容量储能电容把吸合瞬间的电流冲击缓冲掉。我最后选了1000微法的电解电容并在电源输出端问题立刻消失。这个案例说明一个道理逻辑芯片经常不是被负载烧坏的而是被电源污染搞坏的。电源的完整性对任何数字电路来说都是生命线。6.2 定时时间漂移的元凶单稳态电路还有一个比较折磨人的问题就是定时时间跟着环境温度走。冬天天冷的时候5秒定时变成了7秒到了夏天又缩到了4秒。原因很简单RC定时网络的时基取决于电阻、电容的绝对值和温度稳定性。普通电解电容的容量随温度变化非常明显低温时容量变大高温时变小误差可以达到正负30%。电阻如果选碳膜电阻温漂同样不可控。解决思路有两个方向。要求不高的时候选质量和温漂特性好一点的元件把误差控制在可接受范围内就行。要求高的时候就得换思路用有源晶振加计数器做定时但这已经偏离了纯RC定时的范畴属于另一个方案了。对于继电器控制这种应用场景5秒和5.5秒的差异通常没有实际影响不用太纠结。但如果你的负载是电机这种对时间敏感的建议用继电器切换所有相关定时参数都确认过温度范围的元件。6.3 上电瞬间继电器误动作的源头另一个常见故障是设备一上电继电器就莫名其妙的吸合一下然后断开。这个问题的根源和双稳态电路的上电初始化缺陷同源。上电瞬间VDD电压从零爬升CD4013内部的逻辑门处于不确定的中间状态复位端的RC充电过程还没来得及把复位信号拉高触发器就已经接收到了一个上升沿的时钟信号。解决方法是把复位电容的充电时间设计得明显长于VDD的爬升时间。VDD爬升通常需要几毫秒到几十毫秒复位RC时间常数取100毫秒以上就能可靠复位。同时可以在时钟端加一个下拉电阻到地防止时钟端在悬空状态下拾取噪声产生误触发。7. 从分立元件到集成方案的思考单稳态、双稳态和继电器驱动这三块电路组合起来已经是一套完整的硬件控制方案了。实际应用中可以按需裁剪只需要点动控制就只做单稳态部分只需要自锁开关就只做双稳态部分两个都要就共用一片CD4013的两个触发器。调试顺序也有讲究建议先空载测逻辑再接继电器最后带负载测试。空载状态下用万用表量Q输出的高低电平是否按预期翻转确定逻辑正确后再接继电器。接上继电器之后重点观察线圈两端波形和电源电压波动确认没有异常的振荡和跌落。CD4013虽然诞生了几十年但在某些新项目里依然很能打。它的优势在于逻辑简单、抗干扰能力不错、不依赖固件纯硬件电路可以做到上电即工作永不死机。在一些结构简单、任务单一的控制场景里比上一颗MCU更经济也更可靠。我做这个项目的心得是触发器的魅力在于一套简单的逻辑关系通过不同的反馈接法就能演变出完全不同的行为。D触发器接Q和D能变成单稳态接/Q和D能变成双稳态再接几颗阻容元件就能控制定时和复位。最后说一个值得留意的细节CD4013和CD4013B之间存在参数差异B后缀是改进版本输出驱动能力更强逻辑电平阈值的稳定性也更好新设计建议直接选CD4013B。同一颗芯片的两个触发器如果你只用了其中一个另一个的输入引脚不要悬空必须全部接地或者接电源否则悬空输入会拾取干扰反过来干扰正在工作的那个触发器。我在实验板上吃过这个亏两个触发器共用一个电源闲置触发器的悬空输入导致输出端出现莫名毛刺排查了很久才找到原因。把这几点都处理好一套可靠的单/双稳态继电器驱动方案就算完整落地了。