Как стать автором
Обновить

Комментарии 37

Отличная статья, здорово, что на Хабре освещается тема моделирования ВЧ схемотехники. Вот бы еще углубить публикации до различных линий передачи, согласования их с антеннами, фильтрами, усилителями.

Только один момент, в формуле для расчета КСВ ошибка: в знаменателе должен быть минус.

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

Если в Qucs-S мы всё-таки добавим модели МПЛ и прочих длинных линий, то сделаю статью. Про старый Qucs, который базируется на Qt4, я писать не вижу смысла.

в формуле для расчета КСВ ошибка

Формулу поправил.

Как всегда, программу пишут программисты, а пользоваться будут электронщики. Как глядя на графики понять какие единицы измерения используются? 2.5e7 на оси частот удобства считывания тоже не добавляет.

Зря вы так, вполне нормально заданы единицы измерения.

Программа использует стандартный синтаксис SPICE. Если v(), то это напряжение, если i(), то это ток. S-параметры исключение, но там из названия понятно, что это такое. По оси Х тоже всё понятно (frequency или time).

2.5e7 на оси частот удобства считывания тоже не добавляет.

Можно сделать отображение 25M, в статье указано как.

Обалдеть. Ваши совершенно справедливые претензии насчёт единиц измерения (нам в физ ПТУ за неуказанные единицы контрольную отправляли в мусорное ведро) оказались непоняты даже автором статьи.

Действительно, не понятно в чём суть претензий. Такую систему обозначений для токов и напряжений используют все симуляторы основанные на SPICE. В MicroCAP, например, тожно так же обозначаются сигналы и ни у кого претензий не возникает. Там по-моему ещё и надписи нельзя было редактировать. Движок моделирования никаких данных о единицах измерений не предоставляет. Если требуется, например, подготовить графики для публикации, то можно легко отредактировать надписи по осям и написать там всё, что угодно. Поддерживаются даже греческие буквы. Соответствующие настройки есть в свойствах диаграммы. В статье я не стал подписывать оси вручную намеренно и оставил дефолт, иначе будет непонятно, какие именно переменные там построены.

Движок моделирования никаких данных о единицах измерений не предоставляет.

Звучит очень странно. Движок не знает что параметром является круговая или обычная частота? А при отображении не знает используется ли логарифм или нет?

Программа не знает что обычно пользуются понятиями множителями привязанными к степени 3 десятки для линейных величин? Для градусов числам типа 45, 90, 180? Для децибел числам типа 3, 6, 12, 20, 40?

В MicroCAP, например, тожно так же обозначаются сигналы и ни у кого претензий не возникает.

Странный аргумент, "а вот у них...". Какая разница как у других? И вот пример графика из Micro-Cap.

Движок не знает что параметром является частота?

В датасете, который отдаёт симулятор, имеется только указание, что это frequency, voltage или time без единиц измерения. Ось Х на графиках Qucs-S подписана и из дефолтной подписи понятно, что это такое (frequency или time). 15 лет уже эта система существует. Можно как-то автоматически распознавать тип переменных и подставлять единицу измерения через костыли, но я не вижу в таком смысла. График, готовый к публикации в статьях и отчётах таким образом получить всё равно не выйдет и придётся подписывать оси вручную.

И вот пример графика из Micro-Cap.

Вижу точно такой же синтаксис у переменных, как и у Ngspice. Стандартный для SPICE v() i() и т.п., только приписана единица измерения для частоты. dB() -- это здесь функция, а не единица измерения. Инженерную нотацию по осям, чтобы получить 100K вместо 1e5 в Qucs-S поставить можно.

В датасете, который отдаёт симулятор, имеется только указание, что это frequency, voltage или time без единиц измерения

А как тогда различается круговая частота и обычная?

Вижу точно такой же синтаксис у переменных, как и у Ngspice

Вы разве не видите "Degrees", "Hz", "30K" а не 3e4?

А как тогда различается круговая частота и обычная?

Круговая частота в моделировании Ngspice не используется. Штатными средствами её задать нельзя. Её можно сделать только через пользовательский скрипт, если подменить переменную по оси X и пересобрать вектор. И распознать в таком случае автоматически нельзя. Для фазы, вычисляемой через функцию cph() Ngspice в датасете ставит тип notype.

Вы разве не видите "Degrees", "Hz"

Я же написал, что кроме того, что приписана единица измерения. Сам синтаксис V(OUT) и т.п. такой же как и везде в SPICE.

Круговая частота в моделировании Ngspice не используется.

А мы-то об этом откуда знаем?

Из документации Ngspice? И также в самой симуляции частота задаётся в герцах, а не рад/с.

Действительно, не понятно в чём суть претензий.

Я именно об этом — что вам и вашим коллегам просто непонятно. В смысле, у вас нет культуры построения графиков.

Выше я уже ответил на этот вопрос. Чья-либо культура тут ни при чём. Автоматическую простановку единиц измерения реализовать возможно только через какие-либо костыли, так как движок моделирования эту информацию не предоставляет. Если требуется, то оси можно подписать вручную. В статье я не стал проставлять подписи по осям и оставил всё как есть намеренно.

  • S22 — коэффициент отражения Γ2 от нагрузки. Показывает степень передачи энергии с выхода в нагрузку. Если S22 = 0, то вся энергия с выхода четырёхполюсника поглощается нагрузкой без отражения.

Всегда думал, что это коэффициент отражения от выхода четырехполюсника

Плюсанул, сейчас статьи про аналоговую схемотехнику - редкость.

«Однако, коэффициент усиления отличается от того, что указано в книге Э. Рэда. С чем связано отличие, не вполне понятно» - а вы обратили внимание, что схема в симуляторе не соответствует той, что приведена на скриншоте из книги? В оригинале точка выхода - место соединения катушек трансформатора. У вас же - это коллектор. Получается, что базовый делитель не только обеспечивает смещение и режим по ПТ, но и является цепью ООС, и там даже коррекция есть в виде С2||RF ( почему-то там все кондеры С2, кроме выходного).

вы обратили внимание, что схема в симуляторе не соответствует той, что приведена на скриншоте

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

Симуляцию поправил. Теперь всё более-менее соответствует теории из книги Рэда.

На схеме Rf = 470, Re = 4.7, по формуле получаем K = sqrt( 470 / 4.7 ) = 10. На графике видно около 9.

Мне почему-то кажется, что усиление должно быть ближе к K = Rf / Zout, то есть в данной схеме K = 470 / 50 = 9.4

Можете покрутить параметры, чтоб проверить, что ближе к истине?

Формула приведена в книге без вывода, тем не менее работает. Но расчёт верен только в некоторых пределах отношения Rf/Re. У меня получилось следующее на частоте 10 МГц.

Rf = 470 Ом Re = 15 Ом Ky=5.55
Rf = 470 Ом Re = 2.2 Ом Ky = 10.3
Rf = 470 Ом Re = 22 Ом Ky = 4.4

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

Re понятно, что будет уменьшать усиление, если будет иметь достаточно большое значение. Но если его оставить достаточно малым, скажем, около 2 Ом и покрутить Rf?

Если, увеличивать Rf до 4.7 кОм, то коэффициент усиления на симуляции увеличивается примерно до 15-20. В своё время пробовал проделывать это с данной схемой на макете и при большом усилении получил возбуд.

4.7 кОм выглядит слишком большим. У транзистора GBW 1200 МГц и коэффициент усиления ок 100 на постоянном токе. И согласование наверно тоже ухудшается при таком номинале.

почему-то там все кондеры С2, кроме выходного

Там имеется в виду, что эти конденсаторы имеют одинаковый номинал. Далее в книге имеется таблица с рекомендуемыми номиналами для компонентов на схеме.

Ради интереса эти же схемы на идеальных компонентах в idealCircuit, можно сравнить. Не понял какие полевики использованы, так что их усиление подогнано, чтобы было примерно похоже.

Полевые транзисторы там КП307. BF245 и J310 тоже будут работать.

Знаю эту программу, ещё старую версию. Что-то даже моделировал в ней.
Но вот с удивлением обнаружил ещё одно ответвление от неё.
О нём как-то не сказано в этой статье. Может быть кто-то расскажет, что это?
http://qucsstudio.de/download/
Здесь версия аж 4.3.1 указана уже, чего нет не у оригинального Qucs, ни у Qucs-S.

Старый Qucs сейчас скорее мёртв. Последняя версия вышла в 2017 году, потом разработчик взялся за глубокий рефакторинг проекта, и в итоге всё заглохло. Оно до сих пор на Qt4, который EOL в 2015 году.

Qucs-S сейчас я спортировал на Qt5, переключил на движок Ngspice по умолчанию и поддерживаю в живом состоянии. Также стараюсь синхронизировать релизы с выходом новых версий Ngspice.

Про QucsStudio я знаю, но это проект с закрытыми исходниками. Один из основателей Qucs Michael Margraf по непонятной причине ушёл из проекта и начал пилить QucsStudio, закрыв исходники, что нарушает лицензию GPL, которая запрещает создавать производные продукты с закрытыми исходниками. В плане поддержки СВЧ компонентов кое-что ушло вперёд. Минус QucsStudio, то что оно только под Windows, хотя всё написано с применением кроссплатформенных тулкитов (Qt) и собирается MinGW. По непонятным причинам версия под Linux не выпускается. QucsStudio использует симулятор Qucsator, к которому не подходят SPICE модели без конвертации. Также там до сих пор Qt4. Ещё паковать KiCAD (версии 2008 года) и Octave (версии 3.6) в бинарный пакет QucsStudio по-моему спорная идея. Цифры в версии 4.3.1 здесь означают только то, что они отказались от нумерации версий 0.0.x раньше, чем Qucs-S.

Понял, спасибо за развёрнутый ответ. Так и думал, что это кто-то из команды решил что-то сам сделать.

Вдохновился статьёй и решил пощупать что есть в Qucs-S.
Что-то заработало сразу, это очень радует.
После работы с ADS многое интуитивно понятно, но тут проще, в следствии чего порог вхождения ниже (тоже радует).
Не все примеры работают. Или я с наскоку не всё понял про симулятор. Ngspice работает.

Какие именно примеры не работают? Недавно все примеры были перепроверены и обновлены. Там они рассортированы по каталогам. То, что находится в подкаталоге ngspice, работает с Ngspice. Остальное для других движков. Также, чтобы работало моделирование S-параметров требуется Ngspice >= 37.

Также мануалы по Qucs не подходят для Qucs-S. Правильный туториал здесь: https://ra3xdh.github.io/pdf/qucs_s_tutorial.pdf Или см. мою предыдущую статью на Хабре.

То, что рассортировано по движкам - это понял, это круто и удобно, что бы путаницы не было. Сейчас тыкаю Ngspice. Большинство сразу заводится, но некоторые сбоят.
Пока первые пол часа в этой программе, возможно сам не прав.

К этому примеру идёт пользовательская библиотека, которая находится в том же каталоге. Нужно указать пути к библиотечным компонентам, и всё откроется правильно.

Благодарю. Буду погружаться

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории