МЫ СОЗДАЕМ И ПРОИЗВОДИМ
ЭЛЕКТРОННЫЕ НАБОРЫ И МОДУЛИ !
Описание товара
Подробное описание товара
Общие сведения
Модуль GY-521 на микросхеме MPU6050 — это 3-осевой гироскоп и акселерометр на три координаты. Его можно использовать для определения положения в пространстве.
Характеристики
- Чип: MPU-6050
- Питание: 3,5-6 Вольта
- Режим связи: стандартный протокол IIC связи
- Чип встроенный 16bit АЦП
- Гироскопы в диапазоне 250 500 1000 2000 градусов / сек
- Диапазон ускорение: 2g, 4g,8 г, 16g
- Расстояние между контактный: 2,54
- размеры: 2,0 см х 1,6 см х 0,3 см
Подключение
Для питания модуля необходимо использовать строго 3.3V!
| Gy-521 (mpu6050) | Arduino (Uno) |
|---|---|
| VCC | 3.3 V |
| GND | GND |
| SCL | A5 |
| SDA | A4 |
Подробнее о модуле
Для работы с модулем предлагаем вам воспользоваться библиотекой Kalman.
Примеры
Вывод координат Х и У в монитор последовательного порта.
#include <Wire.h>
#include "Kalman.h"
Kalman kalmanX;
Kalman kalmanY;
uint8_t IMUAddress = 0x68;
/* IMU Data */
int16_t accX;
int16_t accY;
int16_t accZ;
int16_t tempRaw;
int16_t gyroX;
int16_t gyroY;
int16_t gyroZ;
<b>double</b> accXangle; // Angle calculate using the accelerometer
<b>double</b> accYangle;
<b>double</b> temp;
<b>double</b> gyroXangle = 180; // Angle calculate using the gyro
<b>double</b> gyroYangle = 180;
<b>double</b> compAngleX = 180; // Calculate the angle using a Kalman filter
<b>double</b> compAngleY = 180;
<b>double</b> kalAngleX; // Calculate the angle using a Kalman filter
<b>double</b> kalAngleY;
uint32_t timer;
<b>void</b> setup() {
Wire.<b>begin</b>();
Serial.<b>begin</b>(9600);
i2cWrite(0x6B,0x00); // Disable sleep mode
kalmanX.setAngle(180); // Set starting angle
kalmanY.setAngle(180);
timer = micros();
}
<b>void</b> loop() {
/* Update all the values */
uint8_t* data = i2cRead(0x3B,14);
accX = ((data[0] << 8) | data[1]);
accY = ((data[2] << 8) | data[3]);
accZ = ((data[4] << 8) | data[5]);
tempRaw = ((data[6] << 8) | data[7]);
gyroX = ((data[8] << 8) | data[9]);
gyroY = ((data[10] << 8) | data[11]);
gyroZ = ((data[12] << 8) | data[13]);
/* Calculate the angls based on the different sensors and algorithm */
accYangle = (atan2(accX,accZ)+PI)*RAD_TO_DEG;
accXangle = (atan2(accY,accZ)+PI)*RAD_TO_DEG;
<b>double</b> gyroXrate = (<b>double</b>)gyroX/131.0;
<b>double</b> gyroYrate = -((<b>double</b>)gyroY/131.0);
gyroXangle += kalmanX.getRate()*((<b>double</b>)(micros()-timer)/1000000); // Calculate gyro angle using the unbiased rate
gyroYangle += kalmanY.getRate()*((<b>double</b>)(micros()-timer)/1000000);
kalAngleX = kalmanX.getAngle(accXangle, gyroXrate, (<b>double</b>)(micros()-timer)/1000000); // Calculate the angle using a Kalman filter
kalAngleY = kalmanY.getAngle(accYangle, gyroYrate, (<b>double</b>)(micros()-timer)/1000000);
timer = micros();
Serial.println();
Serial.<b>print</b>("X:");
Serial.<b>print</b>(kalAngleX,0);
Serial.<b>print</b>(" ");
Serial.<b>print</b>("Y:");
Serial.<b>print</b>(kalAngleY,0);
Serial.println(" ");
// The accelerometer's maximum samples rate is 1kHz
}
<b>void</b> i2cWrite(uint8_t registerAddress, uint8_t data){
Wire.beginTransmission(IMUAddress);
Wire.write(registerAddress);
Wire.write(data);
Wire.endTransmission(); // Send stop
}
uint8_t* i2cRead(uint8_t registerAddress, uint8_t nbytes) {
uint8_t data[nbytes];
Wire.beginTransmission(IMUAddress);
Wire.write(registerAddress);
Wire.endTransmission(<b>false</b>); // Don't release the bus
Wire.requestFrom(IMUAddress, nbytes); // Send a repeated start and then release the bus after reading
<b>for</b>(uint8_t i = 0; i < nbytes; i++)
data [i]= Wire.read();
<b>return</b> data;
}

Если X и У равны 180, значит гироскоп находится в горизонтальной плоскости.
Комплектация
- 1х модуль GY-521;
- 1х Соединитель типа "ПАПА-ПАПА" прямой;
- 1х Соединитель типа "ПАПА-ПАПА" угловой;



















