Переделываю программу измерения напряжения с выводом двойной
амплитуды в действующее. В исходной программе находились точки пересечения напряжением нуля а затем между ними искались максимумы.
Переписал на среднеквадратичное значение, добавил коэффициент усиления - не получается результат.
Посмотрел в Интернете - предлагают измерять за период. Добавил измерение толька за целые периоды.
Вот текущая функция делал по https://habr.com/ru/post/193022/
m_Amplitude =0;
double square =0;
int left_margin = index_null[0];
int right_margin = index_null[i_null-1];
for (i=left_margin; i < right_margin; i++)
{
square = p_Data[i] - Mean;
m_Amplitude += square * square;
}
signal->Amplitude = sqrt(m_Amplitude/(right_margin - left_margin));
signal->Amplitude /= gain;
Вывел на чарт график после фильтра - амплитуда корректная.
У меня получается действующее 274мВ при 1000 входном. Допустим нужно 274 умножить на 2, так как пересечения нуля по два раза за период. Все равно 707мВ не получится