Цифровой фильтр, отследить частоты.
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Идут фиксированные известные частоты от 300гц до 2кГц фиксированной длительности 0.5 и 1 сек. Нужно ловить процем определенные комбинации. В оригинале стоят на каждую частоту аналоговые фильтры. А без них нельзя?
- Реклама
- Сообщения: 12867
- Зарегистрирован: Сб дек 18, 2021 19:25:32
можно.
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Martian, а можно без АЦП и большой математики на одних прерываниях?
- Сообщения: 159
- Зарегистрирован: Чт сен 19, 2024 19:18:28
Таймер в режиме захвата. Сигнал предварительно довести до прямоугольного компаратором.
Автор скорее всего решает задачу распознавания тональных посылок, как от телефонной станции?
Автор скорее всего решает задачу распознавания тональных посылок, как от телефонной станции?
- Сообщения: 12867
- Зарегистрирован: Сб дек 18, 2021 19:25:32
[uquote="linkov1959",url="/forum/viewtopic.php?p=4630347#p4630347"]а можно без АЦП и большой математики?[/uquote] можно.
Добавлено after 1 minute 18 seconds:
[uquote="Базилюк",url="/forum/viewtopic.php?p=4630350#p4630350"]Сигнал предварительно довести до прямоугольного компаратором.[/uquote] необязательно, наверное. По крайней мере, в такой постановке задачи это не ясно.
Добавлено after 1 minute 18 seconds:
[uquote="Базилюк",url="/forum/viewtopic.php?p=4630350#p4630350"]Сигнал предварительно довести до прямоугольного компаратором.[/uquote] необязательно, наверное. По крайней мере, в такой постановке задачи это не ясно.
- Реклама
Если в любой момент времени передается только одна частота то да-можно таймерами,а если одновременно идет две частоты и более то тут только фильтр
[uquote="linkov1959",url="/forum/viewtopic.php?p=4630347#p4630347"]а можно без АЦП и большой математики на одних прерываниях?[/uquote]С АЦП и очень несложной математикой будет гораздо проще. Вся математика - это дискретное преобразование Фурье на частоты детектирования.
На каждую частоту нужно две таблицы - синус и косинус. Каждый фильтр - это простое суммирование произведений. Отдельно косинус и синус. Потом сумма их квадратов и извлечение корня квадратного. Получается амплитуда попавшего в фильтр сигнала.
На каждую частоту нужно две таблицы - синус и косинус. Каждый фильтр - это простое суммирование произведений. Отдельно косинус и синус. Потом сумма их квадратов и извлечение корня квадратного. Получается амплитуда попавшего в фильтр сигнала.
- Сообщения: 159
- Зарегистрирован: Чт сен 19, 2024 19:18:28
Я сейчас на память не помню, но вот когда в 2000-х годах пошли стационарные телефоны с определителем номера ("Русь-25/27", "Палиха"), там был какой-то хитрый и очень простой алгоритм декодирования двухтональных посылок. Процессор там стоял очень слабенький 8-битный.
Сейчас чето не помню, как назывался такой алгоритм. Но чето точно не на БПФ, и не на захвате таймера.
Сейчас чето не помню, как назывался такой алгоритм. Но чето точно не на БПФ, и не на захвате таймера.
[uquote="Базилюк",url="/forum/viewtopic.php?p=4630367#p4630367"]Но чето точно не на БПФ[/uquote]
А кто говорил про БПФ? Вы знаете разницу между БПФ и ДПФ?

https://ru.wikipedia.org/wiki/Алгоритм_Гёрцеля
Но я предпочитаю классический - FIR
А кто говорил про БПФ? Вы знаете разницу между БПФ и ДПФ?
https://ru.wikipedia.org/wiki/Алгоритм_Гёрцеля
Но я предпочитаю классический - FIR
Последний раз редактировалось КРАМ Вс сен 29, 2024 21:08:50, всего редактировалось 1 раз.
- Сообщения: 159
- Зарегистрирован: Чт сен 19, 2024 19:18:28
[uquote="Базилюк",url="/forum/viewtopic.php?p=4630373#p4630373"]А вы?[/uquote]
Это моя профессия.
Это моя профессия.
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Три частоты передаются последовательно с известной длительностью и не менее пороговой амплитуды, компаратор катит. Во время передачи вызывного сигнала других сигналов нет, но обычно в линии идет разговор с превышением порога и приемник не должен срабатывать, а только от своей комбинации. Ни БПФ ни ДТФ я так и не освоил, могу только сделать перестраиваемый цифровой фильтр от АЦП, но это запасной вариант.
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
Уточню. Сработка от второй посылки, но закодировать нужно 3 частоты. Комбинация 1 и 2 частоты индивидуальный вызов, а 1 и 3 циркуляр.
Пробую на тини13. Прога в Баском, но в Протеусе работает. Два прерывания по входу и по переполнению таймера и два обработчика этих прерываний.
По входу.
Берем значение таймера, это будет период и обнуляем таймер. Если в пределах допуска по первой частоте, то считаем. Когда наберем нужное количество , то поднимаем флаг второй частоты и тоже считаем, но в пределах допуска по второй частоте. Отсчитываем нужную длительность второй посылки и включаем звонок. Сбрасываем флаг.
По переполнению таймера.
Уменьшаем счетчик периодов, как средство от помех и сбрасываем флаг, если долго нет второй посылки.
Пробую на тини13. Прога в Баском, но в Протеусе работает. Два прерывания по входу и по переполнению таймера и два обработчика этих прерываний.
По входу.
Берем значение таймера, это будет период и обнуляем таймер. Если в пределах допуска по первой частоте, то считаем. Когда наберем нужное количество , то поднимаем флаг второй частоты и тоже считаем, но в пределах допуска по второй частоте. Отсчитываем нужную длительность второй посылки и включаем звонок. Сбрасываем флаг.
По переполнению таймера.
Уменьшаем счетчик периодов, как средство от помех и сбрасываем флаг, если долго нет второй посылки.
- Сообщения: 1779
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[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]ужос!...
1) взять Cortex-M;
2) изучить си (а лучше и +ассемблер);
3) изучить работу АЦП.
...
После выполнения этого минимума, можно приступать к задаче.
Добавлено 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]ужос!...
1) взять Cortex-M;
2) изучить си (а лучше и +ассемблер);
3) изучить работу АЦП.
...
После выполнения этого минимума, можно приступать к задаче.
- Сообщения: 923
- Зарегистрирован: Пн сен 10, 2018 19:16:28
jcxz, Сработаемся! Тини13 у меня много, но тут подвалило на шару полсотни плат разработки на stm32f207vet6 по 10грн. Можно вспомнить, что я математик и освоил cubeIDE. Даже есть готовая прошивка под stm32f100c8t6 на БПФ, но украденная у конкурентов:) Можно ли эту прошивку hex как-то перенести на stm32f207vet6?
- Сообщения: 12867
- Зарегистрирован: Сб дек 18, 2021 19:25:32
можно
- Сообщения: 1779
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="linkov1959",url="/forum/viewtopic.php?p=4631368#p4631368"]Можно ли эту прошивку hex как-то перенести на stm32f207vet6?[/uquote]Смысл?
- Сообщения: 582
- Зарегистрирован: Вт окт 01, 2024 15:22:33
[uquote="linkov1959",url="/forum/viewtopic.php?p=4630479#p4630479"]Пробую на тини13.[/uquote]
В былые времена делали АОНы на z80, который явно не шустрее tiny13. И задачи очень схожи, т.к. был набор фиксированных частот от 700 до 1700Hz c шагом 200 и все кодировалось комбинациями любых двух частот. Насколько помню достаточно просто "накладывать" искомую частоту поверх сигнала(после компаратора) и считать совпадения. Если уровень совпал, инкрементим счетчик совпадений, если нет, то декрементим. В конце, если в сигнале присутствует искомая частота, должно получится достаточно большое положительное или отрицательное число выше порогового значения. Не думаю что тогда использовали БПФ, впрочем, как и не думаю, что tiny13 стоит использовать сейчас )
В былые времена делали АОНы на z80, который явно не шустрее tiny13. И задачи очень схожи, т.к. был набор фиксированных частот от 700 до 1700Hz c шагом 200 и все кодировалось комбинациями любых двух частот. Насколько помню достаточно просто "накладывать" искомую частоту поверх сигнала(после компаратора) и считать совпадения. Если уровень совпал, инкрементим счетчик совпадений, если нет, то декрементим. В конце, если в сигнале присутствует искомая частота, должно получится достаточно большое положительное или отрицательное число выше порогового значения. Не думаю что тогда использовали БПФ, впрочем, как и не думаю, что tiny13 стоит использовать сейчас )
По принципу частотомера считать и выставлять флаги,например каждые 250 мсек,если частота 300 Гц то на считаем 75(+-) импульсов,если 2кГц то 500(+-)
+- потому что тактирование аттини будет внутренним,то есть не стабильным
Конкретно бы знать какие частоты и как передаются,ведь они известны только вам
+- потому что тактирование аттини будет внутренним,то есть не стабильным
Конкретно бы знать какие частоты и как передаются,ведь они известны только вам
[uquote="linkov1959",url="/forum/viewtopic.php?p=4631368#p4631368"]Даже есть готовая прошивка под stm32f100c8t6 на БПФ[/uquote]Эту задачу не решают с помощью БПФ. Эту задачу решают с помощью ДПФ. А конкретно с помощью алгоритма Гёрцеля.
[uquote="Adrift",url="/forum/viewtopic.php?p=4631376#p4631376"]Насколько помню достаточно просто "накладывать" искомую частоту поверх сигнала(после компаратора)[/uquote]
Вы "помните" неправильно. После компаратора возникнут интермодуляционные частоты. То есть ничего определить будет невозможно. Кроме того, все эти игрища "после компаратора" говорят лишь о непонимании игрунами школьного курса тригонометрии. В зависимости от начальной фазы частот будет получаться совершенно разная картинка.
Ну и не требуется никакой особой производительности для реализации нескольких фильтров. Вопрос со скоростью актуален, если требуется фильтровать сигнал в реальном времени. А если между накоплением сигнала и принятием решения проходит куча времени (сотни миллисекунд и более), то все это делается на самых медленных МК.
[uquote="Adrift",url="/forum/viewtopic.php?p=4631376#p4631376"]Насколько помню достаточно просто "накладывать" искомую частоту поверх сигнала(после компаратора)[/uquote]
Вы "помните" неправильно. После компаратора возникнут интермодуляционные частоты. То есть ничего определить будет невозможно. Кроме того, все эти игрища "после компаратора" говорят лишь о непонимании игрунами школьного курса тригонометрии. В зависимости от начальной фазы частот будет получаться совершенно разная картинка.
Ну и не требуется никакой особой производительности для реализации нескольких фильтров. Вопрос со скоростью актуален, если требуется фильтровать сигнал в реальном времени. А если между накоплением сигнала и принятием решения проходит куча времени (сотни миллисекунд и более), то все это делается на самых медленных МК.


