Site Loader

KiCad 5: ngspice — Все не как у людей — LiveJournal

KiCad 5: ngspice[Nov. 18th, 2018|01:14 am]

ex0_planet


Дошли руки посмотреть (речь о версии 5.0.1 если что). TL;DR — все так мрачно, что неюзабельно. Хотя формально работает.

Чуть подробнее: сия формально работающая фича по уровню продуманности и качества исполнения напоминает студенческую лабораторную работу, написанную в последнюю ночь перед сдачей. Комп на кухне, литр кофе, борланд сиплюсплюс во весь экран и winamp в трее (эх, было же времечко!) — как-то сразу очень живо встала картинка перед глазами.


Во-первых, это глюкодром. Открываем симулятор, симулируем, закрываем. Редактируем схему, открываем симулятор, получаем coredump. Судя по bt (примерно kicad->ngspice->libc->malloc->print_err->exit) имеем то ли расстрел памяти, то ли double free (сообщение не сохранилось) — короче, неосторожное обращение с контекстом и освобождением ресурсов.

Ок, ладно. Не будем закрывать симулятор, будем редактировать схему. Редактируем, запускаем симуляцию, получаем пачку ассертов. При внимательном рассмотрении осознаем, что оно шизеет, если в симулятор были ранее добавлены сигналы, которые сейчас уже удалены. Ладно, хотя бы ассерты оно перехватывает и не вылетает в core совсем.

И, видимо, еще много добротных, жирных, студенческих глюков.

Во-вторых, интеграция очень слабая. Фактически это экспорт в spice, запускалка, и рисовалка графиков. График причем не настраивается никак, только сигналы можно выбрать. Плюсом надо очень хорошо знать собственно ngspice, потому что там не 1:1 соответствие гуя к возможностям спайса, и проще какие-то вещи (даже базовые) прямо написать директивой. В библиотеке компонентов также нет никакой особенной поддержки спайса; все модели надо прописывать вручную, из коробки оно распознает только резистор, конденсатор, и индуктор. И, допустим, если мы берем из библиотеки символ с двумя ногами, и назначаем ему модель источника напряжения, то совершенно непонятно как назначается соответствие пинов.

В третьих, полностью отсутствующая библиотечная поддержка. От слова совсем. Есть полуофициальный туториал в котором прямо рекомендуется шариться по сайтам производителей в поисках моделей. Это, в принципе, правильный совет, потому что никто не сделает модель правильнее и точнее чем производитель, но что делать в случае, скажем, какого-нибудь транзистора BC546?

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

Учитывая то что сам kicad не позволяет иметь несколько sch в проекте (точнее, позволяет, но они должны быть листами одной иерархии), это добавляет головной боли по менеджменту этих листочков. Сквозное проектирование? Не, не слышали.

Такие вот краткие впечатления.

Зачем они всё это сделали — совершенно непонятно. Вроде бы над душой с планом на пятилетку там никто не стоял… Ладно, наверное,через пару мажорных версий всё встанет на свои места.

PS. Более длинный туториал, если интересно, лежит тут: http://ngspice.sourceforge.net/ngspice-eeschema.html

This entry was originally posted at https://ex0-planet.dreamwidth.org/75402.html. Please comment there using OpenID.

KiCad Eeschema как графический интерфейс для ngspice, руководство по настройке моделирования

  1. Введение
  2. Настройка eeschema — ngspice
  3. Цепь с пассивными элементами
  4. Биполярный усилитель
  5. Инвертирующий усилитель с операционным усилителем
  6. Цифровое моделирование
  7. Использование внешнего ngspice
  8. Улучшение сценария для использования как с внутренним, так и с внешним ngspice
  9. Использование двойного операционного усилителя
  10. Ссылки на модели, инструкции, видео и т. д.

KiCad/Eeschema очень приятный графический интерфейс, который может идеально использовать в сотрудничестве с ngspice, чтобы разрешить схематический ввод электронные схемы, моделирование и отображение результатов.

Все эксперименты, описанные здесь, требуют использования в по крайней мере KiCad версии 5, и были сделаны с MS Windows каждую ночь. Большинство рассматриваемых вопросов должны быть аналогичны KiCad/ngspice под LINUX. Изображения создаются с помощью KiCad 5.1.2, но выглядят очень похоже на новую версию 6.0.0. Для получения более подробной информации об интерфейсе Eeschema-ngspice и его использовании см. пожалуйста, проверьте Руководство KiCad/Eeschema.

Ниже представлены три примера схем. Первый основан исключительно на символах из библиотеки KiCad. Этот схема состоит только из пассивных элементов, которые можно моделировать непосредственно. Вторая схема представляет собой усилитель на биполярном транзисторе npn, который требует определенных параметров модели из внешнего источника для встроенная транзисторная модель. Третий контур представляет собой Усилитель операционного усилителя, использующий для моделирования внешнюю модель операционного усилителя.

Ngspice читает библиотеки устройств PSPICE. Они часто предоставляются производителями полупроводниковых устройств для поддержки проектирования. Внутренне ngspice переводит синтаксис PSPICE в ngspice перед симуляцией. Больше не требуется ручная настройка описания библиотеки.

Настоятельно рекомендуется: Установите выпускную версию KiCad 6 с http://kicad.org/download/. Ngspice-35 поставляется с этим дистрибутивом. Некоторые дистрибутивы Linux, например. OpenSUSE Tumbleweed, предлагаем KiCad 6.0.0 с ngspice-35.

Если вы хотите использовать модели устройств PSPICE (часто полупроводниковыми компаниями), вы должны установить соответствующий режим совместимости:

Осмотрите —> Симулятор —> Параметры Sim —> Режим совместимости: PSpice и LTSpice —> хорошо.

И все!

Если вы хотите использовать ngspice-36, Пожалуйста, читайте дальше. В противном случае пропустите загрузку и перейдите к главе. 2.

Если вы используете MS Windows, установили 64-разрядную версию KiCad и хотите выполнить обновление с ngspice-35 на 36, вы должны заменить симулятор, находящийся в ngspice.dll в папке KiCad/bin, на новая ngspice dll. Для обновления выполните следующие действия:

Загрузите ngspice dll, доступную в ngspice-36_dll_64.zip.

Переименуйте ngspice.dll в C:\Program Files\KiCad\6.0\bin в ngspice_orig.dll. Вам потребуется доступ администратора права на это. Скопируйте ngspice.dll из папки ngspice-36_dll_64.zip\Spice64_dll\dll-vs\ zip-файла в папку C:\Program Files\KiCad\6.0\bin. Затем переименуйте папку C:\Program Files\KiCad\6.0\lib\ngspice в C:\Program Files\KiCad\6.0\lib\ngspice_orig и раскройте папку ngspice-36_dll_64.zip\Spice64_dll\lib\ngspice\ из zip-файла в C:\Program Files\KiCad\6.0\lib\ для создания обновленного C:\Program Files\KiCad\6.0\lib\ngspice. Теперь перезапустите KiCad. Эта процедура не будет работать для 32-битного KiCad, замены 32-битной dll нет.

Если вы используете LINUX, проверьте, не установлен ли уже ваш дистрибутив. предлагает общую библиотеку ngspice-36. Если нет, вам может потребоваться загрузить ngspice-36.tar.gz и скомпилируйте разделяемую библиотеку с помощью

мкдир нгшаред
cd ngshared
../configure --with-ngshared --enable-xspice --enable-cider --enable-openmp --disable-debug CFLAGS="-m64 -O2" LDFLAGS="-m64 -s"
сделать чистым
сделать -j8
судо сделать установить

 

Тогда необходимо вручную перезаписать старый libngspice.so, который был поставлен KiCad с новой сгенерированной версией.

Например, некоторые сведения об Ubuntu сообщаются мифи. пожалуйста, проверьте также гл. 32.1 руководство по ngspice для предварительных требований и процедур для компиляции ngspice.

Пользователи MacOS могут пострадать от того, что простая замена может быть невозможна из-за очень строгой политики безопасности macOS. В настоящее время решения по обновлению нет.

Первый пример — простая радиоуправляемая лестница, и мы хотим сделать симуляцию переменного тока.

eeschema -> Файл -> новый

Сохранить как rcrc.kicad_sch.

В качестве пользователя без прав администратора вам может быть запрещено хранить файл rcrc.kicad_sch в каталоге Program Files/Kicad, но вы можете выбрать любой другое место, доступное для вас, например. рекомендованную личную папку.

Выберите и соедините компоненты.

Указатель «Добавить символ» уже открыт. Если нет, выберите соответствующую кнопку в правом столбце.

При нажатии кнопки на пустом поле чертежа откройте окно «Выбор символа». Для этого примера мы выбираем ‘pspice’ библиотеку, а также выберите и соедините между собой символы R, C, 0 и VSOURCE (см. рис. 1). Земля (0) требуется, потому что ngspice ссылается на все напряжения на контакт заземления. VSOURCE требуется для доставки входного сигнала, и мы можем просматривать «выходной» сигнал. сигнал после имитации.

рисунок 1

Далее мы должны добавить имена и значения к символам, нажав на каждый символ. С R и C это просто: R? является имя должно стать R1 и т. д., R — значение, которое станет 1k и т. д. VSOURCE особенный, потому что он должен доставлять входные данные ngspice. Для переменного тока симуляции, у нас нет постоянного тока, а переменный ток — наша ссылка, установленная на 1, поэтому мы заменяем VSOURCE на «dc 0 ac 1».

Наконец, мы должны указать ngspice, что моделировать. Для этого может потребоваться ознакомиться с руководством по ngspice, глава. 15.3.1. Нам нужен переменный ток в диапазоне от 1 Гц до 100 кГц с 10 точками. за десятилетие. Простой и удобный способ сообщить об этом симулятору просто размещает текстовую строку «.ac dec 10 1 100k» в наше окно рисования eeschema. Рис.2 теперь показывает полный ввод.

Рис. 2

И вы можете использовать Eeschema -> Inspect -> Simulator

Появится окно симулятора. Потому что все готово, вы просто нажимаете кнопку «Запустить симуляцию». Пустой участок всплывает окно. Перейдите к «Добавить сигналы» -> V (выход), и вы увидите усиление и фаза выхода, если на входе была 1 (рис. 3).

Рис. 3

В качестве следующего теста нас интересует симуляция переходных процессов. Все сигналы теперь будет вычисляться в зависимости от времени.

Сначала мы должны изменить входной сигнал напряжения. Предполагается ступенчатое напряжение от 0 до 5 В. Это будет доступно (см. руководство ngspice, глава 4.1.1) с источником PULSE. ‘dc 0 ac 1’ должно быть заменен на «ПУЛЬС (0 5 1u 1u 1u 1 1)». Входное напряжение возрастает от 0 до 5 В после задержка 1 мкс. Время нарастания и спада также установлено на 1 мкс. Ширина импульса и время повторения составляют 1 с и, таким образом, намного превышают время моделирования. 100 мс. Таким образом, во время нашего моделирования мы увидим только нарастающий фронт входного сигнала. Теперь для команды моделирования установлено значение «.tran 1u 100m». Выход (V(out) построен зависимости от времени) действительно показывает ожидаемое поведение, возрастая от 0 до 5 В, и показано на рис.4.

Рис. 4

Второй пример — биполярный усилитель. Снова используем символы из библиотеки pspice, за исключением транзистора из библиотеки Transistor_BJT. Два резистора R1, R2 определяют ток базы, R3 — нагрузочный резистор постоянного тока. RLoad требуется, потому что ngspice не будет принять конденсатор, который не имеет соединения постоянного тока на каждой клемме.

Даже при сборе всех данных как показано, схема не завершена. Транзистор Q1 потребует больше данных для моделирования. биполярный модель транзистора (уравнения для расчета токов как функции напряжений на клеммах) жестко закодирован в ngspice. Однако эта модель требует параметров модели для выполнения этих расчетов. зависит от выбранного транзистора (BC546). Эти данные не поставляются вместе с KiCad. Они зависят от производителя устройства и могут быть получены с их веб-сайтов или с других сайтов. (здесь, например, из параметров модели BC546, смотрите также коллекцию моделей специй от нашего страницу параметров модели для многих других). Параметры модели BC546: организованы в одну строку, начинающуюся с «. model BC546 npn (…)». Помещать эту строку в файл BC546.lib. Дважды щелкните символ BC546. «Свойства символа» всплывает окно. Выберите «Редактировать модель специй». В «Редакторе моделей Spice» выберите «Выбрать файл». и найдите BC546.lib. Его содержимое (строка .model) отобразится в окне (рис. 5).

Рис. 5

На рис. 6 показана схема, готовая для моделирования переменного тока, на рис. 7 — для моделирования переходных процессов.

Рис. 6

Рис. 7

Вот используется источник синусоидального напряжения (см. руководство ngspice, глава 4.1.2). Выходные данные представляют собой зависимости V(out) и V(in) от времени (см. рис. 8).

Рис. 8

Этот усилитель сильно зависит от правильного выбора значения R1. Окно Spice Simulator предлагает кнопку «Настроить». Выберите «Настроить», нажмите на R1 в цепи. диаграмму, а затем вернитесь в окно Spice Simulator. Ползунок открылся для изменения R1. После каждого изменения симуляция продолжается немедленно, текущие значения V(in) и V(out) показано.

Слева идеальная ситуация с R1=68k. Посередине с R1=78k, усиление значительно уменьшилось (следите за шкалой y и соотношением V(out) и V(in)). На справа при R1=63k сигнал сильно искажается и усиление снова уменьшается.

В следующем примере представлен простой инвертирующий усилитель с использованием операционного усилителя. Схема показана на рис. 9. LF356 выбран случайно. Соотношение резисторов R2/R1 = 100 устанавливает усиление. Имеются симметричные блоки питания, а также источник входного напряжения.

Рис. 12

Модель операционных усилителей, поставляемых с ngspice, отсутствует. KiCad тоже нет поставить такую ​​модель. Поэтому вам нужно искать в Интернете модель производителя устройства, например. из Веб-страницы TI как LF356.mod. Исходники для моделей собираются у нас Страница модели ngspice. Сохраните файл модели LF356.mod в каталог по вашему выбору, например, /sim/mymodels/LF356.mod.

Если вы посмотрите на LF356.mod, там вы найдете схему, собранную в подсхему (. subckt линия) с названием LF356 и 5 соединительными узлами. Очевидно, что два узла компенсации смещения 1 и 5 символа KiCad не обслуживаются этой моделью.

Как добавить модель ngspice? Дважды щелкните символ LF356 на схеме. Откроется окно «Свойства символа». Вызовите «Редактировать модель Spice». Выберите «Модель» -> «Выбор файла». Введите путь/имя LF356.mod (например, /sim/mymodels/LF356.mod). Выберите «Тип» -> «Подсхема». Описание подсхемы отображается в окне.

Необходимо решить еще одну проблему: нумерация контактов в описании модели не соответствуют нумерации выводов KiCad LF356 с обозначением U1. Пары символ/вывод KiCad: (вх)-/2 (вх)+/3 В+/7 В-/4 вых/6. Модель требует последовательности

  • неинвертирующий вход
  • инвертирующий вход
  • положительный источник питания
  • отрицательный источник питания
  • выход

, как описано в файле модели. Кикад контакты должны быть заказаны в этой последовательности, то есть 3 2 7 4 6, и введены в Поле «Альтернативная последовательность узлов». Не забудьте установить флажок, иначе поле запись отбрасывается. На рис. 13 показаны окончательные настройки.

Рис. 13

Настройка имитации ‘.dc Vin -0,5 0,5 0,1’ приводит к линейному Vout с отрицательным наклоном -100. настройка моделирования «.ac dec 10 100 1000k» приводит к ухудшению усиления с увеличение частоты.

Три уровня цифровой симуляции доступны только в ngspice два из них на данный момент поддерживаются интерфейсом KiCAD-ngspice.

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

Использование цифровых моделей на основе событий XSPICE, встроенные в аналоговые структуры ввода/вывода, дают модели цифровых вентилей с аналоговым интерфейсом, которые имитируют поведение гейта, такое как время задержки, входные уровни и возможности выходного привода. Эта поведенческая симуляция предлагает более высокую скорость симуляции по сравнению с затворами транзисторного уровня.

ngspice также предоставляет настоящую возможность цифрового моделирования событий, самый быстрый метод из трех, опять же с применением XSPICE. Это пока не поддерживается KiCad.

Даже если не очень продвинутый и полный, давайте начнем что-нибудь с помощью поведенческое моделирование. Символ библиотека (см. Сервис->Редактор библиотеки символов) — 74xx, и мы выбираем вариант 74HC. Теперь нам нужно соответствующую библиотеку ngspice. Нет доступных, поэтому я начал поведенческую библиотеку 74HCng.lib , получены из библиотеки LTSPICE, заменив их устройства A логикой XSPICE. Каждый гейт 74хх имеет аналог интерфейс ввода/вывода, окружающий внутреннюю логику, основанную на событиях. Только очень мало ворот прямо сейчас, просто для тестирования основ.

Рис. 14

Имеется два источника входных сигналов (источники напряжения, излучающие подходящие импульсы), три затвора U1A U2A U3B, составляющие полусумматор, и два затвора балластных U4A, U5A. Тогда мы иметь пять линий электропередач (VCC и земля каждая) для каждых ворот. Два получить эту схему, применяется та же процедура, что и в предыдущей главе: получить символы из библиотеки «pspice» и «74xx». Нарисуйте проводку. Добавьте подходящую форму импульса в VSOURCE. Вы можете обратиться к руководству ngspice, глава 4.1.1 для объяснения. Дважды щелкните по каждому чтобы открыть окно «Свойства символа», выберите «Редактировать модель специй», введите имя и путь библиотеки моделирования, модель ворот (например, 74HC00) и «подсхема типа». Не забудьте установить правильную последовательность контактов, например. 1 2 3 14 7 для U2 и U4 или 4 5 6 14 7 для U3. Добавьте команду моделирования. Нам нужна симуляция переходного процесса, поэтому мы вводим «.tran 1n 4u». в текстовое поле.

Сразу бросаются в глаза некоторые особенности. Два грузовых балласта требуются гейты, в противном случае выход предыдущего гейта называется «NC001», т.е. не подключен и не могут быть использованы (например, нанесены на график), даже если вы дали им тег. Однако 74HC00 представляет собой вентиль И-НЕ с двумя входами * 4. мы определили U2 … U5, то есть 4 разных блока (IC). Обычно вы бы проектировали с одна ИС, предлагающая U2A … U2D и U2E (мощность). Затем Eeschema запрашивает модель ворот NAND. с 4*3+2 контакта. Наша имитационная модель в 74HCng.lib имеет только 3 + 2 контакта (in1 in2 out vcc gnd). Это только начало, но для получения подходящих моделей устройств требуется еще несколько действий. Для аналога многоблочные ИС, см. главу «Использование двойного операционного усилителя».

Таким образом, цифровое моделирование все же потребует некоторых усилий, чтобы стать действительно полезным в KiCad/ngspice.

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

Пошаговый подход для Windows 10:

Рис. 15 Схема драйвера лазера, окно Netlist Generator, график после моделирования

Вуаля: ngspice.exe имитирует файл laser_driver.cir и отображает полученный результат.

Если вы используете Linux, несколько иной подход необходим. ngspice ожидает терминал для собственного ввода/вывода. Таким образом, недостаточно просто добавить «ngspice» в окно генератора списка цепей, но команда симулятора как вызов через терминал, например.

  • Команда симулятора: xterm -e ngspice
  • , если доступен xterm. xterm можно заменить на стандартное терминальное приложение Linux. К сожалению, есть не (пока) хорошее решение для macOS.

    Если вы замените текстовое поле в приведенном выше примере следующим скриптом

    .тран 10р 150н
    .контроль
    pre_set noinit
    установить управление
    если $?общий режим
      версия
      время использования
    еще
      бегать
      хитрость
      установить тип файла = ascii
      напишите c:\Kicad\laser.out "/in" "/out"
      сюжет "/в" "/вне"
    конец
    . endc
    
     

    вы можете выбрать внутренний симулятор ngspice (Eeschema—>Tools—>Simulator—>Run Simulation) или внешний симулятор ngspice (Eeschema—>Инструменты—>Создать файл списка соединений…—>Spice—>Запустить симулятор). Информацию о командах, используемых в сценарии, см. в главе 17.5 Руководство по ngspice.

    Как уже было показано в главе 5, символы KiCad и файлы моделей Spice не подходят, если устройства состоят из нескольких частей. Здесь в качестве примера мы хотим настроить полосовой фильтр, добавляющий два фильтра Саллена-Ки. Такой фильтр нижних частот распространяется с KiCad в папке «KiCad\share\kicad\demos\simulation\sallen_key». полоса пропускания потребуется два фильтра Sallen-Key последовательно, на фильтре верхних частот и один фильтр нижних частот с подходящие частоты среза.

    Для проектирования фильтра нам потребуются два операционных усилителя. Разумно выбрать двойной операционный усилитель, т.е. TI TL072, который содержит два усилителя в 8-контактном корпусе. Начните проектирование в Eeschema, выбрав TL072 из библиотека Amplifier_Operational. Поместите все три устройства (UnitA в качестве усилителя 1, UnitB в качестве усилителя 2 и UnitC в качестве контактов питания). Выберите пассивы, соединения, заземление, входное напряжение и источник питания, как показано на рис. 16.

    Рис. 16 Полосовой фильтр со сдвоенным операционным усилителем

    Вам необходимо добавить модель spice для операционного усилителя. Скачать модель TL072.301 с веб-страниц TI. К сожалению, модель имеет только 5 контактов. (in+, in-, v+, v- и out). Однако согласно техпаспорту TL072 и вашему схема вам понадобится 8 контактов (1in+, 1in-, v+, v-, 1out, 2in+, 2in- и 2out) и нужно дважды вызвать модель операционного усилителя, потому что у нас есть два усилители в нашей схеме. Таким образом, вы не можете использовать модель TI TL072.301 напрямую, но необходимо преобразовать ее в версию модели с 2 операционными усилителями, поскольку TL072 содержит два операционных усилителя. Следующая последовательность кода демонстрирует, как это выполняется подсхемой ngspice. Поместите код в файл TL072-dual.lib, сохраните его в той же папке, что и TL072.301.

    * Модель ngspice с двумя операционными усилителями
    * имя файла: TL072-dual.lib
    .subckt TL072c 1out 1in- 1in+ vcc- 2in+ 2in- 2out vcc+
    .включить TL072.301
    XU1A 1вх+ 1вх- vcc+ vcc- 1выход TL072
    XU1B 2 входа+ 2 входа- vcc+ vcc- 2 выхода TL072
    .концы
    
     

    Строка .subckt содержит 8 узлов подсхемы, следующих после токен «.subckt» и имя подсхемы. Последовательность этих узлов (1out 1in- 1in+ vcc- 2in+ 2in- 2out vcc+) выбран так, чтобы он соответствовал TL072 Последовательность номеров контактов (1 2 3 4 5 6 7 8), как указано в техническом паспорте. Строка .include включает модель TI. Строки XU1A и XU1B являются экземплярами два усилителя. Последовательность их узлов определяется моделью (см. файл TL072.301). Усилитель 1 использует 1 выход 1 вход- 1 вход+, усилитель 2 использует 2 входа+ 2 входа- 2 выхода, контакты питания общие для оба усилителя. На самом деле подсхема передает номера выводов 1-8 через узлы на строку .subckt к нужным узлам модели.

    Вам нужно будет добавить TL072-dual.lib в качестве модели подсхемы к каждому блоку усилителя. IC (теперь они называются U1A, U1B и U1C на схеме схемы Eeschma). Это делается двойным Щелкнув по каждой единице, а затем выбрав кнопку «Редактировать модель Spice…». Eeschema автоматически создает экземпляр полного TL072 с узлами 1–8. Таким образом, при редактировании spice-модели в eeschema не требуется «альтернативной последовательности узлов». Если все сделано, вы готовы к симуляции. Результат моделирования переменного тока узла /bandpass (амплитуда в дБ и фаза в градусах в зависимости от частоты) представлена ​​на рис. 17.

    Рис. 17 Выход моделирования полосового фильтра переменного тока

    Кстати: Исходный файл модели TL072.301 от TI содержит непечатаемый символ в последней строке. В то время как ngspice для Windows не осторожно, ngspice для Linux наткнется на это. Просто удалите этого персонажа. Исправление сделать это автоматически было совершено.

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

    Ссылки на примеры Eeschema/ngspice:

    Собрано 17 примеров проектов (KiCad 6.0.2, ngspice-36) здесь (больше будет).

    Ссылки на руководства Eeschema/ngspice:

    • Официальное руководство Eeschema/ngspice для версии 5.1.
    • KiCad Советы и рекомендации / Моделирование.

    Ниже приведены некоторые последние вводные видео для KiCad/ngspice:

    • Вступительное видео к главе 2 (на немецком языке).
    • Вступительное видео к главе 3 (на немецком языке).
    • Мастерская Вулси.
    • Видео Эрика Бреддера по главе 2.
    • Видео Эрика Бреддера о моделировании диода.
    • Моделирование понижающего преобразователя.

    Выполнение моделирования схемы в KiCad

    Последнее обновление: 21 марта 2023 г.
    Первоначально опубликовано: 1 июля 2019 г.

    Уровень квалификации: Inter посредник

    Содержание

    • Введение
    • Что нужно
    • Справочная информация
    • Настройка схемы
    • Запуск симуляции
    • Просмотр осциллограмм
    • Резюме

    Введение

    В этом учебном пособии вы узнаете, как запустить моделирование схемы в KiCad. Ожидается базовое понимание электроники, а также умение создавать принципиальные схемы в KiCad.

    В этой статье основное внимание будет уделено запуску моделирования схемы в KiCad, а не тому, как создать схему. В Интернете уже есть довольно много руководств и ресурсов, которые помогут вам в создании схем, включая руководство KiCad Eeschema. Вместо этого я сосредоточусь на том, как настроить и запустить моделирование в KiCad, потому что этот материал не так легко доступен.

    Ресурсы, созданные для этого руководства, доступны для ознакомления на GitHub.

    Это руководство предоставляется нашим уважаемым читателям в качестве бесплатной услуги. Пожалуйста, помогите нам продолжить это начинание, рассмотрев пожертвование.

    Что необходимо

    • Компьютер на базе Linux, macOS или Windows
    • Кикад

    Иногда BJT-транзистор используется в качестве переключателя для управления более высокими нагрузками (током), чем обычно можно получить от выходных контактов GPIO микроконтроллера. Например, максимальный ток контактов GPIO для Arduino Uno составляет 20 мА, а для Raspberry Pi — 16 мА. Типичная установка показана ниже.

    Принципиальная схема цепи транзисторного переключателя

    Это включает в себя работу транзистора в режиме насыщения, то есть V E < V B > V C для NPN и V E > V B < V C для PNP-транзисторов. Когда типичный BJT-транзистор работает как переключатель в этом режиме, обычно делаются определенные предположения, чтобы упростить расчеты.

    • В CE ≈ 0 В
    • β ≈ 10

    Это означает, что мы можем эффективно игнорировать транзистор в наших расчетах тока нагрузки и ток вывода GPIO (I B ) составляет примерно десятую часть тока нагрузки (I C ). В качестве простого примера предположим, что нагрузка представляет собой резистор на 150 Ом с питанием 5 В. Предположения предполагают, что ток нагрузки будет около 33,3 мА (5/150), а ток на выводе GPIO будет около 3,33 мА (33,3/10). Я решил проверить эти предположения, выполнив моделирование схемы в KiCad.

    Моя система разработки состоит из KiCad 7, работающего на macOS. Если вы используете другую настройку компьютера, подавляющая часть этого руководства по-прежнему применима, однако могут потребоваться некоторые незначительные изменения.

    Настройка схемы

    Создайте схему с именем TransistorSwitchSimulation в редакторе компоновки схем KiCad Eeschema, чтобы она соответствовала схеме, показанной выше. Vcc и Vin являются глобальными метками ввода, а Vb , Vc и Ve являются метками сети.

    KiCad использует ngspice внутри для моделирования схем на базе SPICE. Поэтому, чтобы запустить симуляцию, нам нужно добавить в схему соответствующую информацию, связанную с SPICE, чтобы ngspice знал, что делать.

    Для начала нам нужно добавить источники питания, которые понимает SPICE. Типичные источники питания, используемые при создании схем, не будут поняты движком SPICE. Поместите новый компонент источника напряжения В постоянного тока (находящийся в библиотеке компонентов Simulation_SPICE ) на схему. Подключите глобальную выходную метку с именем Vcc к положительной стороне и порт питания GND к отрицательной стороне компонента VDC . Изменить значение В постоянного тока 5 , что означает, что он будет обеспечивать питание 5 В постоянного тока.

    Таким же образом поместите дополнительный источник напряжения В постоянного тока , но на этот раз используйте метку Vin со значением 0 . Это соответствует выходному контакту GPIO, находящемуся в «выключенном» состоянии. Глобальные метки указывают соединения источников напряжения с остальной частью схемы. Мои источники Vcc и Vin упоминались как V1 и V2 соответственно.

    SPICE использует модели для описания поведения электронных компонентов. KiCad неявно назначает модели пассивным компонентам, таким как резисторы и конденсаторы, однако модели полупроводниковых устройств, таких как диоды и транзисторы, необходимо назначать явно.

    Нам нужно связать модель SPICE с транзистором PN2222A, используемым в нашей схеме. Модели SPICE для конкретных компонентов обычно можно найти у производителей или поставщиков. Я использую следующую модель 2N2222 для транзистора, которую я получил из стандартной библиотеки LTspice BJT. Транзистор PN2222A является более дешевой версией оригинального 2N2222, но считается эквивалентным, за исключением цоколевки и эксплуатации в экстремальных условиях.

      * Модифицировано из стандартной библиотеки LTspice BJT (2N2222)
    .модель PN2222A NPN (IS=1E-14 VAF=100
    + BF=200 IKF=0,3 XTB=1,5 BR=3
    + CJC=8E-12 CJE=25E-12 TR=100E-9 TF=400E-12
    + ITF=1 VTF=2 XTF=3 RB=10 RC=.3 RE=.2)  

    Создайте файл с именем PN2222A.lib с содержимым вышеуказанной модели и поместите его в KiCad TransistorSwitchSimulation каталог проекта.

    Теперь, когда модель создана, нам нужно прикрепить ее к транзистору. Щелкните правой кнопкой мыши на транзисторе и выберите Свойства… из контекстного меню. Нажмите кнопку Simulation Model… , чтобы открыть редактор Simulation Model , а затем откройте вкладку Model . Выберите модель SPICE из файла , выберите файл PN2222A.lib , а затем выберите PN2222A в качестве модели . Записи должны выглядеть так, как в окне, показанном ниже. Вкладка «Модель

    » окна редактора имитационной модели KiCad для транзистора PN2222A

    KiCad использует другие назначения контактов для полупроводниковых компонентов, чем ожидается в движке ngspice. Например, стандартное назначение контактов SPICE для транзистора BJT: контакт 1 = коллектор, контакт 2 = база и контакт 3 = эмиттер, тогда как KiCad использует 1 = E, 2 = B и 3 = C. Это может вызвать большую путаницу. для пользователей, которым интересно, что, черт возьми, происходит. Чтобы решить эту проблему, нажмите на Назначение контактов и поменяйте местами назначения контактов коллектора и эмиттера, как показано ниже. Нажмите OK , когда закончите, а также закройте окно Свойства символа , нажав OK еще раз.

    Вкладка «Назначения контактов» в окне редактора модели KiCad для транзистора PN2222A

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

    Давайте запустим анализ переходных процессов, моделирующий схему от 0 до 1 мс, используя 1 мкс на каждый шаг. Это соответствует оператору управления SPICE, показанному ниже.

      .tran 1u 1m  

    Добавьте приведенный выше текст куда-нибудь на схему. Если вы не знакомы с размещением текста на схеме, это можно сделать, выбрав Place > Add Text в главном меню, добавив текст во всплывающем окне, нажав кнопку OK , а затем щелкнув в нужном месте. размещаемый текст.

    Теперь ваша завершенная схема должна выглядеть так, как показано ниже.

    Схема схемы транзисторного переключателя с элементами SPICE

    Сохраните схему, когда закончите.

    Запуск имитации

    Выберите Inspect > Simulator… в главном меню, и вы увидите окно Spice Simulator .

    Давайте посмотрим на настройки симуляции. Щелкните значок Sim Command (шестеренка) на панели инструментов, чтобы увидеть Окно команды имитации . Вкладка Transient уже должна быть выбрана и заполнена данными оператора управления, полученными из текста на схеме. Здесь вы можете увидеть корреляцию 1u с Time step и 1m с Final time . Это то место, о котором я упоминал ранее, где вы можете вводить управляющие операторы SPICE более удобным для пользователя способом, но ваши записи не будут сохраняться между симуляциями. Другие вкладки предоставляют различные операторы управления моделированием. Если вы нажмете Custom , вы увидите точное управляющее выражение, полученное из схемы. Нам также необходимо убедиться, что режим Compatibility установлен на PSpice и LTSpice , если он еще не установлен. Нажмите кнопку OK , когда закончите.

    Настал важный момент. Нажмите кнопку с синей стрелкой ( Run/Stop Simulation ) на панели инструментов, чтобы запустить моделирование. Вверху появится пустое окно просмотра сигналов Plot1 – TRAN , а внизу будут показаны выходные данные моделирования со следующим содержимым.

      Примечание. Выбраны режимы совместимости: ps lt a
    Схема: схема KiCad
    Выполнение анализа при TEMP = 27.000000 и TNOM = 27.000000
    Начальное переходное решение
    --------------------------
    Напряжение узла
    ---- -------
    вин 0
    probe_int_/vb_r1 5.00333e-09
    /vb 5.00333e-09
    ВКК 5
    probe_int_/vc_r2 5
    /ВК 5
    probe_int_/vc_q1_1 5
    probe_int_/vb_q1_2 5.00333e-09probe_int_gnd_q1_3 0
    q1:e#ветвь -1.05e-14
    q1:b#ветвь -5.00333e-12
    q1:c#ветка 1.00129e-11
    v2 # ветка 5.00333e-12
    ветка v1# -1.00129e-11
    r2 # ветвь 1.00129e-11
    ветка r1# -5.00333e-12
     Справочное значение: 0,00000e+00
    Количество строк данных: 1008  

    Из вывода видно, что Vcc и Vin имеют ожидаемые значения 5 и 0 соответственно. Мы также можем видеть, что напряжение коллектора ( Vc ) такое же, как Vcc , что означает, что через резистор R2 ток не течет или пренебрежимо мал. Это ожидаемо, поскольку транзистор находится в состоянии «выключено» (режим отсечки).

    Теперь, когда моделирование запущено, список соединений SPICE, использованный для моделирования, можно просмотреть, выбрав Simulation > Show SPICE Netlist… в главном меню.

    Теперь включим транзистор. Закройте окно Spice Simulator и нажмите кнопку Сохранить . Измените значение источника напряжения Vin на 5 , что означает, что выходной контакт GPIO находится в состоянии «включено». Сохраните вашу схему. Запустите новую симуляцию. Вывод на этот раз должен выглядеть следующим образом.

      Примечание. Выбраны режимы совместимости: ps lt a
    Схема: схема KiCad
    Выполнение анализа при TEMP = 27.000000 и TNOM = 27.000000
    Начальное переходное решение
    --------------------------
    Напряжение узла
    ---- -------
    вин 5
    probe_int_/vb_r1 0,807997
    /vb 0,807997
    ВКК 5
    probe_int_/vc_r2 0,0571069
    /vc 0,0571069
    probe_int_/vc_q1_1 0,0571069
    probe_int_/vb_q1_2 0,807997
    probe_int_gnd_q1_3 0
    q1:e#ветвь -0,0371446
    q1:b#ветка 0. 004192
    q1:c# ветка 0.0329526
    v2#ветка -0.004192
    ветка v1# -0.0329526
    r2#ветка 0.0329526
    r1#ветка 0.004192
     Справочное значение: 0,00000e+00
    Количество строк данных: 1008  

    Из этого вывода видно, что Vin равно 5 В, что Vc теперь составляет 57,1 мВ. Это означает, что транзистор теперь «включен», и ток течет через резистор 150 Ом ( R2 ). Записи v1#branch и v2#branch представляют установившийся ток, протекающий в источники напряжения. Вот почему они являются отрицательными значениями. Точно так же r1#ветвь и r2#ветвь представляют ток, протекающий через резистор R1 (в базу транзистора) и через резистор R2 (в коллектор транзистора) соответственно.

    Если вы видите отрицательный ток через резистор, вы можете либо изменить ориентацию резистора на 180 градусов на схеме, либо поменять местами контакты, как мы сделали ранее для транзистора.

    Указанные значения представляют собой

    • В С = 57,1 мВ
    • В В = 0,808 В
    • I C = 33,0 мА
    • I B = 4,19 мА

    Теперь мы можем вернуться назад, чтобы проверить наши предположения, сделанные в начале статьи, что V CE ≈ 0, β ≈ 10, и что мы можем эффективно игнорировать транзистор в наших расчетах нагрузки.

    Во-первых, мы можем убедиться, что транзистор BJT действительно работает в режиме насыщения: V E < V B > V C равно 0 < 0,808 > 0,0571.

    Вычисляя значения V CE и β, получаем V CE = V C – V E = 57,1 – 0 = 57,1 мВ и β = I C / I 9 0282 Б = 33,0 / 4,19 = 7,86.

    Для нагрузки предполагаемый ток I C будет равен V CC / R2 = 5 / 150 = 33,3 мА, и в нашем моделировании мы получили значение 33,0 мА.

    И, наконец, предполагаемый ток базы транзистора I B равен I C /10 = 33,3/10 = 3,33 мА и мы получили значение 4,19 мА.

    В целом, результаты нашего моделирования довольно близки к нашим предположениям. Очень хороший!

    Кроме того, я физически построил схему и получил следующие измерения, которые очень хорошо коррелируют с моделированием.

    • В CC = 4,92 В
    • R1 = 0,979 кОм
    • R2 = 149 Ом
    • В CE = 52,9 мВ
    • В БЭ = 0,767 В
    • I C = 33,5 мА
    • I B = 4,37 мА
    • β = 7,67

    Просмотр осциллограмм

    В предыдущем разделе мы определили значения схемы из выходного текста моделирования SPICE. Более простой способ увидеть значения — использовать средство просмотра сигналов KiCad. Поскольку мы выполнили анализ переходных процессов с .tran 1u 1m, временной интервал для осциллограмм будет охватывать период от 0 секунд (при включении цепи) до 1 мс.

    Чтобы просмотреть сигнал, такой как напряжение или ток, щелкните значок Добавить сигналы значок на панели инструментов и выберите сигнал, который вы хотите просмотреть во всплывающем окне. Начнем с выбора тока, протекающего через резистор R1 . Щелкните I(R1) , а затем кнопку OK . Сигнал будет показан в средстве просмотра сигналов слева, а сигнал I(R1) будет указан в списке сигналов справа. Ток будет около 4,19 мА.

    Чтобы удалить сигнал из средства просмотра, дважды щелкните имя сигнала в Список сигналов .

    Давайте теперь посмотрим на напряжение коллектора транзистора, добавив сигнал V(/Vc) , как мы сделали ранее для I(R1) . Значение будет около 57,1 мВ. Поэкспериментируйте и посмотрите на некоторые другие сигналы. Когда закончите, закройте окно Spice Simulator .

    Хотя мы видим ожидаемые значения в средстве просмотра сигналов, сами сигналы не очень интересны. Давайте немного изменим его, добавив к входному напряжению пульсацию 100 мВ.

    Добавьте новый источник напряжения VSIN (из библиотеки Simulation_SPICE ) на схему и отредактируйте свойства симуляции, как показано ниже.

    Вкладка «Модель» окна редактора имитационной модели KiCad для источника напряжения VSIN

    Это означает, что мы применяем синусоидальную волну со значением смещения постоянного тока 5 В, амплитудой 100 мВ и частотой 10 кГц.

    Затем прикрепите метку глобального выхода и заземление к новому источнику напряжения VSIN аналогично тому, что мы сделали для В постоянного тока источники напряжения. Однако на этот раз назовите метку как Вин2 .

    Наконец, переименуйте вход Vin транзисторной схемы в Vin2 , чтобы правильно ввести новый источник синусоидального напряжения. Новая схема теперь должна выглядеть следующим образом.

    Схематическая диаграмма цепи транзисторного переключателя с дополнительным элементом VSIN SPICE0316 Источник напряжения VSIN , так как приложенное нами пульсирующее напряжение составляет около 5 В постоянного тока.

    Посмотрите на этот раз сигнал V(Vin2) , и мы должны увидеть синусоидальный сигнал, который колеблется между 4,9 и 5,1 В. Вы увидите, что ток колеблется между 4,09 и 4,29 мА.

    Чтобы определить значение по синусоиде, щелкните правой кнопкой мыши I(R1) в Signals и выберите Show Cursor из контекстного меню. Штриховая ось появится в средстве просмотра сигнала, а I(R1) также появится в списке Курсоры . Нажмите и удерживайте вокруг начала оси, и вы сможете «проехать» по форме волны, наблюдая за изменением значений Time и Voltage/Current в списке Cursors . Отпустите кнопку, когда вы окажетесь в интересной точке на кривой. Чтобы удалить курсор, щелкните правой кнопкой мыши сигнал в Signals список, и на этот раз выберите Hide Cursor .

    Окно симулятора KiCad Spice с сигналом I(R1)

    Опять же, поэкспериментируйте и просмотрите некоторые другие сигналы.

    Резюме

    В этом руководстве мы узнали, как запустить моделирование схемы на основе SPICE в KiCad. В частности, мы узнали, как

    • настроить схему для моделирования,
    • создавать и применять модели,
    • добавить управляющие операторы SPICE,
    • запустить симуляцию схемы и
    • просматривать формы сигналов цепи и определять определенные значения вдоль кривых.

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

    Окончательная схема, использованная в этом руководстве, доступна на GitHub.

    Спасибо, что присоединились ко мне в этом путешествии, и я надеюсь, что вам понравилось.

    alexxlab

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *