Акселерометр (Troyka-модуль)

Акселерометр (Troyka-модуль) позволяет определять ускорение действующее в направлении осей X, Y, Z и применяется для определения ориентации объекта в пространстве: углов крена и тангажа.

Видеообзор

Подключение и настройка

Акселерометр общается с управляющей электроникой по протоколу I²C / TWI. Для подключения используется два 3-проводных шлейфа. При подключении модуля к Arduino удобно использовать Troyka Shield. Для получения данных с акселерометра мы написали библиотеку Troyka-IMU. Она скрывает в себе все тонкости протокола, через который передаются данные c акселерометра и предоставляет простые и понятные функции для вывода значений.

Пример работы

В качестве примера выведем в Serial порт направление и величину ускорения свободного падения по осям X, Y, Z.

accelerometer.ino
// библиотека для работы I²C
#include <Wire.h>
// библиотека для работы с модулями IMU
#include <TroykaIMU.h>
 
// создаём объект для работы с акселерометром
Accelerometer accel;
 
void setup()
{
  // открываем последовательный порт
  Serial.begin(115200);
  // выводим сообщение о начале инициализации
  Serial.println("Accelerometer init...");
  // инициализация акселерометра
  accel.begin();
  // устанавливаем чувствительность акселерометра
  // 2g — по умолчанию, 4g, 8g
  accel.setRange(RANGE_2G);
  // выводим сообщение об удачной инициализации
  Serial.println("Initialization completed");
}
 
void loop()
{
  // вывод направления и величины ускорения в м/с² по оси X
  Serial.print(accel.readAX());
  Serial.print("\t\t");
  // вывод направления и величины ускорения в м/с² по оси Y
  Serial.print(accel.readAY());
  Serial.print("\t\t");
  // вывод направления и величины ускорения в м/с² по оси Z
  Serial.print(accel.readAZ());
  Serial.print("\t\t");
  Serial.println("");
  delay(100);
  /*
  // вывод направления и величины ускорения в м/с² по X, Y и Z
  float x, y, z;
  accel.readAXYZ(&x, &y, &z);
  Serial.print(x);
  Serial.print("\t\t");
  Serial.print(y);
  Serial.print("\t\t");
  Serial.print(z);
  Serial.println("");
  delay(100);
  */
}

Элементы платы

Акселерометр на LIS331DLH

Акселерометр основан на чипе LIS331DLH и представляет собой миниатюрный датчик ускорения выполненный по технологии MEMS компании STMicroelectronicsd в корпусе LGA 16 (3x3x1 мм). Общение акселерометра с управляющей электроникой осуществляется по протоколу I²C / TWI. Адрес устройства равен 0b0011000.

Обвязка для согласования уровней напряжения

Необходима для сопряжения устройств с разными питающими напряжениями. В нашем случае это управляющее устройство Arduino с 5 вольтовой логикой и модуль акселерометра LIS331DLH с 3,3 вольтовой логикой.

Контакты подключения 3-проводных шлейфов

Контакты питания:

  • Земля (G) — чёрный провод. Соедините с пином GND Arduino.
  • Питание (V) — красный провод. Соедините с пином 5V Arduino.
  • Не используется.

Контакты шины I²C:

  • Сигнальный (D) — Подключите к SDA пину Arduino.
  • Сигнальный (С) — Подключите к SCL пину Arduino.
  • Не используется.

Принципиальная схема

Характеристики

  • Напряжение питания: 3.3–5 В
  • Диапазон измерения: ±2g/±4g/±8g
  • Выходной интерфейс: I²C
  • Частота обновления сигнала: 0.5…1000 Гц
  • Температурный диапазон: −40…+85 °C
  • Габариты: 25×25 мм