В рамках этой заметки мы поговорим про фильтры нижних частот (low-pass filter), фильтры верхних частот (high-pass filter), а также полосно-пропускающие (band-pass filter) и полосно-заграждающие фильтры (band-stop filter / notch filter). Существует множество схем соответствующих фильтров, но на этот раз мы рассмотрим только самые базовые. Еще мы спаяем один из фильтров и сравним его реальное поведение с теоретическим, а также с поведением, предсказанным SPICE-симуляцией в KiCad .
Важно! Вопреки интуиции, фильтры нижних частот не отфильтровывают нижние частоты, а наоборот, пропускает нижние и отфильтровывает верхние. Аналогичная ситуация с фильтрами верхних частот. Здесь русскоязычная терминология могла бы быть и более удачной, но уж какая прижилась.
Теория
Итак, АЧХ (зависимость амплитуды выходного сигнала от частоты входного) названных фильтров выглядят таким образом:
Схемы простейших реализаций фильтров:
Обе иллюстрации были позаимствованы из замечательной книги Practical Electronics for Inventors, 4th Edition . Книга переведена на русский язык, в переводе она называется Электроника. Теория и практика . Очень рекомендую к прочтению.
Для полноты картины следует отметить, что в фильтровать нижние и верхние частоты могут не только RC- и LR-фильтры, но также и LC-фильтры . Обратите также внимание, что из двух фильтров, один из которых low-pass, а второй high-pass, можно получить один band-pass или один band-stop фильтр.
Выглядит не слишком сложно. Допустим, меня интересуют только частоты до 1.6 кГц и я хотел бы подавить все, что выше. Нет проблем, возьмем RC-фильтр нижних частот и попробуем подобрать подходящие R и C:
1591.5494309189535
Выходит, сопротивление резистора должно быть 1 кОм, а емкость конденсатора составлять 0.1 мкФ.
Для пущей уверенности давайте проверим фильтр на SPICE-симуляторе , который встроен в KiCad начиная с версии 5.0 . Для этого нарисуем вот такую схему, используя компоненты из библиотеки pspice:
Обратите внимание на необходимость ввести значение «dc 0 ac 1» для vsource, а затем поместить на схему текст (Place → Graphic Text) «.ac dec 10 1 100k». Увидев его, симулятор поймет, что от него требуется перебрать частоты от 1 Гц до 100 КГц с 10 точками на декаду .
Идем в Tools → Simulator и жмем Run Simulation. Затем идем в Simulation → Add Signals, добавляем на график «V (out)». В результате получаем потрясающую картинку:
Симулятор согласен, что наш фильтр должен работать.
Практика
Спаянный мною фильтр выглядит таким образом:
Вооружившись генератором сигналов , осциллографом и LibreOffice я аккуратно выписал зависимость амплитуды выходного сигнала от частоты, а затем перевел это в децибелы, используя формулу:
В результате была получена следующая АЧХ:
Как видно, график получился чуть более пологим, чем было предсказано симулятором. Но в остальном все сходится. В частности, не сложно убедиться, что точка подавления сигнала на 3 dB (или до 0.707 от peak-to-peak входного сигнала) приходится на предсказанные 1.6 кГц. Предсказанный фазовый сдвиг также несложно увидеть осциллографом. Впрочем, меня он интересовал не так сильно, как амплитуда.
Заключение
Как видите, все оказалось не так уж сложно. В качестве домашнего задания предлагаю вам спаять любой тип фильтра для любой частоты и проверить, отличается ли его поведение от теоретического. А у меня на этом все. Как обычно, буду рад вашим вопросам и дополнениям.
Дополнение: См также статью про LC-фильтры и далее по ссылкам в конце.