Съдържание:

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

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

Видео: Измерване на ускорението с помощта на ADXL345 и Arduino Nano: 4 стъпки
Видео: Измерване на скоростта на слънчевата светлина с помощта на микровълнова печка 2024, Ноември
Anonim
Image
Image

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

В този урок е илюстрирано взаимодействието на сензорния модул ADXL345 с arduino nano. За да прочетем стойностите на ускорението, използвахме arduino с адаптер I2c, който прави връзката с сензорния модул лесна и по -надеждна.

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

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

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

1. ADXL345

2. Arduino Nano

3. I2C кабел

4. I2C щит за Arduino Nano

Стъпка 2: Свързване на хардуера:

Хардуерно свързване
Хардуерно свързване
Хардуерно свързване
Хардуерно свързване

Разделът за свързване на хардуера основно обяснява необходимите кабелни връзки между сензора и arduino nano. Осигуряването на правилни връзки е основната необходимост, докато работите върху всяка система за желания изход. И така, необходимите връзки са както следва:

ADXL345 ще работи през I2C. Ето примерната електрическа схема, демонстрираща как да свържете всеки интерфейс на сензора.

Извън кутията, дъската е конфигурирана за I2C интерфейс, като такава препоръчваме да използвате тази връзка, ако иначе не сте агностици.

Всичко, от което се нуждаете, са четири проводника! Изискват се само четири връзки Vcc, Gnd, SCL и SDA щифтове и те са свързани с помощта на I2C кабел.

Тези връзки са показани на снимките по -горе.

Стъпка 3: Код за измерване на ускорението:

Код за измерване на ускорението
Код за измерване на ускорението

Нека започнем с кода arduino сега.

Докато използваме сензорния модул с arduino, ние включваме библиотеката Wire.h. Библиотеката "Wire" съдържа функциите, които улесняват i2c комуникацията между сензора и платката arduino.

Целият код на arduino е даден по -долу за удобство на потребителя:

#включва

// ADXL345 I2C адрес е 0x53 (83)

#define Addr 0x53

void setup ()

{

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

Wire.begin ();

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

Serial.begin (9600);

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

Wire.beginTransmission (Addr);

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

Wire.write (0x2C);

// Нормален режим, Скорост на изходните данни = 100 Hz

Wire.write (0x0A);

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

Wire.endTransmission ();

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

Wire.beginTransmission (Addr);

// Изберете регистър за управление на мощността

Wire.write (0x2D);

// Деактивиране на автоматичното заспиване

Wire.write (0x08);

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

Wire.endTransmission ();

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

Wire.beginTransmission (Addr);

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

Wire.write (0x31);

// Самодиагностиката е деактивирана, 4-жичен интерфейс, пълна разделителна способност, диапазон = +/- 2g

Wire.write (0x08);

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

Wire.endTransmission ();

забавяне (300);

}

void loop ()

{

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

за (int i = 0; i <6; i ++)

{

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

Wire.beginTransmission (Addr);

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

Wire.write ((50 + i));

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

Wire.endTransmission ();

// Искане на 1 байт данни

Wire.requestFrom (Addr, 1);

// Прочетете 6 байта данни

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

ако (Wire.available () == 1)

{

данни = Wire.read ();

}

}

// Конвертираме данните в 10-бита

int xAccl = (((данни [1] & 0x03) * 256) + данни [0]);

ако (xAccl> 511)

{

xAccl -= 1024;

}

int yAccl = (((данни [3] & 0x03) * 256) + данни [2]);

ако (yAccl> 511)

{

yAccl -= 1024;

}

int zAccl = (((данни [5] & 0x03) * 256) + данни [4]);

ако (zAccl> 511)

{

zAccl -= 1024;

}

// Извеждане на данни към сериен монитор

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

Serial.println (xAccl);

Serial.print ("Ускорението по оста Y е:");

Serial.println (yAccl);

Serial.print ("Ускорението по Z-ос е:");

Serial.println (zAccl);

забавяне (300);

}

В библиотеката с проводници Wire.write () и Wire.read () се използват за писане на командите и четене на изхода на сензора.

Serial.print () и Serial.println () се използват за показване на изхода на сензора на серийния монитор на Arduino IDE.

Изходът на сензора е показан на горната снимка.

Стъпка 4: Приложения:

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

ADXL345 е малък, тънък, 3-осен акселерометър с ултра ниска мощност, който може да се използва в телефони, медицински инструменти и др. Приложението му включва също игри и посочващи устройства, промишлени инструменти, лични навигационни устройства и защита на твърдия диск (HDD).

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