blackfin 16 4 апреля, 2020 Опубликовано 4 апреля, 2020 · Жалоба 4 minutes ago, Plain said: Без разницы, как, но никакого окна ни в официальных бумажках, ни наяву, там точно нет, потому что метрологически это уничтожение сигнала. Если заранее известно, что сигнал периодический, то по одному периоду сигнала можно однозначно восстановить все "уничтоженные" значения сигнала. Поэтому с точки зрения метрологии уничтоженные значения сигнала никакой новой информации о сигнале не содержат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 4 апреля, 2020 Опубликовано 4 апреля, 2020 · Жалоба Уничтожается сигнал на краях окна. Чтобы сохранить площадь окна, равную прямоугольному, логично увеличить масштаб по амплитуде (в центре будет не 1, а больше). И всё. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 168 4 апреля, 2020 Опубликовано 4 апреля, 2020 · Жалоба 15 минут назад, blackfin сказал: Если заранее известно, что сигнал периодический Да, реализуемая 100% сил пользователя завлекуха под названием SETACV SYNC, я читал паспорт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 4 апреля, 2020 Опубликовано 4 апреля, 2020 · Жалоба --------------- Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 4 апреля, 2020 Опубликовано 4 апреля, 2020 · Жалоба 19 hours ago, blackfin said: Сколько Вольт покажет ваша формула при измерении RMS синусоиды с амплитудой 1 Вольт за время измерения 0.16 секунды ? Ну, наконец, что-то конкретное. Моя формула показывает квадратный корень из 1/2. Ничего удивительного. Ведь считается именно RMS. Разумеется, что при целочисленных выборках АЦП, появятся неточности, но ведь мы проверяем алгоритм. Не верите -- ищите ошибки: #include <stdio.h> #include <stdlib.h> #include <math.h> #define INTERVAL_SEC 0.16 #define FREQ 50.0 #define SAMPLING_F_HZ 1000.0 #define MAX_SAMPLES 300 #define AMPLITUDE_V 1.0 #define OFFSET (AMPLITUDE_V + AMPLITUDE_V/2) #define TOTAL_SAMPLES (INTERVAL_SEC * SAMPLING_F_HZ) #define PERIOD_IN_SAMPLES (SAMPLING_F_HZ/FREQ) #define PERIODS (INTERVAL_SEC*FREQ) double sin_samples[MAX_SAMPLES]; void generate() { int i; for(i = 0; i < TOTAL_SAMPLES; i++){ sin_samples[i] = AMPLITUDE_V * sin(2 * M_PI * (double)i / PERIOD_IN_SAMPLES); sin_samples[i] += OFFSET; } } double rms_square() { int i; double sum = 0; double sum_square = 0; double sample, result; for(i = 0; i < TOTAL_SAMPLES; i++){ sample = sin_samples[i]; sum += sample; sum_square += sample * sample; } result = sum_square - sum * sum/TOTAL_SAMPLES; result /= TOTAL_SAMPLES; return result; } int main() { int i; if(TOTAL_SAMPLES > MAX_SAMPLES){ printf("Error: %d is too high sampling rate for the buffer size\n", MAX_SAMPLES); exit(1); } printf("periods = %f DC offset: %f samples: %d\n ", PERIODS, OFFSET, (int)TOTAL_SAMPLES); generate(); #ifdef DEBUG for(i = 0; i < TOTAL_SAMPLES; i++){ printf("%f\n", sin_samples[i]); } #endif printf("square RMS: %f\n", rms_square()); return 0; } Печатает: periods = 8.000000 DC offset: 1.500000 samples: 160 square RMS: 0.500000 Для GCC компилировать командой: gcc test.c -lm -DDEBUG -g или без отладки gcc test.c -lm 15 hours ago, ViKo said: Уничтожается сигнал на краях окна. Чтобы сохранить площадь окна, равную прямоугольному, логично увеличить масштаб по амплитуде (в центре будет не 1, а больше). И всё. Окно не по этой причине используют. Без окна аппаратная функция будет sin(x)/x с длинными хвостами. С окном она будет прямоугольной без вылезания на соседние точки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 4 апреля, 2020 Опубликовано 4 апреля, 2020 · Жалоба 160 мс - это ровно 8 периодов 50 Гц. Посчитайте для 150 мс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 4 апреля, 2020 Опубликовано 4 апреля, 2020 · Жалоба 7 hours ago, ViKo said: 160 мс - это ровно 8 периодов 50 Гц. Посчитайте для 150 мс. periods = 7.500000 DC offset: 1.500000 samples: 150 square RMS: 0.498228 0.3544 % а после извлечения корня: 0.1774% Это получилось за счет того, что неполный период сместил положение среднего значения. За 1.15 секунды: periods = 57.500000 DC offset: 1.500000 samples: 1150 square RMS: 0.499970 Вклад неполного периода значительно меньше. за 1 период: periods = 1.000000 DC offset: 1.500000 samples: 20 square RMS: 0.500000 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 10 hours ago, Tarbal said: Печатает: OK. Спасибо.. В МАТLAB'е это всё существенно короче: clear all; A = 1.0; % Амплитуда сетевой гармоники [В] T = 0.16; % Интервал измерения [сек] fd = 1.0e5; % Частота дискретизации [Гц] dt = 1/fd; % Шаг дискретизации [сек] t = 0:dt:T; for i = 1:2000 Fs(i) = 45.0+0.01*(i-1); % Частота сетевой гармоники [Гц] St = A*sin(2*pi*Fs(i)*t); % Сетевая гармоника RMS(i) = sqrt(var(St)); % Квадратный корень из дисперсии ERR(i) = abs(RMS(i)-A/sqrt(2.0)); % Ошибка измерения RMS [В] end; figure(1); plot(Fs,ERR,'b'); axis tight grid on xlabel('Частота сети [Гц]') ylabel('Ошибка измерения RMS [В]') legend('Ошибка измерения RMS [В]'); 6 hours ago, Tarbal said: а после извлечения корня: 0.1774% Надеюсь, теперь вам наконец понятно, какова точность вашей формулы для RMS.. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 16 minutes ago, blackfin said: OK. Спасибо.. Надеюсь, теперь вам наконец понятно, какова точность вашей формулы для RMS.. :) А вы своей формулой посчитайте. Ошибка из-за неточности измерения среднего, потому, что неполный период. Когда точно, то ошибка 0% Покажите за 150 миллисекуд результат. Заодно учтите, что я сместил на полтора вольта, чтобы АЦП не выходил за пределы. Добавьте-ка 100 милливольт смещения к вашей формуле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 12 minutes ago, Tarbal said: А вы своей формулой посчитайте. Ошибка из-за неточности измерения среднего, потому, что неполный период. Когда точно, то ошибка 0% Покажите за 150 миллисекуд результат. Ну я уже десять раз давал здесь ссылку на результат "своей" формулы: Ошибка измерения RMS с окном Гаусса 12 minutes ago, Tarbal said: Добавьте-ка 100 милливольт смещения к вашей формуле. Добавлял уже и 100 милливольт. Ошибка в RMS не превышает 0.01%. Посмотрите несколькими постами выше. Или вам нужен именно график? PS. Точнее, добавлял не 100 милливольт, а 10 милливольт. Ошибка в 100 милливольт (т.е., 10% шкалы) после калибровки это как-то выходит за рамки моего понимания.. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 6 minutes ago, blackfin said: Ну я уже десять раз давал здесь ссылку на результат "своей" формулы: Ошибка измерения RMS с окном Гаусса Добавлял уже и 100 милливольт. Ошибка в RMS не превышает 0.01%. Посмотрите несколькими постами выше. Или вам нужен именно график? PS. Точнее, добавлял не 100 милливольт, а 10 милливольт. Ошибка в 100 милливольт (т.е., 10% шкалы) после калибровки это как-то выходит за рамки моего понимания.. :) Моя формула устойчива со 150% шкалы. Даже 500% не изменят результата. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 6 minutes ago, Tarbal said: Моя формула устойчива со 150% шкалы. Вопрос не в устойчивости формулы, а в её точности и в границах её применимости. Что касается калибровки, то она нужна и для вашей чудо-формулы, потому как кроме калибровки нуля, нужно калибровать ещё и масштаб по напряжению. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 8 minutes ago, blackfin said: Вопрос не в устойчивости формулы, а в её точности и в границах её применимости. Что касается калибровки, то она нужна и для вашей чудо-формулы, потому как кроме калибровки нуля, нужно калибровать ещё и масштаб по напряжению. Не придирайтесь к словам. Именно о точности я и говорю. Если для массовой продукции делитель окажется неточным ипи поплывет от температуры, то он внесет свой вклад в ошибку при вашем подходе. Разные приборы будут давать разный результат. Скажите, я один здесь вижу, что дисперсия и RMS без постоянной составляющей вычисляются по одной и той же формуле? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 22 minutes ago, Tarbal said: Если для массовой продукции делитель окажется неточным ипи поплывет от температуры, то он внесет свой вклад в ошибку при вашем подходе. А вот тут, пожалуйста, подробнее.. :) Каким это образом ваша чудо-формула решает эту проблему? Неточный делитель изменяет коэффициент передачи сигнала на входе АЦП. В результате на выходе АЦП будет увеличенное или уменьшенное в (1.0+err) раз напряжение сигнала. То есть, в формулу для отсчетов сигнала вам вместо AMPLITUDE_V нужно подставлять: AMPLITUDE_V * (1.0+err). Как без калибровки вы собираетесь устранять эту ошибку??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 9 hours ago, blackfin said: А вот тут, пожалуйста, подробнее.. :) Каким это образом ваша чудо-формула решает эту проблему? Неточный делитель изменяет коэффициент передачи сигнала на входе АЦП. В результате на выходе АЦП будет увеличенное или уменьшенное в (1.0+err) раз напряжение сигнала. То есть, в формулу для отсчетов сигнала вам вместо AMPLITUDE_V нужно подставлять: AMPLITUDE_V * (1.0+err). Как без калибровки вы собираетесь устранять эту ошибку??? Я о делителе, создающем смещение, чтобы поднять отрицательную полуволну. Такое ощущение, что у вас память как у рыбки в аквариуме. Я почти в каждом сообщении вам об этом талдычу, а вы в упор не хотите этого слышать. Уверен, что вы полное совпадение формулы вычисления дисперсии с определением RMS тоже выборочно проигнорировали. Мне переливание из пустого в порожнее уже наскучило. Вы конечно пользуйтесь своей чудо формулой. Однако моя работает во многих проектах для массовой продукции с 1998 года. Я это знаю точно. Сам использовал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться