非门多谐振荡器原理详解:CD4069搭出方波发生器
发布时间:2026/10/7 3:56:53 锦皓数字建站

搞模拟电路设计的人手头总得留几个能随手出方波的法子。上次帮一位学弟调课设他想用两个LED交替闪烁模拟呼吸灯手边没有555定时器也不想为这点事去写单片机程序我就从元件盒里翻出一片CD4069、一支100k电阻、一个0.1μF电容三分钟搭了一个非门多谐振荡器问题当场解决。这个场景我想很多工程师都遇到过方波源本身不难难的是用最少、最常见的元件把它做出来。这篇文章就来好好拆解非门多谐振荡器的原理与实现内容包括它为什么能振荡、频率怎么算、在Proteus里怎么画非门和搭仿真、实物面包板怎么接线调试以及我自己实测中踩过的坑和总结的排查技巧。适合正在做模电课设的学生也适合想用最小成本快速获得低频方波信号的电子爱好者。只要你理解电容充放电、懂一点门电路输入输出特性这篇文章就不会有阅读门槛。1. 非门多谐振荡器的原理拆解1.1 数字非门在模拟电路里的“第二身份”平时看非门大家脑子里只有一张真值表输入高输出低输入低输出高。它的本职工作是数字逻辑反相这没问题。但很多人忽略了一件事CMOS非门本质上是一个电压放大器而且增益还不低。以最常见的CMOS反相器为例它由一个PMOS管和一个NMOS管串联组成。输入电压很低时NMOS截止、PMOS导通输出接近电源电压输入电压很高时PMOS截止、NMOS导通输出接近地。真正有意思的是中间那段过渡区输入电压在电源电压一半附近时两个管子都处于导通状态此时输入电压只要变化零点几伏输出电压就会从接近电源剧降到接近地或者反过来。这段陡峭的传输特性就相当于一个高增益的反相放大器。这是非门能参与模拟振荡的第一个前提。没有这个放大能力后面讲的反馈和充放电都无从谈起。第二个前提是电路里必须有一个直流负反馈通路让非门的静态工作点落在中间那段陡峭区。实际中只要在输出和输入之间接一个电阻非门就会被“偏置”到翻转阈值附近变成一个可以用在模拟电路里的反相放大单元。有人可能会问那我直接用运放不行吗当然行但运放需要供电、需要偏置、需要频率补偿成本高、引脚多。非门换来的是极简一片74HC04里有六个非门几分钱一个静态功耗还低。这就是它在简单振荡器应用里依然有生命力的原因。1.2 一个非门、一个电阻、一个电容怎么振荡起来典型电路其实非常简单非门的输出脚经过一个电阻R接到自己的输入脚输入脚再对地接一个电容C。就这三个元件没了。很多人第一次看到这个电路会犯迷糊一个反相器输出接到输入那不是自己跟自己打架吗确实如果中间没有电容这就是一个不稳定的环形结构因为非门输出总会试图把输入推向相反电平最终结果就是电路锁死没有振荡。电容的作用是把“打架”变成“延迟”。我们完整走一遍振荡过程。假设某个瞬间电容电压为0即非门输入为低。此时输出变高并通过电阻R慢慢给电容C充电输入电压开始指数上升。当输入电压爬升到非门的翻转阈值附近时输出电平开始迅速下降。由于输出一旦翻低电容电压不能突变此时输入其实已经比阈值略高一点于是电容又通过电阻向低电平输出端放电输入电压转为指数下降。等输入电压降到阈值以下输出再翻高又开始下一轮充电。四个阶段循环往复充电到阈值、翻转、放电到阈值、再翻转。电容电压在阈值附近来回“穿越”输出端就得到一串方波。这种利用电容储能、通过阈值比较不断翻转的振荡器在专业术语里叫张弛振荡器也叫弛张振荡器。它和正弦振荡器最大的不同是波形不是靠谐振选频产生的而是靠“充放电到阈值就突变”产生的。“多谐振荡器”这个名字也值得解释一下。从频域看方波可以分解成基波和无数奇次谐波能量分布在多个频率上所以叫“多谐”。又因为它没有稳定状态两个电平状态交替出现所以也叫“无稳态电路”。从它的堂兄弟“单稳态”“双稳态”一路看下来这个命名体系其实很统一。1.3 决定振荡频率的因素有哪些从原理上推导影响频率的第一个因素自然是RC时间常数。R越大C越大充放电越慢振荡周期越长。这是最直接的线性关系工程估算公式基本就是围绕它展开。第二个因素是翻转阈值Vth的位置。如果Vth恰好是电源电压的一半充放电过程相对对称输出占空比接近50%周期也好估。如果Vth偏离中点比如某些具体型号的芯片实测阈值只有1.2V5V供电时偏低那么充电到阈值的时间变短、放电到阈值的时间变长占空比会明显不对称。第三个因素容易被忽略门电路的延迟时间。当R和C的乘积很小、振荡频率很高时RC决定的理论周期可能已经和门电路本身的传播延迟一个数量级了。此时输出翻转一次输入还要再等门延迟才反应实际频率会明显低于计算值。换句话说RC管低频门延迟管高频上限。第四个因素是电源电压和温度。电源电压一变CMOS阈值和输出摆幅都会变频率跟着变温度会影响电阻值、电容值以及半导体阈值频率也会飘。这些因素决定了这个电路“够用但不精密”需要精确频率的场合不建议使用。2. 经典电路与参数计算2.1 振荡级整形级实际可用的完整电路上面讲的核心电路是一个非门加RC但在实际项目里我很少直接用它输出波形。原因很简单单非门振荡器输出脚的方波边沿不够陡因为RC充放电过程会通过反馈电阻影响门输出状态波形边沿会有明显的“拖尾”和毛刺驱动后级逻辑电路时容易误触发。所以成熟的接法是加一个整形级让第一个非门负责振荡第二个非门只做缓冲整形输出端就能得到陡峭、干净、标准逻辑电平方波。以CD4069为例完整接法如下第一组非门的输入是1脚输出是2脚2脚接电阻R到1脚1脚对地接电容C然后把1脚这个节点同时接到第二组非门的输入3脚第二组非门的输出4脚作为整个电路的方波输出。原理上第一级非门通过R和C形成张弛振荡输出波形虽然基本是方波但上升沿和下降沿不够利落第二级非门只做反相整形它输出高电平时第一级输出低一来一回等于把波形再“削”了一遍边沿变得干脆利落。如果你手头有施密特触发反相器比如74HC14也可以直接用其中一级替代“普通非门RC”的振荡核心。施密特门内部带滞回输入电压要越过一个较大的滞后区间才会翻转抗噪声能力强振荡更稳定频率公式也因此略有不同。后面会说。2.2 频率公式与参数表工程上单非门RC振荡器的周期有一个非常常用的估算公式T ≈ 2.2 × R × C对应的频率为f ≈ 1 / (2.2 × R × C)这个公式是怎么来的很多教材从理想模型推导假设翻转阈值为电源电压的一半那么充电半周期是RC×ln2≈0.693RC充放电各半个周期总周期约1.386RC。但实际中翻转发生时输入电压往往已经“过冲”越过阈值再加上门电路的延迟实测周期普遍比理想值大工程上取2.2这个系数更贴合常见的CMOS门实测结果。所以我个人使用时的态度是2.2RC作为快速估算非常好用但最终以实测为准。尤其是TTL门和CMOS门、不同电源电压下系数会有偏差。我用这个公式整理了一组常用参数方便直接抄作业。电阻R电容C估算频率f100kΩ1μF≈4.5 Hz100kΩ0.1μF≈45 Hz10kΩ0.1μF≈455 Hz10kΩ10nF≈4.5 kHz1kΩ10nF≈45 kHz1kΩ1nF≈455 kHz需要说明的是最上面两行适合LED闪烁、低频时钟中间两行适合音频范围信号源最下面两行频率比较高门延迟的影响开始显现实际频率可能比表格里偏低。还有一个非常关键的经验使用TTL门比如74LS04时反馈电阻R最好取几百欧到10k之间不要超过10k使用CMOS门CD4069、74HC04时R取10k到1M甚至更大都没问题。原因是TTL输入结构内部有较大的偏置电流R过大会导致输入节点无法被正确拉到翻转区间电路可能直接锁死。CMOS输入阻抗极高几乎不消耗直流电流大电阻也能正常工作。这个差别是新手最容易踩的坑。2.3 占空比调节与波形处理默认电路输出的方波接近50%占空比但由于实际翻转阈值往往不是精确的电源电压一半占空比多少会偏移。如果只是让LED闪烁无所谓但如果你需要精确的对称方波或者想主动调节占空比有两个办法可以试。最简单的办法是换施密特触发反相器比如74HC14。它内部有两个明确的转折电压一个高阈值、一个低阈值且两个阈值之间的滞回区间设计得相对对称输出占空比通常比普通非门更接近50%频率也更稳定。如果想主动调占空比可以在反馈通路上动一点手脚把原本的一个电阻拆成两个分别串联方向相反的二极管再并联在一起接到输入节点。这样充电走一路电阻放电走另一路电阻两路时间常数不同低电平和高电平的持续时间就不同。不过这个方案偏进阶新手可以先不用管知道有这条路就行。波形处理方面如果输出要送给对毛刺敏感的电路可以在输出端再串一个小电阻比如100Ω后接一个几十pF的电容到地做一个简单的低通滤波能削掉一部分高频毛刺。要是对波形质量要求高那小电阻加电容的RC滤波已经不够用了直接换比较器或运放方案更靠谱。3. Proteus仿真从画非门到看到波形3.1 非门在Proteus里到底怎么画先说大家最关心的非门在Proteus里怎么画。很多人一上来就在Proteus原理图编辑区的绘图工具栏里找“非门符号”想用2D图形工具直接画一个这是走不通的。那些图形只有显示作用不能参与仿真。正确做法是从元器件库中选取一个有仿真模型的反相器器件。具体步骤我按Proteus 8的界面来写。第一步打开Proteus新建一个仿真工程进入ISIS原理图编辑界面。第二步在左侧工具栏点击“Component Mode”就是那个像芯片的图标。第三步点击工具栏上的“P”按钮也就是Pick Devices弹出元器件搜索窗口。第四步在“Keywords”输入框里输入型号名称。如果想要最经典的六反相器输入“74LS04”在下拉列表里会看到“74LS04 HEX INVERTER”双击它器件就添加到左侧列表里了。然后关闭搜索窗口在原理图编辑区单击放置。如果想要CMOS版本搜索“CD4069”或“74HC04”如果只是画一个抽象的非门逻辑符号搜索“NOT”也会找到对应的逻辑门器件但仿真特性和具体芯片会有差别。放置时按空格键可以旋转方向按CtrlE可以打开编辑属性对话框双击器件也能修改器件型号和封装。画好一个非门之后按住Ctrl再拖拽可以复制多个。一片七四系列的六反相器里有六个独立的非门对照引脚编号使用即可不用的门输入不要悬空。3.2 完整仿真电路搭建与示波器观察在Proteus里搭完非门下一步就是把它连成振荡器。我建议用CD4069因为它是CMOS门在仿真里对RC参数更宽容不容易因为电阻取值问题锁死。拿CD4069的前两个门举例。第一门的输入引脚是1脚输出是2脚。从2脚接一个电阻R到1脚再从1脚接一个电容C到地。然后把1脚这个节点用导线连到第二门的输入3脚第二门的输出4脚就是整形后的方波输出。关于电源问题Proteus对74系列芯片默认会按5V供电处理很多情况下不接VCC和GND也能运行数字仿真。但CD4069这类CMOS器件如果仿真出现异常最好显式接上电源从终端模式里选择POWER终端接到14脚VDD选择GROUND终端接到7脚VSS电源电压设置为5V。接下来加虚拟示波器。在右侧虚拟仪器工具栏找到“OSCILLOSCOPE”图标放置一个示波器到原理图中。把A通道探头接到非门输入节点也就是RC节点把B通道探头接到整形输出端。点击左下角运行按钮示波器窗口里就能看到波形。如果波形没出现点示波器界面的绿色自动量程按钮或者调整时基。3.3 仿真不起振先检查这三件事Proteus里仿真非门振荡器最常见的现象不是波形不对而是完全不起振输出恒高或者恒低。这是很多初学者卡住的地方。我总结过原因绝大多数出在仿真模型上。Proteus里普通的74LS04、74HC04默认数字模型对非门的模拟线性区行为模拟得非常粗糙。数字模型只认逻辑阈值而RC节点上的电压是缓慢指数变化的数字模型很难正确处理这种“模糊电平”结果就是仿真器认为输入永远够不到翻转条件电路锁死。解决办法有三种按推荐程度排序。第一种换施密特触发反相器。搜索“74HC14”它的输入模型带有明确的阈值切换特性在Proteus里更容易起振。第二种给RC节点一个“初始扰动”。可以在节点上临时接一个脉冲电压源让电路在启动瞬间被强行推一把等起振稳定后再断开或者在仿真设置里把初始条件设置为“零”让电容从0V开始充电。第三种绕开数字门直接用模拟器件搭一个反相器。比如用一个LM393比较器反相输入端接RC节点同相输入端接2.5V基准电压两个10k电阻分压输出端上拉后经过R反馈到反相输入端C接在反相输入端到地同样能实现非门张弛振荡而且模拟引擎计算非常可靠。我自己在Proteus里做演示时最省事的组合是74HC14加RC仿真基本不会出毛病。普通非门方案如果不起振第一反应不要怀疑电路原理而是想想是不是数字模型在“作怪”。4. 实物搭建与波形实测4.1 元件选型与面包板接线实物做起来难度其实比仿真还低。推荐用CD4069或者74HC04一片芯片、一个电阻、一个电容、一块面包板、几根杜邦线、一个5V电源不到十分钟就能搭完。我习惯用CD4069的原因是引脚直插、输入阻抗高、输出能直接驱动LED而且CMOS门对反馈电阻限制小。具体接线步骤可以这样操作把CD4069插到面包板中间缺口朝左14脚在左上7脚在右下。电源部分14脚接5V正极7脚接地并且最好在14脚和7脚之间并一个0.1μF陶瓷电容做电源去耦。振荡部分第一门输入1脚接R的一端和C的一端C的另一端接地R的另一端接第一门输出2脚也就是反馈电阻跨接在2脚和1脚之间。整形部分把1脚节点用导线接到第二门输入3脚第二门输出4脚作为信号输出端。如果只是想快速看效果在4脚和地之间串一个1k电阻再串一个LED或者直接接一个无源蜂鸣器通电后就能看到闪灯或听到声音。这里必须提醒一句CD4069每个门输入端都不能悬空不用的门输入全部接地。悬空CMOS输入会导致逻辑不定、功耗上升甚至芯片发热这是CMOS器件的通病。4.2 实测波形与数据分析接好电路用示波器测量时第一路探头接RC节点第二路探头接整形输出端。RC节点上应该看到一段近似指数上升、又指数下降的波形形状有点像三角波和指数波的结合体幅值大约在0到5V之间来回穿越阈值。整形输出端则是标准的方波高电平接近5V低电平接近0V边沿很陡。以我实际测过的一组数据为例R100kΩ、C0.1μF按公式估算频率 f≈1/(2.2×100k×0.1μF)≈45.5Hz。用示波器实测周期约22ms对应的频率约45Hz和估算值吻合得相当好。如果换用精度更高的金属膜电阻和CBB电容误差还能更小。有人喜欢用万用表频率档测这个电路也不是不行但要注意万用表频率档对占空比和幅值有要求强推信号幅值偏低时可能测不出读数建议还是示波器更直观。示波器探头本身有十几皮法的输入电容测高频时会影响振荡频率低频应用基本不影响。4.3 频率调节与日常使用技巧想连续调节频率最简单的办法是把固定电阻R换成多圈电位器比如100kΩ多圈电位器串联一个10kΩ固定电阻防止调到零欧时电流过大。一边转电位器一边看示波器频率读数整个过程非常直观。不同频段的应用也值得留意。电容取1μF到10μF时输出零点几赫兹到几赫兹适合LED慢闪、状态指示灯电容取0.1μF到1μF时输出几十赫兹到几百赫兹适合蜂鸣器、简单电子琴音调电容取1nF到10nF时输出几十千赫兹可以作为简易方波信号源。驱动能力方面CD4069这类CMOS门输出电流一般只有几毫安直接驱动一个LED串限流电阻没问题但驱动继电器、喇叭或大电流负载就不够用了。正确的做法是非门输出先接到一个NPN三极管的基极基极串1k电阻三极管集电极去驱动负载发射极接地。这样既保护非门又扩大了应用范围。5. 常见问题排查与实践心得5.1 典型故障速查表实物调试和仿真调试中问题集中的几个点上我整理成了一张速查表按“现象、原因、解决办法”三列来看。现象可能原因解决办法输出恒高不起振反馈电阻太大或太小静态工作点没落在线性区TTL门搭配大电阻换成CMOS门R取10k~1MTTL门R取几百欧~10k输出恒低不起振输入悬空、电容漏电严重、芯片未接电源检查电容是否CBB/陶瓷不要用漏电大的电解确认VDD/GND仿真中不起振Proteus数字门模型不支持模拟线性区换74HC14或比较器方案给节点加初始脉冲频率与公式差很多电容精度差、阈值偏移、门延迟、示波器探头电容用误差小的CBB电容以实测为准高频段降低RC乘积占空比明显不对称翻转阈值偏离VDD/2换施密特反相器接受现状或用二极管调占空比波形毛刺多电源去耦不足、地线回路过长芯片电源脚并0.1μF电容缩短面包板跳线芯片发热不用的非门输入悬空把所有不用的输入端接地排查时有个很好的习惯先用万用表直流档测非门输入脚电压。如果输入脚电压稳稳停在电源电压一半附近说明偏置正常振荡大概率是频率太高或者示波器没触发好如果输入脚电压停在0V或者VDD那说明RC偏置没建立起来问题出在反馈或电容上。5.2 几个只有实际调试才会发现的细节第一个细节关于电容类型。低频用大容量电容时很多人顺手拿电解电容但电解电容漏电流大充放电曲线不干净低频振荡频率可能被漏电影响。做精确一点的频率控制建议用CBB电容或者钽电容。做快速验证时电解电容也能凑合。第二个细节上电瞬间不一定每次都起振。某些情况下尤其是电源缓慢上升或者R特别大时电路可能锁定在一个电平状态。此时用手碰一下输入节点或者用一根导线把输入节点瞬间短接到地再断开给它一个“踢一脚”的触发振荡就起来了。仿真里也同理初始条件非常关键。第三个细节输出端不要直接并大电容负载。CMOS门驱动容性负载的能力有限输出端并一个0.1μF电容可能直接把振荡“拖死”。如果想滤波在小电阻之后再接电容而且电容值不要太大。第四个细节电源电压直接影响频率。同一个电路3.3V供电和5V供电频率可能相差百分之二三十。原因前面提过阈值和摆幅都变了。所以正式应用时电源要稳压别用电池电压一路下降到彻底没电。第五个细节元件布局很重要。R和C尽量靠近芯片引脚放置反馈线越短越好。高频振荡时导线本身有电感和寄生电容长线会造成波形畸变甚至频率偏移。5.3 方案对比与适用场景非门多谐振荡器不是唯一的方波产生方案但它有自己非常明确的生态位。我在实际项目里做选型时通常会把这几种方案摆在一起对比。方案优点缺点适合场景非门RC元件极少、成本最低、接线简单频率精度一般、驱动能力弱LED闪灯、简易信号源、课程实验555定时器频率较稳、驱动强、占空比可调外围器件多、电路稍复杂工业控制、中等精度定时运放/比较器精度高、阈值可调、波形好成本高、双电源有时麻烦测量仪器、精密方波源单片机灵活、可编程、可同步需要编程、成本/复杂度上升智能控制、多路时序输出具体到非门方案它最常出现在这几个场景里低频LED闪烁灯、双色LED交替指示、简易电子琴音调发生器、无源蜂鸣器驱动、电荷泵电路的粗时钟源以及各类数字电路课程的入门实验。从课程学习的角度看这个电路的“影响范围”其实比它本身大得多。它把模拟电路里最核心的几件事——电容充放电、阈值比较、正反馈翻转、时间常数设计——全部串在了一个极简电路里。理解了它往后看555内部结构、开关电源里的震荡环节、晶振电路的起振条件都会有更顺的思路。我个人在给学生上这一节实验课时最想强调的一句话是别看电路简单它值得你花一个下午把充放电曲线和翻转过程在示波器上仔细看明白。另外再分享一个小技巧无论是仿真还是实物遇到不起振先别急着怀疑公式先检查反馈电阻取值和门类型仿真不起振就换施密特反相器或给节点一个初始冲击实物不起振就用手碰一下输入节点大概率当场就能看到振荡。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。