Акселерометр MPU-9265

Акселерометр MPU-9265
В наличии
10.00 р
Артикул: B7
Страна: 
Китай
Характеристики модуля GY-9265:
 
 
Микросхема: MPU9265
Напряжение питания: 3 - 5 Вольт
Интерфейс: I2C (400кГц) / SPI (1 МГц)
Диапазон измерения акселерометра: +/- 2G, +/- 4G, +/- 8G, +/- 16G
Диапазон измерения гироскопа: +/- 250, +/- 500, +/- 1000, +/- 2000°/с
Чувствительность гироскопа: 131, 65,5, 32,8, 16,4 LSB/°/c
Диапазон измерения магнитометра: +/- 4800 мкТл
Буфер: FIFO 512B
Рабочий ток: гироскоп – 3,2 мА, акселерометр – 450 мкА, магнитометр – 280 мкА
Ток в режиме сна: 8+8 мкА (гироскоп+акселерометр).
Габариты: 25 х 16 x 3 мм
Диаметр отверстий для монтажа: 3 мм 
Шаг распиновки: 2.54 мм
 
 
 
Для подключения модуля акселерометра, гироскопа и магнетометра MPU-9265 к Ардуино необходимо соединить пины устройств по схеме
 
 
VCC  ---> 5V
 
GND ---> GND
 
SCL   ---> A5 (аналоговый пин Ардуино)
 
SDA  ---> A4 (аналоговый пин Ардуино)
 
 
Обмен информацией с устройством ведется по протоколу I2C. 
Для того чтобы получить данные с устройства и установить необходимые режимы необходимо загрузить следующий скетч:
(будьте внимательны - возможно потребуется корректировка направления осей и чувствительности магнетометра по разным осям - более подробная информация в даташите)
MPU-9265 datasheet
 
#include <Wire.h>
 
 
#define MPU9250_ADDRESS 0x68
 
#define MAG_ADDRESS 0x0C
 
 
#define GYRO_FULL_SCALE_250_DPS 0x00
 
#define GYRO_FULL_SCALE_500_DPS 0x08
 
#define GYRO_FULL_SCALE_1000_DPS 0x10
 
#define GYRO_FULL_SCALE_2000_DPS 0x18
 
 
 
#define ACC_FULL_SCALE_2_G 0x00
 
#define ACC_FULL_SCALE_4_G 0x08
 
#define ACC_FULL_SCALE_8_G 0x10
 
#define ACC_FULL_SCALE_16_G 0x18
 
void setup()
 
    {
 
      
 
      Wire.begin();
 
      Serial.begin(115200);
 
       
 
      // Конфигурация предела измерения гироскопа
 
      I2CwriteByte(MPU9250_ADDRESS,27,GYRO_FULL_SCALE_1000_DPS);
 
 
      // Конфигурация предела измерения акселерометра
 
      I2CwriteByte(MPU9250_ADDRESS,28,ACC_FULL_SCALE_4_G);
 
 
      // Перевод магнетометра в пассивный режим  
 
      I2CwriteByte(MPU9250_ADDRESS,0x37,0x02);
 
 
       // Установка 16-битного режима работы магнетометра
 
      I2CwriteByte(MAG_ADDRESS,0x0A,0x16);
 
 
    }
 
 
 
 
 
void loop()
 
    {
 
  
 
      // Чтение данных акселерометра и гироскопа
 
      uint8_t Buf[14];
 
      I2Cread(MPU9250_ADDRESS,0x3B,14,Buf);
 
 
 
      // Создание 16 битных значений из 8-битных данных
 
 
 
      // Акселерометр
 
      int16_t ax=-(Buf[0]<<8 | Buf[1]);
 
      int16_t ay=-(Buf[2]<<8 | Buf[3]);
 
      int16_t az=Buf[4]<<8 | Buf[5];
 
 
 
      // Гироскоп
 
      int16_t gx=-(Buf[8]<<8 | Buf[9]);
 
      int16_t gy=-(Buf[10]<<8 | Buf[11]);
 
      int16_t gz=Buf[12]<<8 | Buf[13];
 
 
 
      // Отправка значений в серийный порт
 
 
 
     // Акселерометр
 
     Serial.print (ax,DEC);
 
     Serial.print ("\t");
 
     Serial.print (ay,DEC);
 
     Serial.print ("\t");
 
     Serial.print (az,DEC);
 
     Serial.print ("\t");
 
 
 
     // Гироскоп
 
     Serial.print (gx,DEC);
 
     Serial.print ("\t");
 
     Serial.print (gy,DEC);
 
     Serial.print ("\t");
 
     Serial.print (gz,DEC);
 
     Serial.print ("\t");
     
 
     // Магнетометр
 
 
     // Чтение регистра статуса и ожидание DRDY: Data Ready
 
 
 
     uint8_t ST1;
 
     do
 
         {
 
           I2Cread(MAG_ADDRESS,0x02,1,&ST1);
 
         }
 
     while (!(ST1&0x01));
 
 
 
     // Чтение данных магнетометра
 
     uint8_t Mag[7];
 
     I2Cread(MAG_ADDRESS,0x03,7,Mag);
 
 
 
     // Создание 16- битных данных из 8-битных
 
 
 
     // Магнетометр
 
     int16_t mx=-(Mag[3]<<8 | Mag[2]);
 
     int16_t my=-(Mag[1]<<8 | Mag[0]);
 
     int16_t mz=-(Mag[5]<<8 | Mag[4]);
 
 
 
     // Отправка значений в серийный порт
 
     Serial.print (mx,DEC);
 
     Serial.print ("\t");
 
     Serial.print (my,DEC);
 
     Serial.print ("\t");
 
     Serial.print (mz,DEC);
 
     Serial.print ("\t");
 
 
 
     Serial.println("");
 
     delay(100);
 
   }
 
 
 
// Функции для обмена данными по шине I2C
 
 
void I2Cread(uint8_t Address, uint8_t Register, uint8_t Nbytes, uint8_t* Data)
 
    {
 
      
 
      Wire.beginTransmission(Address);
 
      Wire.write(Register);
 
      Wire.endTransmission();
 
 
      Wire.requestFrom(Address, Nbytes);
 
      uint8_t index=0;
 
      while (Wire.available())
 
      Data[index++]=Wire.read();
 
    }
 
 
 
 
void I2CwriteByte(uint8_t Address, uint8_t Register, uint8_t Data)
 
    {
 
      
 
      Wire.beginTransmission(Address);
 
      Wire.write(Register);
 
      Wire.write(Data);
 
      Wire.endTransmission();
 
    }
 
В наличии большой ассортимент
Закажите всю необходимую комплектацию в одном месте и получайте постоянные скидки и бонусы
 
Доставка по РБ вместе с РУП Белпочта
Условия отправки посылок смотрите в разделе "Доставка почтой РБ"
 
Техническая поддержка, консультации
Большой опыт работы позволяет решить любые технические вопросы в робототехнике, электронике. Звоните - мы с удовольствием поможем!
 
Доставка по Минску
Доставка по Минску в день заказа.