Описание
Модуль 3-х осевого гироскопа и акселерометра GY-521 MPU-6050 GY-521 MPU-6050 Module MPU6050 module ,3 Axis analog gyro sensors+ 3 Axis Accelerometer Module Позволяет определить положение и …
Обзор модуля GY-521 (MPU-6050)
Сергей 06.03.2020 0
Обзор модуля GY-521 (MPU-6050)
Обзор модуля GY-521 (MPU-6050)
Наверное задумывались, как телефон определяет вверх и низ, а так же наклоны. Все это стало возможно с появлением устройств акселерометр и гироскопу. Таким образом, телефон автоматически определяет, когда нужно переключить расположение экрана с портретного на альбомное. В статье расскажу о модуле GY-521 на чипе MPU-6050, который содержит в себе MEMS гироскоп и MEMS акселерометр и датчик температуры.
Технические параметры.
► Основная микросхема: MPU-6050
► Напряжение питания: 3.3 и 5 В
► Режимы для акселерометра: ±2g, ±4g, ±6g, ±8g, ±16g;
► Режимы для гироскопа: ±250°, ±500°, ±1000°, ±2000°;
► Ширина шины IIC: 16 бит;
Общие сведения.
Основная микросхема модуль GY-521 чип MPU-6050 , который содержит в себе акселерометр и гироскоп, а так же датчик температуры. Обработка данных осуществляется с помощью 16-битное АЦП (Аналого-цифровой преобразователь) на каждый канал, поэтому он обрабатывает значение x, y и z одновременно. Встроенный датчик температуры предназначен для измерения температуры и имеет диапазон измерений от -40 ° С до + 85 ° С.
Для взаимодействия с Arduino используется шина I2C и датчик MPU-6050 всегда выступает в качестве подчиненного устройства. Но кроме обычной шины I2C, есть собственный контроллер I2C, в котором MPU-6050 ведомый, выводы SDA и XDA и с помощью это шины можно управлять например магнитометром и передавать данные на Arduino.
Гироскоп – инструмент, который позволяет измерить реакцию тела на перемещение углов и вообще ориентации. Акселерометр же служит измерителем проекции ускорения, которое только кажется.
Обзор модуля GY-521 (MPU-6050)
Датчика MPU-6050 работает от напряжение ~2.4 — 3.5 В и чтобы стабилизировать питание, на модуле GY-521 добавили стабилизатор напряжения на 3.3 В с малым падением напряжении, поэтому модуль можно подключить к напряжению 5 В и 3.3 В.
Обзор модуля GY-521 (MPU-6050)
На плате установлен один ряд разъема, шагом 2,54 мм, назначение каждого можно посмотреть ниже.
Назначение выводов:
► VCC – «+» питание модуля 3.3 В до 5 В
► GND – «-» питание модуля
► SCL – линия синхронизации для протокола I2C
► SDA – линия передачи данных протокола I2C
► XDA – линия передачи данных протокола при работе в режиме мастера
► XCL – линия синхронизации для протокола I2C при работе в режиме мастера
► AD0 – если вывод лог «0» адрес I2C будет 0x68, если вывод лог «1» адрес I2C будет 0x69
► INT – прерывание
Подключение GY-521 к Arduino
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Провод DuPont, 2,54 мм, 20 см x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
► 3-осевой гироскоп акселерометр GY-521 x 1 шт.
Подключение:
В примере будем использовать только первые четыре контакта VCC, GND, SDA и SCL. Сначала подключаем VCC и GND модуля GY-521 к 5V и GND. Далее нужно установить соединение I2C между модулем GY-521 и Arduino, для этого подключите вывод SCL модуля к выводу А4 Arduino и вывод модуля SCL к выводу A5 Arduino. Для удобства приведу схему подключение.
Обзор модуля GY-521 (MPU-6050)
Программа:
Чтобы протестировать модуль GY-521 сначала необходимо установить библиотеку «MPU6050» , скачать ее можно в конце статьи. Если все сделали правильно, при открытии Arduino IDE вы можете увидеть «MPU6050» в «Файл» -> «Примеры».
#include "I2Cdev.h" // Подключение библиотеки I2Cdev
#include "MPU6050.h" // Подключение библиотеки MPU6050
#include "Wire.h" // Подключение библиотеки WireCdev
MPU6050 CY531; // Создаем объект, символизирующий модуль датчика
int16_t ax, ay, az; // Переменные для хранения значений акселерометра
int16_t gx, gy, gz; // Переменные для хранения значений гироскоп
void setup()
{
Wire.begin(); // Инициализация Wire
Serial.begin(38400); // Инициализация последовательного порта
Serial.println("Initializing I2C devices..."); // Печать текста
CY531.initialize(); // Инициализация MPU
delay(100); // Пауза
}
void loop()
{
CY531.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // Чтение значений гироскопа и акселерометра
// вывод значений в монитор
Serial.print("a/g:\t");
Serial.print(ax); Serial.print("\t");
Serial.print(ay); Serial.print("\t");
Serial.print(az); Serial.print("\t");
Serial.print(gx); Serial.print("\t");
Serial.print(gy); Serial.print("\t");
Serial.println(gz);
delay(500);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "I2Cdev.h" // Подключение библиотеки I2Cdev
#include "MPU6050.h" // Подключение библиотеки MPU6050
#include "Wire.h" // Подключение библиотеки WireCdev
MPU6050 CY531; // Создаем объект, символизирующий модуль датчика
int16_t ax, ay, az; // Переменные для хранения значений акселерометра
int16_t gx, gy, gz; // Переменные для хранения значений гироскоп
void setup()
{
Wire.begin(); // Инициализация Wire
Serial.begin(38400); // Инициализация последовательного порта
Serial.println("Initializing I2C devices..."); // Печать текста
CY531.initialize(); // Инициализация MPU
delay(100); // Пауза
}
void loop()
{
CY531.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // Чтение значений гироскопа и акселерометра
// вывод значений в монитор
Serial.print("a/g:\t");
Serial.print(ax); Serial.print("\t");
Serial.print(ay); Serial.print("\t");
Serial.print(az); Serial.print("\t");
Serial.print(gx); Serial.print("\t");
Serial.print(gy); Serial.print("\t");
Serial.println(gz);
delay(500);
}
Скачать скетч
Если все правильно сделали и открыв мониторинг порта, можно увидеть данные
Рабочий модуль. Соответствует заявленному. Кто устанавливает-помните, что сначала в микропроцессор надо залить программу (скетч) для калибровки, а только потом свою программу.