2. 创建电容器子电路模型
任务说明
本案例创建一个电容器子电路模型,该模型包含两个关键参数:初始电压(IC)和等效串联电阻(ESR)。子电路将基于SPICE的原始电容器模型构建,通过参数传递实现初始条件和寄生电阻的设定,最终通过瞬态仿真验证RC充放电行为是否符合理论预期。
子电路实现
子电路命名为CAP_MODEL,定义了两个外部节点(正极1、负极2)。内部使用一个受控电压源V1串联电阻R1的方式建模:V1两端电压等于内部电容C1的电压,而C1通过V1的电流检测源V2(0V)形成回路,从而将ESR串联到电容支路中。初始电压通过IC参数传递给C1,ESR通过ESR参数设定R1阻值。
* 电容器子电路:支持初始电压与等效串联电阻
.SUBCKT CAP_MODEL 1 2 PARAMS: IC=0 ESR=0
V1 1 3 DC 0
V2 3 4 DC 0
C1 4 2 {C} IC={IC}
R1 3 2 {ESR}
.ENDS CAP_MODEL
说明:C为电容值(法拉),通过外部调用时以参数形式传入。子电路内部V1将节点1的电压复制到内部节点3,V2检测流过电容的电流(0V源),R1连接在节点3与2之间实现ESR串联。由于V1两端电压等于C1两端电压,因此外部端口1-2的电压等于电容电压加上ESR上的压降,符合实际电容器模型。
瞬态验证电路
搭建一个简单的RC放电测试电路:电容初始充电至5V,通过外部电阻R_EXT放电,观察节点电压变化。设定电容值C=1uF,ESR=10Ω,外部放电电阻R_EXT=1kΩ。理论时间常数τ=(R_EXT+ESR)×C≈1.01ms。
* 瞬态验证电路
V_IN 1 0 PULSE(0 5 0 1n 1n 10m 20m)
R_EXT 1 2 1k
X_CAP 2 0 CAP_MODEL C=1uF IC=5 ESR=10
.TRAN 0.1m 5m UIC
.PROBE
.END
使用UIC(Use Initial Conditions)关键字使IC=5生效。仿真时间5ms,步长0.1ms。
验证方法与判定标准
运行仿真后,观察节点2(电容端电压)波形。判定标准如下:
- 起始电压应为5V(初始条件生效);
- 电压按指数规律衰减,在t=1.01ms时电压应降至约5V×e⁻¹≈1.84V;
- 由于ESR存在,放电初期(t<0.1ms)电压降幅应略快于纯电容模型,但整体曲线仍符合RC指数衰减特征。
若波形满足上述三点,则证明子电路正确实现了初始电压设定与ESR串联效应。
预期输出
在t=0时刻,V(2)=5V;t=1.01ms时,V(2)≈1.84V;t=5ms时,V(2)≈0.08V。这些数值由RC指数衰减公式直接推出,与电路参数严格对应。
落地与运行方式
将上述两个代码块分别保存为cap_model.lib(子电路定义)和cap_test.cir(测试电路)。在SPICE仿真器(如LTspice、ngspice或PSpice)中运行cap_test.cir,需确保.include cap_model.lib或直接将子电路定义复制到测试文件顶部。仿真器需支持UIC选项以启用初始条件。
若使用ngspice,命令行执行:ngspice -b cap_test.cir,输出文件包含节点电压数据,可用绘图工具查看波形。