Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выбор способа обработки сигнала с датчика
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
ivan24190
Здравствуйте, уважаемые форумчане.
Есть схема получения сигнала с вихревого датчика (для расходомера).
Контроллер стм32ф373. Суть в том, что на выходе датчика имеем частоту,
пропорционально расходу.
Заказчик настаивает на том чтобы для определения частоты использовалось
быстрое преобразование Фурье на 4096 точек.
Но я считаю, что ввиду ограничения ОЗУ и достаточно длительного времени
обработки целесообразнее посчитать частоту с помощью таймера в режиме
захвата и компаратора, предварительно отфильтровав сигнал.
Однако заказчик, считает, что так мы получим меньшую точность и гибкость.
Объясните, пожалуйста в чем я заблуждаюсь и какие подводные камни могут
быть при применении таймера, а не преобразования Фурье. Потому как по мне
Фурье для такого МК все-таки сложно, так как это сожрет все ресурсы ядра и ОЗУ.
Заранее спасибо.
mantech
Цитата(ivan24190 @ Nov 13 2017, 20:06) *
Суть в том, что на выходе датчика имеем частоту,
пропорционально расходу.
Заказчик настаивает на том чтобы для определения частоты использовалось
быстрое преобразование Фурье на 4096 точек.


ТЗ задачи озвучте, а то телепатия глючит слегка cranky.gif
Выглядит, как масло-масляное , зачем определять какую-то частоту, если датчик ее уже выдает?? Если нужно ее замерить, то никаких ПФ тут не нужно, а вот если преобразовать в соотв. с какими-то физ. величинами, то наверно да, нужно.
ivan24190
mantech, частоту, выдаваемую датчиком нужно сначала измерить,
а затем по ней рассчитать расход газа.
Заказчик настаивает на БПФ. Но я считаю, что частоту сигнала с
датчика можно определить и с помощью таймера причем достаточно
точно, причем не сильно нагружая контроллер,
т.к. ему помимо расчетов необходимо вести обмен по рс485 и
выполнять отрисовку на экране.
Поэтому и задал вопрос может быть я чего-то не знаю, раз заказчик
настаивает именно на БПФ.
P.S. Схема разработана ранее и не мной, от меня требуют ее оживить.
HardEgor
Цитата(mantech @ Nov 14 2017, 00:13) *
Выглядит, как масло-масляное , зачем определять какую-то частоту, если датчик ее уже выдает??

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

Цитата(ivan24190 @ Nov 14 2017, 00:32) *
Заказчик настаивает на БПФ. Но я считаю, что частоту сигнала с
датчика можно определить и с помощью таймера причем достаточно
точно, причем не сильно нагружая контроллер,

Всё зависит от математики заложенной заказчиком. Частота будет не одна, а целый спектр, и видимо в нём надо найти палку с максимальной амплитудой. Возможно заказчик ныкает алгоритм, что-бы не сперли ноу-хау. А возможно он сам еще не знает и ему нужен инструмент, чтобы выловить зависимости. Но это я телепатирую sm.gif
ivan24190
HardEgor, возможно Вы правы.
Но наверное и контроллер надо пожирнее бы,
а то 24 кб ОЗУ маловато для 4096 точек БПФ.
Ладно буду делать Фурье в конце концов воля заказчика.
mantech
Цитата(ivan24190 @ Nov 13 2017, 21:18) *
а то 24 кб ОЗУ маловато для 4096 точек БПФ.


В этом мк так-то 32Кб озу, насколько я помню, для Фурье больше скорость нужна, чем память, а 72мега на М4 кортексе более чем. Но стм делает как правило совместимые по распиновке камни с большими объемами памяти, посмотрите, может и здесь есть что-то...
alexvu
Как я понимаю, датчик выдает довольно много шумов, из-за чего и нужна какая-то фильтрация для определения центральной частоты, например БПФ (кстати, потом еще надо как-то по спектру определить частоту), а просто таймер только наловит шумов. Но на все это, наверное, есть уже готовая математика, и заказчик просто ее Вам пока не дает всю сразу, чтобы не усложнять этапы разработки.
Tarbal
Цитата(ivan24190 @ Nov 13 2017, 20:06) *
Здравствуйте, уважаемые форумчане.
Есть схема получения сигнала с вихревого датчика (для расходомера).
Контроллер стм32ф373. Суть в том, что на выходе датчика имеем частоту,
пропорционально расходу.
Заказчик настаивает на том чтобы для определения частоты использовалось
быстрое преобразование Фурье на 4096 точек.
Но я считаю, что ввиду ограничения ОЗУ и достаточно длительного времени
обработки целесообразнее посчитать частоту с помощью таймера в режиме
захвата и компаратора, предварительно отфильтровав сигнал.
Однако заказчик, считает, что так мы получим меньшую точность и гибкость.
Объясните, пожалуйста в чем я заблуждаюсь и какие подводные камни могут
быть при применении таймера, а не преобразования Фурье. Потому как по мне
Фурье для такого МК все-таки сложно, так как это сожрет все ресурсы ядра и ОЗУ.
Заранее спасибо.


В чем заказчик прав, так это в том, что интегральный метод даст достоверный результат. Как верно замечали просто счетчик будет шумы ловить, но кроме преобразования Фурье есть интегральные методы и полегче. Например считать автокорреляционную функцию за несколько периодов. Это можно делать убирая результат ушедший за окно и добавляя новый, что несоизмеримо легче чем подсчитывать каждый раз и тем более Фурье. Корреляционная функция будет колебаться вслед за сигналом, но уже без шума. Второй дешевый способ это инерционный измеритель фазы. Будет интересно -- расскажу как сделать.
ivan24190
Спасибо всем за советы. Выяснилось, что будет испытываться какой-то новый датчик,
поэтому нужна именно спектральная характеристика, из-за чего заказчик и настаивает на БПФ.
Тему можно закрывать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.