Симуляция электрических цепей в LTspice

20 мая 2020

В предыдущих статьях нам уже доводилось использовать симуляторы электрических цепей. Например, в посте Паяем генератор Клаппа с частотой 11 МГц использовались симуляторы CircuitJS и Qucs, а в заметке Продвинутые аналоговые фильтры: теория и практика был использован симулятор, встроенный в KiCad. Теперь же мы познакомимся с симулятором под названием LTspice.

Но зачем?

LTspice — это бесплатный симулятор, созданный и поддерживаемый компанией Linear Technology, которая сейчас принадлежит Analog Devices. Доступны пакеты для Windows и MacOS. Под Linux симулятор может быть запущен в Wine. LTspice пользуется большой популярностью среди любителей электроники. Программа проста в использовании, дает правдоподобные результаты, распространяется бесплатно и появилась на свет раньше других, в 1999 году. Для сравнения, первый релиз Qucs датирован 2003-им годом, CircuitJS развивается с 2015-го, а в KiCad симулятор появился лишь в версии 5.0, в 2018-ом году.

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

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

Примечание: Описанное ниже можно сделать и в KiCad. Однако в KiCad 5.1.6, который на момент написания статьи являлся последней версией, интерфейс, касающийся симуляции, нуждался в сильной доработке. К тому же, в KiCad все еще отсутствовало много важных функций, то же построение спектра сигнала.

Симуляция генераторов

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

Открываем LTspice и вбиваем в него схему генератора:

Генератор Клаппа в LTspice

Как вбить схему, я предлагаю вам выяснить самостоятельно. Отдельно остановлюсь лишь на кварцевом резонаторе, обозначенном на схеме, как C4. Я долго не мог найти кварцевые резонаторы среди доступных компонентов. Оказалось, что искать нужно по слову «xtal». В свойствах компонента указываем следующие параметры:

Параметры кварцевого резонатора в LTspice

Забавно, что компонент считается конденсатором, ну да ладно. Использованные здесь параметры соответствуют кварцевому резонатору на 5 МГц. Откуда я их взял? Оказывается, что LTspice симулирует кварцевые резонаторы, как эквивалентную электрическую схему из последовательной цепочки Rs-Ls-Cs и параллельного конденсатора Cp. Связь их номиналов с частотой кварца определяется известным формулам, поэтому кварц на требуемую частоту несложно сгенерировать. Делал я это, разумеется, не руками, а с помощью небольшого скрипта на Python:

#!/usr/bin/env python3

import sys
from math import pi, sqrt

if len(sys.argv) < 2:
    print("Usage: " + sys.argv[0] + " frequency[hz]")
    sys.exit(1)

Q = 7000 # no less than 5000
Cp = 4/1000/1000/1000/1000 # max - 10 pF
Cs = Cp/100 # Cs >> Cp
freq = int(sys.argv[1])

# series resonant frequency
# Fs = 1/(2*pi*sqrt(Ls*Cs))
Ls = pow(1/(2*pi*freq), 2)/Cs
# parallel resonant frequency
Fp = 1/(2*pi*sqrt((Ls*Cs*Cp)/(Cs+Cp)))
Rs = (2*pi*freq*Ls)/Q

print("Cp = {:.4f} pF".format(Cp*1000*1000*1000*1000))
print("Cs = {:.4f} pF".format(Cs*1000*1000*1000*1000))
print("Ls = {:.4f} mH".format(Ls*1000))
print("Rs = {:.4f} Ohm".format(Rs))
print("Fp = {:.4f}".format(Fp))

Cp часто указывается в даташитах на кварцы, и обычно не превосходит 10 пФ. Единственное требование к Cs заключается в том, что он должен быть во много раз меньше Cp. Далее, из требуемой частоты последовательного резонанса и Cs вычисляем Ls. Rs вычисляется из Ls, частоты, а также добротности Q. Про добротность мы знаем, что у кварцевых резонаторов она очень большая, никак не меньше 5000, а вообще может достигать нескольких миллионов. Частота параллельного резонанса выводится просто для информации. В кварцевых резонаторах частоты последовательного и параллельного резонанса всегда очень близки.

Итак, если мы хотим кварц на 5 МГц, то говорим:

$ ./xtalgen.py 5000000
Cp = 4.0000 pF
Cs = 0.0400 pF
Ls = 25.3303 mH
Rs = 113.6821 Ohm
Fp = 5024937.8106

… и вот они параметры, которые я использовал на предыдущем скриншоте.

Запустим симуляцию, нажав на иконку бегущего человечка. Появится новое окно, на котором пока ничего нет. Дождитесь, пока симуляция завершится. Процесс отображается в главном окне программы. В главном окне кликните на провод, идущий к базе транзистора Q1. Курсор мыши при этом будет напоминать щуп осциллографа. Это означает, что вы хотите увидеть, как меняется напряжение в этой точке. Если же вас интересует ток, зажмите Shift или Control. Курсор мыши при этом меняется на токовые клещи. Нас интересует напряжение.

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

Сигнал генератора в LTspice

Удерживая левую кнопку мыши, можно измерить интервал между двумя пиками, а также частоту. Как можно видеть по скриншоту, частота оказалась очень близка к  5 МГц, как и ожидалось. Размах сигнала при этом составляет 1.2 В, что очень близко к 1.6 В, которые ранее нам показал осциллограф. Можно заметить, что сигнал заметно искажен по сравнению с идеальной синусоидой. Точь-в-точь как на осциллографе!

Кроме того, видим, что на базе транзистора имеется постоянная составляющая напряжения. Именно из-за нее в прошлый раз сигнал с генератора мы снимали через конденсатор на 100 пФ.

Также LTspice может показать спектр сигнала:

Спектр сигнала в LTspice

Картинку можно построить, нажав правой кнопкой мыши по предыдущему графику и выбрав View → FFT. В появившимся диалоге я использовал галочку Use current zoom extent, а также выбрал оконную функцию Hamming. Видим не только, что генератор выдает сигнал с частотой 5 МГц, но также и все гармоники.

Симуляция фильтров

В качестве еще одной задачи рассмотрим симуляцию фильтров. Воспользуемся скриптом filtergen.py из заметки Продвинутые аналоговые фильтры: теория и практика и сгенерируем полосно-пропускающий фильтр Баттерворта 3-го порядка на радиолюбительский диапазон 40 метров, то есть, интервал частот 7.0-7.2 МГц:

$ ./filtergen.py -f1 6900000 -f2 7300000 -p 3 -t band-pass

Band-pass narrow-band filter:

              L2     | |
=> --+----+--CCCCC---| |---+----+--- ...etc...
     |    |          | |   |    |
     |    |                |    |
   -----  C              -----  C
C1 -----  C           C3 -----  C
     |    C                |    C
     |    |                |    |
    GND  GND              GND  GND

C1 = 7.96 nF, in parallel with 63.19 nH
C3 = 7.96 nF, in parallel with 63.19 nH
L2 = 39.79 uH, in series with 12.64 pF

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

Вобьем фильтр в LTspice аналогично тому, как раньше мы это делали в KiCad:

Полосно-пропускающий фильтр в LTspice

Запускаем симуляцию, щупом жмем на выходе фильтра, и в результате видим как АЧХ, так и ФЧХ фильтра:

Симуляция фильтра в LTspice

Оба графика сдвинуты на 6 dB вниз, точно так же, как это было в KiCad. Это ожидаемое поведение, и оно ранее объяснялось в заметке Продвинутые аналоговые фильтры: теория и практика. Можно считать, что -6 dB — это на самом деле 0 dB. Заинтересованным читателям предлагается приблизить АЧХ в LTspice и проверить, что фильтр действительно пропускает те частоты, какие мы хотели.

Дополнение: Забыл сказать, что при помощи LTspice можно оценить входной или выходной импеданс цепи. Это ни что иное, как отношение напряжения к току, при условии, что ток и напряжение находятся в фазе. А зная импеданс, несложно посчитать КСВ. В качестве домашнего задания предлагаю вам определить входной и выходной импеданс фильтра в зависимости от частоты. В качестве упражнения со звездочкой ответьте на вопрос, какой выходной импеданс имеет генератор.

Заключение

LTspice оказался довольно прост в использовании. Освоить его можно буквально за час, а любые непонятные моменты решаются при помощи поисковых систем. Некоторые особенности интерфейса требуют привыкания. Например, довольно неочевидно, что для поворота компонента нужно начать его перемещать и в режиме перемещения нажать Control+R. Но в остальном программа очень приятная.

Если вам хочется узнать больше об LTspice, могу порекомендовать плейлист LTspice tutorial на YouTube-канале FesZ Electronics. Из видео вы узнаете, что в LTspice можно анализировать работу цепи при разной температуре компонентов, импортировать и экспортировать .wav файлы, выполнять моделирование методом Монте-Карло, симулировать шум, и многое другое. Больше всего мне понравилось видео о том, как проверить модель компонента на соответствие даташиту. Примите во внимание, что автор используют версию программы для Windows, и ее интерфейс немного отличается от версии для MacOS.

Fun fact! Версия LTspice для Windows может быть запущена под MacOS в CrossOver. Чтобы Windows-шрифты выглядели на Retina-дисплее более приятно, нужно найти раздел Wine Configuration и во вкладке Graphics увеличить Screen resolution. Я нахожу значение 120 dpi достаточно комфортным для глаз.

Файлы всех приведенных выше схем для LTspice вы найдете в этом архиве. А пользуетесь ли вы LTspice или, быть может, предпочитаете какой-то другой симулятор?

Метки: .

Понравился пост? Узнайте, как можно поддержать развитие этого блога.

Также подпишитесь на RSS, ВКонтакте, Twitter или Telegram.