Оглавление:

ADXL345 с использованием Arduino Uno R3: 5 шагов
ADXL345 с использованием Arduino Uno R3: 5 шагов

Видео: ADXL345 с использованием Arduino Uno R3: 5 шагов

Видео: ADXL345 с использованием Arduino Uno R3: 5 шагов
Видео: ADXL345 Accelerometer and Arduino UNO I2C interfacing 2024, Ноябрь
Anonim
ADXL345 с использованием Arduino Uno R3
ADXL345 с использованием Arduino Uno R3

В этом уроке мы узнаем, как использовать датчик ускорения ADXL345.

Шаг 1: Компоненты

- Плата Arduino Uno * 1

- USB-кабель * 1

- ADXL345 * 1

- Макетная плата * 1

- перемычки

Шаг 2: Принцип

Акселерометр используется для измерения силы, создаваемой во время ускорения. Самым фундаментальным из них является общеизвестное ускорение свободного падения, равное 1g.

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

ADXL345

ADXL345 - это небольшой, тонкий, маломощный 3-осевой акселерометр с высоким разрешением (13 бит) для измерения при нагрузке до ± 16 г. Данные цифрового вывода форматируются как 16-битное дополнение до двух и доступны через цифровой интерфейс SPI (3- или 4-проводный) или I2C. В этом эксперименте используется цифровой интерфейс I2C.

Он хорошо подходит для измерения статического ускорения свободного падения в приложениях для измерения наклона, а также динамического ускорения, возникающего в результате движения или удара. Его высокое разрешение (4 мг / младший значащий бит) позволяет измерять изменение наклона менее чем на 1,0 °. А превосходная чувствительность (3,9 мг / младший значащий бит при 2 г) обеспечивает выходной сигнал с высокой точностью до ± 16 г.

Как работает ADXL345

ADXL345 определяет ускорение с помощью чувствительного компонента спереди, а затем компонент считывания электрического сигнала преобразует его в электрический сигнал, который является аналоговым. Затем встроенный в модуль AD адаптер преобразует аналоговый сигнал в цифровой.

X_OUT, Y_OUT и Z_OUT - это значения по осям X, Y и Z соответственно. Поместите модуль лицевой стороной вверх: Z_OUT может достигать максимум + 1g, минимум X_OUT составляет -1g в направлении Ax, а минимум Y_OUT составляет -1g в направлении Ay. С другой стороны, переверните модуль вверх дном: минимум Z_OUT равен -1g, максимум X_OUT равен + 1g в направлении Ax, а максимум Y_OUT равен + 1g в направлении Ay., как показано ниже. Поверните модуль ADXL345, и вы увидите изменение трех значений.

когда канал A переключается с высокого уровня на низкий уровень, если канал B имеет высокий уровень, это означает, что поворотный энкодер вращается по часовой стрелке (CW); если в этот момент канал B находится на низком уровне, это означает вращение против часовой стрелки (CCW). Таким образом, если мы прочитаем значение канала B, когда канал A имеет низкий уровень, мы можем узнать, в каком направлении вращается энкодер.

Принцип: См. Принципиальную схему модуля Rotary Encoder ниже. Из него видно, что контакт 3 поворотного энкодера, а именно CLK на модуле, является каналом B. Контакт 5, который является DT, является каналом A. Чтобы узнать направление вращения записывающего устройства, просто прочтите значение CLK и DT.

В схеме есть микросхема регулятора напряжения 3,3 В, поэтому вы можете запитать модуль от 5 В или 3,3 В.

Поскольку SDO подключен к GND, адрес I2C ADXL345 - 0x53, 0xA6 для записи, 0xA7 для чтения.

Функция контактов модуля ADXL345.

Шаг 3: Процедуры

Шаг 1. Постройте схему.

Шаг 2:

Загрузите код с

Шаг 3:

Загрузите скетч на плату Arduino Uno

Щелкните значок «Загрузить», чтобы загрузить код на плату управления.

Если в нижней части окна отображается «Готово», это означает, что скетч был успешно загружен.

После загрузки откройте Serial Monitor, где вы увидите обнаруженные данные. При изменении ускорения модуля цифра в окне соответственно изменится.

Шаг 4: Код

Код
Код

// ADXL335

/********************************

ADXL335

примечание: vcc5v, но ADXL335 Vs составляет 3,3 В.

Схема:

5 В: VCC

аналог 0: ось x

аналог 1: ось Y

аналог 2: ось z

После сжигания

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

*********************************

/Эл. адрес:

// Сайт: www.primerobotics.in

const int xpin =

A0; // ось x акселерометра

const int ypin =

A1; // ось Y

const int zpin =

A2; // ось z (только в 3-осевых моделях)

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

{

// инициализируем последовательную связь:

Serial.begin (9600);

}

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

{

int x = аналоговое чтение (xpin); // читать из xpin

задержка (1); //

int y = аналоговое чтение (ypin); // читать с ypin

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

int z = аналоговое чтение (zpin); // читать с zpin

float zero_G = 338.0; // Блок питания ADXL335

по Vs 3,3 В: 3,3 В / 5 В * 1024 = 676/2 = 338

//Serial.print(x);

//Serial.print("\t ");

//Serial.print(y);

//Serial.print("\t ");

//Serial.print(z);

//Serial.print("\n ");

плавать

zero_Gx = 331.5; // вывод zero_G оси x: (x_max + x_min) / 2

плавать

zero_Gy = 329.5; // выход zero_G оси y: (y_max + y_min) / 2

float zero_Gz = 340.0; //

zero_G вывод оси z: (z_max + z_min) / 2

Масштаб с плавающей запятой =

67.6; // питание от Vs 3.3V: 3.3v / 5v * 1024 / 3.3v * 330mv / g = 67.6g

поплавок scale_x =

65; // масштаб оси x: x_max / 3.3v * 330mv / g

поплавок scale_y =

68.5; // масштаб оси y: y_max / 3.3v * 330mv / g

float scale_z =

68; // масштаб оси z: z_max / 3.3v * 330mv / g

Serial.print (((float) x

- zero_Gx) / scale_x); // выводим значение x на серийный монитор

Serial.print ("\ t");

Serial.print (((float) y

- zero_Gy) / scale_y); // выводим значение y на серийный монитор

Serial.print ("\ t");

Serial.print (((float) z

- zero_Gz) / scale_z); // выводим значение z на серийный монитор

Serial.print ("\ n");

задержка (1000); // ждем 1 секунду

}

Шаг 5: Анализ кода

Код для эксперимента ADXL345 состоит из 3 частей: инициализация каждого порта и устройства, сбор и сохранение данных, отправленных с датчиков, и преобразование данных.

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