MPU6050 логика привязки к нулю.

Papik_SUB
Offline
Зарегистрирован: 04.02.2019

Здравствуйте.

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

Если я например положил MPU на кривую поверхность и запустил процесс калибровки, то он принял эту поверхность как "0" - далее продолжая работать в обычном режиме.

Спасибо....

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А кто Вам мешает в программе установить смещение по считанным данным и дальнейшие значения высчитывать с этим смещением?

Papik_SUB
Offline
Зарегистрирован: 04.02.2019

Да чего я только не пробовал. И офсетами корректировал данные из MPU и диаппазон сдвигал относительно офсетов. Как то раз я его даже в таое состояние вогнал, что он после выключения питания, сохранил старые нули. Но увы. Работает все очень криво и нестабильно. Я в математике не силен. Скорее всего по этому немогу разобраться в том как связать все это через всякие арктангенсы и т.п. А может MPU вообще так не работает.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Уважаемый, Вы про какие секонсы-косеконсы говорите? Положили, считали 3 значения градусов по осям x, y, z. Запомнили (в программе) - это Ваш ноль. Переместили прибор, считали значения градусов по осям x, y, z и вычли из них Ваши запомненные значения. Где тут арктангенс? Если надо сохранить значение EEPROM() Вам в помощь. Читайте!

Papik_SUB
Offline
Зарегистрирован: 04.02.2019

Извеняюсь - долго не мог добраться до форума.

Дело тут не совсем в секонсах-косекоксах. И не совсем в буфферизации x, y, z, . Это я и сам прекрасно понимаю. Дело в том, что мне нужно масштабировать и диапазон тоже.

То есть:     Если я например откалибровал прибор на поверхности, которая имеет угол 15 градусов, то и соответственно 90 градусов перпендикуляные этому 15 градусному началу отсчета ( нулевой поверхности ) должны быть именно 90 + 15 = 105 Далее - эти 105 градусов нужно привести к 90. Короче говоря - прибор должен после этого перестроить диаппазон для 15 градусной поверхности.

Так вот я нимогу никак этого сделать. При любых сдвигах диаппазона, прибор все - ровно думает про "перпендикуляр" который в нем забит как начало отсчета. То - есть после того как он подошел к 90 градусам (которые в нем зашиты) он сбрасывается в "0".

Так что ему наплевать на мои танцы с бубном вокруг буфферизации выходных данных и прибавления их как офсетов к текущим.

Вообще-то я не в курсе того, вшит ли 90 градусный диаппазон в MPU как начало отсчета. Я этого не могу утверждать. Но по факту это так. Или нет????