Период оцифрения для устранения 50 Гц

Пpивет, Yuri!

*** 30 Oct 04 20:03, Yuri Kopylov wrote to All:

YK> - n*20 мсек - быстрый (по сравнению с 20 мсек) ADC при YK> последовательных опросах попадает примерно в одну и ту же точку YK> полуволны синуса наводки. Дребезг измерений меньше, но сама средняя YK> измеренная величина сигнала будет искажена наводкой, и степень YK> искажения результата будет зависеть от уровня наводки;

А сделай две выборки с интервалом 10 mS - просто и надежно...

с уважением Владислав

Reply to
Vladislav Baliasov
Loading thread data ...

Добрый день всем!

Теоретически есть 2 варианта задания периода оцифрения по отношению к наводкам 50 Гц (20 мсек):

- n*20 мсек - быстрый (по сравнению с 20 мсек) ADC при последовательных опросах попадает примерно в одну и ту же точку полуволны синуса наводки. Дребезг измерений меньше, но сама средняя измеренная величина сигнала будет искажена наводкой, и степень искажения результата будет зависеть от уровня наводки;

-10+n*20 мсек - последовательные измерения попадают на разные полуволны наводки. Дребезг результата увеличивается (от точки к точке) и зависит от уровня наводки, но в среднем такой период позволяет убрать влияние наводки.

Что обычно применяется, если в данном случае есть само понятие "обычно"?

Конкретно: у меня ADC работает с периодом 30 мсек (см. выше), и по 4 (степень 2) точкам перед обработкой идет фильтрация кодов фильтром первого порядка типа Y(n+1) = Y(n)*3/4 + Y(n+1)/4 (память - только на одно значение). Памяти хранить выборки нет (даже 4 последние точки - сложно), а вышеприведенный программный фильтр подавляет наводку Гц всего в 6-7 раз (истинное скользящее среднее убрало бы наводку полностью). Вот и думаю, можно ли что-либо "улучшить" простыми средствами?

С уважением, Юрий Копылов snipped-for-privacy@mtu-net.ru

Reply to
Yuri Kopylov

Пpивет, Yuri!

*** 30 Oct 04 21:40, Yuri Kopylov wrote to Vladislav Baliasov:

YK> Вообще-то, я не успеваю оборачиваться за 10 мсек. А какая разница, YK> 2 выборки через 10 мсек или через 30 мсек (как у меня сейчас)?

Я тормознул - твой второй вариант это почти то же самое, что и у меня.

с уважением Владислав

Reply to
Vladislav Baliasov

Привет!

Vladislav Baliasov snipped-for-privacy@p51.f.n5020.z2.fidonet.org> пишет

Вообще-то, я не успеваю оборачиваться за 10 мсек. А какая разница, 2 выборки через 10 мсек или через 30 мсек (как у меня сейчас)?

WBR Юрий Копылов snipped-for-privacy@mtu-net.ru

Reply to
Yuri Kopylov

Привет! Vladislav Baliasov snipped-for-privacy@p51.f.n5020.z2.fidonet.org> пишет

разница,

Похоже, мой первый вариант - это глупость, и опрашивать нужно только на разных полуволнах наводки. Ты прав. Только вот фильтр типа

Y(n+1) = Y(n)*3/4 + Y(n+1)/4

фиговат для этих целей. Намного лучше осреднять или брать скользящее среднее, но это плата за экономию памяти. Не хочется вместо программно фильтра курочить печать и паять RC-цепочку. -вообще-то, эффект д.б. тот же самый.

Пробую сейчас разные программные извраты и смотрю на шум АЦП (десятки - сотня uV). Может, это и не 50 Гц наводки, может, цифровой шум по земле, сказать трудно - скопом ведь ничего не увидишь. И смотрю только на выдачу из контроллера в RS-232 по 5-8 точек/сек.

WBR Юрий Копылов

Reply to
Yuri Kopylov

Yuri Kopylov wrote to Vladislav Baliasov:

VB>> А сделай две выборки с интервалом 10 mS - просто и надежно...

YK> Вообще-то, я не успеваю оборачиваться за 10 мсек. А какая разница, 2 YK> выборки через 10 мсек или через 30 мсек (как у меня сейчас)?

Небольшая разница есть. Если усреднять две соседние выборки, взятые с интервалом 10 мс, то лучше будет подавление в тех случаях, когда амплитуда наводки 50 Гц медленно меняется.

YK> Только вот фильтр типа YK> Y(n+1) = Y(n)*3/4 + Y(n+1)/4 YK> фиговат для этих целей. Hамного лучше осреднять

"Эт' точно!" (с) У тебя получился рекурсивный фильтр, что в данном случае нафиг не нужно.

YK> Hе хочется вместо программно фильтра курочить печать YK> и паять RC-цепочку. -вообще-то, эффект д.б. тот же самый.

"Это вряд ли..." (с).

Одна RC-цепочка даст тебе ФНЧ с подавлением 6 дБ/октава. Чтобы добиться мало-мальски приличного подавления 50 Гц, придется выбирать частоту среза единицы/доли герц, получится громоздко и будет жутко тормозить.

Усреднение двух (и только двух) соседних 10 мс выборок дает трансверсальный (т.е. гребенчатый) фильтр, который полностью подавляет 50 Гц, а также все нечетные гармоники 50 Гц. Его АЧХ описывается выражением |cos(f)| При этом фильтр имеет минимальную "инерцию", т.к. "не помнит" ненужную предысторию (в отличие от рекурсивного фильтра).

Более глубокого подавления можно достичь, если точно мерять интервал 50 Гц сетевого напряжения, и подстраивать "10 мс" интервал выборок точно в половину измеренного.

Пока, Алексей

Reply to
Alex Kouznetsov

Greetings, Yuri!

Посмотрел я мессагу, посланную Yuri Kopylov к All, и решил ответить:

YK> - n*20 мсек - быстрый (по сравнению с 20 мсек) ADC при YK> последовательных опросах попадает примерно в одну и ту же точку

YK> -10+n*20 мсек - последовательные измерения попадают на разные YK> полуволны наводки. Дребезг результата увеличивается (от точки к точке)

Если у тебя SAR ADC (измеpения пpоводятся в точке), то от наводки ты таким способом не избавишься, т.к. в наводке пpисутствует не только одна гаpмоника, и эти гаpмоники нестабильны. Кpоме того, точно пеpиод сети ты не выдеpжишь, поэтому в отсчетах АЦП будут биения (если наводка действительно влияет на измеpения) Поэтому: - Измеpять лучше всего с помощью интегpиpования с вpеменем интегpиpования 20*n мс, затем использовать SAR ADC для измеpения на выходе интегpатоpа. Влияния от импульсных наводок и от несовпадения пеpиодов pезко снизятся.

- Можно использовать вpемя интегpиpования, не кpатное пеpиоду наводки, но пpи этом следует позаботиться о синхpонизации начала интегpиpования с сетью. Вообще, синхpонизация измеpений с сетью будет полезна во всех случаях.

C наилучшими пожеланиями Ilja aka ИЛ-2 (ilja_vlaskin$mail.ru)

... О чем поет ночная птица одна в осенней тишине

Reply to
Ilja Vlaskin

Yuri, ты ещё здесь сидишь?

Суббота Октябрь 30 2004 21:03, Yuri Kopylov wrote to All:

YK> Теоретически есть 2 варианта задания периода оцифрения по YK> отношению к наводкам 50 Гц (20 мсек): YK> - n*20 мсек - быстрый (по сравнению с 20 мсек) ADC при YK> последовательных опросах попадает примерно в одну и ту же точку YK> полуволны синуса наводки. Дребезг измерений меньше, но сама средняя YK> измеренная величина сигнала будет искажена наводкой, и степень YK> искажения результата будет зависеть от уровня наводки; YK> -10+n*20 мсек - последовательные измерения попадают на разные YK> полуволны наводки. Дребезг результата увеличивается (от точки к точке) YK> и зависит от уровня наводки, но в среднем такой период позволяет YK> убрать влияние наводки. YK> Что обычно применяется, если в данном случае есть само понятие YK> "обычно"?

"Обычно" используют фильтр, устраняющий наводку. Это может быть как "заграждающий" аналоговый фильтр на входе, так и "цифровой" вариант фильтрации - проводят множество измерений, которые усредняют на периоде наводки.

YK> Конкретно: у меня ADC работает с периодом 30 мсек (см. выше),

Очень плохо! Для эффективной цифровой фильтрации период оцифровки должен быть существенно меньше периода наводки. Как минимум два отсчёта на период сетевой помехи. Иначе вносятся дополнительные погрешности, да ещё и удлиняется время обработки...

Георгий

Reply to
George Shepelev

Привет!

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

Reply to
Yuri Kopylov

Sun Oct 31 2004 14:13, Yuri Kopylov wrote to Alex Kouznetsov:

AK>> Усреднение двух (и только двух) соседних 10 мс выборок дает AK>> трансверсальный AK>> (т.е. гребенчатый) фильтр, который полностью подавляет 50 Гц, а также AK>> все нечетные гармоники 50 Гц. Его АЧХ описывается выражением |cos(f)|

YK> У меня ADC ADS1253 (delta-sigma, 4 канала)

Конкретно этот не смотрел, но во многих многоканальных сигма-дельта есть встроенный цифровой фильтр, подавляющий 50 и 60 Гц децибел так на 60-80. Если в твоем нет, может, имеет смысл перейти на что-то вроде ADS124x? Они, правда, медленные...

[...]

YK> Hо если я останусь на своей базовой частоте 30 мсек, то будет ли YK> аналогично предлагаемому решение, основанное на скользящем среднем по 2 YK> точкам (исходные значения хранятся и не затираются осредненным!)? Пока YK> недостатков не вижу, кроме общей проблемы "30 или 10 мсек" и YK> несинхронизации с сетью.

При 30 мс ты подавишь частоту (50/3)Гц и все ее нечетные гармоники. 50 Гц яляется 3-й гармоникой этой частоты. Однако нечетные гармоники 50 Гц только наполовину совпадают с нечетными гармониками частоты (50/3)Гц. В сумме подавление будет хуже.

Пока, Алексей

Reply to
Alex Kouznetsov

Привет!

Alex Kouznetsov snipped-for-privacy@senet.com.au> пишет

AK> Конкретно этот не смотрел, но во многих многоканальных сигма-дельта есть AK> встроенный цифровой фильтр, подавляющий 50 и 60 Гц децибел так на 60-80. Если AK> в твоем нет, может, имеет смысл перейти на что-то вроде ADS124x? Они, правда, AK> медленные... Дак любым (почти) ADC можно подавить 50-60 Гц, но при этом и выдача будет редкой. А поскольку мне нужно оцифрять быстро и часто, тактовая сигмы-дельта выбрана достаточно высокой. Поэтому и первый нуль цифрового фильтра так высоко получается (4.8 кГц).

2

AK> При 30 мс ты подавишь частоту (50/3)Гц и все ее нечетные гармоники. 50 Гц AK> является 3-й гармоникой этой частоты. Да AK> Однако нечетные гармоники 50 Гц только AK> наполовину совпадают с нечетными гармониками частоты (50/3)Гц. В сумме AK> подавление будет хуже. Вот с этим согласен - про гармоники не подумал. Ты прав - спасибо. Попробую на досуге подумать над программой чтобы ее ускорить и опрашивать ADC через 10 мсек. Хотя, вероятнее всего, это будет проще сделать в следующей версии железа.

WBR Юрий Копылов snipped-for-privacy@mtu-net.ru

Reply to
Yuri Kopylov

Привет!

George Shepelev snipped-for-privacy@f124.n.z2.fidonet.org> пишет

Да есть такие,причем активные и второго порядка. Речь идет об остатках чего-то того, что, все-таки, доходит до ADC. Хотя, может быть, и не все доходит со входа.

Это да. Потому цифровая программная фильтрация и не была изначально задумана. Ее начал прикручивать уже потом ради "попробовать, будет ли лучше или нет" - программно-то это занимает пару минут.

Пробовал вчера вечером скользящее среднее по 2 точкам при своих 30 мсек - эффекта изменения шума выхода цифрового сигнала p-p практически не заметил.

Единственное, что всегда сильно положительно влияет и явно заметно - это подобные упражнения с осреднением с дифференциальным сигналом (разница двух последовательных отсчетов через 30 мсек), используемым для управления регулятором PID.

WBR Юрий

Reply to
Yuri Kopylov

Здравствуйте, Yuri.

Вы писали 1 ноября 2004 г., 20:14:09:

YK> Единственное, что всегда сильно положительно влияет и явно заметно - это YK> подобные упражнения с осреднением с дифференциальным сигналом (разница двух YK> последовательных отсчетов через 30 мсек), используемым для управления YK> регулятором PID.

Я делаю так: отсчеты АЦП каждые 10мс, потом усредняется по формуле N1 + 2*N2 + N3.. Результат можно делить на 4, а можно и не делить (у меня дальше идет масштабирование, там в коэффициенте сразу учтено деление на 4).

Reply to
Nick

Добрый день!

Nick snipped-for-privacy@imp.lg.ua> пишет в

Это тоже приемлемо. Единственное, что мне не нравится (в моем случае) как в этом варианте такого фильтра, так и в скользящем среднем, так это сложность сложений и циклических перезаписей буфера, которые нужно выполнять каждый раз. На сегодня я согласился с периодом 10 мсек и осреднением по 2 точкам (это 50 Гц) - переделываю программу, чтобы получать измерения (осредненные) каждые 20 мсек.

А вот с последующими программными сглаживающими фильтрами не придумал как лучше (маловато времени процессора и памяти), тем более что считается еще и производная сигнала. Предполагаю сделать так:

  1. Каждые 20 мсек имею уже код АЦП, осредненный по 2-м измерениям (фильтр 50 Гц)
  2. Храню предыдущий результат (20 мсек назад)
  3. Каждые 20 мсек в качестве рабочего кода для расчетов использую среднее из текущего значения и предыдущего - получается дополнительно скользящее среднее по 2-м точкам
  4. Для получения производной сигнала - либо брать разницу текущего и предыдущего не за 20 мсек, а за больший период (40-80 мсек) - либо дополнительно осреднять (фильтровать?) сигнал по 2-4 точкам и производную брать как разницу соседних точек уже этого "фильтрованного" сигнала.

С уважением Юрий Копылов

Reply to
Yuri Kopylov

Nick snipped-for-privacy@imp.lg.ua> пишет

2*N2 + N3..

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

WBR Юрий Копылов

Reply to
Yuri Kopylov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.