ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
1113022
misyachniy (29.06.2021 12:35 - 12:50, просмотров: 1828)
Переделываю программу измерения напряжения с выводом двойной амплитуды в действующее. 

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

Переписал на среднеквадратичное значение, добавил коэффициент усиления - не получается результат.

Посмотрел в Интернете - предлагают измерять за период. Добавил измерение толька за целые периоды.

Вот текущая функция делал по 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мВ не получится