Съдържание:

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

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

Видео: Измерване на ускорението с помощта на ADXL345 и Raspberry Pi: 4 стъпки
Видео: PENJELASAN SENSOR AKSELEROMETER 2024, Юли
Anonim
Image
Image

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

В този урок е демонстрирано взаимодействието на сензорния модул ADXL345 с малинов pi и е илюстрирано и неговото програмиране с помощта на език python. За да прочетем стойностите на ускорението по всички 3-осни, използвахме малинов pi с I2C адаптер, който прави връзката към сензорния модул лесна и по-надеждна.

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

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

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

1. ADXL345

2. Малина Пи

3. I2C кабел

4. I2C щит за малиново пи

5. Ethernet кабел

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

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

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

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

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

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

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

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

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

Предимството на използването на малинов pi е, че ви осигурява гъвкавостта на езика за програмиране, на който искате да програмирате платката, за да свържете интерфейса на сензора с нея. Използвайки това предимство на тази дъска, ние демонстрираме тук нейното програмиране в python. Кодът на python за ADXL345 може да бъде изтеглен от нашата github общност, която е Control Everything Community.

Освен за улеснение на потребителите, ние обясняваме кода и тук:

Като първа стъпка от кодирането трябва да изтеглите библиотеката smbus в случай на python, защото тази библиотека поддържа функциите, използвани в кода. Така че, за да изтеглите библиотеката, можете да посетите следната връзка:

pypi.python.org/pypi/smbus-cffi/0.5.1

Можете също да копирате работния код на python за този сензор от тук също:

внос smbus

време за импортиране

# Вземете I2C шина = smbus. SMBus (1)

# ADXL345 адрес, 0x53 (83)

# Изберете регистър на честотната лента, 0x2C (44)

# 0x0A (10) Нормален режим, Скорост на изходните данни = 100 Hz

bus.write_byte_data (0x53, 0x2C, 0x0A)

# ADXL345 адрес, 0x53 (83)

# Изберете регистър за управление на мощността, 0x2D (45)

# 0x08 (08) Деактивиране на автоматичното заспиване

bus.write_byte_data (0x53, 0x2D, 0x08)

# ADXL345 адрес, 0x53 (83)

# Изберете регистър за формат на данни, 0x31 (49)

# 0x08 (08) Самодиагностиката е деактивирана, 4-жичен интерфейс

# Пълна разделителна способност, Обхват = +/- 2g

bus.write_byte_data (0x53, 0x31, 0x08)

time.sleep (0.5)

# ADXL345 адрес, 0x53 (83)

# Прочетете данните обратно от 0x32 (50), 2 байта

# X-ос LSB, X-ос MSB

data0 = bus.read_byte_data (0x53, 0x32)

data1 = bus.read_byte_data (0x53, 0x33)

# Конвертирайте данните в 10-бита

xAccl = ((данни1 и 0x03) * 256) + данни0

ако xAccl> 511:

xAccl -= 1024

# ADXL345 адрес, 0x53 (83)

# Прочетете данните обратно от 0x34 (52), 2 байта

# Y-ос LSB, Y-ос MSB

data0 = bus.read_byte_data (0x53, 0x34)

data1 = bus.read_byte_data (0x53, 0x35)

# Конвертирайте данните в 10-бита

yAccl = ((данни1 и 0x03) * 256) + данни0

ако yAccl> 511:

yAccl -= 1024

# ADXL345 адрес, 0x53 (83)

# Прочетете данните обратно от 0x36 (54), 2 байта

# Z-ос LSB, Z-ос MSB

data0 = bus.read_byte_data (0x53, 0x36)

data1 = bus.read_byte_data (0x53, 0x37)

# Конвертирайте данните в 10-бита

zAccl = ((данни1 и 0x03) * 256) + данни0

ако zAccl> 511:

zAccl -= 1024

# Извеждане на данни на екрана

отпечатайте "Ускорение по ос X: %d" %xAccl

отпечатайте "Ускорение по оста Y: %d" %yAccl

отпечатайте "Ускорение по ос Z: %d" %zAccl

Частта от кода, спомената по -долу, включва библиотеките, необходими за правилното изпълнение на кодовете на python.

импортиране на smbusimport време

Кодът може да бъде изпълнен чрез въвеждане на посочената по -долу команда в командния ред.

$> python ADXL345.py

Изходът на сензора също е показан на горната снимка за справка на потребителя.

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

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

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

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