УМНАЯ-ЭЛЕКТРОНИКА.РФУМНАЯ-ЭЛЕКТРОНИКА.РФ

 

Как купить

Скидки

Контакты

Оплата

Новости 

Разработка 

Вакансии

Доставка

[57m338] Гироскоп с акселерометром GY-521 на чипе MPU-6050

20мм х 16мм х 4мм, Вес: 2.7г.
330.00 Р
14 дн.
1026
Нет в наличии
Если вам необходимо больше товара, то можно привезти его на заказ.
Тел +7 987 254-00-07 (+Whatsapp)

Мы (Умная-электроника.рф (ИП Хазиев Р. А.) ) добавим Ваш адрес электронной почты в специальный список рыссылки для данного товара. Как только товар станет доступен, вам будет отправлено автоматическое уведомление, и Ваш почтовый адрес будет удален из списка рассылки.

Данные будут доступны некоторым нашим сотрудникам. Если выхотите, чтобы Ваши персональные данные были удалены, отправьте письмо по адресу ueinfo@mail.ru.

Если Вы считаете, что Ваши персональные данные используются не по назначению, Вы имеете право обратиться с жалобой в надзорный орган. Согласно “Общему регламенту по защите данных” в ЕС мы обязаны сообщить Вам об этом праве, хотя мы не планируем использовать Ваши данные не по назначению.

Отложить Добавить в список сравнения
Стоимость и сроки доставки:

Описание:

GY-521 – модуль с гироскопом, акселерометром и термометром на базе микросхемы MPU-6050 используется в любительской робототехнике для  определения положения в пространстве.

Характеристики:

  • Питание: 3,5 – 6 В;
  • Ток потребления: 500 мкА;
  • Акселерометр диапазон измерений: ± 2 ± 4 ± 8 ± 16g,
  • Гироскоп диапазон измерений: ± 250 500 1000 2000 ° / s,
  • Интерфейс: I2C.

Примечание:

Подключение к Arduino UNO:

SDA – SDA

SCL- SCL

VCC – 3.3V

GND - GND

Прошивка запуска MPU6050 с фильтром Калмана:

#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;

double accXangle; // Angle calculate using the accelerometer

double accYangle;

double temp;

double gyroXangle = 180; // Angle calculate using the gyro

double gyroYangle = 180;

double compAngleX = 180; // Calculate the angle using a Kalman filter

double compAngleY = 180;

double kalAngleX; // Calculate the angle using a Kalman filter

double kalAngleY;

uint32_t timer;

void setup() { 

  Serial.begin(115200);

  Wire.begin(); 

  i2cWrite(0x6B,0x00); // Disable sleep mode 

  if(i2cRead(0x75,1)[0] != 0x68) { // Read "WHO_AM_I" register

    Serial.print(F("MPU-6050 with address 0x"));

    Serial.print(IMUAddress,HEX);

    Serial.println(F(" is not connected"));

    while(1);

  }     

  kalmanX.setAngle(180); // Set starting angle

  kalmanY.setAngle(180);

  timer = micros();

}

void 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;   

   double gyroXrate = (double)gyroX/131.0;

  double gyroYrate = -((double)gyroY/131.0);

  gyroXangle += gyroXrate*((double)(micros()-timer)/1000000); // Calculate gyro angle without any filter 

  gyroYangle += gyroYrate*((double)(micros()-timer)/1000000);

  //gyroXangle += kalmanX.getRate()*((double)(micros()-timer)/1000000); // Calculate gyro angle using the unbiased rate

  //gyroYangle += kalmanY.getRate()*((double)(micros()-timer)/1000000);

    compAngleX = (0.93*(compAngleX+(gyroXrate*(double)(micros()-timer)/1000000)))+(0.07*accXangle); // Calculate the angle using a Complimentary filter

  compAngleY = (0.93*(compAngleY+(gyroYrate*(double)(micros()-timer)/1000000)))+(0.07*accYangle); 

    kalAngleX = kalmanX.getAngle(accXangle, gyroXrate, (double)(micros()-timer)/1000000); // Calculate the angle using a Kalman filter

  kalAngleY = kalmanY.getAngle(accYangle, gyroYrate, (double)(micros()-timer)/1000000);

  timer = micros();

    temp = ((double)tempRaw + 12412.0) / 340.0;

    /* Print Data */  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

     Serial.print("\n");

    delay(1); // The accelerometer's maximum samples rate is 1kHz

}

void 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(false); // Don't release the bus

  Wire.requestFrom(IMUAddress, nbytes); // Send a repeated start and then release the bus after reading

  for(uint8_t i = 0; i < nbytes; i++)

    data[i] = Wire.read();

  return data;

}

Обзор на канале Home Made - То, что ты можешь сделать.

Контроль сервомашинки при помощи MPU6050  канале Viral Science - The home of Creativity:

Balancing robot на канале Mert Arduino :

Запуск MPU6050 на STM32F103C8 на канале Controllers Tech

Запуск MPU6050 на STM32 Discovery на канале Renat Abaydulin

Полезные ссылки:

Datasheet:

https://pdf1.alldatasheet.com/datasheet-pdf/view/517744/ETC1/MPU-6050.html

Библиотека Kalman:

https://iarduino.ru/lib/Kalman.rar

Габариты (Д х Ш х В):
20мм х 16мм х 4мм
Вес:
2.7г.

Сообщения не найдены

Написать отзыв

С этим товаром также покупают: С этим товаром также покупают: