Q-ti

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

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

Q-ti    3

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

3.jpg

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


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

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
Alexeyslav    576

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

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


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

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

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


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

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

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


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

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

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

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

 

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

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


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

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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


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

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

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


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

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

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

 

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


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

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

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


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

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

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/

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


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

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

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

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

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

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

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

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...