Оглавление:

Измерение ускорения с помощью ADXL345 и Raspberry Pi: 4 шага
Измерение ускорения с помощью ADXL345 и Raspberry Pi: 4 шага

Видео: Измерение ускорения с помощью ADXL345 и Raspberry Pi: 4 шага

Видео: Измерение ускорения с помощью ADXL345 и Raspberry Pi: 4 шага
Видео: ADXL345 Accelerometer Interfacing with Raspberry Pi 4 | C/C++ Language 2024, Июль
Anonim
Image
Image

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

В этом руководстве демонстрируется взаимодействие модуля датчика ADXL345 с raspberry pi, а также показано его программирование с использованием языка Python. Чтобы считывать значения ускорения по всем 3 осям, мы использовали raspberry pi с адаптером I2C. Этот адаптер I2C делает подключение к модулю датчика простым и надежным.

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

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

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

1. ADXL345

2. Raspberry Pi

3. Кабель I2C

4. I2C Shield для raspberry pi

5. Кабель Ethernet.

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

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

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

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

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

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

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

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

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

Преимущество использования raspberry pi заключается в том, что он обеспечивает гибкость языка программирования, на котором вы хотите запрограммировать плату, чтобы связать с ней датчик. Используя это преимущество этой платы, мы демонстрируем ее программирование на питоне. Код на Python для ADXL345 можно загрузить в нашем сообществе github, которое называется Control Everything Community.

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

В качестве первого шага кодирования вам необходимо загрузить библиотеку smbus в случае python, потому что эта библиотека поддерживает функции, используемые в коде. Итак, чтобы скачать библиотеку, вы можете перейти по следующей ссылке:

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

Вы также можете скопировать рабочий код Python для этого датчика отсюда:

импортировать smbus

время импорта

# Получить I2C busbus = smbus. SMBus (1)

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

# Выбрать регистр пропускной способности, 0x2C (44)

# 0x0A (10) Нормальный режим, частота выходных данных = 100 Гц

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-Axis LSB, X-Axis 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-Axis LSB, Y-Axis 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-Axis LSB, Z-Axis 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

# Выводить данные на экран

print "Ускорение по оси X:% d"% xAccl

print "Ускорение по оси Y:% d"% yAccl

print "Ускорение по оси Z:% d"% zAccl

Часть кода, упомянутая ниже, включает библиотеки, необходимые для правильного выполнения кодов Python.

импортировать smbusимпорт время

Код можно выполнить, набрав в командной строке указанную ниже команду.

$> Python ADXL345.py

Выходной сигнал датчика также показан на рисунке выше для справки пользователя.

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

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

ADXL345 - это небольшой, тонкий, 3-осевой акселерометр со сверхнизким энергопотреблением, который можно использовать в мобильных телефонах, медицинских приборах и т. Д. Его применение также включает игровые и указывающие устройства, промышленные приборы, персональные навигационные устройства и защиту жесткого диска (HDD).

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