Оглавление:

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

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

Видео: Измерение ускорения с помощью ADXL345 и Particle Photon: 4 шага
Видео: Учебное пособие по 3-осному акселерометру Arduino Nano LIS3DHTR 2024, Июнь
Anonim
Image
Image

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

В этом руководстве показано взаимодействие модуля датчика ADXL345 с фотоном частицы. Для считывания значений ускорения мы использовали частицу с адаптером I2C. Этот адаптер I2C делает подключение к модулю датчика простым и надежным.

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

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

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

1. ADXL345

2. Частичный фотон

3. Кабель I2C

4. I2C Shield для фотонов частиц

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

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

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

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

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

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

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

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

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

А теперь давайте начнем с кода частицы.

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

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

#включают

#включают

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

#define Addr 0x53

int xAccl = 0, yAccl = 0, zAccl = 0;

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

{

// Устанавливаем переменную

Particle.variable («i2cdevice», «ADXL345»);

Particle.variable ("xAccl", xAccl);

Particle.variable ("yAccl", yAccl);

Particle.variable ("zAccl", zAccl);

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

Wire.begin ();

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

Serial.begin (9600);

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

Wire.beginTransmission (адрес);

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

Wire.write (0x2C);

// Выбираем выходную скорость передачи данных = 100 Гц

Wire.write (0x0A);

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

Wire.endTransmission ();

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

Wire.beginTransmission (адрес);

// Выбираем регистр управления мощностью

Wire.write (0x2D);

// Выбираем автоматическое отключение сна

Wire.write (0x08);

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

Wire.endTransmission ();

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

Wire.beginTransmission (адрес);

// Выбираем регистр формата данных

Wire.write (0x31);

// Выбираем полное разрешение, +/- 2g

Wire.write (0x08);

// Конец передачи I2C

Wire.endTransmission ();

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

}

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

{

данные типа int без знака [6];

для (int я = 0; я <6; я ++)

{

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

Wire.beginTransmission (адрес);

// Выбираем регистр данных

Wire.write ((50 + i));

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

Wire.endTransmission ();

// Запрашиваем 1 байт данных с устройства

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

// Чтение 6 байтов данных

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

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

{

data = Wire.read ();

}

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

}

// Преобразуем данные в 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;

}

// Выводим данные в дашборд

Particle.publish («Ускорение по оси X:», String (xAccl));

Particle.publish («Ускорение по оси Y:», String (yAccl));

Particle.publish («Ускорение по оси Z:», String (zAccl));

}

Функция Particle.variable () создает переменные для хранения выходных данных датчика, а функция Particle.publish () отображает выходные данные на панели инструментов сайта.

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

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

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

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

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