MPU6050 — карта регістрів і формули переводу

Швидкий довідник по MPU6050: I2C-адресація, ключові регістри, режими діапазону і формули переводу сирих значень у фізичні одиниці.


I2C-адреса

AD0 (пін) Адреса
Підтягнутий до GND (за замовчуванням) 0x68
Підтягнутий до VCC 0x69

На модулях GY-521 AD0 зазвичай розведений на окремий пін, можна перемикати.


Ключові регістри

Адреса Назва Опис
0x6B PWR_MGMT_1 Керування живленням. Запис 0 — будимо.
0x1B GYRO_CONFIG Діапазон гіроскопа (див. нижче)
0x1C ACCEL_CONFIG Діапазон акселерометра (див. нижче)
0x3B ACCEL_XOUT_H Початок 6 байтів даних акселерометра
0x43 GYRO_XOUT_H Початок 6 байтів даних гіроскопа
0x41 TEMP_OUT_H Температура (2 байти)
0x75 WHO_AM_I Має повертати 0x68 — перевірка зв’язку

Дані: формат і порядок

Від 0x3B чип віддає 6 байтів акселерометра, по два на вісь, старший байт перший:

Склейка двох байтів у число зі знаком:

Гіроскоп — аналогічно, починаючи з 0x43. Між ними (0x410x42) лежить температура.


Діапазони акселерометра (ACCEL_CONFIG, 0x1C)

Біти [4:3] регістра задають повний діапазон. Чим ширший — тим грубіша роздільна здатність на одну одиницю.

AFS_SEL Діапазон Сирий діапазон Дільник (LSB/g)
0 ±2 g −32768 … +32767 16384
1 ±4 g −32768 … +32767 8192
2 ±8 g −32768 … +32767 4096
3 ±16 g −32768 … +32767 2048

Формула переводу в g:

За замовчуванням — ±2 g, дільник 16384.

Звідки 16384. Діапазон ±2g розкладений на 16 біт зі знаком. Половина діапазону (2g) відповідає максимуму 32768. 32768 / 2 = 16384 одиниць на кожен g. Поміняв діапазон — поміняв дільник.

Класична граблина. Взяв чужий код з іншим діапазоном (наприклад, ±4 g), забув про дільник — і твої числа в 2 рази менші, ніж мали б бути. Модель отримує дані не того масштабу й видає сміття.


Діапазони гіроскопа (GYRO_CONFIG, 0x1B)

Аналогічно, біти [4:3]:

FS_SEL Діапазон Дільник (LSB/°/с)
0 ±250 °/с 131.0
1 ±500 °/с 65.5
2 ±1000 °/с 32.8
3 ±2000 °/с 16.4

Формула:

За замовчуванням — ±250 °/с, дільник 131.0.


Температура

Регістр Що
0x41-0x42 TEMP_OUT (2 байти, int16)

Формула:

Це температура самого чипа, не оточення. Зміни значущі переважно для калібрування датчика.


Послідовність ініціалізації (мінімальна)


Читання акселерометра — повний код


Типові значення в спокої

При нерухомому датчику, рівно покладеному:

Вісь Очікуване значення (g)
X ≈ 0
Y ≈ 0
Z ≈ 1.0 (земне тяжіння)

Сума √(ax² + ay² + az²) має бути близько 1.0 — це постійний орієнтир, корисний для самоперевірки калібрування.


Підказки з власного досвіду

WHO_AM_I — перший крок діагностики. Якщо чип повертає не 0x68 (або не 0x69 для AD0=VCC) — далі читати марно. Спершу перевір живлення, GND, дроти SDA/SCL.

Регістри прокидаються один раз. Якщо змінив діапазон через ACCEL_CONFIG — він тримається до наступного reset або перезапису.

Внутрішня температура зростає при роботі. Якщо тренуєш модель на даних і не дав чипу прогрітись — реальні значення в нормальному режимі будуть трохи інакші. Дай йому хвилину постояти перед збором датасету.

Шум живлення = шум даних. MPU6050 чутливий до якості 3.3 В. Якщо живиш від «брудного» USB-хаба — на високих діапазонах побачиш дрейф навіть у спокої. Конденсатор 100 нФ на VCC поряд з чипом — і простіше, і чесніше.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *