广告

用于电路分析和设计的Spice仿真指南-第11部分:初始条件和.IC指令

2024-03-14 17:06:02 Giovanni Di Maria 阅读:
SPICE中最有用的指令之一就是允许您为瞬态分析指定节点的初始条件的指令···

SPICE中最有用的指令之一就是允许您为瞬态分析指定节点的初始条件的指令。初始条件是瞬态分析开始时电路的电气条件。它们可用于表示处于静止状态的电路,也可以表示特定时刻的电路状况。Ltjednc

通过.IC指令您可以指定瞬态分析的初始条件。可以指定节点电压和电感电流。DC求解是使用初始条件作为主要约束来执行的。该指令有多种用途。例如,假设您正在仿真逐渐放电的充电电池或已达到特定电压的电解电容器。在所有这些情况下,该指令都是不可替代的,它可以帮助设计人员仿真任何工作状态下的电路。Ltjednc

请注意,通常情况下,程序不会为单个元件分配初始电压值,而是为其所连接的节点分配初始电压值。这是一个微妙但重要的细微差别,需要您在设计中理解和实施。实际上,.IC指令并不是电路模型的一部分,正相反,它是瞬态仿真的一部分。一旦定义了初始条件,它将具有观察和执行的高优先级。要使用的语法如下:Ltjednc

.IC [V(<n1>)=<voltage>] [I(<inductor>)=<current>]Ltjednc

例如:Ltjednc

.IC V(in)=2 V(out)=5 V(vc)=1.8 I(L1)=300mLtjednc

可以在同一行中设置多个初始条件,或者您可以使用许多单个且独立的指令,每个指令用于特定的初始条件。Ltjednc

电容器的放电

假设您要模拟一个电路,该电路包含一个电解电容和一个与之并联的LED,显然还有一个电阻器用于保护。在没有任何初始指令的情况下,由于电容器上没有其他电压源,因此正常仿真时电容器上的电势为0V。该解决方案需要观察电容器的电气行为,所以该电容器已预先充电至12V电压。因此,仿真必须从元件上的正电压开始,这可以通过.IC指令来实现。图1中的电路图显示了以下元件:Ltjednc

  • C1,2200µF电解电容器
  • R1,330Ω电阻
  • D1,红色LED
  • “.tran 5”指令,指定一个5秒的瞬态分析
  • 对于LED,如LED1模型规范中所定义
  • “.IC V(cap)=12V”指令,将名为“cap”的线路置于12V的初始电压下

我们不妨详细分析一下这三个相关的波形图:Ltjednc

  • 上面的第一张图显示了5秒瞬态(Vcap)中电解电容器C1两端的电压。其电压从最初的12V(T=0时)降至1.46V(T=5时)。大约10秒后LED熄灭,电流停止流过。在这种情况下,电解电容器放电非常缓慢,在理想元件和无损耗的情况下,几年后其电位才达到0V。一年后,因为不再有任何电流流动,它的电压仍然约为700mV,但显然,它无法打开LED。
  • 中间的第二张图显示了流过LED D1的电流(与流过电阻器R1的电流相同),始终处于5秒的瞬态。电流从最初的31mA(对LED没有危险,T=0时)到106µA(T=5时)。
  • 下面的第三张图显示了LED D1两端的电压。在整个瞬态过程中,电压几乎保持不变,平均为1.6V,这是红色LED的一个相当典型的值。

Ltjednc

图1:最初充电了的电解电容器可为LED供电一段时间。Ltjednc

LTspice SPICE源代码列表如下:Ltjednc

* .IC directive for LTspice – by Giovanni Di MariaLtjednc

C1 cap 0 2200µFLtjednc

R1 cap D 330Ltjednc

D1 D 0 LED1Ltjednc

.model LED1 D(Is=1e-19 N=1.6 Rs=2.5 Eg=2.1)Ltjednc

.tran 0 5Ltjednc

.IC V(cap)=12VLtjednc

.backannoLtjednc

.endLtjednc

ngspice源代码列表如下,结果相同:Ltjednc

* .IC directive for ngspice – by Giovanni Di MariaLtjednc

C1 cap 0 2200µFLtjednc

R1 cap D 330Ltjednc

D1 D 0 LED1Ltjednc

.model LED1 D(Is=1e-19 N=1.6 Rs=2.5 Eg=2.1)Ltjednc

.IC V(cap)=12VLtjednc

.controlLtjednc

      tran 100mS 5sLtjednc

      plot v(cap)Ltjednc

.endcLtjednc

.endLtjednc

电容器的电荷

图2显示了相反的过程,即对已部分充电的电解电容器进行充电。电路图包含以下元件:Ltjednc

  • V1,12V电压源
  • R1,一个3300Ω电阻,用于限制充电电流
  • C1,2200µF电解电容器,部分充电,电压为4V,按照下面的指令指定
  • “.IC V(cap)=4V”指令,将名为“cap”的线路置于4V的初始电压下,实现对电容器的部分充电
  • “.tran 60”指令,指定进行60秒的瞬态分析

从图中可以看出,电容器的充电不是从0V开始,而是从4V开始,因为它含有部分初始电荷。瞬态在大约30秒后结束。LTspice SPICE源代码列表如下:Ltjednc

* .IC directive for LTspice – by Giovanni Di MariaLtjednc

C1 cap 0 2200µFLtjednc

R1 cap N001 3.3kLtjednc

V1 N001 0 12VLtjednc

.tran 60Ltjednc

.IC V(cap)=4VLtjednc

.backannoLtjednc

.endLtjednc

ngspice源代码列表如下:Ltjednc

* .IC directive for ngspice – by Giovanni Di MariaLtjednc

C1 cap 0 2200µFLtjednc

R1 cap N001 3.3kLtjednc

V1 N001 0 12VLtjednc

.IC V(cap)=4VLtjednc

.controlLtjednc

      tran 100mS 60sLtjednc

      plot v(cap) ylimit 0,13Ltjednc

.endcLtjednc

.endLtjednc

Ltjednc

图2:用LTspice和ngspice得到的部分充电电容器及相关图形Ltjednc

我们可以不用.IC指令吗?

如上所述,SPICE中的.IC指令用于指定一个或多个节点瞬态分析的初始条件。初始条件是指瞬态分析开始时的电路条件。不过,也可以为各个元件指定初始电压值。通常,在LTspice和ngspice中,只需手动编辑SPICE源代码列表并指定元件两端的电压就足够了,使用以下属性:Ltjednc

C1 cap 0 220µF IC=9Ltjednc

在LTspice的GUI(图形用户界面)上,操作更为简单,只需右键单击元件,同时按下 CTRL键即可。然后,您需要在SpiceLine框中指定“IC=9”属性。这一更改也将在SPICE源代码列表中显示。图3显示了一个涉及电解电容器放电的简单电路。当其下降的电压达到第一个晶体管的截止阈值时,LED点亮。请注意,电路图中未使用.IC指令,而是电容器包含其“IC=9”的属性,该属性决定了该元件的初始电压。LTspice SPICE源代码列表如下:Ltjednc

* .IC directive for LTspice – by Giovanni Di MariaLtjednc

C1 cap 0 220µF IC=9Ltjednc

R1 N005 cap 10kLtjednc

Q1 N004 N003 0 0 BC_547Ltjednc

D1 N002 N004 LED1Ltjednc

R2 N001 N002 330Ltjednc

V1 N001 0 9VLtjednc

Q2 N003 N005 0 0 BC_547Ltjednc

R3 N001 N003 10kLtjednc

.tran 0 40 0Ltjednc

.model BC_547 NPN (IS=50.7F NF=1 BF=325 VAF=155Ltjednc

+ IKF=.3 ISE=15.6P NE=2 BR=4 NR=1 VAR=24Ltjednc

+ IKR=.45 RE=.907 RB=3.63 RC=.363 XTB=1.5Ltjednc

+ CJE=20.8P CJC=8.33P TF=611P TR=138N)Ltjednc

.model LED1 D(Is=1e-19 N=1.6 Rs=2.5 Eg=2.1)Ltjednc

.backannoLtjednc

.endLtjednc

ngspice源代码列表如下:Ltjednc

* .IC directive – by Giovanni Di MariaLtjednc

C1 cap 0 220uF IC=9VLtjednc

R1 N005 cap 10kLtjednc

Q1 N004 N003 0 0 BC_547Ltjednc

D1 N002 N004 LED1Ltjednc

R2 N001 N002 330Ltjednc

V1 N001 0 9VLtjednc

Q2 N003 N005 0 0 BC_547Ltjednc

R3 N001 N003 10kLtjednc

.model BC_547 NPN (IS=50.7F NF=1 BF=325 VAF=155Ltjednc

+ IKF=.3 ISE=15.6P NE=2 BR=4 NR=1 VAR=24Ltjednc

+ IKR=.45 RE=.907 RB=3.63 RC=.363 XTB=1.5Ltjednc

+ CJE=20.8P CJC=8.33P TF=611P TR=138N)Ltjednc

.model LED1 D(Is=1e-19 N=1.6 Rs=2.5 Eg=2.1)Ltjednc

.probe alliLtjednc

.controlLtjednc

      tran 10mS 40s UICLtjednc

      plot v(cap)Ltjednc

      plot i(D1)Ltjednc

.endcLtjednc

.endLtjednc

设计电路时,应避免在同一节点上定义不同的初始电压。例如,为电压发生器的节点明确指定初始电压不会产生任何影响。Ltjednc

Ltjednc

图3:在某些情况下,可以不使用一般的.IC指令,而是在元件级添加“IC”属性。Ltjednc

SPICE中的.IC指令是一个功能强大的工具,可用于指定瞬态分析的初始条件。电路中的初始条件对于获得准确且真实的仿真结果非常重要。元件级IC指令可用于为每个元件指定初始条件。然而,该指令可能会导致不可预测的结果,特别是如果两个相互并联的元件具有不同的起始电压时。在这种情况下,仿真器可能会使用平均电压,但这不一定准确。因此,如果在元件级使用IC指令,必须确保并联的元件具有相同的起始电压。为了避免这个问题,建议在电路级使用.IC指令。该指令允许您一次性指定连接在给定节点上的所有电路元件的初始条件。 Ltjednc

(原文刊登于EDN姊妹网站Power Electronics News,参考链接:SPICE Course for Electronic Simulation, Part 11: Initial Conditions and the .IC Directive,由Ricardo Xie编译。)Ltjednc

相关阅读:

用于电路分析和设计的SPICE仿真指南Ltjednc

责编:Ricardo
本文为电子技术设计原创文章,未经授权禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了