Съдържание:

Измерване на ускорението с помощта на BMA250 и Arduino Nano: 4 стъпки
Измерване на ускорението с помощта на BMA250 и Arduino Nano: 4 стъпки

Видео: Измерване на ускорението с помощта на BMA250 и Arduino Nano: 4 стъпки

Видео: Измерване на ускорението с помощта на BMA250 и Arduino Nano: 4 стъпки
Видео: Залил Дедов САМОГОН!! Mark2 1JZ-GTE раздает ДОЛГИ!! 2024, Юли
Anonim
Image
Image

BMA250 е малък, тънък, 3-осен акселерометър с ултра ниска мощност с измерване с висока разделителна способност (13 бита) при до ± 16 g. Цифровите изходни данни са форматирани като 16-битови двойки, допълващи се и са достъпни чрез I2C цифров интерфейс. Той измерва статичното ускорение на гравитацията в приложенията за отчитане на наклона, както и динамичното ускорение в резултат на движение или удар. Неговата висока разделителна способност (3,9 mg/LSB) позволява измерване на промените в наклона под 1,0 °.

В този урок ще измерим ускорението във всичките три перпендикулярни оси, използвайки BMA250 и Arduino Nano.

Стъпка 1: Изисква се хардуер:

Необходим хардуер
Необходим хардуер
Необходим хардуер
Необходим хардуер
Необходим хардуер
Необходим хардуер

Материалите, от които се нуждаем за постигане на целта ни, включват следните хардуерни компоненти:

1. BMA250

2. Arduino Nano

3. I2C кабел

4. I2C щит за 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 setup ()

{

// Инициализира I2C комуникацията като MASTER

Wire.begin ();

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

Serial.begin (9600);

// Стартиране на I2C предаване

Wire.beginTransmission (Addr);

// Избор на регистър за избор на диапазон

Wire.write (0x0F);

// Задайте диапазон +/- 2g

Wire.write (0x03);

// Спиране на I2C предаването

Wire.endTransmission ();

// Стартиране на I2C предаване

Wire.beginTransmission (Addr);

// Изберете регистър на честотната лента

Wire.write (0x10);

// Задайте честотна лента 7,81 Hz

Wire.write (0x08);

// Спиране на I2C предаването

Wire.endTransmission (); забавяне (300);}

void loop ()

{

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

// Стартиране на I2C предаване

Wire.beginTransmission (Addr);

// Избор на регистри на данни (0x02 - 0x07)

Wire.write (0x02);

// Спиране на I2C предаването

Wire.endTransmission ();

// Заявка за 6 байта

Wire.requestFrom (Addr, 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 е триаксиален цифров сензор за ускорение, който е интегриран с интелигентен контролер за прекъсвания, задействан от движение на чипа.

Препоръчано: