我们前期做了一些 STM32 结合各类传感器的嵌入式程序开发工作,目前基本都已完成。现阶段的目标,我们需要自己打造一款传感器模块,由于传感器模块内部涉及到一些电路结构,我们需要在实际批量生产前,做一些电路仿真实验,从而验证我们搭建的电路结构是否合理和高效。在此需求基础上,我们就需要学习电路仿真软件 —— LTspice
市场中有很多种类的电路仿真软件,我们选择 LTspice 的原因是由于他 免费。我们直接在官网下载 LTspice ,安装,启动,即可使用。
这里引用官网里有关 LTspice 的一段介绍作为参考:
LTspice是一款高性能SPICE仿真器软件,包括原理图捕获图形界面。可探测原理图以产生仿真结果,通过LTspice内置波形查看器轻松探索。与其他SPICE解决方案相比,LTspice的增强功能和模型改善了模拟电路仿真。
电路仿真其实涉及到非常多的有关电路原理的基础知识,在没有或不记得相关电路元件的基本工作原理的情况下,贸然进行仿真实验,会存在模棱两可的理解问题。为此,我们需要在学习使用 LTspice 的过程中,持续学习或复习电路原理的基本知识。这里我们选择开一节内容,用于记录学习或复习到的电路原理基本知识。(电路原理以基本电路元件为主)
电压源,即理想电压源,现实生活中并不存在。那么我们为什么会经常提到这个名称,称呼我们实验中所用到的电源为电压源。那是因为,我们实验中所用到的电源内阻极小,而外接负载阻抗极大,那么电源内阻相对于负载阻抗来讲微乎其微。在这种巨大的内外阻抗差距下,当我们变化外接阻抗时,负载电流发生变化,而电源两侧电压基本不会发生变化。因此,电压源有一个特点,电压源两端电压大小是确定的,并不随着流过他的电流的变化而发生变化。
电流源,即理想电流源,现实生活中同样并不存在。我们实验中所使用到的电流源,其内阻相对于负载的阻抗极大。内外阻抗差距如此大的情况下,负载阻抗发生变化,电路中的电流基本不会发生变化,因为电路中的电流由电流源(电压/电阻)决定。因此,电流源有一个特点,电压源输出的电流恒定不变。 综上,我们可以发现,电流源和电压源的由来,都是由于电源内阻和负载阻抗之间差异巨大所产生的一种定义。等效一下来看,电流源内阻无穷大,电压源内阻无穷小。
实验室中的理想电流源和电压源是怎么制造出来的也是一个值得思考的工程问题。
我们用 LTspice 做一个RC放电电路如下:
初始状态下,电容 C1 为1v,R1 为 1K,电容从 0ms 时刻开始放电,得到如下放电曲线:
电容 C1 开始放电,两侧电压 v+ 逐渐下降。同时,由于电容不断放电,电容电压随之下降,R1保持不变,电路中的电流也逐渐下降。(-1mA 到 0mA)
接下来我们会思考,是什么影响电容 C1 的放电速度。根据电路原理课本中的一张图,如下:
我们发现,电容 C1 的放电速度与时间常数 τ(tao)相关,τ 的定义为:τ = R*C。据此理论,电容大约在 3τ 这个时间点放电结束。
我们回到 LTspice 做的RC放电电路,通过公式计算,3τ = 3 * R * C = 3 * 1K * 1u = 3ms。也就是说 C1 在3ms的时候基本放电结束,C1 两端电压接近 0V,这验证了书中的理论和我们仿真得到的现象一致。
如何加快电容 C1 的放电速度,我们需要降低 τ,也就是降低 R*C 的值。在保证一个变量不变的情况下,降低另外一个。
换个思路来想,由 R 和 C 组成的电路可以实现滤波的效果。为啥?把这样一个电路加在一个标准正弦波上,可以起到衰减正弦波的效果,正弦波会逐渐减弱到 0,也即起到了滤波的效果。如下图:
我们通常在实验室会使用电压源产生一些直流电压,或者产生一些变化的电压,如:方波,三角波,正弦波。他们的仿真方式很简单,直接选择电压源符号,并配置波形参数即可,我们绘制得到如下图:
直流电压 0.5V (红色),在整个 10ms 的时间内呈一条直线。
方波(天蓝),2ms 为一个周期,高电压 0.5V 持续 1ms , 低电压 0V 持续1ms。
三角波 (蓝色),2ms为一个周期,上升沿为 1ms,下降沿也为 1ms。
正弦波 (粉色),1ms为一个周期,频率为 1KHz。
看起来,这种非常标准的电压波形非常容易绘制。那么如果我们想要绘制特定函数的波形该如何做呢?比如,我们想要一个阶跃信号来测试我们的系统输入。这个时候就需要我们用函数的形式来自定义输入。首先,我们根据电路理论知道阶跃函数为 u(t)。我们在LTspice的元件库中选择 Arbitrary behavioral voltage source 元件,并且赋予他一个阶跃函数:V=u(time)。为了便于观察,我们将函数写为:V=0.5*u(time-2m),将电压幅值设为0.5V,阶跃信号右移2ms,绘制得到如下阶跃信号波形:
至此,我们通过自定义 V=f(t) 函数,可以得到任意函数的电压波形,作为系统输入,用来测试我们的系统性能。