|
измерение частоты аналогового сигнала, mega32 |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 24)
|
Mar 13 2008, 01:09
|

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

|
Цитата(Spym @ Mar 13 2008, 02:56)  ... С ЦОС практически не знаком ... То-же. Хочу сделать себе светамузычку. Вот что насобирал фильтры с укороченными коэффициэнтами, правда ссылка на первоисточник платная, мож кто поделится. Вот ещё есть програмка по расчёту фильтров, правда 1998года.
FIR.RAR ( 614.06 килобайт )
Кол-во скачиваний: 140Ув Камрады. Если кто знает доходчивый сайт или книжку, особенно применительно к экономии вычислительных ресурсов по теме, поделитесь, очень актуально, pls.
|
|
|
|
|
Mar 13 2008, 09:33
|
Группа: Новичок
Сообщений: 10
Регистрация: 5-03-08
Пользователь №: 35 645

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

Участник

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

|
Цитата(GDI @ Mar 13 2008, 17:58)  Поиск частоты - это фурье, чтобы найти одну частоту надо выполнить дискретное преобразование фурье, причем не быстрое, а полное. Тогда хотелось бы ознакомиться с теорией фурье преобразований, если не существует упрощённых методов поиска частоты.
|
|
|
|
|
Mar 13 2008, 15:54
|
Участник

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

|
Может подойдет что нибудь вроде lm567(Tone Decoder).
|
|
|
|
|
Mar 13 2008, 20:19
|
Местный
  
Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425

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

Участник

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

|
Цитата Можно применить синхронный детектор.[quote] Наложение частоты? Хотелось бы увидеть реализацию на С. Особенно фильтр нижних частот  . или использовать таки быстрое Фурье. Определять значение преобразования только для 4920гц? Кстати, какой должна быть минимальная частота дискретизации?
|
|
|
|
|
Mar 14 2008, 00:44
|
;
     
Группа: Участник
Сообщений: 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| - это я обозначил модуль значения (по-маткадовски) Очень благородно! Пользовал лично, еще когда об аппаратном умножителе на аврках,пиках и мечтать не приходилось. По-поводу собсно обнаружения, надо еще ловить динамику изменения этой огибающей, потому что в отсутствие сигнала у нас могут быть ложные срабатывания. Ловить динамику можно скользящим средним с небольшим окном, дабы не добавлять задержки, плюс отношение текущей огибающей к скользящему среднему.
|
|
|
|
|
Mar 14 2008, 06:59
|
Группа: Новичок
Сообщений: 10
Регистрация: 5-03-08
Пользователь №: 35 645

|
Spym, не влазьте в преобразование Фурье, там просто утоните.
Прислушайтесь к Megachip, Вам может подойти lm567. Сам использовал. С помощью конденсаторов и резисторов настраиваетесь на необходимую частоту. Если эта частота совпадет с входной частотой, тогда на выходе будете иметь лог. 1 (или лог. 0, точно не помню).
|
|
|
|
|
Mar 14 2008, 08:49
|

Участник

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

|
Получается тут, что определить наличие частоты нужно не позже чем через 10мкс после её появления  . Видимо придётся сделать выбор в пользу аппаратного определения. Цитата Если эта частота совпадет с входной частотой, тогда на выходе будете иметь лог. 1 (или лог. 0, точно не помню). "Совпадает"? с каким допуском? 1 или 0 означает наличие частоты?
|
|
|
|
|
Mar 14 2008, 09:49
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(Spym @ Mar 14 2008, 11:49)  Получается тут, что определить наличие частоты нужно не позже чем через 10мкс после её появления  . Видимо придётся сделать выбор в пользу аппаратного определения. У Вас период искомой частоты больше 200 мкС. Определить ее наличие через 10 мкс не сможет ни программный, ни аппаратный вариант.
|
|
|
|
|
Mar 14 2008, 11:19
|
Группа: Новичок
Сообщений: 10
Регистрация: 5-03-08
Пользователь №: 35 645

|
Spym, Вам нужно как минимум 1/5000Гц (если для определения частоты использовать период). Преобразование Фурье, как предлагали, Вы не сможете ну ни как закончить за 10мкс.
567 микросхема при наличии сигнала на входе изменяет свое состояние с 1 на 0 или наоборот.
|
|
|
|
|
Mar 14 2008, 11:34
|
Профессионал
    
Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008

|
Быстрое фурье может считать ТОЛЬКО ВСЕ гармоники, а если надо только одну гармонику сигнала, то обычное фурье будет менее затратно по ресурсам, по сути это будет похоже на то что вам написали про синхронный детектор, т.е. ДПФ это сумма произведений входных отсчетов сигнала на cos и sin искомой частоты. Я не знаю что у вас за задача, но фурье ведь можно считать и не на каждом периоде, т.е. накопили отсчеты на длину вашего фурье, потом начали считать коэффициенты для одной нужной гармоники, а входные сигналы в это время отбрасываете, по окончании расчетов опять запустили накопление. фаза входного сигнала при этом не важна, потому что спектр - это корень квадратный от суммы квадратов коэффициентов фурье.
--------------------
|
|
|
|
|
Mar 14 2008, 11:48
|
Группа: Новичок
Сообщений: 10
Регистрация: 5-03-08
Пользователь №: 35 645

|
Позвольте Spym узнать, какое такое важное решение нужно принять за 10мкс?
|
|
|
|
|
Mar 14 2008, 12:45
|
Профессионал
    
Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008

|
Цитата Кстати, какой должна быть минимальная частота дискретизации? вы и теорему Котельникова не знаете?  минимальная частота дискретизации = 2Fmax. Кстати, еще и антиальясинговый фильтр перед АЦП не помешает, чтобы частоты выше Fmax на вход не пропускал.
--------------------
|
|
|
|
|
Mar 14 2008, 18:33
|

Участник

Группа: Участник
Сообщений: 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 подключается нагрузочный резистор, но каковы его допустимые номиналы?
|
|
|
|
|
Mar 14 2008, 23:07
|

Участник

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

|
Ступил извините. С 567 всё ясно. Кроме Цитата при совпадении частот на выходе появляется 0...?
Сообщение отредактировал Spym - Mar 14 2008, 23:09
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|