Привет!
AK> Усреднение двух (и только двух) соседних 10 мс выборок дает трансверсальный AK> (т.е. гребенчатый) фильтр, который полностью подавляет 50 Гц, а также все AK> нечетные гармоники 50 Гц. Его АЧХ описывается выражением |cos(f)| При этом AK> фильтр имеет минимальную "инерцию", т.к. "не помнит" ненужную предысторию (в AK> отличие от рекурсивного фильтра). AK>
AK> Более глубокого подавления можно достичь, если точно мерять интервал 50 Гц AK> сетевого напряжения, и подстраивать "10 мс" интервал выборок точно в половину AK> измеренного.
У меня ADC ADS1253 (delta-sigma, 4 канала) опрашивается по таймеру ~30ms, в обработчике прерывания на опрос одного канала уходит около 1.5 мсек (всего - 6 мсек). Синхронизации с сетью нет. Можно, конечно, попробовать переделать всю программу и попробовать уложиться во время при опросе каждого канала 10 мсек, но проблематично и не очень хочется пока. Сейчас время работы ISR - около 9 мсек.
В измеряемом сигнале есть несинхронизированная наводка 50 Гц (по определению - куда ей деться!) и посторонний остаточный синхронный сигнал ~9,6 кГц (рабочая частота схемы, от того же кварца контроллера). Но условие - я не могу делать обработку реже 30 мсек. Поскольку первый ноль цифрового фильтра ADC приходится на 4800 Гц, второй ноль - на 9600 Гц, рабочая частота другой части схемы выбрана 9600Гц. Тем самым хочется верить, что в оцифрованном сигнале присутствует, в основном, наводка 50 Гц и прочий шум.
Если я меряю каждые 10 мсек и просто осредняю по 2, то выходные данные обновляются каждые 20 мсек. Это бы устроило.
Но если я останусь на своей базовой частоте 30 мсек, то будет ли аналогично предлагаемому решение, основанное на скользящем среднем по 2 точкам (исходные значения хранятся и не затираются осредненным!)? Пока недостатков не вижу, кроме общей проблемы "30 или 10 мсек" и несинхронизации с сетью.
WBR Юрий Копылов snipped-for-privacy@mtu-net.ru