在电子仿真软件提供的众多功能中,.MEAS指令是分析和量化仿真电路行为的一个相当强大的工具。在本文中,我们将探讨如何在LTspice中使用.MEAS指令,在仿真过程中获得电气量的精确测量。
.MEAS指令允许用户从仿真中提取特定信息,例如电压、电流、功率、频率、电阻、自定义值等等。使用此指令,用户可以自动定义和计算精确而复杂的测量值,这些测量值可用于评估电路在各种运行情况中的性能。它的语法非常复杂但也很清晰,根据要考虑的电子场景,有许多参数需要检查。我们将通过一些示例来观察该指令,以了解其工作原理。
如果没有.MEAS指令,要测量电路的效率,就必须进行多次操作。众所周知,效率的计算公式如下:
eff(%)=(Pout/Pin)*100
例如,一个电路的负载耗散功率为200W,其电源产生的功率为230W,则其效率为:
eff(%)=(200/230)*100=86.956%
如果没有该指令,设计人员会首先直接或间接测量负载耗散(W=V*A),然后测量发电机的功率输出,最后将结果除以100。假设我们有图1中的电路图,它仿真了一个基于2N3055 NPN晶体管、齐纳二极管和一些电阻器的简单线性稳压器。该电路的目的是将电压从+36V降至约+18V。电源V1(通常是电池)为电路提供36V直流电压,这是电路将要调节的输入电位,晶体管Q1是一个2N3055功率NPN,用作调节元件。集电极直接连接到电压源,R1是一个15欧姆电阻器,连接到晶体管的发射极,代表电路的负载。
齐纳二极管D1的齐纳电压为20V,阴极连接到晶体管的基极,阳极接地。它能稳定晶体管Q1的基极电压,在很大程度上决定了电路的输出电压。R2是一个470欧姆电阻,它将晶体管的基极连接到集电极,并为齐纳二极管提供合适的偏置电流,使其能够在齐纳区内工作。该电路解决方案虽然有效,但效率却很低,因为电池产生的大部分电能都被晶体管以热量的形式耗散了。
图1:带有齐纳二极管和晶体管的稳压器是一种效率不高的电路
为了测量电路的效率,必须在电路图上插入以下指令:
.MEAS TRAN EFF AVG ((V(out)*I(R1))/(V(in)*-I(V1)))*100
其中计算的是输出端耗散的功率与电路输入端产生的功率之间的百分比。该指令的各个要素列举如下:
幸运的是,LTspice提供了自动组成测量的辅助。只需在电路图上写入指令“.MEAS”并右键单击即可启动自动创建程序,如图2所示。运行瞬态仿真后,LTspice会自动计算用.MEAS指令定义的测量值。结果显示在LTspice日志窗口中,可以通过按[CTRL]+[L]键激活该窗口,您可以在其中直接读取测量量的值。从图中可以看出,上述电路的效率为51.4391%,这个值表明所采用的解决方案完全没有效率。
图2:测量电气仿真值的自动合成程序以及相关结果
下一个实验涉及研究电容器的时间常数。电容器的时间常数是电子学中的一个基本概念,它定义了电容器在电阻电路(RC)中充电或放电的速度。时间常数用希腊字母tau表示,由电阻和容量的乘积得出:
τ=R*C
时间常数表示在充电或放电过程中,电容器上的电压达到其最终值的约63.2%时所需的时间。在RC电路中,当电容器通过电阻器充电时,电流最初为最大值,并随着电容器充电而呈指数下降,电容器两端的电压则呈指数增加,直到达到电源电压的值,同样的道理也适用于电容器放电。时间常数在许多应用中都是必不可少的,例如计算滤波器的截止频率、定时器电路等。图3显示了一个这种类型的经典电路,是一个简单的RC电路,用于仿真电容器的充电过程并测量时间常数(tau)。
电路图有一个直流电压源(V1),该电源为电路提供24V的直流电压。施加在电阻器R1两端的电压为电容器C1充电,R1是一个4.7kΩ电阻器,控制电容器C1的充电速率,电阻决定了电容器达到其最大电压的一定百分比时所需的时间。C1是一个容量为2200uF的电容器,其会存储电能,电压在充电时逐渐升高。软件会运行120秒的瞬态仿真,在此仿真过程中,电容器充电时两端的电压会受到监控。得益于指令:
.MEAS TRAN TAU FIND time WHEN v(out)=15.168
我们能够测量节点v(out)处电容器两端电压达到15.168V所需的时间。该值大约相当于24V电源电压的63.2%,这是RC电路中时间常数的典型值。最后,使用指令:
.ic v(out)=0
设置电容器的初始条件,指定在仿真开始时,其端子之间的电压为0V,换句话说,在仿真开始时,电容器完全放电。指令“.meas TRAN TAU FIND time WHEN v(out)=15.168”的目的是找到电容器两端电压达到最大电压(24V)的63.2%的准确时刻。根据所检查的指令,时间大约对应于:
10.3282 sec
该值与之前观察到的时间常数公式计算出的理论值没有太大差别:
τ=R*C
τ=(4.7*1000)*(2200/1000000)
τ=10.34 sec
通过类似的指令,我们可以知道仿真过程中特定时刻电容器上的电压。例如,设计人员需要知道仿真开始后12秒的电压值,只需设置以下指令即可:
.meas TRAN VOLTAGE FIND v(out) AT 12
软件会响应在TIME=12时刻,电容两端的电压v(out)为:
16.4982 V
请注意,结果显示在LTspice日志窗口中,按[CTRL]+[L]键即可激活,您可以在其中以极其清晰和简单的方式直接读取测量值。
图3:时间常数遵循精确的数学定律
一个非常有用的功能是使用.MEAS指令测量电路内电压或电流的最小值和最大值。利用这种方法,可以在仿真过程中自动执行各种参数的计算,包括最小值和最大值,而无需手动使用光标跟踪所需的值。
观察一下图4中描绘的电路图。电路非常简单,但很有趣,因为它将电压发生器“行为电压源”的使用和一些测量指令结合在一起,来分析生成信号的行为。电阻器R1的值为4.7kΩ,将输出节点连接到节点0(接地),为电压源B1创建负载路径。电压源B1定义了一个复杂的数学函数,用于确定“输出”节点随时间变化的电压。使用的函数如下:V=floor(171.933−10.672×(6.34087−sin(5.36197×log(1.42044+0.00854075×time))×log(218.329+time)+sin(0.00623652×time)))
整个函数会创建一个具有复杂特征的信号,该信号会随时间变化,趋势受正弦和对数函数的影响。然后,该信号会被四舍五入为较低的整数值,使其在时间上不连续。瞬态仿真持续2200秒,在此期间,软件会根据以下准则计算输出节点的电压随时间的变化情况,特别是分析最小值和最大值:
.meas TRAN Minimum MIN v(out)
和:
.meas TRAN Maximum MAX v(out)
最小和最大电压值存储在两个变量“Minimum”和“Maximum”中。了解最小和最大电压发生的确切时刻也很有用,为此,可以使用以下两个指令:
.meas TRAN When_Minimum FIND v(out) WHEN v(out)=Minimum
和:
.meas TRAN When_Maximum FIND v(out) WHEN v(out)=Maximum
从图中可以看出,至少在指定的仿真范围内,该函数的最小值为35V,发生在时刻T=110.153,而该函数的最大值是183V,发生在时刻T=1509.15。
图4:确定信号的最小值和最大值
使用.MEAS指令,可以执行无数次的测量,所有测量都可以在方便的文本环境中读取。例如,可以测量家庭网络交流电压的RMS值。将“.MEAS”指令与“.STEP”指令结合使用,可使“.MEAS”指令的使用更加实用和强大。例如,可以仿真由可变电压源供电的电阻器,仿真会测量不同电压值下流过电阻器的平均电流。可使用以下两个指令:
.step lin V1 4 16 2
和:
.meas TRAN Current AVG I(R1)
第一条指令允许多次运行仿真,将电压源V1的值从4V变为16V,每次增加2V。这意味着仿真将运行七次:V1分别设置为4V、6V、8V、10V、12V、14V和16V。对于电压V1的每个值,软件都将运行瞬态仿真并计算通过R1的平均电流。结果如下:
.step v1=4
.step v1=6
.step v1=8
.step v1=10
.step v1=12
.step v1=14
.step v1=16
Measurement: current
step AVG(i(r1))
1 0.8
2 1.2
3 1.6
4 2
5 2.4
6 2.8
7 3.2
对于任何想要执行详细仿真并准确分析结果的人来说,.MEAS指令都是必不可少的工具,自动提取特定测量值的能力可以节省时间并提供有关电路行为的关键信息。通过正确应用此指令,可以显著改善电子电路的设计和优化过程。
(原文刊登于EDN姊妹网站Power Electronics News,参考链接:Guide to Spice Simulation for Circuit Analysis and Design – Part 14: Evaluating User-Defined Electrical Quantities,由Ricardo Xie编译。)