Акселерометр используют для определения вектора ускорения. Акселерометр ADXL335 имеет три оси, и поэтому может определять вектор ускорения в трёхмерном пространстве. Ввиду того, что сила земного притяжения - это тоже вектор, то акселерометр может определять свою собственную ориентацию в трёхмерном пространстве относительно центра Земли.
К
оординатные оси чувствительности акселерометра по отношению к геометрическому размещению корпуса устройства в пространстве.

Координатные оси чувствительности акселерометра

Координатные оси чувствительности акселерометра

Если датчик сильно тряхнуть вдоль вертикальной оси Z, то значение Zout будет больше, чем 1g, Максимальное измеряемое ускорение - 3g по каждой из осей в любом из направлений.

Технические характеристики акселерометра GY61

  • Чип: ADXL335
  • Напряжение питания: 3 - 5В
  • Потребляемый ток: 350 мкА
  • Диапазон измерений: -3.6g - 3.6g
  • Чувствительность: 300 мВ/g
  • Температура эксплуатации: -40...+85 °С
  • Размеры: 20.3 мм х 15.7 мм
  • Вес: 5 грамм.

Подключение GY61 к плате Arduino

Для питания модуля акселерометра необходимо подать на вывод VCC напряжение +3,3 В. Контакты x, y, z модуля подключаются к аналоговым выводам Arduino.

Схема соединений для подключения модуля GY-61 к плате Arduino

Схема соединений для подключения модуля GY-61 к плате Arduino

Загрузим на плату Arduino скетч вывода аналоговых значений для осей x, y и z модуля GY-61.

// пины подключения x,y,z
const int pinX=A0;
const int pinY=A1;
const int pinZ=A2;
// переменные для хранения значений
unsigned int x, y, z;
void setup() {
// запуск последовательного порта
Serial.begin(9600);
}
void loop() {
// получение данных
x = analogRead(pinX);
y = analogRead(pinY);
z = analogRead(pinZ);
// вывод в последовательный порт
Serial.print(x);
Serial.print(" ");
Serial.print(y);
Serial.print(" ");
Serial.print(z);
Serial.println();
// пауза
delay(3000);
}

Загрузим скетч на плату Arduino и попробуем определить значения на аналоговых портах A0, A1, A2 при значениях на осях -1g и 1g (устанавливая датчик в плоскостях согласно рисунку) и резкое торможение по z (имитация шага). Значения примерные, ибо плоскости установлены примерно.

A0

A1

A2

x = -1g

280

350

350

x = 1g

420

350

350

y = -1g

350

280

350

y = 1g

350

420

350

z = -1g

280

z = 1g

420

z = резкое торможение (имитация шага)

>450

Пример использования аналогового акселерометра GY-61

В качестве примера рассмотрим проект озвучки шагов для костюма робота. При шаге должен воспроизводиться звук "металлического" шага робота.

Нам потребуются следующие компоненты:

  • Плата Arduino Nano – 1
  • Модуль GY-61 – 2
  • Плата DFPlayer mini – 1
  • Micro-SD карта – 1
  • Динамик – 1
  • Провода

Схема соединений

Схема соединений

Приступаем к написанию скетча. Постоянно проверяем показания с двух датчиков. При скачке данных по оси z, по software-последовательному порту отправляем команду плееру для воспроизведения трека 1. Трек 00001.mp3 записан на microSD карту. В течении секунды блокируем прием данных от датчиков GY61.

// для подключения DFPlayer
#include 
// пины подключения x,y,z
const int pinZ1=A2;
const int pinZ2=A5;
// переменные для хранения значений
unsigned int z1, z2;
// переменные для шага
unsigned long millisstep=0;
// класс для DFPlayer
class mp3TF{        
SoftwareSerial* mySerial;
public :
void init (SoftwareSerial*);
void sendCmd (uint8_t *);
void play();
void play (uint16_t index);
void play (int index);
void stop();
void setVolume(uint8_t vol);
void reset ();
};
// создание объекта плеера
mp3TF player = mp3TF ();
SoftwareSerial mp3Serial(9, 10); // RX, TX
void setup() {
// запуск последовательнных портов
mp3Serial.begin (9600);
// запуск и настройка пллера
mp3Serial.begin (9600);
player.init (&mp3Serial);
player.setVolume (30);
delay(1000);
}
void loop() {
// получение данных
if(millis()-millisstep>1000) {
z1 = analogRead(pinZ1);
z2 = analogRead(pinZ2);
if(z1>460 || z2>460) { // шаг
// запуск аудио
player.play (1);
// на секунду блокируем прием данных
millisstep=millis();
}
}
}

Загружаем скетч на плату Arduino и проверяем работу.


Что делать если

Нет данных с датчика GY61

Проверьте правильность подключения датчика к плате Arduino.


 

Рекомендуемые товары

Комментарии 0