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

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


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

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

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

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

  Разрешено не более 75 смайлов.

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

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

Загрузка...

  • Сообщения

    • Не знаю, по теме ли, но может быть поможет кому... У меня вот три одинаковых случая было с ATtiny2313. Шил я их с помощью PonyProg2000, через самодельный программатор на COM-порте. Проблема возникла такая - игрался я значит с этим камешком, что-то шил туда, совал в схему (ISP-разъемов я не делаю, просто таскаю камень из панельки в панельку), тестил, отлаживал, снова шил - в общем, вы в курсе ...  Фьюзы не трогал... И вдруг, при очередном подключении микрухи к программатору и попытке его прошить Поня выкидывает окошко - "Error (-24) - unknown device!", и все! И это при том, что будучи сунут в схему камень-то пашет!!! А с Поней почему-то общаться не хочет... Снаяала я тоже подумал, что фьюзы забились - доктора разработал, собрал, оттестил на рабочих МК (и даже статью про него в "Радиоконструкторе" опубликовал ); но прогнал через доктора болящих и... ни-че-го! Опять долбанная (-24)!!! Тогда, окончательно психанув (столько времени на "Доктора" потратил!), я крикнул "клизму им!", и в сообщении об ошибке нажал не как всегда "Cancel" (типа, отказаться от затеи), а "Ignore" (типа, наплевать, что МК не отвечает, и залить в него прошивку через ж##у)... И - о чудо! - новая прошивка залилась в микруху, и она абсолютно нормально заработала! То же и при попытке прочитать МК или его фьюзы - Поня ругается, мол камень не отзывается, не вижу его; а я ей - "Ignore" - типа, все равно пытайся! И микр нормально прочитался, и все фьюзы его тоже!.. Вот такая вот "трю стори"...  А если прикинуть, что же привело микруху к такой необщительности, то я думаю, что виной всему статическое напряжение на наших руках (хотя, котэ я не держу )... Не зря же про него так навязчиво пишут практически во всех дата-шитах!.. Минздрав, как говорится, предупреждал!..
    • Роман, ну, есть же люди - мастера в своём секторе деятельности, а рядышком никак...
      Рассказывал напарник про его коллегу, аспиранта, который три года делал блок питания, но дальше овощного ящика и диодного моста не ушёл.
    • Асхат, Настройка передатчика это искусство.Тут включается всё и опыт и знание и смекалка,само собой и умение пользования кип.
    • Богдан, А потом займись его изучением как его эксплуатировать и проводить измерения
    • Играюсь, в основном, с "мелкотой" - ATtiny2313 и ATtiny13, т.к. для неболших поделок в дом и в автомобиль их функциональности вполне хватает - зачем же тогда переплачивать за "навороченные" меги? А единственным вменяемым выбором для "малышей" является "Тетя Ася". MicroPascal, конечно же, прекрасен, но его аппетиты по отношению ко Flash-памяти ставят крест на всех его достоинствах; да и библиотек к нему пока что маловато... А Сю я не люблю с самого начала за душевнобольной синтаксис - от обилия черточек натурально болят глаза... А вот в новомодных Ардуинах нужды пока что не испытываю - во-первых, и Тинек хватает; а во-вторых жду, когда гуманисты наконец-то создадут Pascal-образную среду для этих девайсов... К Сям я, как видите, не толерантен - модератор, можете банить!
    • Это как в вождении авто,помимо знания смысла дорожных знаков и правил надо еще и уметь водить машину и знать устройство и принцип работы всех узов автомобиля.Что бы смог отремонтировать.
      А ты хочешь знать только что обозначают дорожные знаки и толку с этого?
      Так и в радиотехнике,мало знать условные графические обозначения,надо ещё знать устройство и принцип работы всех деталей, узлов и каскадов.И два дня будет мало чтоб узнать. https://vk.com/doc146041070_429173772
    • Посмотрел, да, в отличие от NRF24L01 у RXQ2-433 есть broadcast плюс вроде бы можно использовать один адрес для множества конечных устройств. Можно было бы всех посадить на один адрес, а адресацию организовать программно. В таком случае любое устройство могло бы инициировать передачу, первоначально прослушав, нет ли активного обмена данных между другими устройствами. Короче, надо вначале разобраться, что на самом деле мне нужно. Возможно, поллинг был бы все же наиболее определенным процессом. Кстати, судя по всему эти RXQ2-433 не так легко найти?