亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

电路的计算机模拟

如果使用得当,计算机可以成为强大的工具,尤其是在科学和工程领域。存在用于通过计算机模拟电路的软件,这些程序可以非常有用地帮助电路设计人员在实际构建实际电路之前测试想法,从而节省大量时间和金钱。

这些相同的程序可以为电子学的初学者提供极好的帮助,允许快速轻松地探索想法,而无需组装实际电路。当然,没有什么可以替代实际构建和测试真实电路,但计算机模拟肯定有助于学习过程,让学生可以尝试更改并查看它们对电路的影响。

在本书中,我将经常结合电路仿真的计算机打印输出,以说明重要的概念。通过观察计算机模拟的结果,学生可以直观地掌握电路行为,而不会被抽象的数学分析吓倒。

使用 SPICE 进行电路仿真

为了在计算机上模拟电路,我使用了一个名为 SPICE 的特定程序,该程序通过文本列表向计算机描述电路来工作。本质上,这个列表本身就是一种计算机程序,必须遵守SPICE语言的语法规则。

然后,计算机用于处理或“运行”SPICE 程序,该程序解释描述电路的文本列表并以文本形式输出其详细数学分析的结果。本系列丛书的第 5 卷(“参考”)介绍了使用 SPICE 的许多细节,供需要更多信息的人使用。在这里,我只介绍基本概念,然后将 SPICE 应用到我们一直在阅读的这些简单电路的分析中。

首先,我们需要在我们的计算机上安装 SPICE。作为免费程序,它通常可以在 Internet 上下载,并且格式适用于许多不同的操作系统。在本书中,我使用 SPICE 的早期版本之一:版本 2G6,因为它使用简单。

接下来,我们需要一个供 SPICE 分析的电路。让我们尝试本章前面介绍的电路之一。这是它的示意图:

这个简单的电路由一个电池和一个直接连接在一起的电阻组成。我们知道电池的电压(10 伏)和电阻器的电阻(5 Ω),但对电路一无所知。如果我们向 SPICE 描述这个电路,它应该能够(至少)通过使用欧姆定律 (I=E/R) 告诉我们电路中有多少电流。

SPICE 是一个基于文本的程序

SPICE 无法直接理解示意图或任何其他形式的图形描述。 SPICE 是一种基于文本的计算机程序,它要求根据电路的组成部件和连接点来描述电路。电路中的每个唯一连接点都通过“节点”编号为 SPICE 进行描述。待仿真电路中电气共用的点通过共用相同的编号来指定。

按照上一节中给出的定义,将这些数字视为“线”号而不是“节点”号可能会有所帮助。这就是计算机如何知道什么连接到什么:通过共享公共电线或节点,数字。在我们的示例电路中,我们只有两个“节点”,顶部连线和底部连线。 SPICE 要求电路中某处有一个节点 0,因此我们将标记我们的电线 0 和 1:

在上图中,我在每条电线周围显示了多个“1”和“0”标签,以强调公共点共享公共节点号的概念,但这仍然是一个图形图像,而不是文本描述。在进行任何分析之前,SPICE 需要以文本形式为其提供组件值和节点编号。

使用文本编辑器创建 SPICE 文件<

在计算机中创建文本文件需要使用一种称为文本编辑器的程序 .与文字处理器类似,文本编辑器允许您输入文本并以存储在计算机硬盘上的文件的形式记录您输入的内容。文本编辑器缺乏文字处理器的格式化能力(没有斜体 , 粗体 ,或带下划线的字符),这是一件好事,因为像 SPICE 这样的程序不知道如何处理这些额外的信息。如果我们想创建一个纯文本文件,除了我们选择的键盘字符外,绝对没有任何记录,那么可以使用文本编辑器。

如果使用 Microsoft 操作系统(如 DOS 或 Windows),则系统可以轻松使用几个文本编辑器。在 DOS 中,有旧的 Edit 文本编辑程序,可以通过在命令提示符下键入 edit 来调用。在 Windows (3.x/95/98/NT/Me/2k/XP) 中,记事本 文本编辑器是您的首选。

许多其他文本编辑程序可用,有些甚至是免费的。我碰巧使用了一个名为 Vim 的免费文本编辑器 ,并在 Windows 95 和 Linux 操作系统下运行它。您使用哪种编辑器无关紧要,因此请不要担心本节中的屏幕截图是否与您的不一样;此处的重要信息是您键入的内容 ,而不是哪个编辑器 你碰巧用过。

为了向 SPICE 描述这个简单的双组件电路,我将首先调用我的文本编辑器程序并输入电路的“标题”行:

我们可以通过输入一行以字母“v”(“电压源”)开头的文本来向计算机描述电池,识别电池的每个端子连接到哪条线(节点编号),以及电池的电压,像这样:

这行文字告诉 SPICE,我们在节点 1 和 0 之间连接了一个电压源,直流 (DC),10 伏。这就是计算机需要了解的有关电池的全部信息。现在我们转向电阻器:SPICE 要求用字母“r”来描述电阻器、两个节点(连接点)的编号以及以欧姆为单位的电阻。由于这是计算机模拟,因此无需指定电阻器的额定功率。这是“虚拟”组件的一件好事:它们不会受到过高电压或电流的伤害!

现在,SPICE 将知道在节点 1 和 0 之间连接了一个值为 5 Ω 的电阻器。这行非常简短的文字告诉计算机,我们在与电池相同的两个节点(1 和 0)之间连接了一个电阻(“r”),其电阻值为 5 Ω。

如果我们在这个 SPICE 命令集合中添加一个 .end 语句来指示电路描述的结束,我们将拥有 SPICE 需要的所有信息,收集在一个文件中并准备好进行处理。此电路描述由计算机文件中的文本行组成,技术上称为网表 , 或 甲板 :

将文本编辑器文件移入 SPICE

一旦我们完成了所有必要的 SPICE 命令的输入,我们需要将它们“保存”到计算机硬盘上的一个文件中,以便 SPICE 在调用时有一些参考。由于这是我的第一个 SPICE 网表,我将其保存在文件名“circuit1.cir”下(实际名称是任意的)。

您可以选择将您的第一个 SPICE 网表命名为完全不同的名称,只要您不违反操作系统的任何文件名规则,例如使用不超过 8+3 个字符(名称中的八个字符和三个字符)在扩展名中:12345678.123) 在 DOS 中。

要调用 SPICE(告诉它处理 circuit1.cir 网表文件的内容),我们必须退出文本编辑器并访问命令提示符(Microsoft 用户的“DOS 提示符”),我们可以在其中输入文本命令计算机的操作系统要服从。

对于习惯于“点击式”图形环境的计算机用户来说,这种调用程序的“原始”方式可能显得陈旧,但它是一种非常强大和灵活的做事方式。

请记住,您在这里使用 SPICE 所做的是一种简单的计算机编程形式,并且您越是习惯于向计算机提供文本形式的命令来遵循——而不是简单地使用鼠标单击图标图像——您将掌握您的计算机。

在命令提示符下,键入此命令,然后按 [Enter] 键(此示例使用文件名 circuit1.cir;如果您为网表文件选择了不同的文件名,请将其替换):

spice  

这是在我按 [Enter] 键之前在我的计算机(运行 Linux 操作系统)上的外观:

只要您按下 [Enter] 键发出此命令,SPICE 输出中的文本就会在计算机屏幕上滚动显示。这是一个屏幕截图,显示了我的计算机上 SPICE 输出的内容(我已经加长了“终端”窗口以向您显示全文。使用正常大小的终端,文本很容易超过一页的长度):

SPICE 以重申网表开始,包括标题行和 .end 声明。大约在模拟进行到一半时,它显示了所有节点的电压,参考节点 0。在这个例子中,除了节点 0,我们只有一个节点,所以它显示那里的电压:10.0000 伏。

然后它显示通过每个电压源的电流。由于我们在整个电路中只有一个电压源,因此它只显示通过该电压源的电流。在这种情况下,源电流为 2 安培。由于 SPICE 分析电流的方式有问题,2 安培的值输出为负 (-) 2 安培。

计算机分析报告中的最后一行文字是“总功耗”,在本例中为“2.00E+01”瓦特:2.00 x 101 或 20 瓦特。 SPICE 以科学记数法而不是普通(定点)记数法输出大多数数字。

虽然这乍一看似乎更令人困惑,但当涉及非常大或非常小的数字时,实际上就不那么令人困惑了。科学记数法的详细内容将在本书的下一章中介绍。

使用 SPICE 等“原始”基于文本的程序的好处之一是,与其他文件格式相比,尤其是其他电路仿真软件中使用的图形格式,处理的文本文件非常小。

此外,SPICE 的输出是纯文本这一事实意味着您可以将 SPICE 的输出定向到另一个可以进一步操作的文本文件。为此,我们向计算机的操作系统重新发出命令以调用 SPICE,这次将输出重定向到我称为“output.txt”的文件:

这次 SPICE 将“静默”运行,不会像以前那样向计算机屏幕输出文本流。将创建一个新文件 output1.txt,您可以使用文本编辑器或文字处理器打开和更改该文件。对于这个插图,我将使用相同的文本编辑器 (Vim ) 打开这个文件:

现在,我可以自由编辑这个文件,删除任何无关的文本(例如显示日期和时间的“横幅”),只留下我认为与我的电路分析相关的文本:

一旦适当地编辑并以相同的文件名(在本例中为 output.txt)重新保存,文本就可以粘贴到任何类型的文档中,“纯文本”是几乎所有计算机系统的通用文件格式。我什至可以将它直接包含在本书的文本中——而不是作为“屏幕截图”图形图像——像这样:

我的第一个电路 1 0 直流 10 1 0 5 。结尾 节点电压 ( 1) 10.0000 电压源电流 名称当前 v -2.000E+00 总功耗 2.00E+01 瓦 

顺便提一下,这是本系列丛书中 SPICE 模拟文本输出的首选格式:作为真实文本,而不是图形截图图像。

改变 SPICE 中的值

要更改仿真中的组件值,我们需要打开网表文件 (circuit1.cir) 并在电路的文本描述中进行所需的修改,然后将这些更改保存为相同的文件名,并在以下位置重新调用 SPICE命令提示符。

这种编辑和处理文本文件的过程对每个计算机程序员来说都是熟悉的。我喜欢教 SPICE 的原因之一是它让学习者准备好像计算机程序员一样思考和工作,这很好,因为计算机编程是高级电子工作的一个重要领域。

早些时候,我们使用欧姆定律探索了改变电路中三个变量(电压、电流或电阻)之一的后果,以数学方式预测会发生什么。现在让我们尝试使用 SPICE 为我们做同样的事情。

如果我们将上一个示例电路中的电压从 10 伏增加到 30 伏并保持电路电阻不变,我们预计电流也会增加三倍。让我们试试这个,重新命名我们的网表文件,以免覆盖第一个文件。

这样,我们将两者 存储在我们计算机硬盘上的电路仿真版本以备将来使用。以下文本列表是此修改后的网表的 SPICE 输出,格式为纯文本而不是我的计算机屏幕的图形图像:

第二个示例电路 1 0 直流 30 1 0 5 。结尾 节点电压 ( 1) 30.0000 电压源电流 名称当前 v -6.000E+00 总功耗 1.80E+02 瓦 

正如我们预期的那样,电流随着电压的增加而增加了三倍。电流曾经是 2 安培,但现在增加到 6 安培 (-6.000 x 100)。还要注意电路中的总功耗是如何增加的。之前是 20 瓦,但现在是 180 瓦 (1.8 x 102)。

回想一下,功率与电压的平方有关(焦耳定律:P=E2/R),这是有道理的。如果我们将电路电压增加三倍,功率应该增加九倍(32 =9)。 9 乘以 20 确实是 180,所以 SPICE 的输出确实与我们对电路功率的了解有关。

在 SPICE 中创建评论

如果我们想看看这个简单的电路如何在很宽的电池电压范围内做出响应,我们可以调用 SPICE 中的一些更高级的选项。在这里,我将使用“.dc”分析选项以 5 伏为增量在 0 到 100 伏之间改变电池电压,打印出每一步的电路电压和电流。

SPICE 网表中以星号 (“*”) 开头的行是注释 .也就是说,它们不会告诉计算机做任何与电路分析相关的事情,而只是作为任何人阅读网表文本的笔记。

第三个示例电路 1 0 1 0 5 *“.dc”声明告诉香料扫除“v”供应 *电压从 0 到 100 伏,步长为 5 伏。 .dc v 0 100 5 .print dc v(1) i(v) 。结尾 

打印和绘图命令

此 SPICE 网表中的 .print 命令指示 SPICE 打印与分析中每个步骤对应的数字列:

v i(v) 0.000E+00 0.000E+00 5.000E+00 -1.000E+00 1.000E+01 -2.000E+00 1.500E+01 -3.000E+00 2.000E+01 -4.000E+00 2.500E+01 -5.000E+00 3.000E+01 -6.000E+00 3.500E+01 -7.000E+00 4.000E+01 -8.000E+00 4.500E+01 -9.000E+00 5.000E+01 -1.000E+01 5.500E+01 -1.100E+01 6.000E+01 -1.200E+01 6.500E+01 -1.300E+01 7.000E+01 -1.400E+01 7.500E+01 -1.500E+01 8.000E+01 -1.600E+01 8.500E+01 -1.700E+01 9.000E+01 -1.800E+01 9.500E+01 -1.900E+01 1.000E+02 -2.000E+01 

如果我重新编辑网表文件,将 .print 命令更改为 .plot 命令,SPICE 将输出由文本字符组成的粗略图形:

图例:+ =v#branch -------------------------------------------------- --------------- 扫描 v#branch-2.00e+01 -1.00e+01 0.00e+00 ---------------------|------------------------|--- ---------------------| 0.000e+00 0.000e+00。 . + 5.000e+00 -1.000e+00 。 . + 。 1.000e+01 -2.000e+00 。 . + 。 1.500e+01 -3.000e+00 。 . + 。 2.000e+01 -4.000e+00 。 . + 。 2.500e+01 -5.000e+00 。 . + 。 3.000e+01 -6.000e+00 。 . + 。 3.500e+01 -7.000e+00 。 . + 。 4.000e+01 -8.000e+00 。 . + 。 4.500e+01 -9.000e+00 。 . + 。 5.000e+01 -1.000e+01 。 + 。 5.500e+01 -1.100e+01 。 + 。 . 6.000e+01 -1.200e+01 。 + 。 . 6.500e+01 -1.300e+01 。 + 。 . 7.000e+01 -1.400e+01 。 + 。 . 7.500e+01 -1.500e+01 。 + 。 . 8.000e+01 -1.600e+01 。 + 。 . 8.500e+01 -1.700e+01 。 + 。 . 9.000e+01 -1.800e+01 。 + 。 . 9.500e+01 -1.900e+01 。 + 。 . 1.000e+02 -2.000e+01 + . . ---------------------|------------------------|--- ---------------------| 扫描 v#branch-2.00e+01 -1.00e+01 0.00e+00 

在这两种输出格式中,左侧的数字列代表每个间隔的电池电压,从 0 伏增加到 100 伏,一次 5 伏。右侧栏中的数字表示每个电压的电路电流。仔细观察这些数字,您会发现每一对之间的比例关系:

欧姆定律 (I=E/R) 在每种情况下都适用,每个电流值都是相应电压值的 1/5,因为电路电阻正好是 5 Ω。同样,在这个 SPICE 分析中,电流的负数比其他任何东西都更奇怪。除非另有说明,请注意每个数字的绝对值。

解释和转换 SPICE 数据的计算机程序

甚至有一些计算机程序能够解释 SPICE 输出的非图形数据并将其转换为图形。其中一个程序叫做Nutmeg , 其输出如下所示:

请注意 Nutmeg 如何将电阻器电压 v(1)(节点 1 和节点 0 的隐含参考点之间的电压)绘制为一条具有正斜率的线(从左下角到右上角)。是否熟练使用 SPICE 与其在本书中的应用无关。

重要的是您对 SPICE 生成的报告中数字的含义有所了解。在接下来的示例中,我将尽最大努力对 SPICE 的数值结果进行注释以消除任何混淆,并释放这个神奇工具的强大功能,帮助您了解电路的行为。

相关工作表:

  • 基本电力工作表
  • 基本 DC 工作表
  • 基本网络分析工作表
  • 基本交流工作表
  • 基本半导体工作表
  • 基本模拟电路工作表
  • 基本数字电路工作表

工业技术

  1. SPICE 简介
  2. SPICE 编程基础
  3. 电路组件
  4. 电机控制电路
  5. 使用多个组合电路
  6. 放大器电路
  7. 什么是电路?
  8. 电路中的功率
  9. 什么是“串联”和“并联”电路?
  10. 串并联电路中的谐振
  11. 建筑电路
  12. 不同液压回路的介绍