Например TDA7294

Форум РадиоКот :: Просмотр темы - Расчет RMS
Форум РадиоКот
https://radiokot.ru/forum/

Расчет RMS
https://radiokot.ru/forum/viewtopic.php?f=57&t=151773
Страница 1 из 1

Автор:  DenChik87 [ Вт янв 16, 2018 18:04:19 ]
Заголовок сообщения:  Расчет RMS

Прошу помощи в расчете, и написание кода для вычисления RMS. Для отладки своего кода использую протеус. На данный момент не получается измерить синусоидальный ток/напряжение, величина постоянного напряжения/тока измеряется верно.
Для определения RMS делал так - рассчитал количество преобразований за период:
N=Fcpu/prescaler/Nadc*tпериод
Fcpu=4000000 Hz
Prescaler=32 – предделитель ADC
Nadc=20 тактов (т.к. преобразование ADC происходит за 13 тактов плюс несколько тактов на
запись данных ADC в RAM)
tпериод=0,02 - время на период при частоте 50 Гц
N=4000000/32/20*0.02=125 – преобразований.
Далее я сохранял 125 последовательных преобразований ADC в массив, а затем рассчитываю RMS=sqrt((x1^2+x2^2+…+xn^2)/N).
Конечно расчет количества преобразований (N) за период приблизительный, но тем не менее я считал если ошибка будет грубой, то варьируя этим значением (N) в небольших пределах можно подогнать истинное. В протеусе отслеживал значения RMS передаваемые в терминал. При синусоидальном сигнале, амплитудой 5В, его RMS=5*sqrt(2)=3.54В - в теории , но на практики результаты сильно отличаются. Например при расчетной N=125 в терминал попадает 0x279 = 633 = 633*5/1023 = 3.09В. И увеличивая, уменьшая это значение (N) скорректировать результат не получается.
Возможно, я кардинально не правильно пытаюсь решить задачу, или такой вариант решения тоже имеет право быть, но тогда что не так, откуда такая погрешность?

Вложения:
Исход.png [73.78 KiB]
Скачиваний: 770
протеус.png [34.43 KiB]
Скачиваний: 692

Автор:  Z_h_e [ Вт янв 16, 2018 18:34:25 ]
Заголовок сообщения:  Re: Расчет RMS

Раз Вы заполняете массив, значит фактическое N знаете точно, чего там гадать? Вы ж начало фазы не детектируете, Вы должны тогда точно рассчитать количество выборок на период. Лучше использовать детектор и считать потом фактическое количество выборок на период, иначе потом будет трудно вносить изменения в проект, если каждый такт считать.

Вы двуполярную синусоиду подаете на вход АЦП или смещенную? Если двуполярную, то можно рассчитывать только положительный полупериод. Если смещенную, то X=ADC-offset.

Добавлено after 2 minutes 6 seconds:
На 1024 делить надо кстати, а не на 1023

Автор:  DenChik87 [ Вт янв 16, 2018 20:00:35 ]
Заголовок сообщения:  Re: Расчет RMS

Вы двуполярную синусоиду подаете на вход АЦП или смещенную? Если двуполярную, то можно рассчитывать только положительный полупериод. Если смещенную, то X=ADC-offset.

Я не знаю какую синусоиду генериирует на вход МК протеус. Ну даже если предположить что двуполярную, в таком случае результат должен быть ровно в два раза меньше? Так мне кажется. Ведь я веду расчет за период, т.е. за 0,02с. А значит если я правильно расчитал N то при двуполярном синусе на входе 3,54/2=1,76В. По такой логике результат еще больше расходится.
Сейчас еще пробовал подать меандр 50Гц, 5В амплитуды, результат тоже неверный. ADC=0x380=896=896*5/1024=4.375В. А должно быть 2,5В. И неважно двуполярный сигнал, или нет.
Хотелось бы конечно без детектора...

Вложения:
Меандр.png [81.29 KiB]
Скачиваний: 637

Автор:  ARV [ Вт янв 16, 2018 20:12:01 ]
Заголовок сообщения:  Re: Расчет RMS

ваши отсчеты (125 штук) должны длиться ровно 20 мс, и тогда вам не надо отслеживать "начало" синусоиды.
вы обязаны интегрировать обе полуволны синусоиды, и положительную, и отрицательную, для чего сместите её на Uref/2, а из результата преобразования ADC отнимайте 512 - получится, что АЦП у вас выдает значение от -511 до +512.
как-то так...

Добавлено after 3 minutes 30 seconds:
вот моя статеечка по теме: http://arv.radioliga.com/content/view/107/43/
диодный мост, конечно, не для малых напряжений... для малых надо делать выпрямитель на ОУ. ну и, естественно, все рассчитано на 50 Гц, иначе работать не будет.

Автор:  Z_h_e [ Вт янв 16, 2018 20:25:55 ]
Заголовок сообщения:  Re: Расчет RMS

DenChik87 писал(а):
Я не знаю какую синусоиду генериирует на вход МК протеус.
Генерирует ту, которую задаете. По умолчанию смещение 0, т.е. двуполярная. Когда полпериода нулевые значения, ср.квадрат. значение будет равно половине амплитуды синусоиды.
Я не понимаю как Вы пытаетесь его рассчитать, если не знаете что подали на вход АЦП. Тем более осциллограф применен, там же все видно.
DenChik87 писал(а):
И неважно двуполярный сигнал, или нет.
АЦП контроллера так не думает, какое значение АЦП Вы ожидаете измерив отрицательный сигнал? Поглядите значения Вашего массива, что там наизмерялось.

Добавлено after 10 minutes 9 seconds:
Если считать что синусоида симметричная (или достаточно симметричная для нужной точности) , не хочется использовать детектор и не будет диммирования, то можно не выпрямлять сигнал полносью, а только обрезать на входе АЦП отрицательную полуволну (чтобы МК не спалить). Делать выборки в течении всего периода, программным способом определить начало и конец полупериода и рассчитать RMS только для полупериода.

Автор:  ARV [ Вт янв 16, 2018 20:28:07 ]
Заголовок сообщения:  Re: Расчет RMS

если не хочется детектор - надо смещать входной сигнал на половину опорного АЦП. в простейшем случае через кондер подать сигнал на делитель соответствующий, правда при этом постоянку уже померить не получится...

Автор:  Z_h_e [ Вт янв 16, 2018 20:39:13 ]
Заголовок сообщения:  Re: Расчет RMS

DenChik87 ,почему не хотите использовать детектор? По-моему с ним удобнее и проще. Можно еще проще посчитать RMS, если синусоида боле-менее нормальная, возможно Вам хватит точности банально умножив на 0,707 амплитудное значение.

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

Автор:  КРАМ [ Вт янв 16, 2018 20:53:06 ]
Заголовок сообщения:  Re: Расчет RMS

По-моему с ним удобнее и проще

Результат правда никудышний, но действительно проще...
Выпрямитель - это нелинейный элемент с порогом.
А уж на 0.707 умножать, так зачем тогда весь этот цирк. Всего два квадратурных измерения дадут амплитуду синусоиды. Но так можно измерять RMS только для чистой синусоиды.
Если измерять реальные сигналы, то должно быть ДВА канала обработки сигнала. Определение смещения нуля сплошным интегрированием (можно тяжелым рекурсивным фильтром - БИХ, либо длинным (много больше периода) КИХ - скользящим окном). А второй канал должен каждую выборку приводить к нулю, вычитая измеренное в первом канале значение. И лишь после этого считать RMS. Ну и период, естественно, нужно измерять.

Автор:  Z_h_e [ Вт янв 16, 2018 21:14:35 ]
Заголовок сообщения:  Re: Расчет RMS

КРАМ писал(а):
Результат правда никудышний, но действительно проще...
Почему результат некудышный с детектором? Да и понятие некудышный несколько размыто, все зависит от необходимой точности. Какой смысл тюнинга верблюдов в зоопарке сложной схемы для 10битного АЦП и возможно 7805 в качестве ИОН? Тут же видимо задача, получить точность, которая получится, почему бы и нет? А выпрямитель легко делается на ОУ и можно даже с однополярным питанием, если ОУ умеет выдавать на выходе значение близко к нулю. Банальный LM358 начинает работать от 5мВ на выходе, а это 1LSB АЦП, да и то, в начале фазы погрешности измерения АЦП мало на что влияют..

Автор:  КРАМ [ Ср янв 17, 2018 08:28:22 ]
Заголовок сообщения:  Re: Расчет RMS

Если выпрямитель будет на ОУ, тогда чем этот вариант проще? А вот смещение нуля все равно останется, только после выпрямителя его будет уже не убрать.

Автор:  Starichok51 [ Ср янв 17, 2018 09:04:39 ]
Заголовок сообщения:  Re: Расчет RMS

DenChik87 писал(а):
Сейчас еще пробовал подать меандр 50Гц, 5В амплитуды, результат тоже неверный. ADC=0x380=896=896*5/1024=4.375В. А должно быть 2,5В.
2,5В - это СРЕДНЕЕ значение меандра. а RMS будет те же самые 3,54В.
чтобы это понять, достаточно обратиться к твоей же формуле из первого поста, приняв N = 2.
поэтому сначала научись правильно вычислять RMS для меандра, когда имеешь всего два значения - 0 и 1 (0В и 5В).
потом уже берись осваивать сисуноиду...

Автор:  YS [ Пт янв 19, 2018 12:21:06 ]
Заголовок сообщения:  Re: Расчет RMS

Кстати, коллеги, как вы думаете, корректно ли вычислять среднеквадратичное значение, просто возводя каждое полученное значение в квадрат, и после пропуская через рекурсивный фильтр с огромной постоянной времени? Вроде бы такой подход соответствует определению.

Естесственно, я предполагаю, что знак учтен. Например, можно до подачи на АЦП сдвигать сигнал на половину диапазона, а после оцифровки вычитать этот сдвиг перед обработкой.

Автор:  КРАМ [ Пт янв 19, 2018 14:45:54 ]
Заголовок сообщения:  Re: Расчет RMS

Помимо преобразования в signed, что совершенно естественно и на ряде платформ встроено прямо в АЦП, следует в этом тяжелом рекурсивном фильтре находить простое среднее, дабы учесть недетерминированные оффсеты (у ОУ, у делителя смещения ОУ, у самого АЦП и т.п.) и вместе с преобразованием в signed сразу компенсировать это смещение.
Ну а находить RMS при неизвестном периоде собственно и можно одним из двух способов. Очень длинным накоплением, чтобы ошибка растворилась в усреднении, либо преобразованием в спектральную область и нахождением RMS через амплитуды гармоник.

Автор:  YS [ Сб янв 20, 2018 09:47:39 ]
Заголовок сообщения:  Re: Расчет RMS

Цитата:
находить простое среднее, дабы учесть недетерминированные оффсеты


Мне кажется, что это надо решать отдельной калибровкой. В самом деле, если мы измеряем постоянное напряжение, то RMS и среднее совпадут, так что при вычитании мы получим ноль. :idea:

Рассчитывать RMS через амплитуды гармоник - это круто. :) Я думаю, так заморачиваться имеет смысл только если кроме среднеквадратичного значения мы хотим получить еще и коэффициент мощности, например.

Автор:  КРАМ [ Сб янв 20, 2018 11:47:36 ]
Заголовок сообщения:  Re: Расчет RMS

Отдельная калибровка отличается от измерений лишь тем, что нет сигнала. Но определяется ноль ровно также - тяжелым рекурсивным или длинным КИХ фильтром.
Что касается постоянного напряжения, то обычно это РАЗНЫЕ режимы прибора. Потому что прибор не может определить хотелки юзера на предмет измерений, а реальный сигнал может содержать и переменную и постоянную составляющие.

Добавлено after 4 minutes 40 seconds:
Я думаю, так заморачиваться имеет смысл только если.

Так заморачиваться стоит при ЛЮБОМ шумоподобном сигнале. Тем более, что БПФ не слишком сложная математическая процедура.
Заодно и спектральную плотность поимеем. Вообще говоря, для общего случая сигналов RMS принять измерять селективным вольтметром. С заданием полосы анализа.

Автор:  DenChik87 [ Сб фев 24, 2018 06:27:12 ]
Заголовок сообщения:  Re: Расчет RMS

ваши отсчеты (125 штук) должны длиться ровно 20 мс, и тогда вам не надо отслеживать "начало" синусоиды.
вы обязаны интегрировать обе полуволны синусоиды, и положительную, и отрицательную, для чего сместите её на Uref/2, а из результата преобразования ADC отнимайте 512 - получится, что АЦП у вас выдает значение от -511 до +512.
как-то так...

Впринципи все так и сделал как вы сказали. Мои 125 преобразований дляться как раз 20мс, тут я не ошибся. Сместил в проткусе синусоиду на Uref/2=5/2=2,5В, а затем вычитал из каждого преобразования 512, далее по формуле и результат получился верный.
Спасибо всем за ответы за очередную помощь в освоениии MK, особенно ARV :beer: Мир всем котам :music:

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/