Оглавление:

Измерение ускорения с использованием BMA250 и Arduino Nano: 4 шага
Измерение ускорения с использованием BMA250 и Arduino Nano: 4 шага

Видео: Измерение ускорения с использованием BMA250 и Arduino Nano: 4 шага

Видео: Измерение ускорения с использованием BMA250 и Arduino Nano: 4 шага
Видео: Измерение ускорения свободного падения с помощью прибора 2024, Ноябрь
Anonim
Image
Image

BMA250 - это небольшой, тонкий, сверхмалопотребляющий 3-осевой акселерометр с высоким разрешением (13 бит) для измерения при нагрузке до ± 16 г. Данные цифрового вывода форматируются как 16-битное дополнение до двоек и доступны через цифровой интерфейс I2C. Он измеряет статическое ускорение свободного падения в приложениях для измерения наклона, а также динамическое ускорение, возникающее в результате движения или удара. Его высокое разрешение (3,9 мг / младший значащий бит) позволяет измерять изменения наклона менее 1,0 °.

В этом уроке мы собираемся измерить ускорение по всем трем перпендикулярным осям с помощью BMA250 и Arduino Nano.

Шаг 1: Требуемое оборудование:

Требуемое оборудование
Требуемое оборудование
Требуемое оборудование
Требуемое оборудование
Требуемое оборудование
Требуемое оборудование

Материалы, которые нам нужны для достижения нашей цели, включают следующие компоненты оборудования:

1. BMA250

2. Arduino Nano

3. Кабель I2C

4. I2C Shield для Arduino Nano.

Шаг 2: Подключение оборудования:

Подключение оборудования
Подключение оборудования
Подключение оборудования
Подключение оборудования

Раздел аппаратного подключения в основном объясняет проводные соединения, необходимые между датчиком и Arduino. Обеспечение правильных соединений является основной необходимостью при работе с любой системой для достижения желаемого результата. Итак, необходимые подключения следующие:

BMA250 будет работать по I2C. Вот пример схемы подключения, демонстрирующий, как подключить каждый интерфейс датчика.

Изначально плата настроена для интерфейса I2C, поэтому мы рекомендуем использовать это подключение, если вы не сторонник этого. Все, что вам нужно, это четыре провода!

Требуются только четыре соединения, выводы Vcc, Gnd, SCL и SDA, которые подключаются с помощью кабеля I2C.

Эти соединения показаны на рисунках выше.

Шаг 3: Код Arduino для измерения ускорения:

Код Arduino для измерения ускорения
Код Arduino для измерения ускорения
Код Arduino для измерения ускорения
Код Arduino для измерения ускорения

Начнем с кода Arduino.

При использовании сенсорного модуля с Arduino мы включаем библиотеку Wire.h. Библиотека Wire содержит функции, которые облегчают обмен данными i2c между датчиком и платой Arduino.

Полный код Arduino приведен ниже для удобства пользователя:

#включают

// Адрес BMA250 I2C 0x18 (24)

#define Addr 0x18

установка void ()

{

// Инициализируем связь I2C как МАСТЕР

Wire.begin ();

// Инициализируем последовательную связь, устанавливаем скорость передачи = 9600

Serial.begin (9600);

// Запуск передачи I2C

Wire.beginTransmission (адрес);

// Выбираем регистр выбора диапазона

Wire.write (0x0F);

// Устанавливаем диапазон +/- 2g

Wire.write (0x03);

// Остановка передачи I2C

Wire.endTransmission ();

// Запуск передачи I2C

Wire.beginTransmission (адрес);

// Выбираем регистр пропускной способности

Wire.write (0x10);

// Устанавливаем полосу пропускания 7,81 Гц

Wire.write (0x08);

// Остановка передачи I2C

Wire.endTransmission (); задержка (300);}

пустой цикл ()

{

беззнаковые данные int [0];

// Запуск передачи I2C

Wire.beginTransmission (адрес);

// Выбираем регистры данных (0x02 - 0x07)

Wire.write (0x02);

// Остановка передачи I2C

Wire.endTransmission ();

// Запрос 6 байтов

Wire.requestFrom (Адрес, 6);

// Считываем шесть байтов

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb

если (Wire.available () == 6)

{

данные [0] = Wire.read ();

данные [1] = Wire.read ();

данные [2] = Wire.read ();

данные [3] = Wire.read ();

данные [4] = Wire.read ();

данные [5] = Wire.read ();

}

задержка (300);

// Преобразуем данные в 10 бит

float xAccl = ((данные [1] * 256.0) + (данные [0] & 0xC0)) / 64;

если (xAccl> 511)

{

xAccl - = 1024;

}

float yAccl = ((данные [3] * 256.0) + (данные [2] & 0xC0)) / 64;

если (yAccl> 511)

{

yAccl - = 1024;

}

float zAccl = ((данные [5] * 256.0) + (данные [4] & 0xC0)) / 64;

если (zAccl> 511)

{

zAccl - = 1024;

}

// Выводим данные на последовательный монитор

Serial.print («Ускорение по оси X:»);

Serial.println (xAccl);

Serial.print («Ускорение по оси Y:»);

Serial.println (yAccl);

Serial.print («Ускорение по оси Z:»);

Serial.println (zAccl);

}

В библиотеке проводов Wire.write () и Wire.read () используются для записи команд и чтения выходного сигнала датчика. Serial.print () и Serial.println () используются для отображения выходных данных датчика на последовательном мониторе Arduino IDE.

Выход датчика показан на картинке выше.

Шаг 4: Приложения:

Приложения
Приложения

Акселерометры, такие как BMA250, в основном находят свое применение в играх и переключении профилей дисплея. Этот сенсорный модуль также используется в усовершенствованной системе управления питанием для мобильных приложений. BMA250 - это трехосный цифровой датчик ускорения, который объединен с интеллектуальным встроенным контроллером прерываний, запускаемым движением.

Рекомендуемые: