Электроника:Постоянный ток/Закон Ома/Компьютерная симуляция электрических цепей

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Компьютерная симуляция электрических цепей[1]

Компьютеры, если правильно их использовать, могут быть хорошим подспорьем в таких областях как наука и инженерное дело. Специальное ПО позволяет тестировать идеи и концепции до, собственно, конструирования самих цепей, тем самым экономя много времени и денег.

Кроме того, эти программы могут реально помочь тем, кто только начал изучать электронику, позволяя быстро и просто изучить различные концепции, не собирая настоящих цепей. Конечно, это не может заменить конструирования и тестов на настоящих цепях, но компьютерные симуляции определённо упрощают процесс обучения, позволяя студентам экспериментировать с цепями и тут же видеть результат внесённых ими изменений. В дальнейшем я буду часто использовать данные, сгенерированные этими программами, чтобы с их помощью проиллюстрировать всевозможные важные концепции. Результаты компьютерной симуляции позволяют получить интуитивное понимание того, как ведёт себя цепь, не углубляясь в сложности абстрактного математического анализа.

Компьютерная симуляция с помощью SPICE

Для симуляции цепей лично я использую программу SPICE, которая описывает цепь компьютеру при помощи текста, имеющего вид списка. Этот список, по сути, сам является компьютерной программой, и в нём должен соблюдаться синтаксис языка SPICE. Затем компьютер обрабатывает («запускает») эту SPICE-программу, которая интерпретирует этот текст с описанием цепи и генерирует её детальный математический анализ (тоже в текстовой форме). Более подробно об использовании SPICE рассказывается в 5 томе этого руководства («Справочные материалы»). Здесь же я просто расскажу о самых азах, а затем воспользуюсь SPICE для анализа простых цепей, которые мы уже рассматривали.

Сначала давайте установим SPICE на компьютер. Будучи бесплатной программой, которую можно свободно найти в интернете, она имеет много разных версий, подходящих для множества различных операционных систем. Я буду использовать одну из ранних версий 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 простую, 2-компонентную цепь, я открыл свой текстовый редактор и вписал в нём «заголовок» своей цепи:

Чтобы описать программе батарею, в начале следующей строчки текстового файла пишем букву «v» (от «voltage source», т.е. «источник напряжения»), затем задаём, к каким проводам (номерам нод) подключены терминалы батареи, и, наконец, напряжение батареи. В итоге получится вот так:

Эта строчка объяснит SPICE, что у нас есть источник напряжения, подключенный к нодам 1 и 0, постоянный ток (англ. «direct current» или «dc») и 10 вольт. Это всё, что SPICE нужно знать об этой батарее. Теперь резистор – он указывается буквой «r», после чего пишутся ноды, к которым он подключен, и его значение сопротивления в омах. Поскольку это компьютерная симуляция, мощность резистора указывать не нужно. В этом прелесть «виртуальных» компонентов – их нельзя повредить чрезмерными напряжением и силой тока.

Теперь SPICE знает, что в нашей цепи есть резистор, подключенный к нодам 0 и 1, а также имеющий сопротивление 5 Ом. То есть эта короткая строчка текста говорит SPICE, что у нас есть резистор («r»), подключенный к тем же нодам, что и батарея (0 и 1), и имеющий сопротивление 5 Ом.

Если мы впишем в следующей строке «.end», то этим дадим SPICE понять, что это конец описания цепи. То есть мы поместили в один файл всю информацию, необходимую для SPICE, и готовую для последующей обработки. Технически вся эта информация о цепи, сохранённая в компьютерный файл в виде нескольких строчек текста, называется «списком связей».

Загрузка файлов текстового редактора в SPICE

Теперь, когда мы закончили печатать все необходимые SPICE-команды, нам нужно сохранить их в файл на жестком диске компьютера, чтобы SPICE знал, где всё это искать. Поскольку это мой первый список связей для SPICE, я сохраню его в файле под названием «circuit1.cir». Но вы, в принципе, можете назвать его как угодно – главное соблюдать правила для названий файлов вашей ОС вроде правила 8+3 символа (восемь символов в названии + три символа в расширении: «12345678.123») в DOS.

Чтобы запустить SPICE и дать ему команду обработать содержимое файла «circuit1.cir», нам нужно выйти из текстового редактора и открыть командную строку («строку MS DOS», если вы пользователь Windows), где мы сможем вводить текстовые команды для ОС компьютера. Этот «примитивный» способ запуска программы может показаться архаичным для пользователей, привыкших к тому, чтобы кликать по графическим иконкам на экране, но на самом деле это очень мощный и гибкий способ работы с ПК. Помните, что всё, что мы делаем со SPICE – это лёгкая форма компьютерного программирования, и чем больше вы будете привыкать к использованию текстовых команд – а не простому кликанью мышкой по иконкам – тем искуснее вы станете в управлении своим компьютером.

Открыв командную строку, впишите в ней команду ниже, а затем нажмите на  ↵ Enter . В примере ниже используется файл «circuit1.cir», поэтому если ваш файл называется как-то по-другому, замените это название на своё:

spice < circuit1.cir

Вот так это выглядит на моём компьютере (на Linux) перед тем, как я нажал  ↵ Enter :

После того, как вы нажмёте  ↵ Enter , чтобы запустить эту команду, на экране должен появиться текст, сгенерированный программой SPICE. Ниже – скриншот, показывающий, что SPICE сгенерировал на моём компьютере (я склеил несколько скриншотов, чтобы удлинить окно «терминала» и показать весь сгенерированный текст; иначе он просто не вмещается):

SPICE начинает обрабатывать весь список связей – начиная от заголовка до «.end». Примерно на середине симуляции он показывает напряжение всех нод относительно ноды 0. В нашем примере есть только одна нода помимо ноды 0, поэтому здесь показано напряжение 10.0000 вольт. После этого программа генерирует силу тока каждого источника напряжения. Поскольку у нас только один источник напряжения, программа покажет только его силу тока. В нашем случае это 2 ампера. SPICE анализирует силу тока немного странно, поэтому значение этой величины показано со знаком минус: «-2 ампера».

Последняя строчка отчёта – «общая рассеиваемая мощность» («total power dissipation»), которая в нашем случае равна 2.00E+01 ватт: 2.00 х 101 или 20 ватт. Многие данные, генерируемые SPICE, имеют вид экспоненциальной записи, а не обычный вид числа с фиксированной точкой. Поначалу это сбивает с толку, но на самом деле такой метод записи очень удобен для очень больших и очень маленьких чисел. Более подробно об экспоненциальной записи будет рассказано позже.

Одно из преимуществ использования вот таких «примитивных» текстовых программ вроде SPICE в том, что текстовые файлы, с которыми они работают, очень малы по сравнению с другими файловыми форматами (особенно с графическими форматами, которые используются в других программах симуляции цепей). Кроме того, поскольку результат, сгенерированный SPICE – это чистый текст, вы можете скопировать его в другой текстовый файл, чтобы затем провести с ним какие-то другие манипуляции. Для этого давайте снова запустим SPICE в командной строке, но на этот раз перенаправим его к файлу со сгенерированными данными «output.txt».

На этот раз SPICE запустится в «тихом» режиме, не засоряя компьютерный экран тоннами текста, как раньше. В результате будет создан новый файл – «output1.txt» – который можно будет открыть и модифицировать при помощи текстового редактора или текстового процессора. Вот я открываю этот файл при помощи того же текстового редактора Vim:

Теперь я могу свободно редактировать этот файл, убрав весь лишний текст (вроде длинных полос с датой и временем) и оставив только то, что считаю нужным для анализа моей цепи:

Теперь, когда текст отредактирован и заново сохранен под тем же названием (в моём примере – «output.txt»), его можно скопировать в документ любого типа, потому что этот «чистый» текст – это универсальный формат почти для всех компьютерных систем. Я даже могу, не делая никакого скриншота, просто скопировать и вставить его в эту статью. Вот так:

my first circuit 
v 1 0 dc 10 
r 1 0 5 
.end
node voltage
( 1) 10.0000
voltage source currents
name current
v -2.000E+00
total power dissipation 2.00E+01 watts

Кстати говоря, на всём протяжении этого руководства результат, сгенерированный SPICE, чаще будет представлен именно виде «чистого» текста, а не скриншотов.

Изменение значений в SPICE

Если вы хотите изменить значение компонента в компьютерной симуляции, вам нужно открыть файл со списком связей (circuit1.cir), сделать нужные модификации в текстовом описании цепи, сохранить их в тот же файл и перезапустить SPICE в командной строке. Этот процесс редактирования и обработки текстового файла знаком каждому программисту. Одна из причин, по которым я люблю учить людей работать со SPICE – это то, что это готовит их к тому, чтобы мыслить и работать как программист. А это очень хорошо, потому что компьютерное программирование – это очень важный навык в продвинутой электротехнике.

Ранее мы научились тому, как будут вести себя переменные электроцепи (напряжение, сила тока или сопротивление), если поменять значение одной из них. То есть мы можем с помощью закона Ома математически предугадать, что случится в таком случае. Теперь давайте заставим SPICE проделать эти расчёты за нас.

Если мы утроим напряжение в нашем последнем примере – с 10 до 30 Вольт – а сопротивление оставим тем же, то сила тока тоже должна будет увеличиться втрое. Сделайте это, переименовав свой файл со списком связей, чтобы не перезаписать первый файл. Таким образом, обе версии симуляции цепи будут храниться на компьютере, что позволит нам воспользоваться ими в будущем.

Текст ниже – это результат, сгенерированный SPICE для модифицированного файла, но в формате чистого текста, а не скриншота экрана компьютера:

second example circuit 
v 1 0 dc 30
r 1 0 5
.end
node voltage
( 1) 30.0000
voltage source currents
name current
v -6.000E+00
total power dissipation 1.80E+02 watts

Как мы и ожидали, вместе с напряжением утроилась и сила тока: ранее она была 2 Ампера, но теперь увеличилась до 6 Ампер. Также обратите внимание, что в цепи увеличилась и общая рассеиваемая мощность. Ранее она составляла 20 Ватт, а теперь – 180 Ватт (1.8 x 102). Что и неудивительно, если вспомнить, что (согласно закону Джоуля P=E2/R) мощность равна квадрату напряжения. То есть, если мы утраиваем напряжение, то мощность должна увеличиться в 9 раз (32 = 9). Соответственно, 9 раз по 20 будет 180, что говорит о том, что расчёты SPICE соответствуют тому, чему мы научились об электрических цепях ранее.

Создание комментариев в SPICE

Если мы хотим узнать, как эта цепь будет вести себя с разными напряжениями, то можем воспользоваться некоторыми более продвинутыми опциями SPICE. В примере ниже я воспользовался аналитической опцией «.dc», чтобы постепенно менять напряжение с 0 до 100 Вольт с шагом в 5 Вольт, а также печатать значение и силу тока для каждого нового шага. Строки, которые в SPICE-файле начинаются со звездочек («*») – это комментарии. То есть они не дают компьютеру никаких команд для анализа цепи, а служат лишь источниками справочной информации для человека, читающего их:

third example circuit
v 1 0
r 1 0 5
*команда ".dc" призвана постепенно увеличивать напряжение "v"
0 до 100 вольт с шагом в 5 вольт
.dc v 0 100 5
.print dc v(1) i(v)
.end

Команды «.print» и «.plot»

Выше мы воспользовались командой «.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

Если я отредактирую SPICE-файл, вписав вместо «.print» команду «.plot», то SPICE в результате сгенерирует что-то вроде примитивной таблицы:

Legend: + = v#branch 
------------------------------------------------------------------------
sweep 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 + . .
---------------------|------------------------|------------------------|
sweep 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, чтобы сделать их максимально понятными для вас, и тем самым помочь вам в полном объёме использовать возможности этого потрясающего инструмента для анализа электрических цепей.

См.также

Внешние ссылки