结合python与LTspice,让电路模拟起飞
LTspice是一个由ADI开发的电路模拟软件,精致小巧,免费使用,模拟方便,简直是我最爱的软件之一。但是做批量,计算等一些操作时,就会显得有点力不从心,毕竟他只是一款电路模拟软件啊。
如果LTspice可以和编程语言结合,可以批量测试不同原件参数下,电路的表现,或者方便的提取模拟结果,进行进一步处理,那简直是如虎添翼,直接起飞啦。
PyLTSpice就是这样一款帮助我们在python中操作LTspice的python库!

用一个小实验来试试吧,咱们用它来测量一下二极管的伏安特性曲线。
下载安装LTspice就不在这里说啦,首先打开LTspice绘制一个测量二极管伏安特性曲线的电路:

这里,我暂时没有设置任何参数,当然,如果在你自己的电路中,确定某些参数是固定的,直接在电路图中设定也是可以的。
为了测量二极管在不同电压下的表现,这里的电源V1的电压,我希望可以从0V扫描到3.7V.
LTspice直接就可以完成这样的电压扫描


文件中出现.dc V1 0 3.7 0.01 表示设置完成
以上都是可以直接在LTspice中实现的功能。
而电路中的电阻R1我希望可以在程序中再设置具体值,那也没关系我直接把电阻值设置为一个变量就可以了。方法就是给阻值起个名字,然后放在{ }中。

保存后,给文件起个名字test.asc,LTspice部分打完收工。

接下来编写一个程序来操作电路和读取运行结果。
为了使用python实现这一点,首先需要安装PyLTSpice,
pip install pyltspice
直接安装完成,开始写程序

from matplotlib import pyplot as plt
from PyLTSpice import SimCommander
from PyLTSpice import RawRead #导入需要的库
Rsh=10
#设置需要模拟的文件,和ltspice模拟器的路径
LTC = SimCommander(".\\test.asc",simulator="D:\LTspice\LTspice.exe")
#设置文件中确定的参数
LTC.set_parameters(Rsh_value = Rsh)
LTC.run() #运行
LTC.wait_completion() #等待模拟结束
LTC.reset_netlist() #重置电路。尤其是需要多次模拟运行时,必须有这句来方便后续模拟
######################电路模拟运行后结果都保存在raw文件中,下面来读取运行结果
# 读取raw文件
raw_file = ".\\test_1.raw"
LTR = RawRead(raw_file)
#读取raw文件中的数据
Vin = LTR.get_trace('V(n001)')
IR1 = LTR.get_trace("I(R1)")
voltage = Vin.get_wave(0)
current=IR1.get_wave(0) #获得运行轨迹,如电源的电压变化,R1的电流变化
#可以读取的项目在软件的pick visible Traces中可以看到
#######################使用简单欧姆定律计算二极管上的分压
Vr = current*Rsh
Vd = voltage-Vr
################使用matplotlib打印二极管伏安特性
plt.plot(Vd,current)
plt.ylabel('Currrent (A)')
plt.xlabel('Voltage (V)')
#plt.yscale('log')
plt.grid() #显示坐标网格
plt.show()

语句的含义都在注释中,整体来说,就是调用函数把电路运行一遍,运行之前也可以调用函数给电路中的变量赋值。运行的结果会被自动保存在raw文件中。然后读取raw获得自己需要的数据,最后处理数据并绘图。
这里是运行结果。

怎么样,是不是很nice。不妨也试试绘制三极管的伏安特性曲线?
现在你甚至可以利用程序自动进行电路参数调优。发挥你的想象力,现在又多出了无限可能。