Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Измерение КНИ
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
kolisnichenko_r
Нужно измерить коэффициент нелинейных искажений (погрешность 1%) и фазы каждой гармоники (погрешность 1%) (по 9-тую включительно) сети 220В, 50Гц. Думаю сделать это так: 1) взять 200 отсчетов за период(20мсек.), разрядность АЦП 10бит; 2) разложить в ряд Фурье (ДПФ); 3) выбрать из ряда 3,5,7,9 гармоники: вычислить их амплитуды и фазы; 4) подсчитать коэффициент нелинейных искажений.
Такая задача мне попалась впервые, цифровой обработкой не занимался, когда-то учил но на практике не применял. Слышал об эффекте взвешивания. Что за эффект, какую погрешность будет давать, как с ним бороться?
Designer56
Собственно, это не эффект взвешивания. Это эффект Гиббса, который проявляется при вычислении ДПФ на временном интервале, не равном целому числу периодов сигнала. Для того, чтобы как-то скомпенсировать его, применяется метод взвешивающих окон, но это нужно подробно изучать. Например, чтобы получить минимальную погрешность по амплитуде гармоник, применяют окно Хэннинга, для лучшего разрешения по частоте -Блэкман. Но этих окон великое множество, и каждое хорошо для своего случая. При точных измерениях Кг и КНИ с помощью спектрального анализа чаще всего синхронизируют либо тактовый генератор АЦП с измеряемым сигналом, либо измерительный сигнал от тактового генератора АЦП. При этом соотношение частот делают кратным простому числу. В этом случае краевые эффекты не проявляются совсем. Разумеется, размер массива для анализа должен быть таким, чтобы содержал целое число периодов исследуемого сигнала.
kolisnichenko_r
Беру 200 отсчетов за 1 период. Вот что получается при моделирровании в matlab6.5:
Нажмите для просмотра прикрепленного файла
Содержание файла:
Код
t=[0:1e-4:20e-3];
y1=200*sin(314*t);
y3=100*sin(314*3*t);
y5=50*sin(314*5*t);
y7=25*sin(314*7*t);
y=y1+y3+y5+y7;
x=[1:1:201];
for n=0:1:200
   x(n+1)=sum(y.*exp(-i*n*2*pi*50.*t));
end
for n=0:1:20
   z(n+1)=x(n+1);
   f(n+1)=x(n+1);
end
n=[0:1:20];
subplot(4,1,1),plot(n,abs(z));
subplot(4,1,2),plot(n,(angle(f)*180/pi));
i1=[0:1:200];
subplot(4,1,4),plot(i1,abs(x+1));
subplot(4,1,3),plot(t,y,t,y1,t,y3,t,y5,t,y7);

Может в формуле есть ошибки?
alex_os
Цитата(kolisnichenko_r @ Feb 13 2008, 11:15) *
x(n+1)=sum(y.*exp(-i*n*2*pi*50.*t));

Здесь кажется не правильно. А вообще проще fft() использовать. Скажите какая польза может быть от фаз гармоник?
kolisnichenko_r
Цитата(alex_os @ Feb 13 2008, 12:36) *
Здесь кажется не правильно. А вообще проще fft() использовать. Скажите какая польза может быть от фаз гармоник?

Так, для общего развития. fft() проще, но для программирования микроконтроллера нужно формулы обкатать, а потом как-то проконтролировать правильность результата измерения. Одного периода будет достаточно для заявленой точности?
kolisnichenko_r
x(n+1)=sum(y.*exp(-i*n*2*pi*50.*t)) - эта формула и функция fft() дают одинаковые результаты.
Мне не понятно, почему получаются гармоники на высоких частотах 9700кГц - 10кГц.
Может кто знает
alex_os
Цитата(kolisnichenko_r @ Feb 14 2008, 09:34) *
x(n+1)=sum(y.*exp(-i*n*2*pi*50.*t)) - эта формула и функция fft() дают одинаковые результаты.
Мне не понятно, почему получаются гармоники на высоких частотах 9700кГц - 10кГц.
Может кто знает

Дык это отрицателные частоты smile.gif. Так и должно быть ... Вам нужны частоты с индексами 0...N/2 (в матлабе +1)
kolisnichenko_r
Цитата(alex_os @ Feb 15 2008, 20:34) *
Дык это отрицателные частоты smile.gif. Так и должно быть ... Вам нужны частоты с индексами 0...N/2 (в матлабе +1)

Как промасштабировать ось частот, для получения вразумительного графика? Если есть матлабовский файл для примера, прикрепите пожалуйста.
Ghost2
Цитата(kolisnichenko_r @ Feb 18 2008, 09:11) *
Как промасштабировать ось частот, для получения вразумительного графика? Если есть матлабовский файл для примера, прикрепите пожалуйста.


Спектр периодический - высокочастотные гармоники на самом деле совсем не высокочастотные, просто частота через pi перевалила. Для получения нормальной картинки можно воспользоваться функцией fftshift. Получится, что частоты теперь идут от -pi до pi. Реальную ось частот можно вычислить так:

% N - количество отсчетов.
% T - время наблюдения.
f=(-N/2:N/2-1)*1/T;

PS. А лучше использовать fft - вторым аргументом можно добить последовательность нулями и получить большее разрешение (на пилу как-то неудобно смотреть).
kolisnichenko_r
Цитата(Ghost2 @ Feb 19 2008, 19:06) *
PS. А лучше использовать fft - вторым аргументом можно добить последовательность нулями и получить большее разрешение (на пилу как-то неудобно смотреть).

Как это оформить для записи в матлабе. Скинте файлик, просмотреть
ATname
Цитата(kolisnichenko_r @ Feb 14 2008, 09:34) *
x(n+1)=sum(y.*exp(-i*n*2*pi*50.*t)) - эта формула и функция fft() дают одинаковые результаты.
Мне не понятно, почему получаются гармоники на высоких частотах 9700кГц - 10кГц.
Может кто знает

У Вас имеет место быть конечное время наблюдения, что матлаб и учитывает. Отсюда высокие порядки гармоник... Матлаб штука честная, и бороться с этим не следует, лучше увеличивайте период наблюдения и делайте анализ в скользящем окне. Вообще есть книжка про цифровой спектральный анализ, ИМХО название типа: "Цифровой спектральный анализ и его применение", автор какой-то там ... - младший. В ентой книжке усё разжовано. Читайте и обрящите -wink.gif.
kolisnichenko_r
Цитата(ATname @ Feb 21 2008, 15:16) *
У Вас имеет место быть конечное время наблюдения, что матлаб и учитывает. Отсюда высокие порядки гармоник... Матлаб штука честная, и бороться с этим не следует, лучше увеличивайте период наблюдения и делайте анализ в скользящем окне. Вообще есть книжка про цифровой спектральный анализ, ИМХО название типа: "Цифровой спектральный анализ и его применение", автор какой-то там ... - младший. В ентой книжке усё разжовано. Читайте и обрящите -wink.gif.

Буду очень признателен, если возможно уточнить название и автора книги. Еще лутше ссылку места откуда можно ее скачать.
ATname
Цитата(kolisnichenko_r @ Feb 21 2008, 14:39) *
Буду очень признателен, если возможно уточнить название и автора книги. Еще лутше ссылку места откуда можно ее скачать.

С.Л. Марпл-мл. "цифровой спектральный анализ и его приложения". Откуда скачать, вопрос сложный, ща везде борются за авторские права. Со всеми вытекающими. -(
Может здесь: dsp-book.narod.ru/marpl.htm получится.
kolisnichenko_r
Цитата(ATname @ Feb 22 2008, 09:19) *
С.Л. Марпл-мл. "цифровой спектральный анализ и его приложения". Откуда скачать, вопрос сложный, ща везде борются за авторские права. Со всеми вытекающими. -(
Может здесь: dsp-book.narod.ru/marpl.htm получится.

Здесь: dsp-book.narod.ru/marpl.htm не получилось. Получилось сдесь:
http://www.phys-campus.uni-altai.ru/files/...5247/marpl.djvu
Спасибо
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.