акселерометра MPU6050

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
Долго валялась такая штука на полочке. Нет, я ее даже проверил, и кое кому кое что правил.. Но сам долго не исследовал.
Теперь взялся.
Скетчи выкладывать пока не буду, т.к. не представляют ценности.
Штука очень чувствительная , калибровка изначально отсутствует совсем.
Вот сырые данные которые удалось получить с горизонтально закрепленного датчика:
Данные вычисляются как среднее из 100 измерений с интервалом в 20 мс.
Acceleration X: 0, Y: 1, Z: 19991 m/s^2
Acceleration X: 0, Y: 2, Z: 19995 m/s^2
Acceleration X: 3, Y: 1, Z: 19991 m/s^2
Acceleration X: -1, Y: 3, Z: 19991 m/s^2
Acceleration X: 2, Y: 2, Z: 19991 m/s^2
Acceleration X: -46, Y: -46, Z: 19988 m/s^2 - вот это я бросил отвертку на стол, на котором закреплен датчик.
Acceleration X: 0, Y: 4, Z: 19988 m/s^2
Acceleration X: 0, Y: 2, Z: 19990 m/s^2
Acceleration X: 4, Y: 2, Z: 19991 m/s^2
Acceleration X: -5, Y: 1, Z: 19990 m/s^2
Acceleration X: 0, Y: 7, Z: 19986 m/s^2
Это без задержек, задержка была сделана для удобства просмотра и настройки.
Acceleration X: -1, Y: -6, Z: 19985 m/s^2
Acceleration X: -1, Y: -2, Z: 19986 m/s^2
Acceleration X: -1, Y: 0, Z: 19986 m/s^2
Acceleration X: -1, Y: -1, Z: 19993 m/s^2
Acceleration X: 3, Y: -3, Z: 19996 m/s^2
Acceleration X: -7, Y: 0, Z: 19994 m/s^2
Acceleration X: 3, Y: -5, Z: 19995 m/s^2
Acceleration X: -2, Y: 1, Z: 19976 m/s^2
Acceleration X: 0, Y: -1, Z: 19985 m/s^2
Acceleration X: -1, Y: 13, Z: 19995 m/s^2
Acceleration X: 9, Y: -3, Z: 19985 m/s^2
Acceleration X: 0, Y: 1, Z: 19991 m/s^2
Acceleration X: -9, Y: 2, Z: 19978 m/s^2
Acceleration X: 0, Y: 0, Z: 19987 m/s^2
Да, и на m/s^2 - не смотреть, просто не убирал .

Как видим ускорение по Z равно почти 20к. А это не что иное как сила тяжести. При этом нормально значение сырых данных для этой оси должно быть в районе 65536/4= 16384. (диапазон 2g в каждую сторону).
Идея значит такая. Берем датчик и закрепляем его максимально горизонтально, снимаем показание по оси Z, перевернув его "вверх тормашками" снять еще показание Z. Это и будет 2-ое значение силы тяжести для оси Z. При таком раскладе у меня по оси Z вышло g=16602. При этом к сырому значению Z надо прибавить -3395 , что бы получить 0. То же было проделано для осей X и Y , поправка для dX -365, g=16523, для dY 135, g=16455.

Из результатов видим , что дребезг идет в пределах + - 10 едениц, тогда точность получается 0.01 g, что в целом не плохо. Угол можно определить примерно в 0.07 радуса (прикидка, не рссчет), т.е. 5 минут

Увидел у Гайвера упоминание о режиме DMP , но в документации ничего про это нет. А те биты, что его активируют записаны как резервные.

Исследование продолжу. Будет что интересное - дополню.

Нашел некую доп. информацию для этого датчика на сайте TDK, https://invensense.tdk.com/products/motion-tracking/6-axis/icm-20689/ В даташитах есть упоминание о DMP, чего нет в той инструкции, на которую я наткнулся сначала.
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
Сделал большую ошибку.. Я по наивности предположил, что оси у гироскопа строго перпендикулярны, но судя по всему это не так. Тогда методика определения поправок не подходит. У меня суммарная сила тяжести получалось 10 с хвостом.
Остается проверить методику запоминания максимальных и минимальных значений (раньше было такое с гаджетами: покрути в разных направлениях) и вычисление поправок и коэффициентов по ним..