0%

电路仿真实践:以SPICE和Simulink为例

所谓电路仿真,是指对设计出的电路的实际功能进行模拟。为了最大程度确保电路在实际工程中符合预期,在如今EDA如此发达的时代几乎几乎每个电路设计的流程里面都会用仿真,采用计算机仿真也成了硬件设计的必备技能之一。下面在这里简单介绍一些常用的仿真软件以及使用。由于在RM里硬件的考察主要为超级电容模块的制作,也就是功率硬件的方向,因此这里的仿真将更加侧重于功率电源方向。

SPICE原理仿真

SPICE(Simulation Program with Integrated Circuit Emphasis)为一个早期开源的电路原理仿真的软件,后续衍生出不少的版本。这些版本也由一些半导体厂/电子厂直接开发而来,例如Candence的PSpice,Ti公司版本的PSpice以及用于模拟电路仿真的Tina-Ti,目前我们课堂上用过的NI的Multisim,ADI公司版本的LTSpice,还有开源版本的ngspice(Kicad内置的仿真软件即为这个)

就我个人而言,比较常用的是LTSpice和Tina-Ti,这两个软件可以免费使用,并且LTSpice仿真的速度极快,一般小型的电路10ms的仿真基本上秒出结果。两者均可以进行稳态/瞬态仿真,幅频相频响应仿真,对于目前能接触到的绝大部分电路均可使用。同时SPICE仿真也可以导入厂商给出的IC模型,可参考LTspice 入门教程3 导入仿真模型,对于官方库内不存在的元件也能手动添加参与仿真

参考:
开启并运行LTspice
How to Generate a Bode Plot with LTspice
Generate a Bode Plot for an SMPS in LTspice 17.1

Simulink控制仿真

SPICE最大的缺陷在于对于数字控制的仿真支持不足。在开关电源的仿真中SPICE也能够搭建一个模拟的控制环路,然而如果要在SPICE中直接编程实现一些功能如数字控制的仿真是做不到的。Simulink恰好可以弥补这方面的不足,尤其是能够做到开关电源控制环路的分析和参数调整(虽然器件参数相比于SPICE比较理想化)

参考:
电力电子控制器 PID 参数的几种调试方法
Matlab选择求解器

简易自动调参

使用Matlab最大的好处是可以预先设计控制环路的PID参数,而不必在线手动调整。以如图的Buck电路为例,采用经典的Matlab自带器件仿真(也可以使用Simscape Electrical下的另一套器件),集成死区控制以及数字PID

该模型不能够进行连续的线性化,因此采用上述提到的 Frequency Response Based Tuning方法获取PID参数,双击打开PID模块的属性,在Automated Tuning下选 Frequency Response Based Tuning并点击右侧的Tune按钮

在弹出来的窗口中配置参数,参考文章中的参数说明,配置稳态起始时间,扫频持续时间(100/带宽),阶跃与正弦幅度,最后再配置控制系统的带宽以及相位裕度指标,按下Tune。之后Simulink会自动仿真得到一个参数,这个参数可通过点击Update PID Block按钮导出到PID模块中

文中涉及的仿真源文件下载

LTSpice sallen-key.asc
Simulink buck_example.slx