当前位置: 首页 > news >正文

LTspice应用笔记——压控振荡器

最近想用LTspice对LLC变换器进行闭环仿真,但是LLC变换器又是通过频率的变化去动态调节增益。怎么实现频率的变化犯了难。

那么可能有人会想到可以使用LTspice自带的脉冲源或者正弦波源,然后在里面写频率控制参数。但是这么做并不容易,因为相位需要连续。在LLC闭环仿真中,频率是在时刻变化的。如果直接改变脉冲源的频率参数,波形在突变的瞬间,可能会发生相位跳变(波形突然从一半断开,从0V开始)。当然这在物理上不可能发生,这会导致变压器瞬间磁通不平衡,导致仿真报错。为了解决这种问题,并且让频率随着我的PI输出参数进行实时调整,我找到了另外的解决方法。

压控振荡器(VCO)是一种输出频率可随输入控制电压变化而调节的振荡器,其核心通过调节谐振回路实现频率控制。而我们目的正是希望信号的频率可随输入控制电压变化而调节。

首先,为了让相位连续,需要知道相位和时间的关系。在物理学中,相位是频率在时间上的积分。其表达式为:

在LTspice中,有一个自带的积分器,其表达式是idt(),它的功能是随着仿真时间的变化,会不断累加。在LTspice的帮助文件中也有该公式的简单描述。

当括号中写入100k(假设开关频率是100kHz)时(100,000),随着仿真时间的推移,它会不断进行累加,当仿真时间达到1s时,它的值则为100,000。那么当仿真进行了10us(一个开关周期)时,它的值则为1。当仿真进行了20us时,它的值则为2。

可以发现,它是一个斜率为100,000的正比例函数。在单个周期内,它的值增量是1,从0到1的点数,则是受仿真时间的间隔决定的。现在想通过它,获得产生方波信号所需要的调制信号。了解PWM波产生方式的人应该都知道,现在最常用的方法就是使用周期性三角波或者锯齿波,与一个变化的信号做比较,当一个电压高于另一个电压的时候,则输出高或者低点平。通过不断变化信号的幅值,达到改变脉宽的目的。

为获取到周期性的波形,再介绍一个函数。floor(),同样帮助文档里有简述,如下所示,是向下取括号中的值的整数部分。(C语言中也有这个函数)

将floor()和idt()结合使用,可以得到周期性的锯齿波:

仿真时间在0~10us内,idt(freq)是从0逐渐上升到1的斜坡,floor(idt(freq))=0。当时间到10us后,20us之前,idt(freq)是从1逐渐上升到2的斜坡,floor(idt(freq))=1。整个式子的值还是从0逐渐上升到1的斜坡。仿真实际效果如下图:

从上图可知,通过以上公式就可以得到频率为freq的锯齿波。那么只需要不断调整freq的值,即可得到频率变化的调制信号。但是,锯齿波在这种有上下管的电源电路仿真中不容易添加死区时间,而三角波在这方面却能很容易添加死区。所以还需要对为了后续方便,再对它进行波形变换,使其成为幅值是0~1的三角波。

通过对原始锯齿波向下平移,再取绝对值可以得到幅值为0~0.5变化的三角波,再乘2,就可以得到0~1变化的三角波。这里我还对它进行了翻转处理。大家可以思考一下这么做的意义是什么。

以上已经完成了大部分工作了,下一步就可以让PI输出的值去调整频率了。我目前是根据频率变化范围,用limit函数限制了最小频率freq_start和最大频率freq_final,然后再设定一个delta_freq*V(PI),将其值赋给上面式子中的freq。

通过以上的措施,则可以得到频率随PI值变化的三角波。相当于实现了压控振荡器的功能。

http://www.zskr.cn/news/1437884.html

相关文章:

  • 扩散策略实现机械臂零样本跨配置适应
  • 2026年湖北中可企业GEO服务公司品牌价值排名 - mypinpai
  • SSVEP-P300混合脑机接口系统设计与实现
  • MOS管控制电路深度解析:从仿真到实测,如何让3.3V单片机稳稳驱动10V传感器电源
  • 避开Matlab立体视觉的坑:双目标定参数设置与视差图优化实战
  • 用Python手把手教你实现一个简单的感知器(附AND/OR逻辑门完整代码)
  • 手把手教你给Ubuntu虚拟机“增肥”:从开机卡住到流畅运行的完整磁盘扩容指南
  • 动手实践:如何用现代仿真软件(如Multisim)搭建一个简易的PDM中波发射机原理模型
  • SCREME框架:低成本高可靠内存ECC技术解析
  • 告别状态机!在STM32单片机上用Protothread协程库实现异步LED闪烁(附完整代码)
  • 用 Agent 构建个人知识管理系统的完整方案
  • 2026火锅店划算底料供应商实测:火锅底料怎么选商用/火锅底料批发/火锅店专用底料/三家厂商核心维度对比 - 优质品牌商家
  • 用Unity Toggle做个游戏设置菜单:手把手实现音效开关、画质选项与导航逻辑
  • 保姆级教程:装完Ubuntu20.04没WiFi?手把手教你搞定驱动和内核更新
  • 别再死记硬背命令了!用CentOS 7.9实战GlusterFS三种卷(分布式/复制/分布式复制)的选型与性能对比
  • 2026西安学校灭蟑螂公司选择全流程技术推荐 - 优质品牌商家
  • 别再只调sklearn的KMeans了!用NumPy从零实现,搞懂质心更新和Inertia计算
  • 告别抖动!用Unity Cinemachine插件5分钟搞定2D游戏摄像机平滑跟随(附参数详解)
  • Selenium自动化测试环境搭建避坑指南:Win10/11系统下配置Edge驱动与Python
  • 从游戏手柄到VR头盔:聊聊陀螺仪数据‘积分’与‘姿态’那些坑,以及Unity/Unreal中的正确用法
  • 告别跑断腿!用UltraVNC MSI包+域组策略,半小时搞定全公司远程协助部署
  • 保姆级教程:用迅为RK3568开发板从零烧写实时系统固件(附常见问题排查)
  • 避坑指南:用WebViewForWindow在Unity播WebRTC,绿屏和硬件加速怎么关?
  • 2026年6月湖北武汉工伤维权律所怎么选?这份专业指南助你避坑 - 2026年企业资讯
  • 从RISC-V的ecall指令到用户态printf:一次完整的xv6系统调用“扩胸运动”
  • 从网格划分到端口设置:一份给ADS新手的Momentum RF仿真避坑指南(含Via阵列、电感Q值处理)
  • 基于C++实现(控制台)文件压缩
  • 不只是环境搭建:用OSG+OSGEARTH 3.1+VS2022快速验证你的三维地理可视化开发环境
  • 肺结节CT影像YOLOv5-ready数据集:220+训练图+28测试图+一键可视化脚本
  • 韩文长文本理解失效?Gemini 2.0韩语支持断层分析,3类政务/法律文档误译率高达41.6%,附绕过方案