Продвинутые аналоговые фильтры: теория и практика

17 сентября 2018

Существенным недостатком базовых аналоговых фильтров, то есть, таких, как простой RC-фильтр, является то, что крутизна их АЧХ не превышает 6 дБ на октаву (удвоение частоты). Во многих задачах хотелось бы иметь более крутую АЧХ, и в тогда применяют совсем другой дизайн фильтров. О дизайне таких «продвинутых» фильтров мы и поговорим сегодня.

Теория

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

Пассивные фильтры делят на фильтры Баттерворта, фильтры Бесселя и фильтры Чебышева:

АЧХ фильтров Баттерворта, Бесселя и Чебышева

Фильтры Баттерворта используются чаще всего, можно даже сказать, почти всегда. Они имеют максимально плоскую полосу пропускания и куда более крутой переход между полосой пропускания и полосой подавления, чем у RC-фильтров. Фильтры Чебышева имеют еще более крутой переход, однако их полоса пропускания имеет рябь. Насколько сильной будет эта рябь выбирается при дизайне фильтра. Наконец, фильтры Бесселя интересны тем, что имеют наиболее линейную фазо-частотную характеристику (ФЧХ, то есть, как АЧХ, только для фазы сигнала, а не амплитуды). Далее мы сосредоточимся на фильтрах Баттерворта, как наиболее популярных.

Насколько крутой будет АЧХ фильтра зависит от количества используемых в нем полюсов (pole, в первом приближении — числа катушек и конденсаторов). Пример для фильтра Баттерворта нижних частот:

Фильтры Баттерворта первого, второго, и так далее порядка

Если в фильтре используется N полюсов, говорят, что это фильтр N-го порядка.

Как и в прошлом посте о фильтрах, обе иллюстрации были позаимствованы из потрясающей книги Practical Electronics for Inventors, 4th Edition, которую я крайне рекомендую к прочтению (есть перевод на русский язык). Книга подробно описывает, как производить выбор компонентов для фильтров Баттерворта нижних частот, верхних частот, полосно-пропускающих (двух типов — с широкой и узкой полосой пропускания), а также полосно-подавляющих. Алгоритм этот не сложный, в стиле «посмотрите в табличку, умножьте, поделите, переставьте местами, и вот перед вами все номиналы». Поскольку каждый раз выполнять этот алгоритм вручную — медленно и чревато ошибками, я заскриптовал все это хозяйство на Python. Поэтому сам алгоритм я здесь описывать не буду. Заинтересованные читатели могут обратиться к книге или коду скрипта.

Пользоваться скриптом очень просто. Допустим, нам нужен band-pass фильтр 3-го порядка, пропускающий частоты от 100 МГц до 110 МГц:

$ ./filtergen.py -f1 100000000 -f2 110000000 -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 = 318.31 pF, in parallel with 7.23 nH
C3 = 318.31 pF, in parallel with 7.23 nH
L2 = 1.59 uH, in series with 1.45 pF

Вообще, существует множество калькуляторов фильтров. Например, есть бесплатная и открытая программа Qucs, которая умеет рассчитывать фильтры Баттерворта, Чебышева и Бесселя, а также активные фильтры, аттенюаторы, и многое другое. Имеется встроенный симулятор. Стоит однако отметить, что интерфейс программы требует привыкания. Пример ее использования можно посмотреть в видео Rapid Prototyping RF Filters with Tape & QUCS. Видео, к слову, очень интересно безотносительно Qucs, и повествует о дизайне фильтров, рассчитанных на частоту более 300 МГц.

Еще есть программа Elsie. Это закрытая программа, но распространяется она бесплатно. Работает Elsie только под Windows (вероятно, под Wine тоже, но я предпочитаю VirtualBox). Интересна программа тем, что помимо классических фильтров умеет рассчитывать и довольно необычные, например, capacitor-coupled filters. Как и Qucs, Elsie имеет встроенный симулятор.

Практика

Было решено спаять что-нибудь не слишком сложное, и рассчитанное на частоту где-то до 25 МГц. Дело в том, что я еще не созрел до покупки анализатора спектра. Поэтому протестировать фильтр я могу только при помощи генератора сигналов и осциллографа, а мой генератор сигналов MHS-5200A умеет выдавать сигналы с частотой не более 25 МГц. В теории, вместо анализатора спектра можно было бы воспользоваться RTL-SDR и генератором шума, но от этого способа у меня остались исключительно неприятные воспоминания.

В итоге я остановился на следующем фильтре высоких частот:

$ ./filtergen.py -f 7750000 -p 2 -t high-pass

High-pass filter:

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

C1 = 290.43 pF
L2 = 726.07 nH

На всякий случай фильтр был проверен в KiCad, как мы это делали в прошлом посте для RC-фильтров. Схема:

Схема самодельного фильтра Баттерворта

Фильтр рассчитывается на конкретный импеданс источника сигнала и нагрузки (в данном случае, 50 Ом и там и там), отсюда в схеме два лишних резистора.

Результат SPICE-симуляции:

Результат симуляции фильтра Баттерворта

Симуляция показывает -6 дБ в полосе пропускания вместо ожидаемых 0 дБ, потому что она не игнорирует резисторы, как следовало бы делать в данном случае. Если мы рассмотрим схему без фильтра, то оставшиеся резисторы образуют делитель напряжения. То есть, если мы будем передавать сигнал напрямую от источника с импедансом 50 Ом на нагрузку с импедансом 50 Ом, то на нагрузке увидим 0.5 амплитуды исходного сигнала, или те самые -6 дБ. Таким образом, настоящая АЧХ будет сдвинута на 6 дБ вверх по сравнению с тем, что нам показывают. В остальном же все похоже на правду. Заметьте, что наклон АЧХ даже у такого простого фильтра составляет 12 дБ на октаву.

Замерив десяток конденсаторов на 300 пФ я нашел один, имеющий емкость ровно 290 пФ (помним, что у любых электронных компонентов есть погрешность). Катушки на 726.07 нГн у меня, естественно, не было, поэтому было решено смотать ее самостоятельно.

Для этого я воспользовался калькулятором на coil32.ru. Калькулятор, кстати, оказался очень точным. Он мне так понравился, что я решил передрать используемый в нем алгоритм в скрипт на Python, а то вдруг сайт будет лежать:

$ ./coilcalc.py -d1 0.6 -d2 1.6 -c 7 -i 0.72607
Input:
    Carcass diameter:                 7.000000 mm
    Wire diameter without insulation: 0.600000 mm
    Wire diameter with insulation:    1.600000 mm
    Target inductance:                0.726070 uH
Output:
    Number of turns:                  17.718000
    Winding length:                   28.348800 mm

Таким образом, для моего провода (одножильный 22 AWG), используемого каркаса (я использовал элементы держалки «третья рука») и требуемой индуктивности калькулятор насчитал 17.7 витков.

Важно! Типичные RLC-метры имеют погрешность около 1 мкГн и в данном случае не годятся для измерения индуктивности катушек.

В итоге был спаян такой фильтр:

Самодельный фильтр Баттерворта верхних частот

Следующий шаг заключался в экспериментальном измерении АЧХ с помощью генератора сигналов и осциллографа. Тут важно учесть следующее:

  • Для получения осмысленных результатов все должно соединяться исключительно коаксиальными кабелями с импедансом 50 Ом. То есть, никаких «крокодилов» — их импеданс совсем не 50 Ом, и это портит измерение. На осциллографе в свойствах канала опция Probe должна стоять в 1X.
  • Для согласования импедансов к осциллографу должен быть подключен T-образный BNC-коннектор, к которому подключена нагрузка на 50 Ом, и непосредственно кабель, идущий к фильтру или генератору сигналов.
  • У моего генератора сигналов есть известный дефект — амплитуда сигнала падает с ростом частоты. Поэтому перед измерением АЧХ фильтра необходимо замерить «baseline» генератора сигналов.
  • Амплитуда, видимая на осциллографе, также падает с ростом частоты, потому что полоса пропускания осциллографа ограничена.
  • Как было объяснено выше, при подключении генератора к осциллографу на осциллографе мы должны видеть примерно половину от амплитуды сигнала, заданной на генераторе.
  • Если вы покупаете дешевые кабели / адаптеры / переходники, например, на eBay, есть большая вероятность, что вам попадется бракованный товар. Если вместо ожидаемых данных вы видите какую-то ерунду, попробуйте заменить кабель. Мне лично один кабель пришлось выкинуть, потому что он ни на что не годился.

С учетом вышесказанного я аккуратно записал все цифры в LibreOffice и получил такой график:

Экспериментально измеренная АЧХ фильтра

Все в полном соответствии нашим ожиданиям! Согласно сырым данным, аттенюация в 3 дБ приходится на 7.75 МГц, в точности как было указано в аргументах скрипта. В полосе пропускания аттенюация не превышает 0.3 дБ, что очень даже неплохо. Согласно видео Practical RF Filter Design and Construction, потери энергии главным образом приходятся на катушки, и типично в полосе пропускания можно видеть до -3 дБ. Помимо прочего, в этом видео интересно рассказывается об экранировании применительно к фильтрам.

Еще вас может заинтересовать видео RF Diplexer Basics: Tutorial, construction and tuning. В нем интересно рассказывается о пайке и тюнинге фильтров высоких и низких частот.

Заключение

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

Исходники к этой заметке вы найдете в этом репозитории на GitHub. Как всегда, буду рад любым вопросам и дополнениям.

Дополнение: Паяем генератор Клаппа с частотой 11 МГц

Метки: .

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

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