Q

FFT-спектральный анализатор avr

11 сообщений в этой теме

Доброй ночи .
Как реализовать вывод на lcd в цифрах , частоты с максимальной амплитудой на промежутке от 0 до 120Гц. С частотой дискретизации 240 Гц .
Прошу помочь в написании кода , потому что в математике 0 .

 

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Оно и понятно. По таким исходным данным построить спектр будет весьма сложно, выборок маловато - у вас максимальная частота упирается прямо в предел теоретических возможностей, на практике это очень ресурсоёмкая вычислительная задача.

Дискретизацию надо поднять хотябы раз в 10 - до 2400Гц. тогда уже можно применять математику не упираясь в теоретический предел. Но всеравно конечность выборки даст о себе знать, точность будет так себе.

Суть метода проста - умножаем исходную выборку на синус интересующей нас частоты - это элементарная операция сдвига сигнала по частоте! Потом надо высчитать DC(постоянную) составляющую результирующего сигнала и у вас в кармане численная характеристика составляющей исходного сигнала выбранной частоты - ведь в результате сдвига выбранная частота сдвигается в постоянный ток(частота = 0).

Если не ошибаюсь, реализация такого алгоритма и называется ДПФ.

Только на практике из-за дискретности функции и конечности интервала выборки(объёма памяти) результат будет так себе, и для остроты пиков желательно перед применением ДПФ на входную выборку применить функцию "окна" - плавно свести начало и конец выборки к нулю, чтобы небыло разрыва.

Изменено пользователем Alexeyslav
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На пк я нашел похожую программу , но нужно на микроконтроллере  похожее сделать только вывод частоты с максимальной амплитудой на промежутке от 0 до 120Гц.

t.JPG

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

То что я и описал. Только учти, матиматика там ресурсоёмкая, контроллер нужен с достаточно большим объёмом памяти. Во-первых, чтобы поместить сам буффер(в программе это 256 семплов - если 16-битная выборка то 512 байт памяти нужно минимум) и во вторых, результат - это уже несколько больше, поскольку числа будут уже не целые... вобщем на дешёвых и широко распространённых контроллерах(типа меги 8-й) это реализовать НЕРЕАЛЬНО, нужны DSP-контроллеры иначе считать такую выборку как в программе будешь минуту.

Да, вижу в программе к выборке применяется окно Ханнинга.

И советую, сначала реализовать алгоритм на более человеческих условиях - делать всю математику на ПК на любом языке(хоть на бейсике в экселе, или на паскале), а уже ПОТОМ после того как получишь вменяемый результат переносить в МК ибо камней найдёшь массу, граблей насобираешь а делать это сразу на МК в сотню раз больнее.

Изменено пользователем Alexeyslav
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Q-ti сказал:

Прошу помочь в написании кода

Могу написать код за деньги. Если интересует - пишите в л.с.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, MagicianT сказал:

Похоже я и мои посты здесь невидимы.

Спасибо , посмотрю .

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

3
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Восстановить форматирование

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был востановлен.   Очистить редактор

Загрузка...

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу