LTspice(10) .net与sympy
工作中需要做挺多加减乘除的计算,虽然不是很复杂,但是变量一多改个变量还是比较麻烦的,在windows环境下使用Mathcad可以有效的提高工作效率,但是Mathcad并不能跨越多个平台,如linux / mac。吐槽:某 “ L开头 ” 电脑电池实在太不耐操。
废话不多说咱们开始吧!
首先要下载安装一下python的开发环境。接着在控制台打入以下代码
P ip install sympy |
如果你安装成功了,那么在打入以下代码看看安装成功没
P ip list |
图1 : pip list结果
在我读高中学基尔霍夫/叠加定理时候当源多了就要列很多方程,计算起来也比较麻烦。我们先手动算一个,在用sympy算一个试试。
图2 : 计算Ua
突然发现这可以作为学习spice语句很好的例子,我们就直接开始写这个spice的模型。模型如下 ⬇️
*电源 一头连接到负端,一头连接到0 电压是2V *参考文档:spice a guide to circuit simulation and analysis using pspice Vin R1_N 0 2 *一头连接 R1N 一头连接 A 电阻是1ohm R1 R1_N A 1 *一头连接A 一头连接GND 电阻是1ohm R2 A 0 1 *一头连接 A一头连接GND 电流是1A I1 A 0 -1 *瞬态仿真1mS .tran 1m *表示写完 .end
|
代码1 : LTspice 模型
图 3: 用Ltspice打开
图 4: 仿真结果
Spice 写的就是网表,不过网表被赋予了一些意义,如果你能不用原理图去画PCB大概也就掌握了网表的精髓,已经非常熟悉了。但是这样做的话可读性非常差,一般只有一次画完才不会出错,不然随便一分心就会弄错。
接下来我们回到Sympy,使用Sympy输入叠加的公式如下 ⬇️
图 5: Sympy对叠加公式进行化简
# -*- coding: utf-8 -*- """ Spyder Editor
This is a temporary script file. """ import sympy as sy
Vin=sy.symbols('Vin') R=sy.symbols('R') I=sy.symbols('I')
#电路叠加的计算公式 Va=(Vin/(2*R))*R+(R/2)*I #简化表达式 exps=sy.sympify(Va)
print(exps)
|
代码2 : Sympy化简
图 6: Sympy带入参数做计算 结果等于1 .5 V
# -*- coding: utf-8 -*- """ Spyder Editor
This is a temporary script file. """ import sympy as sy
Vin=sy.symbols('Vin') R=sy.symbols('R') I=sy.symbols('I') #带入参数 Vin=2 R=1 I=1 #电路叠加的计算公式 Va=(Vin/(2*R))*R+(R/2)*I #简化表达式 exps=sy.sympify(Va)
print(exps)
|
代码3 : Sympy带入参数做计算
若是此时我们更换电阻阻值,但两个电阻还是想等的,我们就可以直接改Sympy电阻阻值直接得出计算结果,但是在LTspice里面,电阻阻值在网表的最后面我们怎么去整他呢?
如下所示我们引入 .param 参考代码如下 ⬇️
*电源 一头连接到负端,一头连接到0 电压是2V *参考文档:spice a guide to circuit simulation and analysis using pspice Vin R1_N 0 2 *一头连接 R1N 一头连接 A 电阻是1ohm R1 R1_N A {x} *一头连接A 一头连接GND 电阻是1ohm R2 A 0 {x} *一头连接 A一头连接GND 电流是1A I1 A 0 -1 *瞬态仿真1mS .tran 1m *使用{x}来表示R的阻值 .param x 1 *表示写完 .end
|
代码4 : param
图 7: 代码4运行结果
今天就先撩到这了, ????
参考文档
S ympy 的guide
LTspice help doc
S pice a guide to circuit simulation and analysis using pspice