дискретное преобразование фурье на AVR\Pic24F

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение спящий »

Подскажите я правильно ПФ понял?
Спойлерhttp://lightportal.at.ua/publ/spektroanalizatory/12_kanalnyj_analizator_spektra_na_atmega16_na_osnove_diskretnogo_preobrazovanija_fure_dpf_i_uolsha/18-1-0-55
Суть такая У нас есть измерянный сигнал 512 выборок(в зависимости от дискритизации АЦП 19000 и частоты(150Гц)), потом мы делаем массив идеальной синусойды.

Потом как бы натягиваем Идеальную на Измеренную находя среднее реальное и мнимое значения.
Re = A*cos[];;
Im = A*sin[];
A - выборки sin,cos- массив.

находим Амплитуду частоты спектра 150Гц = sqrt(Re^2+Im^2);

ЦАП делаем так чтобы измерение начал от пересечения напряжения с 0 в U+,чтобы совпало с СИНУСОМ по ФАЗЕ ну соответственно и выборки ?
Вложения
Безымянный2.JPG
(19.77 КБ) 686 скачиваний
Реклама
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение Alexeyslav »

что значит "натягиваем"? нет такого понятия в математике...

не нужно синхронизировать с нулем.
Реклама
спящий
Потрогал лапой паяльник
Сообщения: 303
Зарегистрирован: Сб янв 08, 2011 13:48:41

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение спящий »

Короче,идеальную синусойду умножаем на измереную?)
Re = A*cos[];;
Im = A*sin[];
Они же должны совпадать по фазе?
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6312
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение Jack_A »

Только по частоте. В результате вычисления соотношение действительной и мнимой части определит сдвиг фазы измеренного сигнала относительно начала отсчета ( соответственно, относительно "опорной" синусоиды. ) Амплитуда в любом случае будет рассчитана одинаково.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение baghear »

Добрый день, подскажите пожалуйста программу в которую можно было бы вбить отсчеты полученные с АЦП, чтобы она построила спектр?
Реклама
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение YS »

Я бы записал отсчеты в формате WAV-файла (он очень простой), а потом открыл бы его звуковым редактором. Строить спектры умеют почти все звуковые редакторы...

Хотя вопрос, какой частотный диапазон вас интересует. Ну а так, стандартные пути - построить спектр в MathCAD или MatLab. Можно и самому сообразить простенькую программку для построения спектра, на Python или Lua, например (разумеется, используя готовую библиотеку БПФ).
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Реклама
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение baghear »

Mathcad уже скачал, но не нашёл примера как нарисовать спектр имея отсчёты.
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение baghear »

Может кто-нибудь подскажет как имея отсчеты в маткаде построить спектр?Или в др программе.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение YS »

1. Что за АЦП?
2. Какая разрядность и частота дискретизации?
3. В каком виде у вас отсчеты (текстовый файл, бинарный файл)?

А так, в MathCAD есть функции READPRN и WRITEPRN для того, чтобы, соответственно, загружать данные из текстового файла и экспортировать их туда. Соответственно, загружаете данные, применяете функцию БПФ и строите график.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение baghear »

1.Встроенный в stm32f103
2.12 бит и 1М
3.Отсчеты получаю в программе, планировал вводить в ручную.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение YS »

Отсчеты получаю в программе, планировал вводить в ручную.
:shock:

Вот у вас частота дискретизации 1 MSPS. Значит предельная частота по Котельникову 500 kHz. Пускай мы хотим получить разрешение по частоте хотя бы 1 kHz. Тогда для одного преобразования нам потребуется как минимум 1 MSPS / 1 kHz = 1000 отсчетов.

Вы хотите вбивать тысячу чисел вручную? :shock: Так-то проблем нет, тогда вам даже READPRN/WRITEPRN не нужен. Просто берете, вбиваете табличку и применяете БПФ.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение baghear »

То есть от количества отсчетов зависит разрешение по частоте.
А Вы не могли бы скинуть скрин, как это сделать?
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение YS »

То есть от количества отсчетов зависит разрешение по частоте.
Разумеется. Это базовое свойство дискретного преобразования Фурье. Размер результирующего буфера равен размеру исходного, в результирующем буфере умещаются частотные компоненты от нулевой частоты до частоты дискретизации. Соответственно, одна выборка соответствует диапазону Fd/N, где Fd - частота дискретизации, N - количество выборок, и в силу теоремы Котельникова-Найквиста смысл имеет только половина отсчетов - до N/2.
А Вы не могли бы скинуть скрин, как это сделать?
Пока нет, может быть попозже. Но так - вводите вектор и применяете к нему функцию FFT(). Как ввести вектор, как применить функцию и построить график - все это описано в документации, да и гуглится неплохо.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
L.O.D
Встал на лапы
Сообщения: 139
Зарегистрирован: Чт фев 11, 2016 18:35:37

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение L.O.D »

baghear писал(а):Может кто-нибудь подскажет как имея отсчеты в маткаде построить спектр?Или в др программе.
В матлабе это выглядит так:

Код: Выделить всё

SampleLen = 256;
X = dlmread('data.txt', ';');
Y = fft(X,SampleLen);
Pyy = Y.*conj(Y)/SampleLen;
f = 1/SampleLen*(0:SampleLen-1);
plot(f(1:SampleLen/2),Pyy(1:SampleLen/2))
title('Power spectral density')
xlabel('Frequency (Hz)')
data.txt:
"0.5543
0.8368
0.3292
0.2837
0.3915
1.0738
..."

Изображение

А можно и написать что-то свое для ББ:

Изображение

Вложения
FftCalc.png
(2.43 КБ) 1006 скачиваний
MatLabGraph.png
(8.7 КБ) 1015 скачиваний
- Из овощей я больше всего люблю пельмени... © Соседский Мальчик
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение baghear »

Спасибо!!!
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

Re: дискретное преобразование фурье на AVR\Pic24F

Сообщение aam »

Здравствуйте! Смотрю пример ЦМУ на микроконтроллере, видео работы: yadi.sk/i/D2EXuk__a9eeB и yadi.sk/i/gWmp0aXTZjFRn
и не могу понять - то ли видео у меня тормозит, то ли действительно мигание отстает от звука из-за слишком медленной обработки? :shock:
Ответить

Вернуться в «Разные вопросы по МК»