ivan24190 0 14 июля, 2019 Опубликовано 14 июля, 2019 · Жалоба Здравствуйте, уважаемые форумчане. Так случилось, что "по наследству" мне досталась "доработка" датчика давления, показания которого зависят от положения в пространстве. Для компенсации ошибки от положения в нем использован акселерометр. Все бы ничего, но было выявлено, что он не может пройти испытания на вибростенде. Так вот возникает вопрос как правильно отфильтровать данные с акселерометра? Сейчасданные с акселерометра пропускаются через медианный фильтр с усреднием (32 точки, сортировка, усреднение по 16 центральным), а затем через экспоненциальный фильтр 2-го порядка, полученное значение используется для компенсации ошибки показаний. В состоянии покоя в любом положении все работает, причем импульсные помехи (удары, случайные короткие колебания и.т.д) отсекаются на ура. Но при проведении испытаний на вибростенде и снятия характеристик как с датчика, так и акселерометра выяснилось, что точное определение положения датчика возможно, только если усреднять показания за весь интервал проведения испытаний (30 - 60 минут), что невозможно в ввиду требований к быстродействию прибора 0,5 секунд. (Скорость обновления данных с акселерометра 50 ( можно сделать 100) Гц, полоса частот при испытаниях на вибрацию переменная 2 - 100 Гц). Можете посоветовать куда "копать" для решения данной проблемы. У меня была мысль использовать гироскоп для определения угла отклонения датчика вместо акселерометра, но идею отмели ввиду того, что комплектующие закуплены и платы уже изготовлены на опытную серию. Надо решать задачу на том что есть: STM32F100 + AIS328DQ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oymyacon 0 14 июля, 2019 Опубликовано 14 июля, 2019 · Жалоба Пмсм, копать в сторону накопления и анализа данных с самого старта системы. Как вариант - использование при этом нечёткой логики. А если есть ещё что, кроме акселерометров, например, видео- или фотокамера, то всё срастётся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 81 14 июля, 2019 Опубликовано 14 июля, 2019 · Жалоба 2 часа назад, ivan24190 сказал: (Скорость обновления данных с акселерометра 50 ( можно сделать 100) Гц, полоса частот при испытаниях на вибрацию переменная 2 - 100 Гц) Если получать данные акселерометра с частотой в 10 раз больше максимальной частоты колебаний, тогда можно усреднить с какой-то ошибкой. 2 часа назад, ivan24190 сказал: У меня была мысль использовать гироскоп для определения угла отклонения датчика вместо акселерометра, но идею отмели ввиду того, что комплектующие закуплены и платы уже изготовлены на опытную серию. Для того и создают опытную серию, чтобы провести испытания, выявить недостатки и устранить их. Т.е. по ходу испытаний надо дорабатывать, допиливать, менять комплектующие и т.д. - доводить серию до полного прохождения испытаний. Понятно что начальство не очень охотно тратит деньги на доработки :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 236 14 июля, 2019 Опубликовано 14 июля, 2019 · Жалоба 3 часа назад, ivan24190 сказал: (Скорость обновления данных с акселерометра 50 ( можно сделать 100) Гц, полоса частот при испытаниях на вибрацию переменная 2 - 100 Гц). Можете посоветовать куда "копать" для решения данной проблемы. У меня была мысль использовать гироскоп для определения угла отклонения датчика вместо акселерометра, но идею отмели ввиду того, что комплектующие закуплены и платы уже изготовлены на опытную серию. Надо решать задачу на том что есть: STM32F100 + AIS328DQ. Просто тупо увеличить частоту опроса датчика. У меня в проекте гироскоп-акселерометр опрашивается с частотой 2кГц по I2C. Если-б интерфейс позволял больше - поднял бы ещё. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivan24190 0 14 июля, 2019 Опубликовано 14 июля, 2019 · Жалоба 45 minutes ago, HardEgor said: Если получать данные акселерометра с частотой в 10 раз больше максимальной частоты колебаний, тогда можно усреднить с какой-то ошибкой. 3 minutes ago, jcxz said: Просто тупо увеличить частоту опроса датчика. Рассматриваю этот вариант, но это крайний случай, т.к. я ограничен быстродействием и придется "оптимизировать" всю математику, а не хотелось бы ковыряться в "наследстве". Но если это единственный вариант, будем "пилить"... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 81 14 июля, 2019 Опубликовано 14 июля, 2019 · Жалоба 26 минут назад, ivan24190 сказал: Рассматриваю этот вариант, но это крайний случай, т.к. я ограничен быстродействием и придется "оптимизировать" всю математику, а не хотелось бы ковыряться в "наследстве". Но если это единственный вариант, будем "пилить"... Так а какой смысл ? Грубо говоря вы пытаетесь вытащить информацию оцифровывая сигнал до 100 Гц с помощью АЦП 50 отсч/сек Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 14 июля, 2019 Опубликовано 14 июля, 2019 · Жалоба 1 hour ago, ivan24190 said: Рассматриваю этот вариант, но это крайний случай, т.к. я ограничен быстродействием и придется "оптимизировать" всю математику, а не хотелось бы ковыряться в "наследстве". Но если это единственный вариант, будем "пилить"... Вы просто свой сигнал угробили длиннющим медианным фильтром. Медианный фильтр применяют когда есть действительно ошибочные показания из-за помех в канале связи или мощных импульсных наводок. Но фильтровать медианой сигнал из акселерометра с SPI это нонсенс. Этим просто размыли шум с полезной информацией. Экспоненциальный фильтр тоже как бы не очень уместен, можно было более селективный фильтр применить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivan24190 0 14 июля, 2019 Опубликовано 14 июля, 2019 (изменено) · Жалоба 1 hour ago, AlexandrY said: Вы просто свой сигнал угробили длиннющим медианным фильтром. Медианный фильтр применяют когда есть действительно ошибочные показания из-за помех в канале связи или мощных импульсных наводок. Но фильтровать медианой сигнал из акселерометра с SPI это нонсенс. Этим просто размыли шум с полезной информацией. Экспоненциальный фильтр тоже как бы не очень уместен, можно было более селективный фильтр применить. Например какой фильтр? Мне же по факту нужно положение (постоянная составляющая), а не ускорение. А если усреднять неуместно, то как определить постоянную составляющую? (БПФ или ФНЧ КИХ?) Изменено 14 июля, 2019 пользователем ivan24190 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 236 14 июля, 2019 Опубликовано 14 июля, 2019 · Жалоба 2 часа назад, ivan24190 сказал: Например какой фильтр? Мне же по факту нужно положение (постоянная составляющая), а не ускорение. Я использую фильтр Калмана. Правда даю ему 2kS/s. Работает нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivan24190 0 14 июля, 2019 Опубликовано 14 июля, 2019 · Жалоба 13 minutes ago, jcxz said: Я использую фильтр Калмана. Правда даю ему 2kS/s. Работает нормально. Одномерный или совмещаете данные с акселерометра и гироскопа? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 236 14 июля, 2019 Опубликовано 14 июля, 2019 · Жалоба 5 минут назад, ivan24190 сказал: Одномерный или совмещаете данные с акселерометра и гироскопа? Совмещаю. Но ускорение мне не нужно - только угловое положение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
cybersonner 1 15 июля, 2019 Опубликовано 15 июля, 2019 · Жалоба А точно, что проблема именно в акселерометре? Если показания датчика давления зависят от положения в пространстве, то может быть именно он и жутко ведет себя на вибростенде? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivan24190 0 15 июля, 2019 Опубликовано 15 июля, 2019 · Жалоба 14 minutes ago, radiohobbyt said: А точно, что проблема именно в акселерометре? Если показания датчика давления зависят от положения в пространстве, то может быть именно он и жутко ведет себя на вибростенде? Точно, отключал акселерометр, датчик давления показывает значения с погрешностью 1,5 %. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ALEKS64 0 16 июля, 2019 Опубликовано 16 июля, 2019 · Жалоба On 7/14/2019 at 7:24 PM, ivan24190 said: Например какой фильтр? Мне же по факту нужно положение (постоянная составляющая), а не ускорение. А если усреднять неуместно, то как определить постоянную составляющую? (БПФ или ФНЧ КИХ?) Например, фильтр скользящее среднее, и можно всю плату на демпферы поставить, для снижения вибрации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivan24190 0 2 сентября, 2019 Опубликовано 2 сентября, 2019 · Жалоба В продолжение темы. Удалось пройти вибрацию с погрешностью ~2.5%. Для этого повысил частоту выдачи данных с акселерометра до 400 Гц и пропустил эти данные через ФНЧ БИХ с частотой среза ~9 Гц (коэффициенты рассчитывал с помощью matlab fdatool), но не суть, т.к. заказчика это не устроило - его пожелание 0.25%. Пытался уменьшать частоту среза вплоть до 1-2 Гц, комбинировал этот фильтр с фильтром Калмана, но максимум, который удалось достичь ~1.5-2.0%. Может быть есть какие более эффективные и быстрые методы фильтрации, чтобы достичь указанной погрешности? Кстати диапазон измерения датчика всего 600 Па, т.е. он чувствует вес собственной мембраны, может быть в этом проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться