Q

Прошу помощи в обработке сигнала в реальном времени avr

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

Всем добрый день . Есть такой сигнал который подаю на ацп 32атмеги . Нужно измерять частоту от 20 до 150Гц этого сигнала в реальном времени и выводить на lcd . Помогите с реализацией этой задачи .
Я так понимаю надо рыть в сторону быстрого преобразования Фурье или есть другие способы ?

3.jpg

0

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


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

Так тебе надо частоту измерять или частотный спектр? Чуть усилить, подать на вход таймера и измерять уже без проблем цифровым способом. И ещё зависит от того насколько быстро и точно надо выдавать результат - если 1Гц и 1с времени на измерение достаточно, тогда можно просто считать количество импульсов за период, если надо быстрее - тогда измерять период и выполнять деление 1/T потом пропустить через простейший оконный усредняющий фильтр и хоть на стрелочный прибор подавай.

0

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


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

Альтернативный вариант для БПФ - кросскореляция. Обеспечивает максимальную точность (кстати требования надо сразу указывать), но он ресурсоёмкий.

0

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


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

Мне нужна частота , достаточно обновления 1раз в секунду .

0

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


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

Нужно измерять частоту от 20 до 150Гц этого сигнала

"Этот сигнал" - 1 Кгц. Что значит частота 20...150 Гц ЭТОГО сигнала ? Какого "этого" и причём тут 20...150 ?
И что в Вашем понятии "реальное время" ? Это как ?

По подробнее можете описать задачу ? Из Ваших слов вообще ничего не понятно. Какие то отрывки мыслей, а не описание задачи...

 

PS: Ну и, собственно, самый главный вопрос - какую помощь от нас ждёте ? Чем конкретно помочь ?
 

0

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


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

На картинке да частота 1кГц но она может быть и меньше например 100Гц.

Допустим есть микрофон подключённый к ацп который может измерять ~ от 0 и до 20кГц .

А мне нужно измерять частоту в приделах от 20 до 150Гц и выводить на lcd .

Из этого всего как я понимаю нужно отфильтровать всё что выше 150Гц , а всё что ниже выводить на lcd с частой обновления 1с.

Прошу может кто писал подобный проект поделится исходником .

На просторах интернета я нашел то что мне нужно но там передача по uart , возможно кто то поможет править код так как для меня  в нем трудно разобраться .

0

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


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

Вам нужен обычный частотомер, на входе которого лог. уровни (без АЦП). Ищите примеры или проекты с кодом.
А синус в прямоугольники, как уже сказали выше, переводите обычным усилителем. Хотя бы на том же ОУ. На нём, заодно, и фильтр сделаете.
 

0

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


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

Боюсь не всё так просто. Во-первых, одна только задача вырезать всё начиная со 150Гц довольно трудно будет реализовать. Обычный фильтр что RC что LC даёт ослабление только 6дб/октаву, а чтобы достаточно хорошо отфильтровать "ненужное" понадобится фильтр не менее 6-7 порядка а там уже схема довольно громоздкая выходит на операционниках.

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

Но что-то мне подсказывает что не измерять частоту вам надо, а выводить спектральное распределение в указанном диапазоне частот. Ибо к примеру сигнал с микрофона нифига не одночастотный и что там частотомер намеряет за секунду... А если там будет двойной сигнал на 50Гц и 86Гц... что счетный частотомер покажет?

0

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


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

А вот мне тоже интересно что покажет . Пока буду без фильтров пробовать , а там будет видно ибо БПФ для меня тёмный лес .

0

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


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

А вот мне тоже интересно что покажет

Ерунду он вам покажет. Ибо мы так и не услышали ничего ни о форме входного сигнала, ни что вы собрались измерять в нём, ни .... Одни только догадки...
Боюсь, Вы сами с трудом понимаете, что Вам нужно. Отсюда и объяснить нормально не можете.

 

0

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


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

Совершенно верно , таким образом ничего толком не получилось .

0

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


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

И не удивительно что не получилось. Я предлагал метод кросс-кореляции, математика предельно проста

for(i=0; i < len; i++)
  {
    sum = 0;
    for(k=0; k < len-i; k++) sum += (rawData[k]-128)*(rawData[k+i]-128)/256;
  }

Тут называется авто-корреляция, наверно правильнее, но разницы особой нету как называть.  

http://www.akellyirl.com/reliable-frequency-detection-using-dsp-techniques/

0

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


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

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

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

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

  Разрешено не более 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 не так легко найти?