Я написал университетскую диссертацию, в которой используется UC Atmega328, запрограммированный с помощью Ansi C, GNU Toolchain и MEMS-акселерометра MPU6050. Устройство работает, как я хотел, но я должен описать его, и у меня возникли проблемы с описанием результатов декодирования акселерометра.
Я использую шкалу +/- 8g и после прочтения правильного регистра через I2C он использует функцию «itoa» для вывода результата на консоль в виде десятичного числа строки ASCII. Затем в листе Excel я делю число на коэффициент и получаю ускорение, масштабируемое на «g».
Какой математически правильный способ расчета ускорения в г?
MPU6050 documentation says that:
- result is stored as "16-bit 2’s complement value"
- it is scaled in +/- 8g,
- "Sensitivity Scale Factor = 4096 LSB / g"
So +8g equal 8 * 4096 = 32768
and -8g equal -8 * 4096 = -32768
... но это невозможно сохранить в двух значениях дополнения, следовательно, минимальное значение 16-битового дополнения 16 бит -32768, но максимальное значение + 32,767
Для работы моего устройства это не проблема, но я больной перфекционист, а также боюсь, что преподаватели университетов поймают голубую картинку на этой странице моей диссертации.
Как правильно рассчитать ускорение g из необработанных результатов измерений акселерометра.