сделано у нас
Interior Design

Внутренние двери из восстановленной древесины

Construction Excavator Wooden House Interiors Log Cabin Building Site
лучшее

Последние посты

Фильтр 4-го порядка: Характеристики и Реализация

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

В бытовом плане мы с этим сталкиваемся при воспроизведении музыки через акустические системы, в которых каждый громкоговоритель (динамик) воспроизводит свою полосу частот, которых обычно три - низкие (НЧ), средние (СЧ) и высокие (ВЧ); для воспроизведения сверхнизких частот иногда выделяют отдельную акустическую систему под названием «сабвуфер».

Конкретные границы частот зависят от реализации и ориентировочно находятся на границах 100 Гц, 1 кГц и 5 кГц.

В данном обзоре мы разберем цифровые полосовые фильтры Чебышева I рода и Баттерворта, реализованные в библиотеке ELEMYO для Arduino.

Библиотеку Elemyo для работы с Arduino можно найти здесь.

Популярность их обусловлена простотой схемотехнической реализации и гладкой АЧХ с отсутствием пульсаций.

У всех аналоговых фильтров есть недостатки - нестабильность параметров и сложность в настройке.

Другой немаловажным недостатком является неустранимый сдвиг фаз.

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

Такой подход требует «мультиампинг» - когда используется отдельный усилитель мощности для каждой полосы частот - в отличие от классического подхода, когда сначала усиливается широкополосный сигнал, который разбивается на частотные полосы (обычно) пассивными фильтрами.

Цифровой фильтр - это функция, которую можно рассматривать как во временной, так и в частотной области.

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

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

IIR (Infinite Impulse Response) - фильтры с бесконечной импульсной характеристикой.

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

Их преимуществом является низкая вычислительная сложность - каждое новое значение вычисляется рекурсивно в зависимости от предыдущих.

FIR (Finite Impulse Response) - фильтры с конечной импульсной характеристикой.

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

Здесь сложность уже квадратичная - однако её можно уменьшить до , если использовать алгоритм быстрой свёртки с использованием быстрого преобразования Фурье (FFT).

Конечность количества отсчётов накладывает свои ограничения на форму АЧХ, приводя к пульсациям.

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

В данной статье рассматриваются цифровые полосовые фильтры Чебышева I рода и Баттерворта, их особенности, реализация и примеры работы.

1. Теория

Полосовой фильтр Чебышева I рода обладает крутым спадом амплитудно-частотных характеристик (АЧХ), что позволяет эффективно подавлять сигналы вне полосы пропускания, но при этом он имеет выраженные пульсации в области пропускания.

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

Фильтр Баттерворта, напротив, имеет гладкую характеристику в области пропускания, но при этом спад АЧХ менее крутой, что значительно уменьшает качество подавления в области частоты среза.

На рис. 1 приведены АЧХ Фильтра Баттерворта 4 порядка и Чебышева I рода 4 порядка с уровнем пульсаций 0.5 dB и 1 dB.

Видно, что характеристика фильтра Баттерворта значительно менее крутая.

Наиболее крутой характеристикой обладает фильтр Чебышева I рода с пульсациями на уровне 1 dB.

Амплитудно-частотная характеристика фильтров

Рис. 1: Амплитудно-частотная характеристика фильтров (частота дискретизации сигнала 500 Гц, полоса пропускания 30 - 100 Гц).

Принципы построения цифровых фильтров детально описаны в работе [1].

Ниже приведен пример построения фильтра нижних частот Чебышева I рода и Баттерворта.

Прототипы передаточных функций фильтров имеют следующий вид:

  • Баттерворта 4 порядка:
  • Чебышева 4 порядка с пульсациями на уровне 0.5 dB:
  • Чебышева 4 порядка с пульсациями на уровне 1 dB:

Hp(s) можно представить в общем виде:

Преобразуем прототип передаточной функции функции Hps в передаточную функцию для полосового фильтра:

где fl - нижняя частота среза в Гц, fh - верхняя частота среза в Гц, fs - частота дискретизации сигнала в Гц.

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

После перемножения получаем передаточную функцию в виде:

В результате получаем разностное уравнение, описывающее рассматриваемый БИХ-фильтр:

где - x(n) последнее измерение сигнала, а x(n-1)…x(n-8) - восемь предыдущих последовательных измерений сигнала, y - y(n) текущее отфильтрованное значение сигнала, а y(n-1)…y(n-8) - восемь предыдущих последовательных значений отфильтрованного сигнала.

2. Реализация

Рассмотренный в п1. фильтр нижних частот реализован в библиотеке «ELEMYO.h» для Arduino.

Здесь sensorValue - текущее значение фильтруемого сигнала, fl - нижняя частота среза в Гц, fh - верхняя частота среза в Гц, type - тип фильтра: 0 - фильтр Баттерворта 4-го порядка, 1 - фильтр Чебышева I рода 4-го порядка с пульсациями на уровне 0.5 dB, 2 - фильтр Чебышева I рода 4-го порядка с пульсациями на уровне 1 dB.

На выходе функция выдает отфильтрованное значение.

Важные особенности функции BandPass():

  1. Частота дискретизации сигнала должна быть примерно в 2 раза выше частоты среза. В противном случае метод не будет работать. При задании низкой частоты дискретизации фильтр автоматически выдаст ошибку.
  2. Не следует указывать нижнюю частоту среза ниже 30 Гц. На низких частотах численная реализация метода на Arduino не устойчива, и сигнал может содержать пульсации, уровень которых будет зависеть от частоты дискретизации сигнала.
  3. Не следует стоит ставить полосу пропускания меньше 10 Гц (fh- fl < 10Гц), это может привести к неустойчивости численной реализации метода.
  4. Один вызов функции BandPass() на Arduino Uno в среднем занимает 2040 мкс.

3. Пример работы

На рис. 2 приведен ЭМГ сигнал, отфильтрованный режекторным фильтром на 50 Гц и зашумленный высокочастотной помехой.

Также сигнал имеет низкочастотные колебания вследствие движения электродов во время мышечного сокращения.

На рис. 3 приведен ЭМГ сигнал, отфильтрованный описанной выше функцией в режиме реального времени.

Применялся фильтр Чебышева I рода 4 порядка с полосой пропускания 30-80Гц.

Среднее значение отфильтрованного сигнала равно 0.

Рисунок Описание
Сигнал, сильно зашумленный наводкой 100 Гц.
Рис. 2: Сигнал, сильно зашумленный наводкой 100 Гц.
Результат фильтрации сигнала, приведенного на рис. 2.
Рис. 3: Результат фильтрации сигнала, приведенного на рис. 2.
Сырой и отфильтрованный сигналы, получаемые в режиме реального времени.
Рис. 4: Сырой и отфильтрованный сигналы, получаемые в режиме реального времени.
Спектр сигнала, приведенного на рис. 2.
Рис. 5: Спектр сигнала, приведенного на рис. 2.