电子仿真 SPICE 课程:初始条件和 .IC 指令
扫描二维码
随时随地手机看文章
SPICE 中最有用的指令之一是允许您指定节点的初始条件以进行瞬态分析的指令。初始条件是瞬态分析开始时电路的电气条件。它们可用于表示处于静止状态的电路或表示特定时刻的电路状况。
.IC 指令允许您指定瞬态分析的初始条件。可以指定节点电压和电感电流。使用初始条件作为主要约束来执行直流解决方案。此指令有多种用途。例如,假设您正在模拟逐渐放电的充电电池或已达到特定电压的电解电容器。在所有这些情况下,此指令都是不可替代的,可帮助设计人员模拟任何工作条件下的电路。
请注意,通常情况下,该过程不会为单个组件分配初始电压值,而是为其所连接的节点分配初始电压值。这是一个微妙但重要的细微差别,需要在您的设计中理解和实施。实际上,.IC 指令不是电路模型的一部分;相反,它是瞬态模拟的一部分。一旦定义了初始条件,它将具有较高的观察和执行优先级。要使用的语法如下:
.IC [V()=<电压>] [I(<电感>)=<电流>]
例如:
. IC V(输入)=2 V(输出)=5 V(vc)=1.8 I(L1)=300m
可以在同一行中设置多个初始条件,也可以使用多个单独且独立的指令,每个指令针对特定的初始条件。
电容器的放电
假设您要模拟一个带有电解电容器和与之并联的 LED 的电路,该电路显然受电阻保护。在没有任何初始指令的情况下,正常模拟会在电容器两端产生 0 V 电位,因为没有其他电压源。解决方案需要观察电容器的电气行为,该电容器事先已充电至 12 V 电压。因此,模拟必须从组件上的正电压开始,这可以通过 .IC 指令实现。图 1 中的电气图显示了以下元素:
· C1,2,200 µF 电解电容器
· R1,330 Ω电阻
· D1,红色 LED
· “.tran 5”指令,指定 5 秒瞬态分析
· LED,如 LED1 模型规范中所定义
· “.IC V(cap)=12V”指令,将名为“cap”的线路置于 12 V 的初始电压
详细分析三个相关的波形图很有趣:
· 上面的第一张图显示了电解电容器 C1 两端的电压,在 5 秒的瞬态 (Vcap) 中。其电压从最初的 12 V(T = 0 时)降至 1.46 V(T = 5 时)。LED 在大约 10 秒后关闭,电流停止流过。在这种情况下,电解电容器放电非常缓慢,在理想元件和无损耗的情况下,其电位在几年后达到 0 V 电压。一年后,其电压仍约为 700 mV,因为不再有任何电流流动,但显然,它无法打开 LED。
· 第二张图位于中间,显示了流过 LED D1 的电流(与流过电阻 R1 的电流相同),始终处于 5 秒的瞬态。电流从最初的 31 mA(对 LED 来说不危险)(在T = 0 时)开始,一直到 106 µA(在T = 5 时)。
· 下方第三张图显示了 LED D1 两端的电压。在整个瞬态过程中,该电压几乎保持不变,平均为 1.6 V,这是红色 LED 的典型值。
图 1:初始充电的电解电容器可为 LED 供电一段时间。
LTspice SPICE 源列表如下:
* .IC directive for LTspice – by laocuo
C1 cap 0 2200µF
R1 cap D 330
D1 D 0 LED1
.model LED1 D(Is=1e-19 N=1.6 Rs=2.5 Eg=2.1)
.tran 0 5
.IC V(cap)=12V
.backanno
.end
ngspice源列表如下,并产生相同的结果:
* .IC directive for ngspice – by laocuo
C1 cap 0 2200µF
R1 cap D 330
D1 D 0 LED1
.model LED1 D(Is=1e-19 N=1.6 Rs=2.5 Eg=2.1)
.IC V(cap)=12V
.control
tran 100mS 5s
plot v(cap)
.endc
.end
电容器的电荷
图 2 显示了相反的过程,即对已部分充电的电解电容器进行充电。电气图包含以下元素:
· V1,12 V电压源
· R1,一个 3,300 Ω 电阻,用于限制充电电流
· C1 为 2,200 µF 电解电容器,部分充电,电压为 4 V,符合以下指令的规定
· “.IC V(cap)=4V”指令,将名为“cap”的线路置于初始电压 4V,实现部分充电电容器
· “.tran 60”指令,指定 60 秒的瞬态分析
从图中可以看出,电容器的充电不是从 0 V 开始,而是从 4 V 开始,因为它包含部分初始电荷。瞬态在大约 30 秒内结束。LTspice SPICE 源列表如下:
* .IC directive for LTspice – by laocuo
C1 cap 0 2200µF
R1 cap N001 3.3k
V1 N001 0 12V
.tran 60
.IC V(cap)=4V
.backanno
.end
在ngspice中的内容如下:
* .IC directive for ngspice – by laocuo
C1 cap 0 2200µF
R1 cap N001 3.3k
V1 N001 0 12V
.IC V(cap)=4V
.control
tran 100mS 60s
plot v(cap) ylimit 0,13
.endc
.end
图 2:电容器的部分电荷以及使用 LTspice 和 ngspice 获得的相关图表
我们可以不用.IC 指令吗?
如上所述,SPICE 中的 .IC 指令用于指定一个或多个节点的瞬态分析的初始条件。初始条件是瞬态分析开始时的电路条件。但是,可以为单个组件分配初始电压值。通常,在 LTspice 和 ngspice 中,只需手动编辑 SPICE 源列表并使用以下属性指定组件两端的电压即可:
C1电容0 220µF IC=9
在 LTspice GUI 上,操作更加简单,只需右键单击组件并同时按下 CTRL 键即可。然后,您需要在 SpiceLine 框中指定“IC=9”属性。此更改也将显示在 SPICE 源列表中。图 3 显示了涉及电解电容器放电的简单电路。当其降低的电压达到第一个晶体管的截止阈值时,LED 亮起。请注意,电路图中未使用 .IC 指令,而是电容器包含其“IC=9”属性,该属性决定了该组件上的初始电压。LTspice SPICE 源列表如下:
* .IC directive for LTspice – by laocuo
C1 cap 0 220µF IC=9
R1 N005 cap 10k
Q1 N004 N003 0 0 BC_547
D1 N002 N004 LED1
R2 N001 N002 330
V1 N001 0 9V
Q2 N003 N005 0 0 BC_547
R3 N001 N003 10k
.tran 0 40 0
.model BC_547 NPN (IS=50.7F NF=1 BF=325 VAF=155
+ IKF=.3 ISE=15.6P NE=2 BR=4 NR=1 VAR=24
+ IKR=.45 RE=.907 RB=3.63 RC=.363 XTB=1.5
+ CJE=20.8P CJC=8.33P TF=611P TR=138N)
.model LED1 D(Is=1e-19 N=1.6 Rs=2.5 Eg=2.1)
.backanno
.end
ngspice的资源来源列表如下:
* .IC directive – by laocuo
C1 cap 0 220uF IC=9V
R1 N005 cap 10k
Q1 N004 N003 0 0 BC_547
D1 N002 N004 LED1
R2 N001 N002 330
V1 N001 0 9V
Q2 N003 N005 0 0 BC_547
R3 N001 N003 10k
.model BC_547 NPN (IS=50.7F NF=1 BF=325 VAF=155
+ IKF=.3 ISE=15.6P NE=2 BR=4 NR=1 VAR=24
+ IKR=.45 RE=.907 RB=3.63 RC=.363 XTB=1.5
+ CJE=20.8P CJC=8.33P TF=611P TR=138N)
.model LED1 D(Is=1e-19 N=1.6 Rs=2.5 Eg=2.1)
.probe alli
.control
tran 10mS 40s UIC
plot v(cap)
plot i(D1)
.endc
.end
设计电路时,应避免在同一个节点上定义不同的初始电压。例如,明确为电压发生器的节点分配初始电压是没有效果的。
图 3:在某些情况下,可以不使用通用 .IC 指令,而是在组件级别添加“IC”属性。
SPICE 中的 .IC 指令是一个功能强大的工具,可用于指定瞬态分析的初始条件。电路中的初始条件对于获得准确而真实的仿真结果非常重要。组件级 IC 指令可用于指定每个组件的初始条件。但是,此指令可能会导致不可预测的结果,尤其是当两个并联连接的组件具有不同的起始电压时。在这种情况下,仿真器可能会使用平均电压,这不一定准确。因此,如果在组件级使用 IC 指令,则必须确保并联连接的组件具有相同的起始电压。为避免此问题,建议在电路级使用 .IC 指令。该指令允许您一次指定连接到给定节点的所有电路元件的初始条件。