Калибровочный акселерометр MPU6050

Недавно я получил MPU6050 и заметил, что данные акселерометра немного сбились, особенно по оси Z.

Я запускаю его на Teensy версии 4.0 с библиотекой MPU6050 Adafruit и базовым примером кода: https://github.com/adafruit/Adafruit_MPU6050/blob/master/examples/basic_readings/basic_readings.ino

Будучи стабильным на плоской поверхности (+Z вверх), он показывает ~8,5 м/с^2, а при переворачивании (-Z вверх) ~11,6 м/с^2:

+Z:
Acceleration X: -0.06, Y: 0.00, Z: 8.44 m/s^2
-Z:
Acceleration X: -0.01, Y: -0.07, Z: -11.57 m/s^2

Выравнивание других осей по вертикали дает мне:

+X:
Acceleration X: 10.16, Y: -0.16, Z: -0.03 m/s^2
-X:
Acceleration X: -9.27, Y: -0.10, Z: -0.18 m/s^2
+Y:
Acceleration X: 0.07, Y: 9.55, Z: -0.10 m/s^2
-Y:
Acceleration X: 0.04, Y: -9.93, Z: -0.05 m/s^2

Показания X и Y могут быть скорректированы довольно близко к 9,81 м/с^2 только со смещением, но, похоже, ось Z также потребует некоторого масштабирования.

Мой вопрос: существует ли стандартный метод его калибровки в коде?

, 👍2


2 ответа


3

Да, акселерометр можно откалибровать. Смещение для каждого из 3 акселерометров может быть найдено таким, чтобы абсолютные значения максимального и минимального значений любой заданной оси акселерометра были равны. Максимальное и минимальное значения можно найти, повернув акселерометр таким образом, чтобы каждая ось была направлена прямо к земле и прямо от нее. Как только каждая ось нормализуется, каждой оси требуется значение регулировки величины, чтобы максимальное значение всех осей было равно друг другу. Может быть удобно, чтобы произведение максимума любой заданной оси и значение регулировки величины осей составляло 9,8 (метров в секунду * секунду).

,

Не могли бы вы поделиться статьей или ссылкой, чтобы мы могли посмотреть. Я понимаю, о чем вы говорите, но понятия не имею, как на самом деле это сделать., @Zhelyazko Grudov

Немного сложно найти подходящую статью. Это [NIST article](https://www.nist.gov/programs-projects/dynamic-mechanical-metrology-acceleration-force-and-acoustics/3-axis-accelerometer) выходит за рамки, предполагая, что 3 акселерометра могут даже не быть ортогональными. И другие статьи пропускают калибровку акселерометра (честно говоря, акселерометры обычно хороши из коробки для большинства приложений Arduino). Попробуйте это [Adafruit article](https://learn.adafruit.com/adafruit-analog-accelerometer-breakouts/calibration-and-programming) это похоже на то, что вам нужно., @st2000

Спасибо за ваш комментарий, @Zhelyazko Grudov


0

Да, библиотека Джеффа Роуберга выполняет калибровку за вас, когда вы включаете питание. Вам нужно будет убедиться, что модуль лежит ровно и неподвижно, а затем отправить символ по последовательному каналу, чтобы вызвать калибровку. Версия, основанная на библиотеке Джеффа, называемая Electronic Cats, может быть загружена непосредственно с помощью Arduino IDE.

Обратите внимание, что библиотека Джеффа немного ошеломляет/пугает новых пользователей. Если вы хотите узнать больше о том, как скрыть его сложность за простым и удобным интерфейсом, или о возможности сохранения результатов калибровки в постоянной памяти,чтобы вам не приходилось выполнять калибровку каждый раз при включении питания, или просто хотите узнать больше об этой теме в целом, пожалуйста, обратитесь к следующему учебнику:

https://youtu.be/k5i-vE5rZR0

,