Перейти к содержанию
    

Обработка данных с акселерометра

Здравствуйте, уважаемые форумчане. Так случилось, что "по наследству" мне досталась "доработка" датчика давления, показания которого зависят от положения в пространстве. Для компенсации ошибки от положения в нем использован акселерометр. Все бы ничего, но было выявлено, что он не может пройти испытания на вибростенде. Так вот возникает вопрос как правильно отфильтровать данные с акселерометра?

Сейчасданные с акселерометра пропускаются через медианный фильтр с усреднием (32 точки, сортировка, усреднение по 16 центральным), а затем через экспоненциальный фильтр 2-го порядка, полученное значение используется для компенсации ошибки показаний. В состоянии покоя в любом положении все работает, причем импульсные помехи (удары, случайные короткие колебания и.т.д) отсекаются на ура. Но при проведении испытаний на вибростенде и снятия характеристик как с датчика, так и акселерометра выяснилось, что точное определение положения датчика возможно, только если усреднять показания за весь интервал проведения испытаний (30 - 60 минут), что невозможно в ввиду требований к быстродействию прибора 0,5 секунд.

(Скорость обновления данных с акселерометра 50 ( можно сделать 100) Гц, полоса частот при испытаниях на вибрацию переменная 2 - 100 Гц).

Можете посоветовать куда "копать" для решения данной проблемы. У меня была мысль использовать гироскоп для определения угла отклонения датчика вместо акселерометра, но идею отмели ввиду того, что комплектующие закуплены и платы уже изготовлены на опытную серию. Надо решать задачу на том что есть: STM32F100 + AIS328DQ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пмсм, копать в сторону накопления и анализа данных с самого старта системы. Как вариант - использование при этом нечёткой логики. А если есть ещё что, кроме акселерометров, например, видео- или фотокамера, то всё срастётся.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, ivan24190 сказал:

(Скорость обновления данных с акселерометра 50 ( можно сделать 100) Гц, полоса частот при испытаниях на вибрацию переменная 2 - 100 Гц)

Если получать данные акселерометра с частотой в 10 раз больше максимальной частоты колебаний, тогда можно усреднить с какой-то ошибкой.

 

2 часа назад, ivan24190 сказал:

У меня была мысль использовать гироскоп для определения угла отклонения датчика вместо акселерометра, но идею отмели ввиду того, что комплектующие закуплены и платы уже изготовлены на опытную серию.

Для того и создают опытную серию, чтобы провести испытания, выявить недостатки и устранить их. Т.е. по ходу испытаний надо дорабатывать, допиливать, менять комплектующие и т.д.  -  доводить серию до полного прохождения испытаний. Понятно что начальство не очень охотно тратит деньги на доработки :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, ivan24190 сказал:

(Скорость обновления данных с акселерометра 50 ( можно сделать 100) Гц, полоса частот при испытаниях на вибрацию переменная 2 - 100 Гц).

Можете посоветовать куда "копать" для решения данной проблемы. У меня была мысль использовать гироскоп для определения угла отклонения датчика вместо акселерометра, но идею отмели ввиду того, что комплектующие закуплены и платы уже изготовлены на опытную серию. Надо решать задачу на том что есть: STM32F100 + AIS328DQ.

Просто тупо увеличить частоту опроса датчика.

У меня в проекте гироскоп-акселерометр опрашивается с частотой 2кГц по I2C. Если-б интерфейс позволял больше - поднял бы ещё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

45 minutes ago, HardEgor said:

Если получать данные акселерометра с частотой в 10 раз больше максимальной частоты колебаний, тогда можно усреднить с какой-то ошибкой.

 

3 minutes ago, jcxz said:

Просто тупо увеличить частоту опроса датчика.

Рассматриваю этот вариант, но это крайний случай, т.к. я ограничен быстродействием и придется "оптимизировать" всю математику, а не хотелось бы ковыряться в "наследстве". Но если это единственный вариант, будем "пилить"...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

26 минут назад, ivan24190 сказал:

Рассматриваю этот вариант, но это крайний случай, т.к. я ограничен быстродействием и придется "оптимизировать" всю математику, а не хотелось бы ковыряться в "наследстве". Но если это единственный вариант, будем "пилить"...

Так а какой смысл ? Грубо говоря вы пытаетесь вытащить информацию оцифровывая сигнал до 100 Гц с помощью АЦП 50 отсч/сек

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, ivan24190 said:

Рассматриваю этот вариант, но это крайний случай, т.к. я ограничен быстродействием и придется "оптимизировать" всю математику, а не хотелось бы ковыряться в "наследстве". Но если это единственный вариант, будем "пилить"...

Вы просто свой сигнал угробили длиннющим медианным фильтром. 
Медианный фильтр применяют когда есть действительно ошибочные показания из-за помех в канале связи или мощных импульсных наводок. 
Но фильтровать медианой сигнал из акселерометра с SPI это нонсенс.
Этим просто размыли шум с полезной информацией. Экспоненциальный фильтр тоже как бы не очень уместен, можно  было  более селективный фильтр применить.   

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, AlexandrY said:

Вы просто свой сигнал угробили длиннющим медианным фильтром. 
Медианный фильтр применяют когда есть действительно ошибочные показания из-за помех в канале связи или мощных импульсных наводок. 
Но фильтровать медианой сигнал из акселерометра с SPI это нонсенс.
Этим просто размыли шум с полезной информацией. Экспоненциальный фильтр тоже как бы не очень уместен, можно  было  более селективный фильтр применить.

Например какой фильтр? Мне же по факту нужно положение (постоянная составляющая), а не ускорение. А если усреднять неуместно, то как определить постоянную составляющую? (БПФ или ФНЧ КИХ?)

Изменено пользователем ivan24190

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, ivan24190 сказал:

Например какой фильтр? Мне же по факту нужно положение (постоянная составляющая), а не ускорение.

Я использую фильтр Калмана. Правда даю ему 2kS/s. Работает нормально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, jcxz said:

Я использую фильтр Калмана. Правда даю ему 2kS/s. Работает нормально.

Одномерный или совмещаете данные с акселерометра и гироскопа?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, ivan24190 сказал:

Одномерный или совмещаете данные с акселерометра и гироскопа?

Совмещаю. Но ускорение мне не нужно - только угловое положение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А точно, что проблема именно в акселерометре?

Если показания датчика давления зависят от положения в пространстве, то может быть именно он и жутко ведет себя на вибростенде?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 minutes ago, radiohobbyt said:

А точно, что проблема именно в акселерометре?

Если показания датчика давления зависят от положения в пространстве, то может быть именно он и жутко ведет себя на вибростенде?

Точно, отключал акселерометр, датчик давления показывает значения с погрешностью 1,5 %.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/14/2019 at 7:24 PM, ivan24190 said:

Например какой фильтр? Мне же по факту нужно положение (постоянная составляющая), а не ускорение. А если усреднять неуместно, то как определить постоянную составляющую? (БПФ или ФНЧ КИХ?)

 

Например, фильтр скользящее среднее, и можно всю плату на демпферы поставить, для снижения вибрации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В продолжение темы. Удалось пройти вибрацию с погрешностью ~2.5%. Для этого повысил частоту выдачи данных с акселерометра до 400 Гц и пропустил эти данные через ФНЧ БИХ с частотой среза ~9 Гц (коэффициенты рассчитывал с помощью matlab fdatool), но не суть, т.к. заказчика это не устроило - его пожелание 0.25%.

Пытался уменьшать частоту среза вплоть до 1-2 Гц, комбинировал этот фильтр с фильтром Калмана, но максимум, который удалось достичь ~1.5-2.0%. Может быть есть какие более эффективные и быстрые методы фильтрации, чтобы достичь указанной погрешности?

Кстати диапазон измерения датчика всего 600 Па, т.е. он чувствует вес собственной мембраны, может быть в этом проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...