Страница 1 из 2

Цифровой фильтр, отследить частоты.

Добавлено: Вс сен 29, 2024 18:16:35
linkov1959
Идут фиксированные известные частоты от 300гц до 2кГц фиксированной длительности 0.5 и 1 сек. Нужно ловить процем определенные комбинации. В оригинале стоят на каждую частоту аналоговые фильтры. А без них нельзя?

Re: Цифровой фильтр, отследить частоты.

Добавлено: Вс сен 29, 2024 18:41:17
Martian
можно.

Re: Цифровой фильтр, отследить частоты.

Добавлено: Вс сен 29, 2024 20:16:51
linkov1959
Martian, а можно без АЦП и большой математики на одних прерываниях?

Re: Цифровой фильтр, отследить частоты.

Добавлено: Вс сен 29, 2024 20:20:55
Базилюк
Таймер в режиме захвата. Сигнал предварительно довести до прямоугольного компаратором.

Автор скорее всего решает задачу распознавания тональных посылок, как от телефонной станции?

Re: Цифровой фильтр, отследить частоты.

Добавлено: Вс сен 29, 2024 20:38:04
Martian
[uquote="linkov1959",url="/forum/viewtopic.php?p=4630347#p4630347"]а можно без АЦП и большой математики?[/uquote] можно.

Добавлено after 1 minute 18 seconds:
[uquote="Базилюк",url="/forum/viewtopic.php?p=4630350#p4630350"]Сигнал предварительно довести до прямоугольного компаратором.[/uquote] необязательно, наверное. По крайней мере, в такой постановке задачи это не ясно.

Re: Цифровой фильтр, отследить частоты.

Добавлено: Вс сен 29, 2024 20:55:00
Novice user
Если в любой момент времени передается только одна частота то да-можно таймерами,а если одновременно идет две частоты и более то тут только фильтр

Re: Цифровой фильтр, отследить частоты.

Добавлено: Вс сен 29, 2024 20:58:26
КРАМ
[uquote="linkov1959",url="/forum/viewtopic.php?p=4630347#p4630347"]а можно без АЦП и большой математики на одних прерываниях?[/uquote]С АЦП и очень несложной математикой будет гораздо проще. Вся математика - это дискретное преобразование Фурье на частоты детектирования.
На каждую частоту нужно две таблицы - синус и косинус. Каждый фильтр - это простое суммирование произведений. Отдельно косинус и синус. Потом сумма их квадратов и извлечение корня квадратного. Получается амплитуда попавшего в фильтр сигнала.

Re: Цифровой фильтр, отследить частоты.

Добавлено: Вс сен 29, 2024 21:03:42
Базилюк
Я сейчас на память не помню, но вот когда в 2000-х годах пошли стационарные телефоны с определителем номера ("Русь-25/27", "Палиха"), там был какой-то хитрый и очень простой алгоритм декодирования двухтональных посылок. Процессор там стоял очень слабенький 8-битный.
Сейчас чето не помню, как назывался такой алгоритм. Но чето точно не на БПФ, и не на захвате таймера.

Re: Цифровой фильтр, отследить частоты.

Добавлено: Вс сен 29, 2024 21:07:20
КРАМ
[uquote="Базилюк",url="/forum/viewtopic.php?p=4630367#p4630367"]Но чето точно не на БПФ[/uquote]
А кто говорил про БПФ? Вы знаете разницу между БПФ и ДПФ?
:)
https://ru.wikipedia.org/wiki/Алгоритм_Гёрцеля
Но я предпочитаю классический - FIR

Re: Цифровой фильтр, отследить частоты.

Добавлено: Вс сен 29, 2024 21:08:36
Базилюк
А вы?

Re: Цифровой фильтр, отследить частоты.

Добавлено: Вс сен 29, 2024 21:09:27
КРАМ
[uquote="Базилюк",url="/forum/viewtopic.php?p=4630373#p4630373"]А вы?[/uquote]
Это моя профессия. :)

Re: Цифровой фильтр, отследить частоты.

Добавлено: Вс сен 29, 2024 22:08:57
linkov1959
Три частоты передаются последовательно с известной длительностью и не менее пороговой амплитуды, компаратор катит. Во время передачи вызывного сигнала других сигналов нет, но обычно в линии идет разговор с превышением порога и приемник не должен срабатывать, а только от своей комбинации. Ни БПФ ни ДТФ я так и не освоил, могу только сделать перестраиваемый цифровой фильтр от АЦП, но это запасной вариант.

Re: Цифровой фильтр, отследить частоты.

Добавлено: Пн сен 30, 2024 10:29:29
linkov1959
Уточню. Сработка от второй посылки, но закодировать нужно 3 частоты. Комбинация 1 и 2 частоты индивидуальный вызов, а 1 и 3 циркуляр.
Пробую на тини13. Прога в Баском, но в Протеусе работает. Два прерывания по входу и по переполнению таймера и два обработчика этих прерываний.
По входу.
Берем значение таймера, это будет период и обнуляем таймер. Если в пределах допуска по первой частоте, то считаем. Когда наберем нужное количество , то поднимаем флаг второй частоты и тоже считаем, но в пределах допуска по второй частоте. Отсчитываем нужную длительность второй посылки и включаем звонок. Сбрасываем флаг.
По переполнению таймера.
Уменьшаем счетчик периодов, как средство от помех и сбрасываем флаг, если долго нет второй посылки.

Re: Цифровой фильтр, отследить частоты.

Добавлено: Ср окт 02, 2024 14:27:58
jcxz
[uquote="linkov1959",url="/forum/viewtopic.php?p=4630347#p4630347"]Martian, а можно без АЦП и большой математики на одних прерываниях?[/uquote]Если боитесь математики и АЦП, то такими задачами лучше не заниматься.

Добавлено after 3 minutes 9 seconds:
[uquote="Базилюк",url="/forum/viewtopic.php?p=4630350#p4630350"]Таймер в режиме захвата. Сигнал предварительно довести до прямоугольного компаратором.[/uquote]Ну да. :))) автор судя по всему:
[uquote="linkov1959",url="/forum/viewtopic.php?p=4630318#p4630318"]Нужно ловить процем определенные комбинации.[/uquote]распознаёт комбинации нескольких гармонических колебаний. Одновременных.

Добавлено after 7 minutes:
[uquote="linkov1959",url="/forum/viewtopic.php?p=4630479#p4630479"]Пробую на тини13. Прога в Баском[/uquote]ужос!... :facepalm:

1) взять Cortex-M;
2) изучить си (а лучше и +ассемблер);
3) изучить работу АЦП.
...
После выполнения этого минимума, можно приступать к задаче.

Re: Цифровой фильтр, отследить частоты.

Добавлено: Ср окт 02, 2024 15:00:04
linkov1959
jcxz, Сработаемся! Тини13 у меня много, но тут подвалило на шару полсотни плат разработки на stm32f207vet6 по 10грн. Можно вспомнить, что я математик и освоил cubeIDE. Даже есть готовая прошивка под stm32f100c8t6 на БПФ, но украденная у конкурентов:) Можно ли эту прошивку hex как-то перенести на stm32f207vet6?

Re: Цифровой фильтр, отследить частоты.

Добавлено: Ср окт 02, 2024 15:05:25
Martian
можно

Re: Цифровой фильтр, отследить частоты.

Добавлено: Ср окт 02, 2024 15:14:42
jcxz
[uquote="linkov1959",url="/forum/viewtopic.php?p=4631368#p4631368"]Можно ли эту прошивку hex как-то перенести на stm32f207vet6?[/uquote]Смысл?

Re: Цифровой фильтр, отследить частоты.

Добавлено: Ср окт 02, 2024 15:20:54
Adrift
[uquote="linkov1959",url="/forum/viewtopic.php?p=4630479#p4630479"]Пробую на тини13.[/uquote]
В былые времена делали АОНы на z80, который явно не шустрее tiny13. И задачи очень схожи, т.к. был набор фиксированных частот от 700 до 1700Hz c шагом 200 и все кодировалось комбинациями любых двух частот. Насколько помню достаточно просто "накладывать" искомую частоту поверх сигнала(после компаратора) и считать совпадения. Если уровень совпал, инкрементим счетчик совпадений, если нет, то декрементим. В конце, если в сигнале присутствует искомая частота, должно получится достаточно большое положительное или отрицательное число выше порогового значения. Не думаю что тогда использовали БПФ, впрочем, как и не думаю, что tiny13 стоит использовать сейчас )

Re: Цифровой фильтр, отследить частоты.

Добавлено: Ср окт 02, 2024 15:31:04
Novice user
По принципу частотомера считать и выставлять флаги,например каждые 250 мсек,если частота 300 Гц то на считаем 75(+-) импульсов,если 2кГц то 500(+-)
+- потому что тактирование аттини будет внутренним,то есть не стабильным
Конкретно бы знать какие частоты и как передаются,ведь они известны только вам

Re: Цифровой фильтр, отследить частоты.

Добавлено: Ср окт 02, 2024 17:00:32
КРАМ
[uquote="linkov1959",url="/forum/viewtopic.php?p=4631368#p4631368"]Даже есть готовая прошивка под stm32f100c8t6 на БПФ[/uquote]Эту задачу не решают с помощью БПФ. Эту задачу решают с помощью ДПФ. А конкретно с помощью алгоритма Гёрцеля.
[uquote="Adrift",url="/forum/viewtopic.php?p=4631376#p4631376"]Насколько помню достаточно просто "накладывать" искомую частоту поверх сигнала(после компаратора)[/uquote]
Вы "помните" неправильно. После компаратора возникнут интермодуляционные частоты. То есть ничего определить будет невозможно. Кроме того, все эти игрища "после компаратора" говорят лишь о непонимании игрунами школьного курса тригонометрии. В зависимости от начальной фазы частот будет получаться совершенно разная картинка.
Ну и не требуется никакой особой производительности для реализации нескольких фильтров. Вопрос со скоростью актуален, если требуется фильтровать сигнал в реальном времени. А если между накоплением сигнала и принятием решения проходит куча времени (сотни миллисекунд и более), то все это делается на самых медленных МК.