ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Circuitjs占空比调节全攻略:从555定时器到PWM信号源实操

Circuitjs占空比调节全攻略:从555定时器到PWM信号源实操 先交代一个背景。我平时会带硬件爱好者做实操入门这类问题被问得最多“老师我在Circuitjs里搭好了波形发生器占空比怎么调都调不动到底该加什么、改哪里”其实这个需求本身并不复杂难的是不少人在界面上没找到正确的入口或者不知道占空比由哪几个元件共同决定。今天这篇就把Circuitjs这个在线电路模拟器从界面操作到占空比调节包括我踩过的坑一次说清楚。Circuitjs是一款完全跑在浏览器里的电路仿真工具不需要装软件、不需要注册打开网页就能画电路、跑仿真还能用示波器看波形。无论你是在校学生做课程设计还是业余DIY爱好者验证一个电路想法它都非常合适。更难得的是它的仿真支持实时交互——运行过程中用鼠标拖动电位器波形会立刻变化这一点是传统EDA很难做到的。下面我按实际使用顺序来写从界面认知到动手搭电路再到你最关心的“占空比怎么调”。1. 为什么我习惯用 Circuitjs 做电路验证它真的比重型EDA更合适1.1 一款被低估的网页级仿真器先说说这东西的来头。Circuitjs最原始的版本是Paul Falstad写的Java模拟器后来被重写成了网页版国内也有第三方维护的中文镜像站搜索“Circuitjs”基本都能找到。它实现了包括RLC无源元件、二极管、晶体管、运算放大器、逻辑门、555定时器、变压器、传输线在内的几十种元件内置的示波器可以观察多个节点的电压波形也支持频谱分析、逻辑分析等功能。关键一点是它的仿真不是“按一下跑一遍给结果”的静态仿真而是实时动态的。你改变电路参数波形会立即重新绘制。之前我给学员演示RC充放电用Multisim要等参数刷新在Circuitjs里直接拖电容值充电曲线就跟着动课堂反馈完全不一样。1.2 和Multisim、Proteus这些“正规军”比怎么样很多初学者一上来就想装Multisim或者Proteus我不反对但如果你想快速验证一个电路原理Circuitjs的优势非常明显。我用实际场景做了个对比对比项CircuitjsMultisimProteus安装部署无需安装浏览器打开即用安装包大授权麻烦安装包更大破解版满天飞学习成本几分钟上手界面复杂菜单层级多元件查找繁琐仿真交互运行时可拖电位器、改参数参数修改后需重新仿真较难实时交互元件库规模教学常用足够工业级齐全MCU外设仿真强典型用途原理验证、教学演示、快速原型电子竞赛、复杂图纸仿真单片机固件级调试这并不意味着Circuitjs能取代专业工具。它更适合做“原理级”验证不适合做PCB级的信号完整性分析。但如果你要理解“为什么这个电路能产生方波”“占空比到底由什么决定”它的交互体验比重型EDA好太多了。我的习惯是先用Circuitjs把电路逻辑跑通再去专业工具里做精细化设计。2. 打开 Circuitjs 后的第一件事把界面和基础操作弄明白2.1 画布与菜单别急着画先认清入口第一次打开Circuitjs默认会加载一个示例电路。很多人上来就被这个示例搞得有点懵我建议直接在菜单栏选“文件”-“新建”或者中文版里的“重置/新建”先清空画布。顶部菜单主要有“文件”“编辑”“绘制”“显示”“选项”“帮助”在绘制菜单里可以添加元件。一个非常容易被忽视的地方是“示例电路库”。我强烈建议新手先花半小时把示例电路过一遍尤其是“555定时器”“音频”“逻辑门”这几个分类。里面每个电路都是完整的直接运行就能看波形。你可以把示例当作“活教材”先看别人怎么接线、怎么接示波器再自己动手搭。2.2 放元件、连线、旋转与删除在画布上添加元件有几个途径从“绘制”菜单选在画布上右键弹出快捷菜单或者用工具栏。中文版一般在画布顶部有“添加元件”分类按钮。画电路的基础操作我总结成几条添加元件在菜单里选择元件类型鼠标变成十字形在画布上点一下放置。比如添加一个电阻路径通常是“绘制”-“添加元件”-“无源元件”-“电阻”。连线鼠标左键点住元件的引脚拖到另一个引脚或节点上松开。注意Circuitjs的连线是画“导线段”如果中途需要拐弯松开后继续从拐点拖就行。旋转元件选中元件后按键盘的R键可以每次顺时针转90度。修改参数双击元件会弹出参数对话框。电阻默认单位是欧姆输入1k、10k这种带单位的写法可以直接识别。删除选中元件或导线按Delete键或者右键选择“删除”。移动直接鼠标拖动。移动导线时鼠标放在导线中间拖动。这些操作里最容易被忽略的是“双击改参数”尤其是信号源。很多人放了一个信号发生器默认输出的永远是正弦波以为不能改其实就是双击后没有往下翻设置项。2.3 运行/停止与仿真速度滑块画布上方或工具栏里有运行/停止按钮旁边通常有一个“仿真速度”滑块。这个滑块值得特别讲一下它控制的不是动画帧率而是仿真时间步长。滑块调高仿真推进快但可能会漏掉高频细节滑块调低仿真慢但波形细节更准确。遇到振荡器不起振、波形怪异的情况我第一个尝试就是把仿真速度滑块往慢的方向拉一档。很多新手以为把滑块拉满就是“性能好”实际在555这种带反馈的电路里时间步长太粗会直接看不到正确的充放电过程。3. 从零搭一个 555 方波发生器把波形“逼”出来的完整过程3.1 为什么要用555作为第一个自主电路如果说Circuitjs里只能推荐一个入门电路我一定选555定时器构成的无稳态多谐振荡器。原因有三个第一它包含电源、电阻、电容、芯片、示波器五种基本元素做完能熟悉全套操作第二它的输出是方波观察占空比非常直观第三后面要解决的“调节占空比”问题就是在这个电路上演化出来的。记住一个原则不要从网上下载现成的电路图然后照着抄。先用几分钟把下面这个电路亲手搭出来你对555内部充放电过程的理解会完全不同。3.2 动手搭元件清单与接线顺序我先给出完整的元件清单和参数你可以照抄元件参数/型号用途直流电压源 VCC5V供电地—参考点电阻 R11kΩ充电回路上半部分电阻 R210kΩ充电/放电共用电容 C10.1μF100nF定时电容555定时器默认核心振荡示波器—观察波形具体接线顺序如下先把直流电压源放到画布双击设置电压为5V。再接一个地线到电源负极。从元件库里添加一个555定时器。Circuitjs里的555符号会标出引脚编号照着下面接就不会错。把555的8脚VCC接到5V电源正极1脚GND接地。4脚是复位脚接法是直接连到8脚也就是接VCC否则芯片一直处于复位状态输出恒为低。把7脚放电串接R1到VCC再把7脚接到R2的一端。R2的另一端接到2脚触发和6脚阈值的公共节点上。也就是说2脚和6脚要先短接在一起R2下端接这个节点。从这个公共节点接C1到地。3脚是输出把示波器探头接到3脚上。这里最容易错的点是2脚和6脚必须连在一起然后通过R2接到7脚。如果接错波形会完全不对。接完后理论计算一下充电时间约0.693 × (R1 R2) × C放电时间约0.693 × R2 × C。代入R11k、R210k、C0.1μF充电时间约0.76ms放电时间约0.69ms周期约1.45ms频率约688Hz。占空比理论上约52.4%也就是说高电平时间略长于低电平。这个“略长”的原因就是因为充电回路里多了R1。3.3 示波器的正确打开方式示波器在Circuitjs里的使用有一些学习成本。默认画布上不会显示示波器你需要在“绘制”菜单里找到“示波器”或者从“工具”里调出然后在画布上放置一个示波器图标。真正要看波形时不能直接右键选节点而是先点示波器图标示波器面板会弹出然后鼠标点击面板上的“”号对应探头拖出一条线放到你要观察的节点上。可以接多个探头到不同节点每个通道用不同颜色区分三条线分别接555的3脚输出、电容电压节点、以及电源也行。示波器面板上有个小标签双击后可以调整时间轴缩放、每格电压。新人经常遇到的场景是示波器上一条直线多半是探头没接好或者接的是没有变化的节点。还有一次学员说“看到一条斜线”其实是电容充电曲线没有触发到更新把仿真速度调慢一档就正常了。调试电路时我习惯同时观察3脚输出和电容电压两个通道这样能直观看到“电容充电到2/3VCC翻转”的整个过程。4. 热搜问题Circuitjs 里调节占空比到底应该改什么4.1 方法一PWM信号源直接把占空比写进参数框如果你不需要研究555原理只是想在电路里获得一个占空比可调、频率稳定的PWM波最省事的方法是使用Circuitjs自带的PWM信号源。很多人不知道信号发生器可以切换波形类型默认界面显示的是正弦波就容易绕弯路。操作路径添加一个“信号源”一般在“电源/信号源”分类下双击它在对话框里找到“波形”相关的下拉菜单从默认的正弦波改成“PWM”或“脉冲”。改成PWM后对话框里会额外出现“占空比”Duty Cycle输入框直接填0.3就表示30%填0.8表示80%。同时设置频率比如1kHz把输出接到示波器运行仿真就能看到标准方波。这个方法最直接非常适合验证驱动电路比如MOSFET栅极驱动、LED调光、蜂鸣器控制等。你只需要关注输入信号对后级电路的影响不必关心PWM是怎么产生的。4.2 方法二555定时器改R和C——理解占空比本质的必经路如果一定要在自搭的555电路里调占空比那就要理解前面给的公式。无稳态模式下充电路径是VCC→R1→R2→C放电路径是C→R2→内部放电管。R2同时参与充电和放电所以标准接法里占空比天然大于50%而且单纯调R2并不能很宽地改变占空比比例上下限都受限制。想要宽范围调节占空比最常用的改法是把R2替换成一个电位器然后运行仿真时用鼠标拖动电位器的中间抽头。Circuitjs的交互优势在这里体现得非常明显波形会随着你拖动实时改变宽度。对于占空比能低于50%的需求就需要让充放电回路独立。做法是在R2两端分别串二极管从R1下端7脚附近串一个二极管D1到节点A2脚和6脚连接处充电电流走D1从节点A串另一个二极管D2到R2再回到7脚放电电流走D20.1μF电容从节点A接地。这样一来充电时间由R1决定放电时间由R2决定占空比可以做到R1/(R1R2)理论范围就能覆盖0到接近100%。Circuitjs里二极管在半导体元件分类下直接选默认的1N4148或1N4007都能用。不过要注意二极管有约0.7V压降占空比实际值和理论值会差一点这是正常的。4.3 方法三用逻辑门RC振荡器调占空比还有一类高频场景会用逻辑门振荡器比如用两个非门或施密特触发器反相器搭环形振荡器。在Circuitjs里你可以从“数字”分类下拖出逻辑门配合电阻电容搭一个占空比可调的振荡电路。具体结构和555类似一个RS触发器或者施密特触发器输入端的RC时间常数决定频率占空比则可以通过分压电阻比例独立设定。这个方法在理论教材里不常见但在开关电源控制芯片比如常见的SG3525、UC3842这一类里占空比调节方式本质上就是改变RT和CT的组合。如果你以后想深入电源控制环路建议在Circuitjs里搭一次逻辑门振荡器把RT、CT与占空比的关系亲手验证一遍。4.4 几个“调占空比”的典型误区先说结论再做解释误区1调电源电压能调占空比。很多人反馈“我把电压从5V改到12V占空比没变”这太正常了555的分压比较点由内部三个5k电阻决定比例固定电压只影响幅值不影响时间比例。误区2把R1改成0就能得到50%占空比。实际完全不行。R10时充电电流直接从电源到内部放电管工作异常甚至仿真会报步长过小。误区3直接用示波器读出来的占空比等于理论值。实际上内部饱和压降、二极管压降、寄生参数都会让结果有偏差相差几个到十几个百分点都正常。误区4在PWM信号源里把占空比设为0.5以为单位是百分比。某些版本里这里填0到1之间的小数某些版本填0到100之间的整数。填错了波形要么一直低电平要么一直高电平很多新人在这里卡半天。5. 把仿真做稳的几个硬经验一些踩坑记录5.1 波形乱跳、看不清楚该按什么顺序排查遇到示波器波形像乱码一样抖个不停我的排查顺序是固定的先看地线再看电源连接然后看示波器探头节点最后把仿真速度滑块往慢调。很多新手搭完电路不接地线导致示波器没有参考点波形会飘。还有的情况是电源电压和555的复位脚没有正确接高电平导致芯片反复复位看起来像高频抖动。这些基础问题排除之后再调整示波器的时间轴。双击示波器面板把“每格时间”调大就能看到完整周期如果只看到几条细线可能是时间轴走得太快屏幕上只能显示半个周期甚至几个上升沿。5.2 仿真速度滑块不是“倍速播放”这个要再强调一次。Circuitjs的仿真速度滑块本质是调整内部数值计算的时间步长。RT、CT值非常大比如1M电阻配1000μF电容时一个周期要好几秒如果滑块拉满示波器可能几秒钟都刷不出完整波形看起来“卡死了”。实际不是死机而是电路本身就慢。遇到这种情况把滑块稍微往下拨真实时间流逝变慢但你能看到电容电压一点一点抬升教学演示时反而更有说服力。还有一个经验如果你的电路含有变压器或电感初始上电瞬间仿真容易震荡最好先把仿真速度调慢等波形稳定后再把速度调回来。5.3 保存电路、导出图片和写实验报告Circuitjs提供了几种保存方式这也决定了它特别适合写实验报告。你可以用“文件”→“保存”它会生成一个包含电路信息的URL链接。下次打开这个链接电路原封不动重建。把链接发给同学或同事对方也一样能打开。电路搭完以后要导出图片的话从“文件”菜单里选择导出图像生成PNG格式插到实验报告里完全够清晰。如果你想分享的是可编辑的电路而不是图片就用“导出电路文本”把那一堆文本复制粘贴给别人对方在“导入电路文本”里粘贴就能复原。写报告时我一般会导出三种东西电路截屏、示波器波形截屏、以及带参数标注的元件清单。有了这三样实验报告的技术含量直接上一个台阶。比如你在报告里写“理论占空比52.4%实测51%”配一张示波器图老师一眼就能看出你真的跑过仿真。说了这么多最后聊聊我的真实体会。占空比调节这类问题表面上问的是“该添加什么元件”实际上问的是“占空比由什么物理过程决定”。如果你用的是PWM信号源改一个数字就完成如果你用的是555定时器或逻辑门振荡器那就要回到电阻电容的充放电回路去理解。我在实操中越来越倾向于先用PWM信号源验证后级电路逻辑再回过去搭一个由R和C构成的真实振荡器把两种思路对照着看。每次带学生做电机调速或者LED调光实验时只要他们能自己把555电路的占空比调出明显变化后面再理解开关电源的控制逻辑就顺畅很多。希望这篇也能帮你少走几步弯路。
返回列表