ARTICLE DETAIL

资讯详情

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

用LTspice仿真施密特触发器:从回差曲线到实战技巧

用LTspice仿真施密特触发器:从回差曲线到实战技巧 很多朋友学施密特触发器时都会被教科书上那条回差曲线绕晕什么正向阈值电压、负向阈值电压、迟滞宽度背得滚瓜烂熟可真到了用LTspice拉一个仿真电路出来反而不知道怎么下手。我之前也经历过这个阶段——原理全懂一开软件就懵。后来花了一个下午把施密特触发器的LTspice仿真整个跑通才发现这东西一旦捋顺了不仅不玄乎反而特别直观而且5分钟出传输特性曲线真的不是吹的。这篇文章我就把这个过程从头到尾拆开讲包括电路搭建、DC扫描设置、波形解读还有我踩过的几个坑希望能帮你少走点弯路。1. 施密特触发器到底在解决什么问题——先搞懂它和普通比较器的本质区别施密特触发器这个名字听起来很高端但它本质上就是一个带正反馈的比较器。普通比较器只有一个阈值电压输入电压在阈值附近稍微抖动一下输出就会跟着反复翻转而施密特触发器有两个阈值电压一个正向阈值电压V_T一个负向阈值电压V_T-且V_T必须大于V_T-中间这个差值就是迟滞电压或称回差电压。理解这个迟滞是整个仿真分析的关键。你可以把它类比成空调的温控逻辑室温降到25℃以下时启动制热升到28℃以上时停止制热中间的3℃就是迟滞用来防止继电器频繁通断。施密特触发器做的事儿一模一样——输入电压从低到高变化时输出翻转所对应的阈值是V_T但从高到低变化时翻转点并不是V_T而是更低的V_T-。这带来的直接好处就是输入信号在阈值附近有噪声或者抖动时输出不会来回乱跳。实际应用场景里我接触最多的有三个地方。第一个是波形整形比如把一个上升沿很慢的、带毛刺的正弦波或三角波整形成标准的方波施密特触发器干的活儿就是把过渡过程直接剪掉。第二个是按键消抖机械按键按下和释放的瞬间电平会有几十毫秒的抖动软件消抖是一种思路但硬件上加一个施密特触发器做输入整形更省心。第三个是振荡器施密特触发器配合一个RC网络就能构成张弛振荡器输出一个频率由RC决定的方波很多简易报警器、闪烁灯电路都是这么干的。这也是为什么我特别建议你去仿真跑一下而不是光看理论。因为只看公式你很难直观感受到同一个输入电压上升时和下降时的输出状态不一样这件事到底意味着什么。用LTspice把传输特性曲线扫出来一眼就能看见那条经典的回差曲线比背十遍公式都有用。2. 为什么选LTspice以及搭电路前要算好的那几个关键数LTspice在仿真施密特触发器这件事上有几个很实际的优势。第一它免费而且正版授权对个人用户完全开放不存在破解版的问题学生和工程师直接官网下载就行。第二它的DC扫描分析功能做得很顺手专门适合看传输特性。第三LTspice自带的元件库里既有理想的施密特触发器数字模型也有像CD40106、74HC14这种真实芯片的模型甚至还支持你自己用比较器加正反馈电阻搭一个施密特结构灵活性非常高。在动手搭电路之前我强烈建议你先拿计算器把预期阈值算一遍。这样后面看仿真结果的时候心里有个底。这里我以最常见的比较器加正反馈电阻结构为例来说明。电路结构是这样的一个比较器或者运放当比较器用同相输入端接参考电压VREF反相输入端接输入信号VIN输出端通过一个反馈电阻RFB接到同相输入端构成正反馈。当输出为高电平VOH时同相输入端的电压会被抬高当输出为低电平VOL时同相输入端的电压会被拉低。这两个状态下的同相输入端电压就是两个翻转阈值。具体计算时把同相输入端看成VREF和输出电压VOUT通过反馈电阻网络叠加的结果用叠加定理可以直接写出两个表达式正向阈值电压V_T VREF (VOH - VREF) × R1 / (R1 RFB)负向阈值电压V_T- VREF - (VREF - VOL) × R1 / (R1 RFB)其中R1是同相输入端对地的电阻。举个例子假设VREF 2.5VVOH 5VVOL 0VR1取10kΩRFB取100kΩ那么V_T 2.5 (5 - 2.5) × 10 / 110 ≈ 2.727VV_T- 2.5 - (2.5 - 0) × 10 / 110 ≈ 2.273V迟滞宽度就是 2.727 - 2.273 ≈ 0.454V这个先手算、后仿真的习惯非常重要。因为仿真跑出来的曲线如果跟你手算的差异很大那大概率是电路连接或者参数设置有问题而不是仿真不准。反过来手算值和仿真值对得上你才能确信自己对这个电路的理解是真的通了。3. 4步完成电路搭建从放置元件到建立仿真环境我建议第一次尝试时不要直接调用LTspice自带的施密特触发器数字模型而是先用比较器加正反馈电阻的方式搭一个离散电路。这么做虽然多花两分钟但对理解工作原理的帮助是直接的模型没法比的。3.1 新建原理图和放置核心元件打开LTspice点击File - New Schematic新建一张空白原理图。然后用快捷键F2打开元件库依次放置以下元件一个电压源V1作为输入信号方便后面做DC扫描。一个电压源VCC作为电源电压设为5V。一个电压源VREF_V输出2.5V作为参考电压。这里我直接用另一个电压源来提供参考电压优点是直观、好控制不涉及分压电阻的计算。一个比较器。LTspice元件库里有专门做电压比较的符号搜索comparator和opamp都能找到。如果你用的是理想运放后面需要通过正反馈电阻把它接成施密特结构。两个电阻R1取10kΩRFB取100kΩ。3.2 设置比较器的参数如果你用的是LTspice自带的opamp模型默认性能跑这种低频仿真完全没有问题。但有一个需要注意的细节理想运放的输出高电平不一定是5V有些模型默认的输出摆幅是电源电压减1.5V左右也就是说VOH可能只有3.5V这直接会影响前面手算阈值的结果。想避免这个不确定性有两种办法。一种是在仿真前先跑一下直流工作点看看运放输出的实际高低电平再把手算公式里的VOH和VOL换成实际值重新算一遍。另一种办法更省事——直接在LTspice的元件库里找一个实际型号的比较器模型比如LT1011或者LT1016。这些模型里面包含了真实的输出级结构比如集电极开路输出配上拉电阻的细节仿真结果会跟实际电路板更接近。如果你是第一次用我建议先用LT1016这种推挽输出的快速比较器省去上拉电阻的麻烦。后续再尝试LM393这种集电极开路输出的型号反而能顺便练一练加上拉电阻的排错经验。3.3 连接正反馈网络和电源把比较器的同相输入端接到VREF_V的正极反相输入端接VIN也就是V1的正极。然后从比较器的输出端接一个100kΩ的电阻RFB到同相输入端注意不要直接短路输出和同相端中间必须串这个电阻。再在同相输入端对地接一个10kΩ的电阻R1。这个正反馈网络是整个电路的核心也是施密特触发器和普通比较器唯一区别的地方。正因为RFB的存在输出状态才会反过来影响比较器的参考输入从而形成两个阈值的效果。电源和接地也不容忽视。比较器需要正常上电才能工作VCC接5VVEE接GND。同时一定要把GND放好不接地的话LTspice会直接报错或者仿真结果离谱。还有一个很多人忽略的点输入信号源的GND和电源的GND要在同一个网络上否则输入电压没有参考基准仿真出来的波形会非常奇怪。3.4 放置输入信号源并准备仿真输入电压源V1暂时不需要设具体的DC值因为后面做DC扫描时会由扫描设置自动覆盖它的电压值。你只需要保证它的正负极方向正确并且跟反相输入端、GND的连接没有短路就行。到这里电路就算搭完了。比较器、正反馈电阻、参考电压、输入源一共就这四类元件整体结构非常简洁。用LTspice自带的分隔线和标签工具整理一下连线标注好各节点名称后面看图会舒服很多。4. 传输特性分析的关键DC扫描的方向与结果解读电路搭好之后接下来就是重头戏——用DC扫描得到传输特性曲线。4.1 DC扫描的参数设置方法点击Simulate - Edit Simulation Command在弹出的窗口里选择DC sweep页签。我们需要设置的是第一路扫描源Source选V1也就是我们的输入信号源。Start value0表示输入从0V开始扫。Stop value5表示扫到5V结束。Increment0.01表示每0.01V采一个点。这个步长值得多说一句。0.01V的精度在大多数情况下都够用了你可以在扫描完成后看到比较清晰的翻转点。如果步长设得太大比如0.1V那么翻转点只能精确到0.1V以内测出来的阈值跟手算值之间可能会有明显偏差你会误以为电路接错了。设定完成后点击OK再点仿真窗口里的Run按钮LTspice就会开始执行DC扫描。扫描完成后输入节点VIN的电压会从0V逐步增加到5V比较器输出节点VOUT的电压会被记录下来形成一条曲线。4.2 为什么只能看到一条边沿——扫描方向对结果的影响巨大我猜你第一次跑完DC扫描后一定会遇到这个困惑说好的回差曲线呢屏幕上只有一条从高电平跳到低电平的翻转边或者反过来完全没有教科书上那种上升路径和下降路径不重合的画面。原因在于DC扫描默认只从0V往5V单向扫描而施密特触发器的迟滞特性必须要分别经历低到高和高到低两个过程才能完整展示。只扫一个方向你看到的只是半边故事——这条路径上的翻转点恰恰是V_T-而不是V_T这是初学者最容易搞混的地方。举个例子我们的电路输入加在反相输入端输出默认是低电平因为初始输入为0VVIN大于同相端的2.5V扫描过程中输入电压不断升高到某个临界点输出从低翻到高这个翻转点对应的是反相输入端的负向阈值附近。这一步的精确值可以通过光标测量读出来但如果你只想看这条翻转边实际上还没把施密特触发器的精髓展现出来。所以正确的做法是让扫描方向完整地覆盖低到高和高到低两个过程。LTspice支持在DC sweep设置里添加第二路扫描源但稍微麻烦一点。更高效的办法是直接改用瞬态分析下面我会讲。4.3 用瞬态分析配合三角波输入一步得到完整回差曲线第二种方法更直观也更接近示波器上的实测场景——给电路输入一个线性上升再线性下降的三角波然后用XY模式查看输出对输入的曲线就能看到教科书上那种漂亮的双线回差。具体操作是把V1的DC扫描改成瞬态正弦或脉冲源。在Edit Simulation Command里选Transient设置Stop time为20ms。V1的波形用PULSE函数生成三角波比较繁琐我一般直接用一个分段线性源PWLPiecewise Linear写起来很直观0ms 0V 10ms 5V 20ms 0V这样一个从0V到5V再回到0V的对称三角波就生成了。仿真跑完之后在波形窗口里把横轴从Time改成V(VIN)的电压值也就是Plot Settings - Horizontal Axis选择对应变量纵轴保持V(VOUT)屏幕上出现的曲线就是完整的VOUT对VIN的传输特性而且上升段和下降段会自然形成两条分叉中间的间隔就是迟滞电压。这个方法最大的优点就是所见即所得你不用纠结DC扫描方向也不容易出错。我日常做施密特触发器仿真时基本都是直接用这个瞬态法。5. 比仿真结果更重要的迟滞窗口的测量与五个避坑经验迁延到实际测量这步很多人以为把曲线画出来就完事了其实读懂曲线里的门限电压才是真正的考验。下面我会先用光标法带你把阈值测出来再结合我实测踩过的坑帮你绕开几个容易翻车的地方。5.1 用光标测量V_T、V_T-和迟滞宽度在LTspice波形窗口里点击工具栏上的光标图标可以添加两个可拖动的光标。把光标放在翻转边沿的中点附近软件会自动显示该点的横纵坐标值。通常我们关心的三个指标是V_T正向阈值输入电压从低到高扫过来时输出发生翻转的那个输入电压值。需要注意的是因为我们的输入接在反相端所以这时输出的翻转方向其实是高到低读数时别绕晕了。V_T-负向阈值输入电压从高到低扫回来时输出发生翻转的输入电压值。迟滞宽度|V_T - V_T-|直接用两个光标读数相减就能得到。拿前面手算的例子运放使用理想模型并假设VOH接近5V时测出来的V_T大约在2.73V附近V_T-约2.27V迟滞宽度约0.46V。如果你的LTspice模型不是理想运放仿真值可能跟你说误差在零点几伏范围内这个误差来源我下面会展开讲。5.2 坑一比较器模型输出摆幅跟理想值不符导致阈值计算偏移大多数通用运放模型不是轨到轨输出最高输出电平比电源电压低1V甚至更多。你按5V算出来的阈值到了仿真里因为VOH只有3.5V阈值自然会跟着偏低或偏高。这个不是电路错了是模型特性不同。解决办法是先用瞬态仿真让输出稳定在高电平用光标读出实际VOH再套回公式重新算。或者干脆在LTspice里用电平转换一下。知道这一点之后你会发现有些时候仿真和手算对不上不是坏事反而是模型更真实的体现。5.3 坑二集电极开路输出的比较器容易直接没波形LTspice自带的LM393模型是集电极开路输出输出端必须接一个上拉电阻到VCC否则输出高电平时电压根本拉不上去。我第一次用LM393仿真就是因为漏了上拉电阻导致输出波形一直卡在低电平附近以为是电路短路了排查了半天才意识到问题。所以在选比较器模型时先看一眼它的输出级结构。推挽输出的型号比如LT1016、LT1719不需要上拉电阻用起来省心集电极开路的型号LM393、LM311必须额外加一个几kΩ到几十kΩ的上拉电阻。5.4 坑三DC扫描步长太粗翻转点定位不准前面提过步长设0.1V时你看到的翻转点只精确到0.1V而施密特触发器的迟滞窗口可能就0.4V左右这样测出来的迟滞宽度误差就很可观了。建议步长至少设0.01V如果想看更细致的翻转过程0.001V也行代价只是仿真时间略微增加。对于这种几个元件的小电路时间成本根本可以忽略。5.5 坑四PWL信号源和瞬态扫描时长没配合好曲线显示不完整用PWL做三角波输入时如果瞬态分析时长设置得比PWL总时长还短仿真结束时输入还没走完整个周期回差曲线的下半部分就缺失了。比如PWL写了20ms那Transient至少设20ms以上我一般习惯多留2ms余量确保完整显示。再有不要忘了在Plot Settings里把横轴改成V(VIN)否则你看到的只是一堆随时间变化的波形看不出回差效果。5.6 坑五阈值读数方法错误——边沿中点才是关键测量传输特性曲线上的翻转点时不要把目光盯在输出刚开始变化的那个点而是取边沿的中点即输出电平处于高电平和低电平中间位置时所对应的输入电压。因为实际比较器的增益不是无穷大输出翻转有一个过程取中点更能代表器件的真实门限。LTspice光标悬停在边沿上会自动捕捉局部波形你可以放大观察后定点这样读出的V_T和V_T-更接近数据手册上的规格。6. 还能怎么玩从传输特性到实际电路调试的进阶思路如果你已经把施密特触发器电路的传输特性曲线顺利跑出来了说明基础已经扎稳了。接下来可以往两个真实工程场景方向延伸验证一下自己对这种拓扑的理解能不能落地。6.1 进阶玩法一方波整形与抗噪能力验证把输入信号换成带噪声的正弦波或慢变化信号观察施密特触发器的输出。具体方法是在V1上叠加一个高频小幅值的噪声源比如用SINE加上另一个串联的小电压源模拟噪声或者直接用手动编辑PWL的方式加入毛刺。你很快会发现只要噪声幅度不超过迟滞窗口输出波形就是干净利落的方波不会有额外的翻转脉冲。这一步做下来你就真正体会到迟滞电压为什么能抗干扰了。它本质上是在输入和输出之间加了一道缓冲带任何小于迟滞窗口的扰动都会被直接忽略。而且你可以通过调整RFB/R1的比例来改变迟滞宽度找到抗干扰能力和响应灵敏度之间的平衡这在设计真实电路时是非常实用的调试手段。6.2 进阶玩法二施密特型RC振荡器仿真施密特触发器搭配阻容网络可以构成一个非常经典的无稳态振荡器。把施密特触发器的输出端通过一个电阻接到输入端同时在输入端对地接一个电容就构成了方波振荡器。振荡周期近似等于RC乘以两个阈值相关的系数具体可以用公式T RC × ln[(V_T × (VOH - VOL))/( (V_T - V_T-) × something)] 来估算但我更建议直接在LTspice里跑瞬态仿真用光标读出周期再跟公式互相验证。我试过用74HC14的模型配10kΩ和100nF仿真跑出来的频率跟理论计算值在一个数量级误差在百分之几以内这在实际工程中已经够用了。这种仿真练习还能帮你理解比较器、迟滞和RC充放电三者是怎么耦合的比单纯看电路图深刻得多。6.3 进阶玩法三用蒙特卡洛模拟看元件公差的影响LTspice支持给电阻和参考电压添加随机容差然后做多次扫描观察阈值电压的散布范围。比如把RFB设置成5%的容差R1也设成5%再跑几十次蒙特卡洛你会看到迟滞窗口的上下界在跟着变化。这对于设计批量生产的产品很关键——你不可能指望每一颗电阻的阻值都精确无比提前仿真出最坏情况才能在选型时留足余量。具体操作不复杂把电阻值写成比如{10k * (1 0.05 * mc())}的表达式然后模拟命令里指定蒙特卡洛运行次数就行。这个方法我刚学时觉得有点门槛但一旦跑通你会发现它直观展示了环境误差与电路性能之间的关系。说白了我用LTspice折腾施密特触发器最大的感受就是仿真不是目的理解才是目的。你不用佩服谁能在几分钟内拉出漂亮的曲线关键是你能否解释每一条线的翻转点为什么在那里。如果读完文章你也能亲手复现出那条回差曲线并且能看懂它的门槛电压、迟滞宽度跟电阻电容参数有什么关系那我觉得这篇文章花得就值了。
返回列表