al_fuhrmann (al_fuhrmann) wrote,
al_fuhrmann
al_fuhrmann

Categories:

gEDA - тест модели симистора

Наконец, запустим симулятор и увидим как работать с ним. Испытаем схему и проведем некоторые измерения. Мы увидим, что ngspice - это точный инструмент. По крайней мере, с точностью до параметров заданных в схемах и моделях. Мы убедимся, что работать с ngspice намного проще, чем с другими программами и развенчаем в очередной раз идиотский миф об ужасах командной строки. Из-за того, что в память не загружены GUI-плюшки и перделки, симулятор работает очень быстро. А графики он нарисует без проблем.

В прошлом посте мы дошли до файла ltimer.cir, готового к симуляции. Поэтому сейчас мы просто запустим его на обработку в симуляторе. Откроем терминал в том каталоге, где у нас находится файл ltimer.cir

Наберем командную строку: ngspice ltimer.cir и нажмем Enter.

Буквально сразу мы увидим результаты:



Если график кажется маленьким, раздвинем мышкой дочернее окно:



Мы видим, что симистор на самом деле включился от управляющего импульса и работает правильно. Если вы думаете, что это все, то ошибаетесь. Например, что делать, если вы хотите посмотреть на график напряжения между катодом и анодом в открытом состоянии? Посто выделить интересующую область рамкой при нажатой правой кнопке мыши. Появится новое окно. Если и этого мало, можно повторить масштабирование. Лишние окна можно позакрывать.



Немалый интерес представляет и текстовый вывод ngspice на терминал. Ведь сейчас мы работаем в интерактивном режиме.

$ ngspice ltimer.cir
******
** ngspice-24 : Circuit level simulation program
** The U. C. Berkeley CAD Group
** Copyright 1985-1994, Regents of the University of California.
** Please get your ngspice manual from
** http://ngspice.sourceforge.net/docs.html
** Please file your bug-reports at
**http://ngspice.sourceforge.net/bugrep.html
** Creation Date: Wed Apr 16 21:09:20 UTC 2014
******

Circuit: * ltimer.cir

Doing analysis at TEMP = 27.000000 and TNOM = 27.000000

Warning: v1: no DC value, transient time 0 value used
Warning: v2: no DC value, transient time 0 value used
Warning: v.xvs.vg: has no value, DC 0 assumed
Warning: v.xvs.vm: has no value, DC 0 assumed

Initial Transient Solution
--------------------------

Node                                   Voltage
----                                   -------
xvs.4                                        0
3                                  -6.7388e-95
xvs.ctl                                      0
xvs.6                                        0
xvs.3                                        0
xvs.5                             -2.40935e-23
a                                            0
xvs.2                                        0
xvs.1                              2.40935e-23
2                                            0
1                                            0
b.xvs.b1#branch                              0
v.xvs.vg#branch                     6.7388e-98
v.xvs.vm#branch                              0
v1#branch                          -6.7388e-98
v2#branch                                    0



No. of Data Rows : 1265
ngspice 2 -> 

Программа предупреждает о том, что кажется ей косяками (наши амперметры) и дает сводку начальных условий на всех узлах. Как видим, сюда включаются и подсхемы. ngspice - это "плоский" симулятор и вся иерархия поэтому видна, по крайней мере, хотя бы на одном уровне вложенности.

Поскольку мы находимся в интерактивном режиме, то ничто не мешает нам использовать команды. Команды, предписанные в файле уже выполнены, но мы можем добавлять и свои. Например, давайте посмотрим, каков ток в нагрузке. Для этого наберем команду: plot v2#branch и сразу все увидим:



Клик мышкой (левая кнопка) в любую точку графика приводит к выводу координат, в единицах осей, в терминал.

Сделаем еще парочку измерений. Посмотрим скорость переключения симистора в единицах В/сек. Для этого сначала выйдем из ngspice при помощи команды exit (или quit). Изменим шаг симуляции в файле ltimer.cir: .tran 10u 0.12 Теперь мы получим больше данных и графики будет точнее. Вообще, для получения корректных результатов для схем с тиристорами нужно брать величину шага времени не более 20 микросекунд.

Снова запустим ngspice. Будем увеличивать график в подходящем месте (там, где падает напряжение на аноде при включении тиристора) до разумных масштабов:



Затем установим мышку в точке, показанной на рисунке выше, нажмем левую кнопку и протянем мышь в конечную точку. Как только мы закончим операцию, ngspice рассчитает необходимые данные:




Поскольку шкала на графике выражается в миллисекундах, при выбранном масштабе, а напряжение в вольтах, то отношение dy/dx нужно разделить на тысячу. Получим значение: -1.14e+5 или, говоря более просто, 114 кВ/сек.

Определим ток удержания. Вообще-то он уже определен, в выражении для источника B1. Но интересно будет проверить.

Рисуем два графика: plot v(a) vm#branch и увеличиваем в том месте, где симистор выключается. Увеличивать придется несколько раз.



На правом графике излом тока виден чуть покрупнее, и, кликув ему "по коленке" мы получаем точку с ординатой несколько больше 15 заданных миллиампер. Эта погрешность, хочу еще раз напомнить, вызвана недостаточно мелким шагом симуляции. Если вы установите шаг, скажем, не 10 мкс (10u), а в сто раз меньше, это будет 100n, и наберетесь терпения на полминуты (у меня это заняло 35 секунд), то получите больше миллиона строк выходного массива данных и вот такую картину:



Этот пример показывает, что к настройке симулятора надо подходить разумно, без фанатизма, и тогда скорость разработки схем значительно увеличится. Если вам не нужна лишняя точность, не парьтесь. Не гоняйте зря машину. Много ли мы получили прибавки к относительной точности? Процентов 10. В данный момент такая точность не оправдывает большой расход времени.

При наладке схем, не обязательно выходить из симулятора. Допустим, нам надо увеличивать сопротивление нагрузки, до тех пор, пока ток не станет меньше тока удержания. Мы можем сделать это "не отходя от кассы":



Здесь сначала была команда listing, потому, что я забыл, как называется резистор в нагрузке, а открывать файл в редакторе мне было лень. Выяснив, я набрал команды, какие вы видите на картинке и перезапустил ngspice. Но амплитуда тока все еще недостаточно снизилась. Поэтому я еще раз увеличиваю сопротивление и снова запускаю ngspice, пока не получу нужную картину тока:



На сегодня достаточно, а в другой раз мы займемся новой темой: как развивать схему без лишних манипуляций с файлами, добавлять, убавлять участки цепей, менять параметры без явного обращения к gnetlist и лишней ручной правки файла cir. Что касается самого таймера, то мы добавим схему для получения 12 В постоянного напряжения с минимумом деталей.

p.s. Я знаю, что мой бложек мало кто читает, тем более, из числа дам, но на всякий случай, с праздником!

Дальше
Tags: #branch, geda, просмотр данных в ngspice
Subscribe

  • gEDA - подготовка схемы к разводке платы

    Для изготовления печатной платы крайне важна информация о посадочных местах компонентов (footprint). Это проекция на плоскость монтажа контуров…

  • gEDA - принципиальная схема устройства

    В прошлом посте таймер оказался немного подгоревшим, подавать его к столу рановато. На моей кухне случился небольшой заеб, то есть, слишком много…

  • gEDA - добиваем несчастный таймер 555

    Перестроим наш проект таким образом, чтобы использовать иерархию схем. Поскольку тема изучения gEDA, в конечном счете, важнее проектируемой вещицы,…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments