设计人员通常需要通过为一个或多个电子元件尝试不同的值来仿真电子电路。简单地更改固有值可能会非常费力,因为对于每个仿真,都必须访问元件的属性并替换所需的值。想象一下在不同元件的数百次测试和仿真上浪费的时间。幸运的是,Spice仿真语言提供的.STEP指令使此过程能够完全自动化,从而能够对一个或多个电子元件值的范围进行即时和快速的仿真。
在SPICE语言中,此指令用于运行一系列仿真,其中一个或多个参数在指定时间间隔内逐渐变化。“.STEP”指令的一般语法如下:
.STEP param [start stop step]
其中“param”表示您想要改变的参数,例如电子元件的电阻;“start”和“stop”分别表示参数的起始值和结束值,“step”表示增量的大小。例如,如果您想运行一个元件的电阻在1KΩ到10KΩ之间以1KΩ为增量变化的仿真,您可以使用以下指令:
.step param R 1k 10k 1k
这样,将运行10个仿真,每个仿真具有1KΩ和10KΩ之间的不同电阻值。与往常一样,将使用LTspice和ngSpice软件研究不同的行为。
使用Ltspice对晶体管基极进行极化
在以下示例中,将研究一个经典的共发射极晶体管放大器方案。它是电子产品中最常见和使用最广泛的放大器电路之一。它是使用一个BJT晶体管和两个电阻构成的,一个连接到晶体管的基极,另一个连接到晶体管的集电极。基极电阻负责晶体管基极-发射极结的偏置。它的选择方式应确保施加到晶体管基极的电压足以使其在有源区工作。换句话说,基极电阻确保晶体管可以放大输入信号,将输出置于大约VCC/2的电压。另一方面,集电极电阻是电路的负载。该电路具有高电压增益和低输入电阻,但不支持温度固定。电路图如图1所示,由以下电子元件组成:
图1:共发射极晶体管放大器的经典示意图
具有固定和确定值的元件是发生器V1、晶体管Q1和电阻R1。而R2的取值则必须在一定范围内的几个取值之间进行迭代,以寻求电路的最佳工作点。因此,已决定一次仿真偏置电阻R2的所有值,从200KΩ开始到600KΩ,增量的大小为10kΩ。该方案中包含的SPICE指令如下:
.step param RP 200k 600k 10k
该指令的各个元素在下面详细解释:
如图2所示,可以在文本窗口中输入指令,其中还必须指定扫描类型(线性、倍频程、十倍频程、列表)。
图2:在LTspice中输入.STEP指令参数的窗口
要将变量RP与电阻R2匹配,必须将大括号中的值RP赋给它,如下所示:
{RP}
这样,R2电阻就没有固定值,而是取决于RP变量假定的值。运行仿真时,软件会尝试用多达41个不同的欧姆值(200k、210k、220k、230k、……、直至580k、590k和600k)来替换电阻。这种扫描可以在仿真过程中在状态栏上观察到,可能需要几秒钟。图3显示了电阻R2的41个值的仿真中“输出”节点处的电压。众所周知,在这种类型的放大器中,正确的基极偏置电压将集电极电压置于VCC/2(例如6V输入)。现在,按时间顺序来说,位于6V电压上的曲线是第20位,相当于390KΩ的电阻值。如果从接线图中删除.STEP指令并将390KΩ的值分配给电阻R2,在“out”节点上,将获得6.0121021V的值,精确对应于VCC/2。可以通过减小增量进一步缩小搜索范围。但是,由于电子元器件都有一定的公差,即使是同一型号,保持搜索增量较大也很方便。
图3:电阻R2的41个值的仿真中“输出”节点处的电压
不幸的是,ngSpice没有真正的“.STEP”指令,因此必须使用仿真器中实现的脚本语言来实现目标。图4显示了随着基极电阻变化而获得集电极电压的可能解决方案。请记住,要启动脚本,必须键入命令“source MySource.cir”。
图4:仿真“.STEP”指令的ngSpice脚本示例
我们知道,电源中的整平电容,也叫“滤波电容”,是用在整流电路的二极管电桥之后,将脉冲电压波转换成更稳定的直流电压信号。二极管后电桥对输入的交流波进行了整流(并使其变为正极),电容器在电压波的正相期间充电,在负相期间放电。电容器减少纹波的存在,纹波是直流电压上的低频分量(100Hz或120Hz)。它充当储能器,在电压高峰期储存能量并在低电压期间释放能量。这确保了更稳定的直流电压输出,减少了不必要的波动并提高了电能质量。在下面的仿真中将测试十个不同的电容器,以验证纹波的幅度随着电容值的增加而减小。观察图5中的电路图。它表示一个带有变压器、二极管电桥、电解电容器和负载的经典电源。
图5:经典直流电源示意图
现在,使用LTspice,将测试不同的电容值,以确定纹波信号幅度对电解电容器电容值的直接相关性。电路图由以下部分组成:
为了通过测试50uF和500uF之间的电解电容器的电容值来仿真电源在输出端的行为,使用以下指令:
.step param Cap 50uF 500uF 50uF
在十次运行中,仿真尝试将实际值替换为从50uF、100uF、150uF、200uF、250uF、300uF、350uF、400uF、450uF和500uF中选择的元件。输出电压图显示了纹波随电解电容器的变化。初始瞬变极小,仅10mS左右电路就开始稳定工作。较大的纹波对应于较小的电解电容器的电容。
SPICE中的普通.STEP指令允许您逐步改变参数并为每个参数值运行仿真。另一方面,嵌套的.STEP指令是一种高级功能,可以在SPICE语言中使用它来有效地仿真电子电路。本质上,该指令允许为仿真的执行定义多个控制变量。使用嵌套的.STEP指令,可以同时且独立地改变多个参数,从而生成一组值的阵列。这使您可以快速探索参数值的多种组合并找到电路的最佳组合。建议谨慎使用此功能,因为可能的最终解决方案与各个数值组合的乘积相对应,最终解决方案的数量很容易变得非常大,大大降低了仿真的速度。
如文章中所示,.STEP指令是一项有用的功能,可用于逐步自动改变电子电路的参数,以检查其在不同条件下的行为。不同的参数,包括电阻、电容、电感、电源电压和频率,可能会有所不同。通过使用.STEP指令,设计人员可以快速检查参数值的不同组合并确定电路的最佳组合。此外,该指令对于复杂电路的设计特别有用,其中一个或多个参数的变化会显着影响电路的整体行为。它代表了分析和设计电子电路的重要工具,为参数探索提供了高效和自动化的解决方案。
(原文刊登于EDN姊妹网站Power Electronics News,参考链接:Guide to Spice Simulation for Circuit Analysis and Design – Part 4: the .STEP directive for multiple simulations,由Ricardo Xie编译。)
用于电路分析和设计的SPICE仿真指南-第1部分:简介和网表
用于电路分析和设计的Spice仿真指南-第3部分:时间常数的进一步研究