Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Акселерометр LIS331HH
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Метрология, датчики, измерительная техника
Specialistvlad
Всем привет! Решил поэкспериментировать с акселерометром, запустил его и вывожу данные в терминал(прикрепленное изображение)
Кручу плату в руках и показания изменяются, хотя ускорения ясное дело никакого, я понимаю конечно, что гравитацию никто не отменил еще пока... Но кто-то подскажет как правильно обойти эту проблему?? Показания очень сильно плавают..
gregory
Цитата(Specialistvlad @ Mar 25 2012, 02:31) *
Всем привет! Решил поэкспериментировать с акселерометром, запустил его и вывожу данные в терминал(прикрепленное изображение)
Кручу плату в руках и показания изменяются, хотя ускорения ясное дело никакого, я понимаю конечно, что гравитацию никто не отменил еще пока... Но кто-то подскажет как правильно обойти эту проблему?? Показания очень сильно плавают..


Поставить фильтр высоких частот и отсечь постоянную составляющую, которая зависит от ускорения свободного падения и угла наклона.
Voice2001
а у LIS3LV02 нет случайно фильтра? На схеме (страница 8) вроде нарисовано что-то
Ruslan1
Цитата(Specialistvlad @ Mar 24 2012, 23:31) *
Кручу плату в руках и показания изменяются, хотя ускорения ясное дело никакого, я понимаю конечно, что гравитацию никто не отменил еще пока... Но кто-то подскажет как правильно обойти эту проблему?? Показания очень сильно плавают..

Честно говоря, ничего из картинки не понял.
Сильно- это насколько? в процентах.
Очень возможно, что это
1. просто вибрация от Ваших рук или от перфоратора за стеной.
2. некорректная интерпретация данных. Переключите на другой диапазон, оно должно соответственно измениться
3. Некорректная схема включения-запитки датчика (что за плата?)
4. микрофонный эффект (Но это я на более чувствительных (2g) сенсорах наблюдал, с аналоговым выходом: вполне так разговор осциллографом смотреть можно было).
ilya-m
Цитата(Voice2001 @ May 15 2012, 10:53) *
а у LIS3LV02 нет случайно фильтра? На схеме (страница 8) вроде нарисовано что-то


Такой фильтр у LIS3LV02 есть, правда описан он не на 8, а на 34 странице. Его параметры настраиваются в регистре CTRL_REG3 (22h).
Voice2001
Цитата(ilya-m @ May 15 2012, 12:21) *
Такой фильтр у LIS3LV02 есть

влезу с нубским вопросом в эту тему.
Правильно ли я понимаю, что на данном (ну и вообще любом современном) акселерометре точность такая, что я могу программно вернуть объект на место?
Т.е. например, сделать такое устройство, которое будет лежать на столе. Можно взять его со стола и оно покажет на экране кол-во миллиметров, на которые его перенесли по всем 3-м осям.
Какая погрешность накопится, если носить это устройство по комнате 5 минут?
ПС. только собираюсь начать с ними экспериментировать, вот интересен такой момент.
ilya-m
Цитата(Voice2001 @ May 15 2012, 13:44) *
Правильно ли я понимаю, что на данном (ну и вообще любом современном) акселерометре точность такая, что я могу программно вернуть объект на место?


Акселерометр измеряет ускорение, а перемещение будет вторым интегралом от ускорения. У акселерометров, с которыми я работал уровень шума составлял около 0.5 от величины разрешающей способности.
При попытках вычислять перемещение ошибка интегрирования будет накапливаться довольно быстро. Для таких целей применяют интегральные гироскопы.
Но для небольших перемещений можно использовать и акселерометр. Например, в журнале "Радио" (номер, к сожалению, не помню) описывался проект компьютерной мышки на акселерометре ADXL202 от Analog Devices.
Ruslan1
Цитата(Voice2001 @ May 15 2012, 12:44) *
Правильно ли я понимаю, что на данном (ну и вообще любом современном) акселерометре точность такая, что я могу программно вернуть объект на место?

Нет, нереально.
Voice2001
Цитата(Ruslan1 @ May 15 2012, 14:44) *
Нет, нереально.

почему же?
минимальное измерение ускорения там 2g - это 2*9.81м/с2=19.62м/с2.
Т.е. допустим объект передвинули с макс.ускорением в 2g и он за секунду набрал скорость в 19.62м/с
Учитывая 12-битное представление чисел, расстояние, на которое передвинули объект, можно посчитать с точностью до 19.62/4096=0.005м, т.е. с точностью в 5мм
ПС. Рассуждения у меня чисто теоретические. С акселерометрами дело никогда не имел
ilya-m
Вы немного ошибаетесь - ±2.0 g - это максимальное ускорение, которое может зафиксировать акселерометр (ессли рассматривать именно режим ±2.0 g). При этом 12-ти битное число будет со знаком и в 12 бит уложатся все ускорения в диапазоне от -2 до +2 g. Минимальная же величина ускорения, которое может зафиксировать акселерометр (при этих настройках) составит 1.0 mg, для выборки 40 раз в секунду. То есть ускорения менее 1 mg фиксироваться не будут, а более 2 g будет равно 2 g. Вот первый источник ощибок.

Второй источник - диапазон измерений - по даташиту он может уменьшаться от ±2.0 до ±1.7 (изменение диапазона ввех вообще не нормировано), а это уже дает возможную 15%. Для вычисления пройденного пути по известному ускорению, в любом случае, приходится применять интегральные алгоритмы, а в них все ошибки будут накапливаться.

Плюс температурный дрейф. А у акселерометров от ST наблюдается интересная особенность - при определенной температуре, в узком диапазоне, (для каждого экземпляра своей) наблюдается резкое увеличение шумов.

Реальный объект будет совершать сложное движение, а не только ускоренное. По-этому, к ошибкам, связанным с конструктивными особенностями акселерометра, добавятся ошибки, связанные с наличием в движении обекта участков равномерного движения (там ускорение равно 0 и для акселерометра ничем не отличается от неподвижного состояния), ускоренного движения с ускорением менее 1 mg, с ускорением более 2 mg.

А, поскольку, только конструктивные особенности дают ошибку ускорения более 15%, то уж об ошибках рассчета пройденного пути и говорить не приходится.

Применения акселерометров в системах, определяющих перемещение возможно, когда требуетя только оценить, например, есть движение или нет (датчик перемещения в охранных системах) или в изделиях, где процессом движения обекта (из точки А в точку В) управляет сторонний оператор, а данные от обекта служат только для визуализации процесса движения, например, компьютерная мышка.

Вот полезная статья об интегральных акселерометрах - http://www.eltech.spb.ru/pdf/A_D/ADXL.pdf.
muravei
Цитата(ilya-m @ May 16 2012, 10:14) *
Для вычисления пройденного пути по известному ускорению, в любом случае, приходится применять интегральные алгоритмы, а в них все ошибки будут накапливаться.

Ну , а скорость с "велосипедной" точностью, померять можно ?
Я программно добрался до акселерометра в смартфоне , но пока кроме беснующихся цифирок получить ничего не удалось. sad.gif
ilya-m
Цитата(muravei @ May 16 2012, 11:49) *
Ну , а скорость с "велосипедной" точностью, померять можно ?


Скорость - это тоже интеграл от ускорения, правда первый. Ошибка, как и в расчете перемещения, со временем будет накапливаться. Алгоритм периодической компенсации ошибок интегрирования все равно потребуется. Для измерения скорости проще применить GPS приемник - там тоже косвенный метод определения скорости, по точности он будет ниже прямого метода. Зато есть постоянная корректировка ошибки определения скорости (фактически в GPS приемнике будет кусочно-линейная апроксимация скорости).
muravei
Цитата(ilya-m @ May 16 2012, 12:24) *
Для измерения скорости проще применить GPS приемник

Это есть и не интересно.

Допускаю, клалибровку на остановках. sm.gif
Но как отделаться от g ?
ilya-m
Цитата(muravei @ May 16 2012, 13:42) *
Но как отделаться от g ?


Например, включить ФВЧ, как я писал в сообщении №5. К чему это приведет, для Вашей задачи, я не знаю. У меня в датчике перемещения для охранной системы применение ФВЧ было полезным.
muravei
Цитата(ilya-m @ May 16 2012, 16:03) *
У меня в датчике перемещения для охранной системы применение ФВЧ было полезным.

В моем случае он должен быть программным.
А если охраняемый объект попробует похитить улитка , датчик сработает? sm.gif
Это я о том , какой должна быть частота среза.
ilya-m
Цитата(muravei @ May 16 2012, 21:04) *
А если охраняемый объект попробует похитить улитка , датчик сработает? sm.gif
Это я о том , какой должна быть частота среза.


Ну, на счет улитки я ничего сказать могу, а полезный сигнал при перекатывании легкового автомобиля человеком находится примерно в диапазоне от 0.1 до 0.8 Гц.
Ruslan-maniak
Здравствуйте. У меня акселерометр LIS331DLH (даташит). Пытаюсь с ним работать, и ничего не выходит. На данный момент настроен он следующим образом: в первом ctrl-регистре записано 0x3F (нормальный режим питания, 1000 гц считывание), в остальных - нули (ни каких фильтров, масштаб +/- 2g). В результате чего по оси Z в полном покое акселерометра пополучается характеристика Z (см. картинку). Среднее значение получается 4917 единиц, а шум составляет около +/- 300 единиц (т.е. +/-6% от этого значения). По этой оси должно измеряться ускорение свободного падения. Но исходя из того что выходные данные 16-битные и масштаб +/-2g, то это значение получается хрен пойми что. Так как g при таких условиях должно получаться около 16000, а не как не 5000. И ладно бы, если бы было 5000, но ведь у нас шумы получаются около +/- 6% от g получаются. С таким мусором ни о какой адекватной оценке и речи быть не может. Ускорения планируется мерить не большие - гораздо меньше g. Есть сомнения - надо провести диагностику. В результате диагностики (4-й ctrl-регистр = 0х0А или 0х02) получилость следующее: электростатикой или добавлялось или отнималось в зависимости от содержимого регистра значение целого g. Графики Z+ и Z- (см. картинку). Шум оставался тот же по уровню. Хотя исходя из даташита значения должны смещаться на 300 единиц а не на 5000. Так вот у меня вопрос собсно, что я делаю неправильно? Почему лыжи не едут? Может кто сталкивался с такой ситуацией? акселерометр в горизонтальном положении.
MrAlex
А если повращать его в пространстве по разным осям? +g -g ?
Ruslan-maniak
Вращение отрабатывает по всем осям в пропорциях верно. То есть если перевернуть, то будет -5000, поставить другую ось вертикально - на ней будет 5000. И артангенсы высчитываются более менее верно. Проблема именно в абсолютных значениях и огромных шумах. Ведь по даташиту на частоте 1000 герц шум должен быть - пол процента от g. А у меня в 10 раз больше.
polyakovav
Обратите внимание на таблицу 3 в даташите. На самом деле разрядов всего 12. Там же указана плотность собственных шумов (довольно высокая). Если нужно снизить шум, включите фильтры. Но на многое рассчитывать не стоит.
Мы используем подобные кристаллы (LIS3LV02DL) на дешевых платах навигации для коррекции наклонов магнитного компаса.
Ruslan-maniak
Ок, спасибо. Вроде бы сходится. Тогда диагностика показывает как раз в районе 300 единиц. НО тогда возникает вопрос. При масштабе +/-2g и 12 битах у меня ускорение свободного падения получается в районе 320-330 единиц. И что делать с этим значением? Исходя из 12 бит значение ускорения свободного падения у нас должно быть в районе 1024, и исходя из таблицы 3 при этом масштабе у нас 1 mg/единица, то есть g должно быть равно 980. Опять не сходится.

попрака: g должно быть равно 1000 единиц
MrAlex
Может, что-то не так с математикой переводящей в знаковый формат.
Ruslan-maniak
Да нет, всё так, мне кажется. Ведь диагностические триста я получаю как надо и с плюсом и с минусом.
polyakovav
Не вполне понятно, как получены графики Z- Z+ на рисунке.
Ruslan-maniak
они получены следующим образом. акселерометр лежит в покое в горизонтальной плоскости, т.е. ось Z направлена вертикально вверх. Я считываю 50 значений с периодом 1 мс. Акселерометр также работает с этой частотой. В результате этого получается зелёный график. После вашей подсказки значения сдвинулись на 4 бита вправо (поделились на 16) и стали в районе 300. Затем я влючил режим диагностики со знаком плюс и также снял 50 значений с той же частотой. В результате получился график красного цвета. Если также принять данные за 12 бит то получается в районе 600. Т.е. диагностика прибавила 300 к нашему значению, Что соответствует тому что написано в даташите. Затем я провёл диагностику со знаком минус - результат оказался приближен к нулю. Это синий график. При 12 битах результат так же в районе 0. Т.о. диагностика показывает что всё исправно. Однако, само знаение гравитации равное 300 меня смущает, ибо оно должно быть и по даташиту(указана цена деления одной единицы выходных данных = 1mg) и просто поделя 4g на 12 бит, получаем g = примерно 1000. НО у нас почему то 300, а не тысяча. Вот в чём сейчас загвоздка. Не может ли это негативно сказаться на шумах. То есть не может ли быть так что ускорение равное g у нас полычается равно всего лишь 300, а шумы соответствуют 1000. Как-то так. Надеюсь понятно объяснился.
MrAlex
Так g не меряется.
Надо сделать два измерения, g+ и g-, сложить и разделить на два. Получите масштаб.
Ruslan-maniak
Чаво? Вы в этом уверены? Я в этом искренне сомневаюсь. Я понимаю что это вполне себе решение. Но в конкретном случае я считаю что это решение, скажем так, не по даташиту.
iDiode
Цитата(MrAlex @ Jun 10 2013, 12:19) *
... сложить и разделить на два. Получите масштаб.

Вычесть. А если сложить, то будет "смещение нуля" - очень полезная вещь, кстати.

MrAlex
Цитата
Вычесть. А если сложить, то будет "смещение нуля" - очень полезная вещь, кстати.

Верно подмечено.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.