Перейти к содержанию
    

Коллеги, что порекомендуете для вычисления RMS по выборкам?

35 минут назад, ffilin сказал:

... считаешь сумму  дельт всех значений выборки. Минимальная сумма и будет соответствовать искомому периоду. 

так не дельт наверное, а просто значений, без модуля... в любое время начинаем отсчет с суммированием, как ноля достигли - считаем число выборок

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость ffilin
31 minutes ago, stells said:

так не дельт наверное, а просто значений, без модуля... в любое время начинаем отсчет с суммированием, как ноля достигли - считаем число выборок

нет две выборки с неким периодом и считаем сумму дельт это разность, знак отбрасываем.

У нас получается распределение обратная амплитуда - период, находим минимум получаем искомый период.

stells

Вы не подскажите как квант магнитного поля называется?  Старый стал вспомнить не могу.

 

haker_fox

можно модефицировать алгоритм и сделать расчёт периода повторения в реальном времени, но тогда понадобятся операции умножения, предыдущих дельт на коэффициент "забывания" от 1...0 

 

тебе с какой точностью нужно определять частоту или период?

Изменено пользователем ffilin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 hours ago, ffilin said:

тебе с какой точностью нужно определять частоту или период?

Точно не скажу. Понимаешь, мне период нужен, чтобы количество выборок АЦП для расчёта RMS взять кратным этому периоду. Но, думаю, плюс-минус 0,5% будет достаточно. Напомню ещё раз: мне нужно считать действующее значение оцифрованной с помощью АЦП величины. Форма сигнала близка к синусоиде (сеть всё=таки), сигнал периодический, но диапазон частот требуют 48 - 62 Гц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

37 minutes ago, haker_fox said:

Напомню ещё раз: мне нужно считать действующее значение оцифрованной с помощью АЦП величины. Форма сигнала близка к синусоиде (сеть всё=таки), сигнал периодический, но диапазон частот требуют 48 - 62 Гц.

Это всё обсуждалось на форуме не один десяток раз. Ищите по форуму ключевые слова: RMS, "оконная функция".. Новый движок вам в помощь! ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну если уже есть FFT и исходные семплы АЦП, то я бы сделал так:

1. С помощью FFT определил бы частоту (достаточно точности в квант семплирования). С дополнительным уточнением отличные результаты даст.

2. Из исходных семплов посчитал бы RMS.

А напрямую по результатам Фурье определять точное значение RMS я бы не стал.

Кстати, а ФНЧ применяете? там гармоник может быть много в сети, чтобы RMS первой гармоники считать неплохо бы отрезать остальные.

 

Ну или все-таки считать через FFT, с поправкой на ослабление оконной функции и опять же с параболической апроксимацией.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из

В 22.12.2018 в 13:01, haker_fox сказал:

Данные (измеренную частоту, и RMS) нужно выдавать не чаще, чем каждые 0.5 с.

следует, что автору не так критично время обновления информации в бОльшую сторону. Тогда можно условиться, например, на разрешении 0,5Гц, накапливая, таким образом, сигнал 2 секунды. Потом делать БПФ и вычислять основную гармонику.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 hours ago, ruslan1 said:

Кстати, а ФНЧ применяете? там гармоник может быть много в сети, чтобы RMS первой гармоники считать неплохо бы отрезать остальные.

ФНЧ есть, обычная RC-цепь. Но мы не ставили задачу отрезать первую гармонику, оставлен задел на "взятие" аж до 20-й гармоники.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/22/2018 at 1:01 PM, haker_fox said:

Добрый день! тема моего вопроса стара как мир, но всё же... Есть АЦП, 24 разряда, которое с частотой 8 кГц оцифровывает переменный ток 50 Гц. Для вычисления RMS использую классическую формулу с квадратным корнем и интегралом. Для расчётов беру количество выборок, кратное одному периоду. И всё работает в пределах требуемой погрешности.

Пожалуйста, обнародуйте допустимую погрешность.

 

Quote

Недавно выяснилось, что нужно алгоритм адаптировать для частот 48 - 62 Гц.

В заданном диапазоне - дискретные значения частот, или любые?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

39 minutes ago, Stanislav said:

Пожалуйста, обнародуйте допустимую погрешность

0,5% относительной погрешности будет вполне достаточно.

40 minutes ago, Stanislav said:

В заданном диапазоне - дискретные значения частот, или любые?

Любые. Если быть более точным, то можно так: 48 - 52, и 58 - 62. Это допуски на сетевые частоты разных стран. Шаг изменения частоты, полагаю, 0.1 Гц будет волне достаточно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, haker_fox said:

0,5% относительной погрешности будет вполне достаточно.

Любые. Если быть более точным, то можно так: 48 - 52, и 58 - 62. Это допуски на сетевые частоты разных стран. Шаг изменения частоты, полагаю, 0.1 Гц будет волне достаточно.

Тогда так.

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

А есть "неправильный" - через прямое вычисление интеграла от квадрата сигнала, взятого в спектральном окне.

Для заданных Вами условий, второй способ должен работать хорошо. При этом, не потребуется велимудрых вычислений.

Попробуйте, к примеру, рассчитать (или отмоделировать) погрешность окна (Хэннинга, Хэмминга и т.д.) на заданном Вами интервале измерений (0,5 с), для всего диапазона частот.

Если допустима некоторая задержка показаний, берите выборки длиной в 1с, или более (т.е., с перекрытием окон).

Хоть результат (или погрешность) будет меняться в зависимости от частоты в строго ограниченных пределах, всё должно получиться.

 

Spoiler

 

Подсказка. Не читайте.

Преобразование Фурье функции спектрального окна даёт максимальное значение алгоритмической погрешности измерения. :)

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/23/2018 at 11:20 AM, _pv said:

...Ну и можно вообще без буфера на лету считать RMS (суммировать выборки и квадраты выборок), и заодно на лету же оценивать частоту, считая точно таким же образом RMS от производной сигнала . Отношение RMS производной и RMS сигнала даст частоту. И тогда надо просто вовремя остановиться когда количество накопленных отсчётов попадёт в целое количество периодов сигнала.

Интересно.

Как даст оценку частоты RMS от производной сигнала (особенно если он "грязный")? Что подразумевается под RMS в данном случае?

ЗЫ. LaTex аннотация здесь раньше работала. Сейчас, помойму, нет. :(

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, Stanislav said:

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

Правильный способ - через преобразование Гильберта, о чем уже выше написали.

4 hours ago, Stanislav said:

Попробуйте, к примеру, рассчитать (или отмоделировать) погрешность окна (Хэннинга, Хэмминга и т.д.) на заданном Вами интервале измерений (0,5 с), для всего диапазона частот.

Для "неправильного" способа с окном Гаусса нетрудно получить аналитическое выражение для относительной ошибки измерения. Уже при интегрировании по восьми периодам сигнала относительная ошибка измерения связанная с оконной функцией Гаусса будет меньше чем 1.0е-10. Но вот увеличивать интервал измерения при таком способе не слишком то целесообразно. Подинтегральное выражение представляет собой быстро осциллирующую функцию с довольно большой амплитудой, поэтому численное интегрирование этой функции на большом временном интервале может дать довольно большую накопленную ошибку округления. Вычисление через преобразование Гильберта вроде бы свободно от этого недостатка, но там возникают вопросы о точности вычисления самой квадратурной компоненты. Накопленная ошибка округления и в этом случае может оказаться сравнимой с ошибкой вычисления RMS через интегрирование с оконной функцией.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

29 minutes ago, blackfin said:

Правильный способ - через преобразование Гильберта, о чем уже выше написали.

Это тоже "неправильный" способ. От слова "совсем".

Скажите, как вы предлагаете получить преобразование Гильберта от сигналов, описанных Автором темы?

Ну, напишите на языке математики, чтобы было понятно.

 

Quote

Для "неправильного" способа с окном Гаусса нетрудно получить аналитическое выражение для относительной ошибки измерения. Уже при интегрировании по восьми периодам сигнала относительная ошибка измерения связанная с оконной функцией Гаусса будет меньше 1.0е-10. 

Это неверно.

Остальное можно комментировать только в запрещённых выражениях.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

31 minutes ago, Stanislav said:

Ну, напишите на языке математики, чтобы было понятно.

Ну уж нет.. Вы тут сами старательно избегаете языка математики, так что я тоже воздержусь.. ;)

Но формулы для преобразования Гильберта вы можете найти в книге ЦОС Сергиенко.

31 minutes ago, Stanislav said:

Это неверно.

Остальное можно комментировать только в запрещённых выражениях.

Что конкретно неверно?

Посчитайте интеграл и найдите ошибку вычисления RMS. Это не трудно.

Ошибка при увеличении интервала интегрирования (равного 2*T) уменьшается экспоненциально, как ~exp(-2*pi*(T/Tg)^2). Где 2*Tg - ширина окна Гаусса. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, Stanislav said:

Как даст оценку частоты RMS от производной сигнала (особенно если он "грязный")? Что подразумевается под RMS в данном случае?

Для синусоидального сигнала среднеквадратичное отклонение равно амплитуде, с точностью до корня из 2 :).

Если взять производную от sin(wt) получится w*cos(wt) и соответственно среднеквадратичное отклонение производной будет в w раз больше.

А если сигнал не чистый синус конечно будет и ошибка в частоте.

Вычислительнее это гораздо проще, чем честный Фурье с окном, так как не надо даже памяти, а надо лишь на лету просуммировать отсчёты в квадрате, и остановиться в нужный момент, чтобы "окно" было кратно периоду измеряемой частоты.

ТС утверждает что у него почти чистый синус, на сколько этот метод подходит для его данных и какую даст ошибку никто кроме него сказать не может.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...