创建电路仿真

电器工程 模拟 编程
2022-01-27 14:18:42

我想知道是否有人可以帮助我。如何创建一个简单的电路模拟器?类似于 Multisim,只是简单多了!

基本上,我只需要电阻、电容、电感和电压源。

有没有我可以遵循的教程,使用 C# 和 Visual Studio 创建它?

4个回答

我从头开始编写了为CircuitLab提供支持的仿真引擎:从稀疏矩阵库到组件模型和仿真模式。我的联合创始人编写了前端。它最终成为一个令人难以置信的巨大编程项目,但我对此感到非常自豪。如果您准备好迎接挑战,那么编写电路模拟器可能是您将解决的最有价值的编程项目之一。

在高层次上,您只需要:

  1. 将组件网络转换为方程组(非线性微分方程)。
  2. 数值求解方程组(使用稀疏矩阵技术)。

我不知道在线教程,但我在编写“终极电子学”教科书时尝试记录很多,尤其是在第 2 章。还有许多 1990 年代的书籍关于电路模拟,虽然我现在手边没有它们。

我的建议是仅从电压源和电阻器开始,然后从那里继续构建。祝你好运。

我怀疑是否有在线教程,因为它非常具体。

但是,您绝对可以使用的一种信息来源是开源代码。我知道的一个是SpicePy——它是用 Python 编写的,但它的文档非常好,尽管 Python 语言本身就具有很强的描述性。您可以在 Python 代码中或通过Telegram Bot使用此类库。

您需要的是某种描述电路拓扑的方法。一种常见的方法是使用网表,它本质上是描述电路中每个组件以及它如何连接到其他组件的文本(例如通过节点号)。您可以使用此策略或任何您认为更容易采取的策略;解析它并使它成为一个实际的图形(即它有意义吗?)可能需要一些时间。

之后,在模拟器中分析电路的一种常用方法是节点分析然后求助于一些线性代数库来求解方程组(肯定是线性的),例如Math.Net

我为 .NET 和 Mono 编写了一个名为Spice#的基于 Spice 的电路模拟器。您会发现与大多数模拟器的主要区别在于:

  • 它是开源的。
  • 它是一个,而不是独立的可执行文件。
  • 它是为定制和扩展而开发的。

该项目还包含一些文档,其中包含有关模拟器(如 Spice)如何执行修正节点分析 (MNA)的一些信息。所以我相信这个话题你可能会感兴趣。

我编写了一个基于 Python 的工具,可以使用 SciPy 提供的稀疏矩阵求解器来模拟交流信号和噪声。它是一个基于引力波社区中名为LISO的闭源工具的开源项目

我以某种方式构建了代码,您可以构建不同的求解库或创建使用相同电路定义的不同分析。写作时存在的两种分析类型(信号和噪声分析)从电路组件构建矩阵,然后在给定频率范围内针对给定激励(例如输入)求解它。

它类似于 SPICE 和其他节点分析电路仿真器的工作方式。我希望代码相对容易理解。

这里有一些基本文档,但仍在开发中。如果您最终使用它并对它的工作原理有疑问,请告诉我。

这是它支持的 LISO 语法示例(但您也可以纯粹在 Python 中定义电路)。它有点像 SPICE 网表:

r r1 100 nin nsum
r r3 1.075k no nsum
r r4 42.2 nsum nm
r r6 65 nin gnd
c c2 4.7n nsum gnd
c c5 122p no nm
op op1 op27 gnd nm no

freq log 1 1M 101

uinput nin nsum 50
uoutput no nsum

上面的代码产生这样的图:

浮压运算放大器电路