Jump to content

    
Sign in to follow this  
ivan24190

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

Recommended Posts

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
2 часа назад, ivan24190 сказал:

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

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

 

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

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

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

Share this post


Link to post
Share on other sites
3 часа назад, ivan24190 сказал:

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

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

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

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

Share this post


Link to post
Share on other sites
45 minutes ago, HardEgor said:

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

 

3 minutes ago, jcxz said:

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

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

Share this post


Link to post
Share on other sites

 

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

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

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

 

Share this post


Link to post
Share on other sites
1 hour ago, ivan24190 said:

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

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

Share this post


Link to post
Share on other sites
1 hour ago, AlexandrY said:

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

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

Edited by ivan24190

Share this post


Link to post
Share on other sites
2 часа назад, ivan24190 сказал:

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

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

Share this post


Link to post
Share on other sites
13 minutes ago, jcxz said:

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

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

Share this post


Link to post
Share on other sites
5 минут назад, ivan24190 сказал:

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
14 minutes ago, radiohobbyt said:

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

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

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

Share this post


Link to post
Share on other sites
On 7/14/2019 at 7:24 PM, ivan24190 said:

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this