И в это время в полной тишине прозвучала реплика Н. Н. Моисеева, сидевшего в первом ряду зала: «Оптимального в природе ничего нет, разве что миниюбка на максижопе — минимальные затраты при максимальном эффекте». Зал взорвался хохотом и аплодисментами.
http://scilib.narod.ru/Avia/Samoilovich/index.html
Действительно, в природе нет ничего оптимального. И методы фильтрации сетевой помехи в приборах медицинского назначения тому подтверждение.
Попробуем сформулировать требования к идеализированной системе подавления сетевой помехи. При этом будем учитывать не только достигнутые характеристики, но и простоту или, наоборот, сложность реализации, трудозатраты на разработку, а также влияние системы на себестоимость прибора.
В качестве важнейшего требования будем предполагать необходимость фильтрации всех, в том числе и четных, гармоник сетевой помехи. Причина очевидна и заключается в том, что по мере роста количества импульсных бестрансформаторных блоков питания бытовых потребителей возрастает величина помех на частотах гармоник электрической сети. В качестве экспериментального подтверждения можно привести следующую иллюстрацию:
Рис.1 Типичный спектр шума офисного помещения.
Очевидно, что для получения качественного сигнала в диапазоне 0-200Гц фильтрация помехи 100Гц имеет на 10дБ большее значение, а помехи 150 Гц – приблизительно такое же, как и собственно сетевой помехи. Кроме того, помехи на частотах 200, 250, 300 Гц также будут вносить некоторый вклад суммарную помеху на зарегистрированной электрокардиограмме, электроэнцефалограмме и т.п.
Т.е. не вызывает сомнений, что оптимальный фильтр сетевой помехи должен иметь гребенчатую АЧХ с минимумами на частотах, кратных 50, и с подавлением в точках минимумов не менее 40 дБ. При этом он должен обеспечивать линейную ФЧХ, иметь регулируемую полосу режекции и перестройку по частоте при необходимости, не допускать «звона» после высоковольтной импульсной помехи, ни в каком случае не менять ни амплитуду, ни форму полезного сигнала при включении/выключении.
Существующие в современных медицинских приборах фильтры не являются оптимальными т.к. у каждого имеются свои недостатки.
В то же время, реализация требований к подобному оптимальному фильтру, на первый взгляд, полностью исключает возможность его простой реализации, т.е. воображение сразу предлагает весьма сложную комбинацию различных фильтров.
Дьявол, однако, как всегда скрывается в деталях. И одной из них можно считать требование фильтра, ограничивающего полосу частот снизу. Поясним: для сигналов ЭКГ, ЭЭГ и т.п. необходимо исключить постоянную составляющую сигнала. При этом обычно используется два фильтра – аналоговый непосредственно в приборе с постоянной времени много больше требуемой, и второй – цифровой, который ограничивает полосу на требуемой величине: 3.2 или 2.3 сек для ЭКГ, 0.05, 0.1, 0.3, 0.7 сек для ЭЭГ.
Справка: в медицине полоса снизу традиционно определяется не в герцах, а в секундах, т.е. в величине времени, которая необходима для того, чтобы поданный на вход сигнал 1.0 принял значение 1/е на выходе. При этом очень желательно, чтобы фильтр давал экспоненциальный спад во временной области, т.е. максимально точно имитировал работу RC цепи, которая использовалась в приборах для этой цели ранее. Это далеко не глупое требование, т.к. неправильно спроектированный фильтр может иметь постоянную времени 3.2 секунды, например. Но кривая, сильно отличающаяся от экспоненты, приведет к тому, что сигнал ЭКГ будет искажен, особенно в сегменте ST. И это действительно наблюдается у некоторых электрокардиографов и вызывает справедливое раздражение у врачей: по метрологии у прибора все «ОК», а есть у больного ишемия или нет, непонятно.
Используем простейший рекурсивный фильтр вида:
(здесь и далее для удобства гг. программистов фильтры представляются сразу в программном коде без представления в традиционной форме, которая обычно не востребована читателями).
Этот фильтр дает хорошее приближение к требуемой экспоненте во временной области, прост в реализации, не требует никаких по существу ресурсов, не искажает сигнал и легко управляется. Экспериментальная выходная кривая после подачи на вход сигнала Хевисайда представлена на Рис.2.
Рис.2 Рекурсивный фильтр устраняет постоянную составляющую сигнала по закону, весьма близкому к характеристикам общепринятой RC цепи.
Характеристики в частотной области представлены на Рис.3.
Рис.3 Сетка проведена через 3дБ по оси Y и через 2Гц по оси X.
Но т.к. аппетит приходит во время еды, было бы очень недурно сделать подобную характеристику симметричной и гребенчатой Рис.4.
Рис.4 Для фильтрации сетевой помехи и ее гармоник необходима гребенчатая характеристика фильтра.
Как ни странно, но эта задача легко реализуется распараллеливанием базового фильтра в группу, где число фильтров равно отношению частоты дискретизации к частоте основной гармоники помехи. В том случае, когда эти частоты делятся нацело (т.е. можно использовать фильтрующие свойства доли частоты дискретизации), появляется возможность построить универсальный фильтр, гребенка которого закрывает все гармоники помехи. При этом требуется лишь пропорционально уменьшить делитель для сохранения базовой постоянной времени.
Экспериментальная характеристика фильтра в частотной области представлена на Рис.5
Рис. 5 Характеристика квазиоптимального фильтра (применительно для сигнала ЭЭГ). Сетка проведена через 3 дБ по оси Y и через 10 Гц по оси X. Обратите внимание на неравномерность в полосе пропускания вне полос режекции.
Программная реализация может быть выполнена следующим образом:
Очевидно, что в данном случае изменения заключаются лишь в том, что base_signal стал массивом, в который записывается не постоянная составляющая, а полный период помехи вместе с величиной постоянной составляющей. Понятно, что в данном случае фильтруется не только синусоидальная составляющая основной гармоники помехи, но и любые ее гармоники. Т.е. если помеха представляет собой меандр, например, или любое другой сколь угодно сложный сигнал, то все его составляющие, кратные периоду основной гармоники, будут вычитаться из полезного сигнала. Что и требовалось.
Разумеется, фильтр легко управляется. Изменения параметра time_filter_const представлены на следующих рисунках:
Рис. 6. Различные варианты характеристик одного и того же фильтра.
Во временной области данный фильтр ведет себя следующим образом: при появлении сигнала помехи, совпадающего по частоте с любой из полос режекции, наступает период, в течение которого помеха снижается по амплитуде и компенсируется.
Рис.7 Компенсация возникшей помехи: серым цветом показан исходный сигнал, черным – отфильтрованный. Обратите внимание на полное отсутствие фазовых задержек и изменений амплитуды полезного сигнала.
Разумеется, фильтр работает также и по ограничению полосы пропускания снизу:
Рис. 8. Компенсация внезапно возникшей постоянной составляющей сигнала. Типичная ситуация «успокоителя» сигнала ЭКГ – в данном случае достаточно кратковременно уменьшить постоянную времени для того, чтобы не только скомпенсировать постоянную составляющую «разрядить конденсатор», но и быстро адаптироваться к изменившейся амплитуде помехи.
Может быть интересным анализ отклика системы на единичный выброс в отсчетах АЦП. Очевидно, что эффект «звона» фильтра присутствует, однако, в отличие от классических фильтров, звон представляет собой не помеху 50Гц, а короткие импульсы, следующие с частотой 50Гц. Естественно, что последующая цифровая фильтрация может устранить их со значительно большим коэффициентом подавления. В случае применения медианной, например, фильтрации (при некоторой избыточности частоты дискретизации), эффект «звона» фильтра будет устранен полностью.
Рис.9. Отклик фильтра на единичный высоковольтный импульс.
Разумеется, фильтрацию сетевой помехи и ее гармоник можно вести и КИХ фильтрами, использующими фильтрующие свойства доли частоты дискретизации. Но, в полном соответствии с теорией, падение добротности при идентичных порядках и неизбежное запаздывание на величину длительности окна, не дают возможности достигнуть таких же результатов.
Рис.10. Решение той же задачи с помощью нехэмминговского КИХ фильтра.
Но ничего оптимального, как уже было указано, в природе нет, поэтому предлагаемое решение можно, на мой взгляд, считать близким к требуемому, т.е. квазиоптимальным.
В качестве рекомендаций по использованию данного фильтра необходимо указать следующее: этот фильтр должен быть первым после АЦП, а уже следом за ним – фильтры, ограничивающие полосу сверху.
Причина в том, что у предлагаемой реализации режекторного фильтра есть не только достоинства, но и один недостаток. Заключается он в том, что частота «разряда конденсатора» не может быть выше 50Гц и на пологих скатах (см. Рис.2) визуально заметна некоторая «ступенька» на кривой. В случае последующей фильтрации она исчезает.
Кроме того, не следует стремиться к избыточному (сверх необходимого) увеличению параметра time_filter_const т.к. частота сети переменного тока тоже имеет некоторый допуск, обычно в пределах 0.1Гц.
Дополнение от 23.08.2010. Автор дополнения - Крамаренко Ю.А.
Для проверки описанного в статье способа фильтрации была написана программа, которая выполняет обработку аудио файлов формата WAV PCM.
Ниже приведены результаты обработки двух аудио файлов.
Как можно убедиться, помеха полностью удалена. Также можно наблюдать описанный выше "звон" фильтра в начале файла.
Таким образом на примерах была проиллюстрирована работа фильтра.