Разработка фильтров Iir низкого порядка для упрощенной обработки сигналов в изотовых устройствах
В быстро развивающемся мире устройств Интернета вещей (IoT) эффективная обработка сигналов жизненно важна. Фильтры с бесконечным импульсным откликом низкого порядка (IIR) являются популярным выбором из-за их простоты и вычислительной эффективности. В этой статье представлено всеобъемлющее руководство по разработке этих фильтров, охватывающее теорию, практическую реализацию и лучшие практики для повышения производительности устройств IoT.
Понимание фильтров IIR низкого порядка
IIR-фильтры — это цифровые фильтры, характеризующиеся обратной связью, то есть их выход зависит как от текущих, так и от прошлых входов, а также от прошлых выходов. Термин «низкий порядок» обычно относится к фильтрам с одним или двумя полюсами и одним или двумя нулями — фильтрами первого или второго порядка. Эти фильтры особенно подходят для устройств IoT с ограниченными ресурсами, потому что они требуют меньше операций многократного накопления и меньше памяти, чем эквиваленты более высокого порядка или фильтры Finite Impulse Response (FIR) аналогичной производительности.
Фильтр IIR первого порядка имеет передаточное назначение формы:
Фильтр IIR второго порядка (часто называемый биквадом) имеет форму:
Коэффициенты b0, b1, b2 (для второго порядка) определяют нули (feedforward), в то время как a1, a2 определяют полюса (feedback).Стабильность требует, чтобы все полюса лежали внутри единичного круга в z-плоскости, что является критическим соображением в реализациях с фиксированной точкой.
Низкопорядковые IIR-фильтры превосходят по таким задачам, как снижение шума, сглаживание сигнала и выбор частоты. Например, фильтр низкого пропуска может удалять высокочастотный шум от датчика температуры, а фильтр высокого пропуска может удалять дрейф постоянного тока в сигнале акселерометра. Их рекурсивный характер позволяет резкое сворачивание с очень небольшими коэффициентами, что делает их идеальными для устройств с батарейным питанием, где каждый микроампер тока и каждый байт памяти имеет значение.
Принципы проектирования
Выберите тип фильтра
Выбор прототипа фильтра (аналогового или цифрового) определяет компромиссы между плоскостью полосы пропускания, затуханием стоп-диапазона и линейностью фазы.
- Butterworth: Обеспечивает максимально плоскую полосу пропускания без ряби. Она предлагает монотонный скатывание, но требует более высокого порядка для достижения заданного затухания полосы остановки по сравнению с фильтрами Чебышева. Часто предпочтительнее для кондиционирования сигнала датчика, где точность амплитуды имеет решающее значение.
- Чебышев: Допускает рябь в полосе пропускания (Type I) или стоп-полосе (Type II).В обмен на небольшое количество полосы пропускания фильтры Чебышева доставляют более острую полосу перехода для заданного порядка фильтра.Полезно, когда требование об ослаблении полосы остановки доминирует.
- Бессел: Оптимизирован для линейного фазового ответа (постоянная групповая задержка), сохраняя форму сигнала во временной области. Однако фильтры Бесселя имеют более медленный откат. Идеально подходит для приложений, где перерасход и звон должны быть сведены к минимуму, например, в контурах управления или аудио кроссоверах.
- Эллиптическое (Cauer): обеспечивает самый крутой скачок для данного порядка, позволяя рябь как в полосе пропускания, так и в полосе остановки. Редко используется для низкоуровневых IoT-проектов, потому что улучшенная производительность часто требует точности с плавающей запятой и тщательного квантования коэффициента.
Для большинства низкоуровневых IoT-приложений фильтры Баттерворта и Чебышева первого порядка обеспечивают хороший баланс. Конструкция фильтра часто выполняется в непрерывном времени s-домена с использованием нормированных таблиц прототипов, затем преобразуется в дискретное время z-домена с помощью билинейного преобразования (с предварительным деформированием) или метода импульсной инвариантности.
Ключевые параметры дизайна
- Выключенная частота (fc): Частота, при которой отклик магнитуды фильтра падает на 3 дБ (для низких частот/высоких частот). Должна быть выбрана относительно частоты выборки (fs). Для цифровых фильтров нормализованная частота колеблется от 0 до 0,5 раз от скорости выборки (предел Найквиста).
- Порядок фильтра (N): Для фильтров низкого порядка N равен 1 или 2. Более высокие порядки могут быть реализованы путем каскадирования нескольких разделов биквада, но статья фокусируется на конструкциях с одним сечением.
- Пассационная пульсация и стоп-диапазонная аттенуация: Критическая для фильтров Чебышева и Эллиптики.Обычная полоса пропускания 0,5 дБ приемлема во многих приложениях датчиков IoT. Часто достаточно затухания стоп-диапазона 20–40 дБ для удаления типичных источников шума.
- Маржи стабильности: При арифметике с фиксированной точкой округление коэффициентов может выталкивать полюса за пределы единичного круга.Выберите представления коэффициентов с достаточным количеством битов (например, формат Q15 или Q31) и проверьте местоположения полюсов после квантования.
Компромиссы в низкоордерном дизайне
Основным ограничением IIR-фильтров низкого порядка является постепенное выключение (склон) и более широкая полоса перехода по сравнению с фильтрами более высокого порядка. Фильтр низкого порядка первого порядка ослабляет только 20 дБ за десятилетие, тогда как фильтр второго порядка обеспечивает 40 дБ за десятилетие. Для многих приложений IoT — таких как фильтрация 50/60 Гц гудения сети от низкочастотного сигнала датчика — фильтр второго порядка часто отвечает требованиям без перегрузки процессора. Если необходимы более резкие отключения, дизайнеры должны либо принять более высокий порядок фильтра (и его вычислительную стоимость), либо перейти на FIR-фильтры, которые могут обеспечить линейную фазу за счет памяти.
Процесс проектирования
Проектирование IIR-фильтра низкого порядка для устройства IoT включает в себя несколько систематических шагов. В качестве примера мы иллюстрируем типичный рабочий процесс с использованием фильтра низкого пропуска второго порядка.
Шаг 1: Определите спецификации
Определить частоту края полосы пропускания (fp), частоту края полосы остановки (fs), рябь полосы пропускания (Ap) и затухание полосы пропускания (As). Например, нам может понадобиться фильтр нижних частот с отсечением 3 дБ на 10 Гц, край полосы остановки на 30 Гц с затуханием по меньшей мере 20 дБ и частотой дискретизации 100 Гц. Нормализованные цифровые частоты: ωp = 2π * (10/100) = 0,628 рад/образец, ωs = 2π * (30/100) = 1,885 рад/образец.
Шаг 2: Выберите прототип и порядок
Выберите тип фильтра и найдите требуемый порядок с помощью диаграмм или формул. Для фильтра Баттерворта порядок N удовлетворяет:
В нашем примере с As=20 dB, Ap=3 dB (фактически эталоном часто является точка 3-dB), Баттерворт первого порядка дает только около 7 dB при 30 Гц (20 dB/десятилетний наклон, соотношение 3:1 дает ~11 dB затухание, недостаточно). Баттерворт второго порядка дает 40 dB/десятилетие, поэтому при 30 Hz (3× отсечка) мы получаем около 40 *log10(3) ≈ 19 dB - почти соответствует 20 dB. Таким образом, фильтр второго порядка является подходящим.
Шаг 3: Определите аналоговые прототипы поляков и нулей
Для второго порядка Butterworth low-pass нормализованные аналоговые полюса находятся на s = -0,7071 ± j0,7071 (для отсечения 1 рад/с). Используйте преварпинг, если проектирование осуществляется посредством билинейного преобразования: предварительно искривленная критическая частота ωa = (2/T) * tan(ωd*T/2), где T = 1/fs. Для fs = 100 Гц, T = 0,01 с. Предварительно искривленная ωa = (2/0,01)*tan(1,885*0,01/2) ≈ 200*tan(0,009425) ≈ 200*0,009425 ≈ 1,885 рад/с (на самом деле для низких частот преварпинг незначителен). Многие дизайнеры пропускают преварпинг для фильтров нижних частот ниже 0,2 fs, но это хорошая практика.
Шаг 4: Билайновая трансформация в цифровую
Применять замену s = (2/T) * (z-1)/(z+1). Для аналоговой функции передачи второго порядка алгебраические манипуляции дают цифровые коэффициенты. Альтернативно, использовать известные формулы или таблицы проектирования. Для биквада с низким проходом Баттерворта с частотой среза ωc (цифровой) коэффициенты можно вычислить следующим образом (стандартная форма):
Для нашего отсечения на 10 Гц при выборке 100 Гц тета = 0,628, sin(theta) = 0,588. Номера подключения дают коэффициенты, которые обеспечивают стабильность. Такие инструменты, как Analog Devices Filter Wizard или TI FilterPro автоматизируют этот шаг.
Шаг 5: Квантирование коэффициентов для фиксированной точки
В микроконтроллерах IoT часто отсутствуют аппаратные блоки с плавающей точкой. Преобразуйте коэффициенты с плавающей точкой в представление с фиксированной точкой, например формат Q15 (16-бит подписан 15 дробными битами). Квантизация вводит ошибку округления; проверьте, что квантованные коэффициенты не вызывают нестабильности. Для фильтра второго порядка обычно достаточно даже 16-битного квантования, если местоположения полюсов не очень близки к единичному кругу (т.е. низко Q-факторы).
Шаг 6: Реализуйте уравнение разницы
Перенесенная структура прямой формы I или II является общей для ИДК низкого порядка. Перенесенная прямая форма II рекомендуется для снижения шума квантования и предотвращения переполнения. Разностное уравнение для фильтра второго порядка:
Для фиксированной точки, используйте арифметику насыщения или двойные аккумуляторы, если таковые имеются (например, 32-битный аккумулятор для 16-битных коэффициентов и данных). Многие поставщики микроконтроллеров предоставляют оптимизированные библиотеки DSP, такие как ARM CMSIS-DSP, которые включают функции фильтра биквада с правильно масштабированными коэффициентами.
Внедрение в IoT устройства
Внедрение низкопорядковых IIR-фильтров на микроконтроллерах требует внимания к компоновке памяти, задержке прерывания и энергопотреблению.Вот практические соображения:
Фиксированные арифметические стратегии
Большинство микроконтроллеров ARM Cortex-M0/M4 поддерживают 32-битные операции. Общий подход заключается в хранении коэффициентов и данных в виде 16-битных подписанных целых чисел в формате Q15 (диапазон -1,0 до 0,9999). Умножения дают 32-битные результаты; для биквада используйте двойной аккумулятор, затем сдвиньте и насытьте обратно до 16 бит. Это позволяет избежать накладных расходов с плавающей точкой и снижает энергопотребление. Библиотеки, такие как функции биквада CMSIS-DSP], эффективно обрабатывают эти детали.
Минимизация памяти и размера кода
Одна биквад требует хранения 5 коэффициентов и 2 переменных состояния (для транспонированной прямой формы II). То есть около 7-10 16-битных слов — ничтожно мало на любом современном MCU. Петля фильтра может быть записана тремя или четырьмя строками кода C. Для нескольких каналов (например, стереозвука или мультисенсора) разделяют одни и те же коэффициенты, но поддерживают состояния по каналу. Такой подход масштабируется линейно без продувки памяти.
Операция в реальном времени
Устройства IoT часто используют датчики с низкой частотой (1 Гц до 1 кГц). Один биквад-фильтр потребляет всего несколько микросекунд времени процессора на образец, оставляя достаточно времени для других задач. Для непрерывных потоков данных реализуйте фильтр в режиме обслуживания прерываний (ISR) или через специальный кольцевой буфер DMA. Коэффициенты фильтра могут быть изменены на лету, если устройство должно адаптироваться к различным условиям шума, но убедитесь, что переключатель выполнен, пока состояние фильтра сбрасывается для предотвращения переходов.
Оптимизация мощности
Потребление энергии является основной проблемой для узлов IoT с питанием от батареи. Сам фильтр очень мало способствует общему энергопотреблению - часто менее 0,1% энергии MCU при работе на низких тактовых частотах. Однако фильтр может позволить MCU использовать более низкие частоты выборки или спать дольше между образцами. Удаляя шум перед пороговым обнаружением, устройство может срабатывать реже. Кроме того, рассмотрите возможность использования аналогового антисглаживающего фильтра перед выборкой, чтобы ослабить требования к цифровому фильтру, уменьшая вычислительную нагрузку.
Преимущества и компромиссы низкозаказных фильтров IIR
Преимущества
- Низкая вычислительная сложность: Обычно 5 умноженных добавлений на образец для второго порядка, по сравнению с десятками или сотнями для фильтра FIR.
- Быстрая обработка : подходит для приложений реального времени с высокой частотой дискретизации (например, аудио до 48 кГц).
- Минимальные требования к памяти: Всего несколько переменных состояния и коэффициентов, буфера для касания не требуется.
- Простота реализации : Доступно в библиотеках MCU DSP; код короткий и легко проверяется.
- Хорошее затухание стоп-диапазона на заказ : IIR второго порядка может превзойти FIR высокого порядка, когда линейная фаза не требуется.
Выгоды и ограничения
- Нелинейный фазовый ответ: IIR-фильтры имеют частотно-зависимую групповую задержку, которая может искажать формы сигнала. Это проблематично в таких приложениях, как ЭКГ или радар, где важна корреляция фаз.
- Потенциальная нестабильность: Квантирование коэффициента, особенно в фиксированной точке, может выталкивать полюса за пределы единичного круга.
- Ограниченная крутизна выкатов: Для данного порядка полоса перехода шире эквивалентной FIR с множеством кранов.Если вам нужен очень резкий отрезок, вы должны каскадировать несколько биквадов, увеличивая сложность.
- Никакая линейная фаза: ФИР-фильтры могут достигать линейной фазы точно, что делает их предпочтительными для определенных сообщений данных и обработки изображений.
- Чувствительность к округлению коэффициентов: Эллиптические фильтры и конструкции с высоким коэффициентом Q страдают от больших изменений коэффициента из-за квантования, требующего более высокой точности (например, 32-битная фиксированная точка или плавающая точка).
Несмотря на эти компромиссы, большинство задач фильтрации датчиков IoT (температура, влажность, давление, вибрация, простой звук) могут быть адекватно обслуживаются хорошо спроектированными фильтрами IIR низкого порядка.
Практические применения и примеры
Снижение шума в датчиках температуры
Выход датчика температуры часто содержит высокочастотный шум от квантования ADC и электромагнитных помех. Фильтр IIR первого порядка с отсечением 0,1 Гц (если выборка на 1 Гц) сглаживает считывание без добавления значительного отставания. Коэффициенты для такого фильтра чрезвычайно просты — часто одна постоянная альфа, где y[n] = альфа * x[n] + (1-альфа) * y[n-1]. Это классическая экспоненциальная скользящая средняя, которая является IIR первого порядка. Она может быть реализована в одной строке кода C без умножения, если альфа — мощность двух (например, 1/4 = 0,25). Это делает его фаворитом для низкопроизводительных 8-битных микроконтроллеров.
DC Offset Removal в акселерометрах
Акселерометры, используемые в отслеживании активности или вибрационном мониторинге, часто имеют компонент постоянного тока из-за гравитации. Фильтр высокого прохода с очень низким отсечкой (например, 0,5 Гц) может удалять это смещение при прохождении динамических сигналов. Биквад второго порядка Баттерворта высокого прохода обеспечивает резкое откатывание, чтобы быстро осесть после инициализации. Коэффициенты получены из прототипа низкого прохода путем замены s на 1/s в аналоговой области.
Аудио предварительная обработка голосовых команд
Устройства IoT с микрофонами используют IIR-фильтры низкого порядка в рамках цепи обнаружения голосовой активности (VAD). Полосатый фильтр (каскад низких и высоких частот), ориентированный на диапазон частот голоса (300-3400 Гц), снижает фоновый шум перед подачей в детектор вейк-слов. Фильтры должны быть тщательно разработаны, чтобы избежать фазового искажения, которое может повлиять на согласованность аудиофункций. Здесь фильтры Бесселя иногда предпочтительнее, чем Butterworth.
Отказ от шума в линии электропередач
Для датчиков, измеряющих низкоуровневые сигналы вблизи сети переменного тока, необходим фильтр выемки (диапазон-стоп) на частоте 50/60 Гц. Фильтр выемки IIR второго порядка может быть спроектирован с очень узкой выемкой. Функция переноса помещает нули на единичный круг на частоте выемки. Фильтр требует высоких коэффициентов точности, поскольку нули находятся именно на единичном круге; реализация с фиксированной точкой должна обрабатывать это осторожно, часто требуя 32-битной арифметики.
Заключение
Проектирование IIR-фильтров низкого порядка для устройств IoT является практическим балансом между качеством сигнала и сохранением ресурсов. Выбирая соответствующий тип фильтра и тщательно измеряя коэффициенты, разработчики могут добиться эффективного удаления шума и выбора частоты с минимальным количеством процессора и памяти. Простота фильтров первого и второго порядка делает их идеальными для датчиков с батарейным питанием, носимых мониторов здоровья и устройств умного дома. Всегда проверяйте стабильность после квантования коэффициента и учитывайте влияние нелинейной фазы на ваше конкретное приложение. При правильном рабочем процессе проектирования - от спецификации до реализации с фиксированной точкой - IIR-фильтры низкого порядка остаются мощным инструментом в наборе инструментов обработки сигналов IoT.