电子头条

LTspice(10) .net与sympy

2022-10-21
    阅读数:

工作中需要做挺多加减乘除的计算,虽然不是很复杂,但是变量一多改个变量还是比较麻烦的,在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


展开↓