реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как определить частоту сигнала, используя микроконтроллер MSP430F1611
EasenMan
сообщение Jul 15 2010, 09:16
Сообщение #1





Группа: Участник
Сообщений: 8
Регистрация: 15-07-10
Пользователь №: 58 460



Не могу определить частоту сигнала с датчика. Датчик мереет ускорение, на выходе у него цифровой сигнал. Максимальная частота дискретизации 3200 Гц. Полезный сигнал находится в диапазоне 0 - 80Гц. В схеме используется микроконтроллер MSP430F1611, который собственно и измеряет частоту. Раньше использовался аналоговый датчик сигнал с которого оцифровывался с частотой 10 кГц. Накапливался буфер с 2000 отсчетами, отфильтровывался и пропускался через компаратор который детектировал переходы через 0. Вобсчем то частоту определял достаточно верно, но с переходом на новый датчик такой алгоритм не устраивает. Из за малой частоты дискретизации возникает большие погрешности. Как более точно рассчитать частоту сигнала?
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 15 2010, 14:07
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Для определения периода используйте любой из двух таймеров в режиме захвата (capture). За подробностями использования обратитесь к User's Guide. Могу порекомендовать для расширения разрядности 16-и разрядных таймеров использовать 32-х битную переменную, которую инкрементировать в прерывании от переполнения таймера на величину его разрядности (65536). Сумма этой переменной и регистра CCRx даст вам возможность определять период довольно точно, даже для низкочастотных сигналов при высокочастотном тактировании таймера. На, а как пересчитать период в частоту, думаю, вы и сами знаете wink.gif
Кстати, нижний диапазон 0Гц не бывает. Всегда есть какая-то минимальная частота от значения которой выбирается период наблюдения. Потому как частоту 0Гц вы должны наблюдать бесконечно большое время, чтобы наконец сделать вывод, что частота именно 0Гц. laughing.gif
Go to the top of the page
 
+Quote Post
EasenMan
сообщение Jul 16 2010, 07:23
Сообщение #3





Группа: Участник
Сообщений: 8
Регистрация: 15-07-10
Пользователь №: 58 460



rezident
Спасибо за ответ, только я наверно неправильно задачу поставил, или вы меня не поняли. Сигнал с датчика приходит по интерфейсу SPI. В самом датчике Имеется АЦП с максимальной частотой дискретизации 3200Гц. Тоесть я накапливаю отсчеты некого сигнала (синусоида, с шумами, которая проходит простенький НЧ цифр. фильтр), а потом с помощью этого буфера надо рассчитать период этого сигнала. Дык вот тут то и вся загвоздка. Этот вопрос скорей всего к математике относится smile.gif . Так что таймер тут не поможет unsure.gif
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jul 16 2010, 07:43
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



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

Хотя вся система какая-то странноватая (мягко говоря).
Я бы лучше вместо АЦП компаратор поставил


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
EasenMan
сообщение Jul 16 2010, 09:04
Сообщение #5





Группа: Участник
Сообщений: 8
Регистрация: 15-07-10
Пользователь №: 58 460



MrYuran
Ну я так и делаю, ток опять же говорю, частота маловата, а увеличить не могу. Думаю может провести какую аппроксимацию в точках ближайших к 0. laughing.gif . Ну а в системе нет ничего санного, к МК подключен акселерометр ADXL345, с целью измерения вибрации rolleyes.gif
Go to the top of the page
 
+Quote Post
rezident
сообщение Jul 16 2010, 12:01
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



EasenMan, действительно, ваш вопрос относится к методам обработки сигнала и MSP430 тут не при делах. Если только учитывать его ограниченные ресурсы при выборе методов фильтрации.
Go to the top of the page
 
+Quote Post
SSerge
сообщение Jul 16 2010, 12:57
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Цитата(EasenMan @ Jul 16 2010, 16:04) *
MrYuran
Ну я так и делаю, ток опять же говорю, частота маловата, а увеличить не могу. Думаю может провести какую аппроксимацию в точках ближайших к 0.

А почему бы и нет?
Вблизи нуля кусок синуса можно аппроксимировать вообще полиномом 1-й степени, путём минимизации среднеквадратичной ошибки.
Для этого случая нужные формулы вообще на бумажке выводятся и насчитывать там, насколько помню нужно только сумму отсчётов и сумму квадратов отсчётов, дольше всё вычисляется.

Нужно только для начала хотя бы грубо оценить период чтобы попасть в окрестность, далее медленные изменения частоты уже можно отслеживать системой типа ФАПЧ.



--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
AlexU
сообщение Jul 17 2010, 13:12
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 31-05-06
Пользователь №: 17 639



Цитата(rezident @ Jul 16 2010, 15:01) *
EasenMan, действительно, ваш вопрос относится к методам обработки сигнала и MSP430 тут не при делах. Если только учитывать его ограниченные ресурсы при выборе методов фильтрации.

Точно, можно и спектр посчитать. Хотя так и не понятно какая нужна погрешность. Если диапазон 5..95 Гц и погрешность 0.1 Гц, то Mega8 (ближайший из авр-ок к MSP430F1611) 12MГц считает ~2.5 сек, а LPC1114 считает ~0.3 сек
Go to the top of the page
 
+Quote Post
EasenMan
сообщение Jul 18 2010, 17:50
Сообщение #9





Группа: Участник
Сообщений: 8
Регистрация: 15-07-10
Пользователь №: 58 460



Диапазон в районе 10-80 Гц. Допустима погрешность 0.1 Гц. Скорость обработки критична, т.к. информация выводится на дисплей, с частотой 1 Гц (можно конечно и увеличить, но не желательно). Попробую использовать систему с ФАПЧ, дабы грубо определить период возможно. Можно конечно определить спектр, но сдесь опыта нет , придется книжки читать smile.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 09:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01426 секунд с 7
ELECTRONIX ©2004-2016