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

 
 
> измерение частоты аналогового сигнала, mega32
Spym
сообщение Mar 12 2008, 23:56
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 24-02-08
Из: Москва
Пользователь №: 35 348



Доброго времени суток.

Требуется измерять частоту аналогового сигнала при помощи АЦП в mega32, точнее - искать сигнал с частотой 4850 - 4990Гц.

Какие существуют методы обнаружения известной частоты?
Чем определяется необходимая частота дискретизации входящего сигнала?

Мне это представляется как отсчет времени между всплесками на заданную амплитуду, и поиском всплесков с заданным периодом, с дальнейшей статистической обработкой полученных данных.
С ЦОС практически не знаком...
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 24)
fmdost
сообщение Mar 13 2008, 01:09
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Цитата(Spym @ Mar 13 2008, 02:56) *
... С ЦОС практически не знаком ...

То-же.
Хочу сделать себе светамузычку. Вот что насобирал фильтры с укороченными коэффициэнтами, правда ссылка на первоисточник платная, мож кто поделится. Вот ещё есть програмка по расчёту фильтров, правда 1998года. Прикрепленный файл  FIR.RAR ( 614.06 килобайт ) Кол-во скачиваний: 140

Ув Камрады. Если кто знает доходчивый сайт или книжку, особенно применительно к экономии вычислительных ресурсов по теме, поделитесь, очень актуально, pls.
Go to the top of the page
 
+Quote Post
DimaD
сообщение Mar 13 2008, 09:33
Сообщение #3





Группа: Новичок
Сообщений: 10
Регистрация: 5-03-08
Пользователь №: 35 645



Цитата(Spym @ Mar 13 2008, 01:56) *
Требуется измерять частоту аналогового сигнала при помощи АЦП в mega32, точнее - искать сигнал с частотой 4850 - 4990Гц.


Сформулируйте точнее, что именно Вам необходимо.
Go to the top of the page
 
+Quote Post
Spym
сообщение Mar 13 2008, 13:06
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 24-02-08
Из: Москва
Пользователь №: 35 348



Сигнал этот есть выход микрофона, нужно определить наличие звука с частотой, близкой к 4920Гц.
Используется вход АЦП с усилением 200х.
Go to the top of the page
 
+Quote Post
Lexdaw
сообщение Mar 13 2008, 14:48
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 87
Регистрация: 5-02-08
Пользователь №: 34 772



Почему вы не хотите сделать на паре ОУполосовой аналоговый фильтр?Цифровой фильтр для не спеца вещь достаточно сложная.
Go to the top of the page
 
+Quote Post
GDI
сообщение Mar 13 2008, 14:58
Сообщение #6


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

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



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


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Mar 13 2008, 15:28
Сообщение #7


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(Lexdaw @ Mar 13 2008, 17:48) *
Почему вы не хотите сделать на паре ОУполосовой аналоговый фильтр?Цифровой фильтр для не спеца вещь достаточно сложная.

почему?

про аналоговый фильтр согласен. наличие/отсутствие определять по порогу
Go to the top of the page
 
+Quote Post
uriy
сообщение Mar 13 2008, 15:36
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Существует алгоритм Герцеля. Насколько я понял он предназначен для нахождения энергии некоторого небольшого количества спектральных составляющих. Вроде пишут что гораздо проще FFT.
Go to the top of the page
 
+Quote Post
Spym
сообщение Mar 13 2008, 15:36
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 24-02-08
Из: Москва
Пользователь №: 35 348



Цитата(GDI @ Mar 13 2008, 17:58) *
Поиск частоты - это фурье, чтобы найти одну частоту надо выполнить дискретное преобразование фурье, причем не быстрое, а полное.

Тогда хотелось бы ознакомиться с теорией фурье преобразований, если не существует упрощённых методов поиска частоты.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Mar 13 2008, 15:38
Сообщение #10


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(Spym @ Mar 13 2008, 18:36) *
Тогда хотелось бы ознакомиться с теорией фурье преобразований, если не существует упрощённых методов поиска частоты.

В любой книге по ЦОС. Кроме того, после того как освоитесь, не помешает использовать пакет fdatool из matlab это сильно упростит расчет и визуализацию фильтра.
Go to the top of the page
 
+Quote Post
megachip
сообщение Mar 13 2008, 15:54
Сообщение #11


Участник
*

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



Может подойдет что нибудь вроде lm567(Tone Decoder).
Go to the top of the page
 
+Quote Post
Dopler
сообщение Mar 13 2008, 20:19
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425



Как быстро необходимо дать ответ об обнаруженной частоте?
Можно применить синхронный детектор.
В памяти контроллера нужно хранить два сигнала - sin и cos требуемой частоты (две квадратуры) с такой же частотой дискретизации, какая будет у входного сигнала. Опорные сигналы должны содержать целое число периодов. Входной сигнал перемножается на опорные. Если разложить по формуле sin(a)*sin(cool.gif, то получится сумма синусов с частотами a-b и a+b, т.е. если частота a=b, то получается постоянная составляющая, плюс сигнал удвоенной частоты. Таким образом, если пропустить полученный сигнал (входной, умноженный на опорный) через ФНЧ, то сигнал двойной частоты отфильтруется, останется только постоянная составляющая. Ее амплитуда определяется как корень квадратный из суммы квадратов синусной и косинусной составляющей.

В данном случае можно сделать ФНЧ на 100 Гц (а можно и на 20, в зависимости от скорости, с которой надо давать ответ), корень квадратный можно попробовать вычислять таблицей, хотя если не нужны точные значения амплитуды сигнала искомой частоты, а нужно только детектировать ее наличие - то корень брать вообще не обязательно.
Go to the top of the page
 
+Quote Post
Spym
сообщение Mar 13 2008, 22:12
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 24-02-08
Из: Москва
Пользователь №: 35 348



Цитата
Можно применить синхронный детектор.[quote]
Наложение частоты?
Хотелось бы увидеть реализацию на С. Особенно фильтр нижних частот 07.gif .

или использовать таки быстрое Фурье.
Определять значение преобразования только для 4920гц?

Кстати, какой должна быть минимальная частота дискретизации?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 14 2008, 00:44
Сообщение #14


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Dopler @ Mar 14 2008, 00:19) *
Как быстро необходимо дать ответ об обнаруженной частоте?
Можно применить синхронный детектор.
************************************************************
Ее амплитуда определяется как корень квадратный из суммы квадратов синусной и косинусной составляющей.


Держу в руках старинную книжку
"Микропроцессорный комплект БИС серии К1815 для цировой обработки сигналов" М.:"Радио и связь",1992
Я ее не выбросил из-за одной цитаты (с.232)
Цитата
Yвых = max (|Y_Re|, 7/8 |Y_Re| + 1/2 |Y_Im|, 1/2|Y_Re|+7/8|Y_Im|, |Y_Im|)


Это касается приближенного вычисления амплитуды огибающей на выходе фильтра.
Заявленная погрешность 2.98%.
В формуле Y_Re, Y_Im - накопленные суммы в квадратурных каналах,
|x| - это я обозначил модуль значения (по-маткадовски)
Очень благородно! Пользовал лично, еще когда об аппаратном умножителе на аврках,пиках и мечтать не приходилось.

По-поводу собсно обнаружения, надо еще ловить динамику изменения этой огибающей, потому что в отсутствие сигнала у нас могут быть ложные срабатывания.
Ловить динамику можно скользящим средним с небольшим окном, дабы не добавлять задержки, плюс
отношение текущей огибающей к скользящему среднему.
Go to the top of the page
 
+Quote Post
DimaD
сообщение Mar 14 2008, 06:59
Сообщение #15





Группа: Новичок
Сообщений: 10
Регистрация: 5-03-08
Пользователь №: 35 645



Spym, не влазьте в преобразование Фурье, там просто утоните.

Прислушайтесь к Megachip, Вам может подойти lm567. Сам использовал.
С помощью конденсаторов и резисторов настраиваетесь на необходимую частоту. Если эта частота совпадет с входной частотой, тогда на выходе будете иметь лог. 1 (или лог. 0, точно не помню).
Go to the top of the page
 
+Quote Post
Spym
сообщение Mar 14 2008, 08:49
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 24-02-08
Из: Москва
Пользователь №: 35 348



Получается тут, что определить наличие частоты нужно не позже чем через 10мкс после её появления 07.gif . Видимо придётся сделать выбор в пользу аппаратного определения.
Цитата
Если эта частота совпадет с входной частотой, тогда на выходе будете иметь лог. 1 (или лог. 0, точно не помню).

"Совпадает"? с каким допуском? 1 или 0 означает наличие частоты?
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Mar 14 2008, 09:49
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(Spym @ Mar 14 2008, 11:49) *
Получается тут, что определить наличие частоты нужно не позже чем через 10мкс после её появления 07.gif . Видимо придётся сделать выбор в пользу аппаратного определения.

У Вас период искомой частоты больше 200 мкС. Определить ее наличие через 10 мкс не сможет ни программный, ни аппаратный вариант.
Go to the top of the page
 
+Quote Post
Spym
сообщение Mar 14 2008, 11:15
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 24-02-08
Из: Москва
Пользователь №: 35 348



ага. 30 периодов это ~6мс. придётся вносить поправки, хотя это и нежелательно. Но фурье или синхронный детектор вряд ли будут быстрее...
Go to the top of the page
 
+Quote Post
DimaD
сообщение Mar 14 2008, 11:19
Сообщение #19





Группа: Новичок
Сообщений: 10
Регистрация: 5-03-08
Пользователь №: 35 645



Spym, Вам нужно как минимум 1/5000Гц (если для определения частоты использовать период). Преобразование Фурье, как предлагали, Вы не сможете ну ни как закончить за 10мкс.

567 микросхема при наличии сигнала на входе изменяет свое состояние с 1 на 0 или наоборот.
Go to the top of the page
 
+Quote Post
GDI
сообщение Mar 14 2008, 11:34
Сообщение #20


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

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Быстрое фурье может считать ТОЛЬКО ВСЕ гармоники, а если надо только одну гармонику сигнала, то обычное фурье будет менее затратно по ресурсам, по сути это будет похоже на то что вам написали про синхронный детектор, т.е. ДПФ это сумма произведений входных отсчетов сигнала на cos и sin искомой частоты.
Я не знаю что у вас за задача, но фурье ведь можно считать и не на каждом периоде, т.е. накопили отсчеты на длину вашего фурье, потом начали считать коэффициенты для одной нужной гармоники, а входные сигналы в это время отбрасываете, по окончании расчетов опять запустили накопление. фаза входного сигнала при этом не важна, потому что спектр - это корень квадратный от суммы квадратов коэффициентов фурье.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
DimaD
сообщение Mar 14 2008, 11:48
Сообщение #21





Группа: Новичок
Сообщений: 10
Регистрация: 5-03-08
Пользователь №: 35 645



Позвольте Spym узнать, какое такое важное решение нужно принять за 10мкс?
Go to the top of the page
 
+Quote Post
GDI
сообщение Mar 14 2008, 12:45
Сообщение #22


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

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата
Кстати, какой должна быть минимальная частота дискретизации?

вы и теорему Котельникова не знаете? 07.gif минимальная частота дискретизации = 2Fmax.
Кстати, еще и антиальясинговый фильтр перед АЦП не помешает, чтобы частоты выше Fmax на вход не пропускал.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Spym
сообщение Mar 14 2008, 18:33
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 24-02-08
Из: Москва
Пользователь №: 35 348



я остановился на аппаратном фильтре. По этому слегка оффтопик:

Цитата
Позвольте Spym узнать, какое такое важное решение нужно принять за 10мкс?

Нужно определить момент появления частоты с возможно высокой точностью.

Цитата
567 микросхема при наличии сигнала на входе изменяет свое состояние с 1 на 0 или наоборот.

"The 567 is a general purpose tone decoder designed to provide a saturated transistor switch to ground when an input signal is present within the passband." © даташит. Как я понял из написанного, при совпадении частот на выходе появляется 0...?

И ещё, не совсем ясен вывод LOOP_FILTER. Емкость на нём определяет количество периодов, за которое будет определено совпадение частот? к OUTPUT_FILTER подключается нагрузочный резистор, но каковы его допустимые номиналы?
Go to the top of the page
 
+Quote Post
Spym
сообщение Mar 14 2008, 23:07
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 24-02-08
Из: Москва
Пользователь №: 35 348



Ступил извините. С 567 всё ясно.
Кроме
Цитата
при совпадении частот на выходе появляется 0...?


Сообщение отредактировал Spym - Mar 14 2008, 23:09
Go to the top of the page
 
+Quote Post
rezident
сообщение Mar 14 2008, 23:33
Сообщение #25


Гуру
******

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



Можно еще попробовать корреляционную функцию по дискретным отсчетам посчитать. Для определения есть/нет много точек не потребуется. В качестве второй функции для корреляции взять отсчеты синуса с требуемой частотой.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 10:02
Рейтинг@Mail.ru


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