CD4013双D触发器实战:单稳态与双稳态继电器控制电路详解
1. 从一颗芯片说起CD4013到底能干什么搞硬件的人手里多少都攒着几颗CD4013这颗双D触发器属于CD4000系列CMOS逻辑芯片里的常青树从几十年前的老设备到现在的DIY项目里都能见到它的身影。它内部封装了两个完全独立的D型触发器每个触发器带独立的置位SET、复位RESET、数据D、时钟CLK输入端以及互补的Q和Q非输出。工作电压范围宽到3V到18V静态功耗极低抗干扰能力也不错拿来做信号锁存、分频、脉冲整形、延时控制都非常顺手。很多人第一次接触CD4013是在数字电路课上课本讲完真值表就翻篇了真到动手做项目的时候反而不知道怎么用。我见过不少朋友拿它驱动继电器结果要么继电器一直吸合不释放要么按一下按钮继电器疯狂抖动根本原因就是没搞清楚单稳态和双稳态这两种工作模式的区别以及CD4013在不同接法下到底处于什么状态。这篇文章面向的是有一定电路基础、想用CD4013做继电器控制的电子爱好者、嵌入式初学者和工控DIY玩家。我会从芯片本身的工作逻辑讲起把单稳态和双稳态两种模式的配置方法、参数计算、继电器驱动级的选型、光耦隔离的实操细节全部拆开讲清楚最后给出两路继电器控制电机正反转的完整方案。你照着做基本可以一次点亮。2. CD4013的工作逻辑与引脚功能拆解2.1 引脚定义与内部结构CD4013通常是14脚DIP或SOIC封装内部两个触发器共享电源和地但逻辑完全独立。先把引脚搞清楚后面所有电路都建立在这个基础上。引脚号名称功能说明1Q1触发器1的同相输出2Q1非触发器1的反相输出3CLK1触发器1的时钟输入上升沿触发4RESET1触发器1的复位端高电平有效5D1触发器1的数据输入6SET1触发器1的置位端高电平有效7VSS电源地8SET2触发器2的置位端9D2触发器2的数据输入10RESET2触发器2的复位端11CLK2触发器2的时钟输入12Q2非触发器2的反相输出13Q2触发器2的同相输出14VDD电源正极每个触发器的核心逻辑可以用一句话概括在时钟信号的上升沿Q输出会锁存D输入端当时的电平状态。也就是说时钟上升沿到来之前D端是什么电平上升沿之后Q端就变成什么电平并且一直保持到下一个上升沿。SET和RESET是异步控制端优先级高于时钟。只要SET为高Q立刻被置为高电平不管时钟和D端什么状态只要RESET为高Q立刻被清零。正常工作时这两个脚必须接低电平否则触发器不受时钟控制。注意CD4013的SET和RESET是高电平有效这一点和某些74系列触发器不同。悬空时CMOS输入会处于不确定状态必须通过电阻下拉到地不能直接悬空。2.2 D触发器真值表与工作波形把真值表列出来后面分析电路时随时对照SETRESETCLKDQQ非10XX1001XX0111XX1000上升沿00100上升沿11000非上升沿X保持保持从表里可以看出几个关键点。第一SET和RESET同时为高时Q输出为高这是因为CD4013内部SET通道的优先级略高于RESET。第二时钟不是上升沿的时候Q保持之前的状态不变这就是“锁存”的含义。第三D端的数据只有在时钟上升沿那一刻才被采样其他时候D端怎么变都不影响输出。理解了这个逻辑单稳态和双稳态的电路设计就顺理成章了。双稳态就是把D端和Q非接在一起每来一个时钟脉冲Q就翻转一次单稳态则是利用RC充电延时在时钟触发后让触发器在一段时间后自动复位。2.3 为什么选CD4013而不是单片机有人会问现在单片机这么便宜为什么还要用CD4013这种老芯片这个问题我在实际项目中想过很多次答案其实很实际。第一是响应速度。CD4013的传播延迟在5V供电下典型值只有几十纳秒单片机从检测输入到输出响应要经过中断、程序执行、GPIO翻转再快也要微秒级。某些需要硬件级快速响应的场合比如高速脉冲分频、窄脉冲展宽CD4013是更合适的选择。第二是可靠性。纯硬件逻辑没有程序跑飞的问题不需要看门狗不怕电磁干扰导致程序异常。在工业环境里一个简单的硬件触发器电路往往比单片机方案更让人放心。第三是成本和功耗。CD4013单价几毛钱静态电流只有微安级不需要晶振、不需要烧录程序、不需要外围太多元件。对于只需要一两个逻辑功能的场景用单片机反而是杀鸡用牛刀。当然如果逻辑复杂、需要通信、需要多路协调那还是老老实实上单片机。选型这件事没有绝对的对错关键看场景。3. 双稳态电路实战按键翻转与继电器自锁3.1 双稳态的核心思路双稳态的意思是电路有两个稳定状态触发一次翻转一次再触发一次翻回来。CD4013构成双稳态电路最简单的方法就是把Q非输出反馈到D输入端时钟端接按键或脉冲信号。这样接的逻辑是假设当前Q为低Q非为高那么D端就是高。下一个时钟上升沿到来时Q锁存D端的高电平变成高同时Q非变成低D端也跟着变低。再下一个时钟上升沿Q锁存低电平变回低。如此循环每来一个脉冲Q就翻转一次。这个接法本质上就是T触发器翻转触发器用D触发器加一根反馈线就实现了。3.2 按键输入与消抖处理按键直接接到CLK端会有抖动问题。机械按键在按下和释放的瞬间会产生几毫秒到十几毫秒的抖动CD4013响应速度太快会把每一次抖动都当成一个时钟脉冲结果就是按一下继电器翻转好几次。解决方法有两种。第一种是用RC低通滤波加分压在按键和CLK之间串一个10k电阻CLK对地接一个100nF电容时间常数1ms左右可以有效滤除大部分抖动。第二种是用施密特触发器整形比如CD40106先把按键信号整形再送给CLK。我实测下来RC滤波方案在大多数场景够用成本也低。但如果你用的是质量一般的轻触按键抖动可能比较严重建议RC参数加大到10k加1uF时间常数10ms效果更稳。实操心得RC滤波的电容不要选电解电容漏电流大且容量不稳定用瓷片电容或CBB电容。电阻也不要选太大否则CLK端的上升沿变缓CMOS输入对边沿斜率有要求太缓可能导致触发不确定。3.3 继电器驱动级设计CD4013的Q输出是CMOS电平5V供电时输出电流能力大概在1mA到2mA左右取决于具体型号和供电电压远远不够驱动继电器线圈。继电器线圈通常需要几十毫安到上百毫安的电流所以必须加驱动级。最常用的方案是用NPN三极管比如S8050或2N3904。电路结构是Q输出经过一个1k到10k的基极电阻接到三极管基极三极管发射极接地集电极接继电器线圈的一端线圈另一端接VCC。继电器线圈两端反并联一个续流二极管比如1N4148或1N4007用来吸收线圈断电时产生的反向电动势。基极电阻的计算方法是假设继电器线圈电流为I三极管的电流放大倍数最小值为hFE_min那么基极电流至少需要I除以hFE_min再留2到3倍余量。基极电阻等于Q输出高电平减去基极发射极压降除以基极电流。举个例子5V供电继电器线圈电阻为120欧姆那么线圈电流约为41mA。S8050的hFE最小值假设为100基极电流至少需要0.41mA留3倍余量取1.23mA。Q输出高电平约4.8VVbe约0.7V基极电阻等于4.8减0.7除以1.23mA约等于3.3k。实际取3.3k或2.2k都可以。续流二极管的方向不能接反阴极接VCC阳极接集电极。接反了继电器根本不吸合而且三极管可能因为反向电压击穿。3.4 完整双稳态继电器控制电路把前面几部分拼起来完整的双稳态继电器控制电路是这样的CD4013的VDD接5VVSS接地SET和RESET都通过10k电阻下拉到地D端接Q非引脚5接引脚2按键一端接地另一端通过10k电阻接VCC同时经过RC滤波后接CLKQ输出通过3.3k电阻接S8050基极S8050发射极接地集电极接继电器线圈一端继电器线圈另一端接5V1N4007反并联在继电器线圈两端继电器常开触点串联在负载回路中这个电路上电时Q的状态是不确定的因为上电瞬间D端和CLK端的电平不确定。如果需要上电默认继电器断开可以在RESET端加一个上电复位电路用一个10k电阻接VSS一个100nF电容接VDD上电瞬间RESET被拉高一下然后回到低电平确保Q初始为低。4. 单稳态电路实战延时控制与脉冲展宽4.1 单稳态的工作原理单稳态的意思是电路只有一个稳定状态触发后进入暂稳态经过一段时间后自动回到稳定状态。CD4013构成单稳态电路的经典方法是用RC延时网络加反馈。具体接法是D端接VDD高电平Q输出经过RC延时后反馈到RESET端。平时RESET端通过电阻接地Q为低。当CLK收到一个上升沿脉冲时Q翻转为高同时Q通过电阻给电容充电。当电容电压上升到RESET的阈值电压时RESET被触发Q被复位为低电路回到稳定状态。输出脉冲宽度由RC时间常数和RESET端的阈值电压决定。CD4013的RESET阈值电压大约在VDD的一半左右所以脉冲宽度大约等于0.7乘以RC。但这个公式只是估算实际值受芯片个体差异、供电电压、温度影响精度不高。如果需要精确的延时建议用单片机或者专用定时芯片。CD4013的单稳态适合对精度要求不高的场合比如按键延时、脉冲展宽、简单的时序控制。4.2 RC参数计算与选型假设需要输出一个约1秒的脉冲按照0.7RC等于1秒来算RC约等于1.43。如果选R为100k那么C约为14.3uF取标准值15uF。如果选R为1MC约为1.43uF取1.5uF。电阻的取值范围一般在10k到10M之间。太小了电容要很大电解电容体积大且漏电流影响精度太大了输入电流太小容易受干扰。电容建议用钽电容或CBB电容漏电流小温度稳定性好。电解电容虽然容量大但漏电流会导致延时时间偏短而且随时间变化。注意RESET端的电容在放电时需要通过电阻放掉如果放电时间不够快连续触发时脉冲宽度会变短。可以在RESET端对地接一个小电阻加速放电但这个小电阻会影响充电时间需要折中。4.3 单稳态触发方式的选择CD4013的CLK是上升沿触发所以触发信号必须是上升沿。如果输入信号是下降沿需要加一个反相器或者用三极管搭一个简单的反相电路。按键触发的话按键一端接VCC另一端通过RC滤波接CLK同时用电阻下拉到地。按下按键时CLK收到上升沿触发单稳态。松开按键时CLK回到低电平不影响电路状态。如果输入信号来自其他逻辑电路要注意电平匹配。CD4013在5V供电时输入高电平阈值大约为3.5V低电平阈值大约为1.5V。3.3V系统的输出高电平可能只有3.3V勉强能触发但余量不大建议加电平转换或者用5V供电的逻辑芯片。4.4 单稳态驱动继电器的实际案例我做过一个项目需要按下按钮后继电器吸合3秒然后自动断开用来控制一个小水泵定时运行。用CD4013单稳态实现非常简洁。电路参数R取470kC取10uF理论延时约0.7乘以470k乘以10uF等于3.29秒。实测下来在3.1到3.4秒之间波动对于水泵控制来说完全够用。继电器驱动级和双稳态方案一样用S8050加1N4007。Q输出接基极电阻继电器接集电极。因为单稳态的Q输出高电平时间就是延时时间所以继电器吸合时间等于延时时间。这个电路有一个细节需要注意如果按钮按下的时间很长CLK端会一直保持高电平但CD4013只在上升沿触发所以不会重复触发。只有松开按钮再按一次才会产生新的上升沿。这个特性正好符合“按一次运行一次”的需求。5. 两路继电器控制电机正反转的完整方案5.1 电机正反转的控制逻辑直流电机正反转需要改变电源极性通常用两个继电器组成H桥或者用双刀双掷继电器。用两个单刀双掷继电器也可以实现继电器1的常开触点接电机一端到VCC继电器2的常开触点接电机另一端到VCC两个继电器的常闭触点都接地。这样继电器1吸合时电机正转继电器2吸合时电机反转两个都不吸合时电机两端都接地处于刹车状态。但要注意两个继电器不能同时吸合否则VCC直接短路到地会烧毁电源或继电器触点。所以控制逻辑必须保证互锁继电器1吸合时继电器2必须断开反之亦然。用CD4013的两个触发器可以很方便地实现互锁。触发器1控制继电器1触发器2控制继电器2把触发器1的Q输出接到触发器2的RESET端触发器2的Q输出接到触发器1的RESET端。这样当触发器1翻转为高时触发器2被复位为低当触发器2翻转为高时触发器1被复位为低。天然互锁不会同时为高。5.2 双触发器互锁电路设计具体接法如下触发器1D1接Q1非CLK1接正转按钮SET1下拉RESET1接触发器2的Q2触发器2D2接Q2非CLK2接反转按钮SET2下拉RESET2接触发器1的Q1Q1驱动继电器1Q2驱动继电器2正转按钮按下时CLK1收到上升沿Q1翻转为高继电器1吸合同时Q1的高电平送到RESET2确保Q2为低继电器2断开。反转按钮按下时CLK2收到上升沿Q2翻转为高继电器2吸合同时Q2的高电平送到RESET1确保Q1为低继电器1断开。这个互锁是硬件级的比软件互锁可靠得多。即使两个按钮同时按下由于触发器的翻转速度有先后最终也只会有一个输出为高不会出现两个继电器同时吸合的情况。5.3 继电器选型与触点保护控制电机这种感性负载继电器的选型很关键。触点额定电流要留足余量电机启动电流通常是额定电流的3到5倍所以继电器触点电流至少要是电机额定电流的5倍以上。比如电机额定电流1A继电器触点至少要选5A的。触点材料也有讲究。银合金触点适合一般负载但频繁开关感性负载容易拉弧氧化。如果电机功率较大或者开关频繁建议选带灭弧措施的继电器或者在触点两端加RC吸收网络。RC吸收网络的参数一般是100欧姆电阻串联0.1uF电容并联在继电器触点两端。电阻功率选1W以上电容耐压选400V以上。这个网络可以吸收触点断开瞬间的感应电动势减少电弧延长触点寿命。实操心得电机两端也可以并联一个续流二极管或者RC吸收减少对电源和继电器的干扰。如果电机离控制板较远建议用屏蔽线连接屏蔽层单端接地。5.4 电源设计与隔离考虑整个系统里CD4013和继电器驱动级用5V供电电机用单独的电源供电。两个电源的地址要共在一起否则继电器驱动信号没有参考地。如果电机电源电压较高比如12V或24V而控制电路是5V建议在继电器驱动级加光耦隔离。光耦的发光二极管侧接5V和CD4013输出光敏三极管侧接电机电源和继电器线圈。这样控制电路和电机电路完全隔离电机侧的干扰不会串到控制芯片。光耦选PC817就可以电路是CD4013的Q输出经过1k电阻接PC817的阳极阴极接地PC817的集电极接继电器线圈一端发射极接地继电器线圈另一端接电机电源正极。续流二极管仍然要加反并联在线圈两端。光耦的电流传输比CTR一般在50%到600%之间选CTR大于100%的型号确保5V驱动时光敏三极管能饱和导通。如果CTR不够可以减小限流电阻但不要小于470欧姆否则可能损坏光耦。6. 常见问题与排查技巧实录6.1 继电器不吸合或一直吸合这是最常见的问题排查思路按以下顺序来现象可能原因排查方法继电器完全不吸合电源没接好万用表测VDD和VSS之间电压继电器完全不吸合三极管接反检查发射极和集电极是否接对继电器完全不吸合基极电阻太大减小基极电阻或换高hFE三极管继电器一直吸合SET或RESET悬空检查是否加了下拉电阻继电器一直吸合续流二极管接反检查二极管方向继电器一直吸合上电初始状态不对加RC上电复位电路三极管接反这个问题我见过很多次。S8050的引脚排列是面对印字面从左到右依次为发射极、基极、集电极但不同厂家的封装可能不同最好用万用表测一下。发射极和集电极接反时三极管仍然有放大能力但hFE会大幅下降导致继电器吸合无力或者完全不吸合。6.2 按键触发不灵敏或连发按键触发问题基本都出在消抖上。如果按一下继电器翻转多次说明抖动被当成了多个时钟脉冲。加大RC时间常数或者换质量更好的按键。如果按了没反应可能是RC时间常数太大CLK端的上升沿太缓CD4013识别不到。减小RC时间常数或者用施密特触发器整形。还有一种情况是按键按下时CLK端有干扰毛刺导致误触发。可以在CLK端对地加一个100pF的小电容滤除高频干扰同时不影响按键信号的上升沿。6.3 单稳态延时时间不准CD4013单稳态的延时精度确实一般受以下因素影响芯片的RESET阈值电压离散性不同批次可能差10%以上电容的容差和温度系数电解电容尤其明显电阻的精度碳膜电阻一般5%金属膜1%供电电压的稳定性如果延时精度要求高建议用单片机定时器或者专用延时芯片。如果只是粗略延时CD4013够用。想改善精度的话电阻用金属膜电容用钽电容或CBB供电用稳压芯片。6.4 继电器干扰导致触发器误动作继电器吸合和断开时会产生较强的电磁干扰可能通过电源线或空间耦合到CD4013的CLK端导致误触发。解决方法继电器线圈两端加续流二极管这个必须有电源端加去耦电容100uF电解并联0.1uF瓷片靠近CD4013的VDD引脚CLK端加RC滤波时间常数1ms左右继电器和CD4013在PCB上保持距离或者用光耦隔离电机两端加RC吸收网络我在一个项目里遇到过继电器一吸合触发器就翻转的问题后来在CD4013的VDD和VSS之间加了一个100uF的电解电容问题就解决了。原因是继电器吸合瞬间拉低了电源电压导致CD4013复位。加了大电容之后电源电压波动被吸收触发器工作稳定。6.5 CD4013输出驱动能力不足CD4013的输出电流能力很弱5V供电时拉电流和灌电流都在1mA左右。直接驱动LED都很勉强更不用说继电器了。必须加驱动级三极管、MOS管或者专用驱动芯片都可以。如果要用MOS管驱动注意选逻辑电平MOS管比如2N7000或AO3400它们的栅极阈值电压在2V左右5V可以完全导通。普通MOS管如IRF540的栅极阈值电压在4V左右5V驱动时导通电阻较大可能发热。7. 从CD4013延伸出去的几个实用技巧7.1 用CD4013做分频器把D端接Q非CLK接输入信号Q输出就是输入信号的二分频。两个触发器级联就是四分频三个就是八分频。这个用法在需要降低频率或者做方波发生器的时候很方便。分频器的输出是方波占空比50%比用RC振荡器产生的波形质量好得多。如果需要更多级分频可以用CD4024或CD4040这类专用分频芯片但CD4013胜在灵活需要几级就接几级。7.2 用CD4013做脉冲展宽窄脉冲信号如果宽度太窄单片机可能检测不到。用CD4013单稳态可以把窄脉冲展宽成固定宽度的脉冲方便后续电路处理。触发信号接CLK输出脉冲宽度由RC决定。这个技巧在信号调理电路里很实用。比如光电传感器的输出脉冲可能只有几十纳秒用CD4013展宽到毫秒级单片机就能轻松捕获。7.3 用CD4013做上电复位电路很多系统需要上电时输出一个复位脉冲让其他芯片初始化。用CD4013的SET或RESET端加RC网络就可以实现。上电瞬间电容电压为0SET或RESET被拉高触发器输出复位状态电容充电完成后SET或RESET回到低电平触发器进入正常工作状态。这个电路比专用的复位芯片便宜得多而且可以根据需要调整复位脉冲宽度。缺点是精度不高受温度和电源上升时间影响。7.4 多路继电器控制的扩展思路如果需要控制更多路继电器可以用多颗CD4013级联。每颗CD4013有两个触发器可以控制两路。互锁逻辑可以通过交叉连接RESET端实现也可以用二极管矩阵实现更复杂的互锁关系。如果路数很多建议用移位寄存器比如74HC595配合单片机或者用专用继电器驱动芯片比如ULN2003。CD4013适合路数少、逻辑简单的场景。8. 一些踩过的坑和实测经验CD4013这颗芯片看起来简单实际用起来还是有不少细节要注意。我把自己踩过的坑和实测经验整理一下希望能帮你少走弯路。第一个坑是CMOS输入悬空。CD4013的SET、RESET、D、CLK任何一个脚悬空都可能导致输出状态不确定。我一开始做实验的时候SET和RESET没接下拉电阻结果上电后继电器随机吸合排查了半天才发现是悬空导致的。后来养成习惯所有CMOS输入脚要么接固定电平要么接下拉或上拉电阻绝不悬空。第二个坑是电源去耦。CD4013对电源噪声比较敏感尤其是驱动继电器这种感性负载的时候。我现在的习惯是在每颗CD4013的VDD和VSS之间就近放一个0.1uF瓷片电容再在电源入口放一个100uF电解电容。这两个电容花不了几毛钱但能避免很多莫名其妙的问题。第三个坑是继电器续流二极管的方向。我见过有人把续流二极管接反了结果继电器根本不吸合因为二极管正向导通把线圈短路了。正确的接法是二极管阴极接电源正极阳极接三极管集电极。记住这一点能省不少事。第四个坑是光耦的限流电阻。光耦的发光二极管压降大约1.2V5V驱动时限流电阻如果选得太小电流过大会烧光耦选得太大光敏三极管可能不饱和。PC817的推荐工作电流是5mA到20mA5V供电时限流电阻选220欧姆到1k之间比较合适。我一般用470欧姆实测很稳。第五个坑是单稳态的复位端电容放电。如果连续快速触发单稳态上一次的电容还没放完电下一次触发时延时时间会变短。解决方法是加快放电在RESET端对地接一个二极管阳极接RESET阴极接地这样电容可以通过二极管快速放电而充电时二极管反偏不影响。这个技巧在需要快速重复触发的场景很实用。第六个坑是PCB布局。CD4013的CLK端走线尽量短远离继电器和电机等干扰源。如果实在避不开用包地处理在CLK走线两侧铺地并打过孔。我做过一个板子CLK走线从继电器下面穿过结果继电器一动作触发器就误触发后来把走线改到板子另一面就好了。第七个坑是供电电压的选择。CD4013的工作电压范围是3V到18V但不同电压下的输出驱动能力和传播延迟不同。5V是最常用的兼容TTL电平驱动能力也够用。如果系统里有3.3V的逻辑可以用3.3V供电但要注意3.3V时输出高电平只有3.3V驱动某些三极管可能基极电流不够。12V供电时输出驱动能力强一些但功耗也大而且和5V逻辑连接需要电平转换。第八个坑是芯片的静电防护。CD4000系列是CMOS工艺输入阻抗极高静电很容易击穿。拿芯片的时候先摸一下接地的东西放掉静电焊接的时候烙铁要接地良好。我因为静电打坏过好几颗CD4013后来买了防静电手环才消停。这些经验都是实际做项目的时候一点点积累的书本上不会写但每一个都能让你少折腾几个小时。CD4013这颗芯片虽然老但用好了确实能解决很多实际问题。硬件设计就是这样原理简单细节磨人多动手多踩坑慢慢就有感觉了。