Tienda de Electronica Avanzada

Tienda de Electronica Avanzada

$25,00

El módulo MPU-9250 9DOF realiza detección de movimiento en 9 ejes, ya que combina giroscopio de 3 ejes(3DOF), un acelerómetro de 3 ejes(3DOF) y un magnetómetro AK8963 de 3 ejes (3DOF) en el mismo chip DMP (Procesador digital de movimiento) capaz de realizar complejos algoritmos para la captura del movimiento de estos 9 ejes(9DOF). La comunicación puede realizarse tanto por bus SPI cómo por bus I2C, por lo que es sencillo obtener los datos medidos.

Compare

El módulo MPU-9250 9DOF realiza detección de movimiento en 9 ejes, ya que combina giroscopio de 3 ejes(3DOF), un acelerómetro de 3 ejes(3DOF) y un magnetómetro AK8963 de 3 ejes (3DOF) en el mismo chip DMP (Procesador digital de movimiento) capaz de realizar complejos algoritmos para la captura del movimiento de estos 9 ejes(9DOF). La comunicación puede realizarse tanto por bus SPI cómo por bus I2C, por lo que es sencillo obtener los datos medidos.

Contiene 10 pines header rectos para soldar a la placa.

¿Para qué sirve el el módulo MPU-9250 9DOF ?

El módulo MPU-9250 9DOF es usado para servicios basados en ubicación principalmente, pero mas estructurado funciona también para control /navegación de aplicaciones de interfaz usuario “sin contacto”, para atajos gestuales, juegos habilitados con movimientos, auriculares y juegos portátiles, controles remotos 3D para pantallas y decodificadores conectados a Internet, sensores portátiles para salud, fitness y deportes.

Frecuentemente se encuentran integrados en módulos que incorporan la electrónica necesaria para conectarla de forma sencilla a un Arduino. En la mayoría de los módulos, esto incluye un regulador de voltaje que permite alimentar directamente a 5V.


ESPECIFICACIÓN Y CARACTERÍSTICAS

  • Módulo Modelo: GY-9250 /GY -6500
  • Sensor: MPU-9250/6500
  • Voltaje de alimentación: 3V a 5V (con regulador interno)
  • Grados de libertad (DoF): 9
  • Dimensiones: 26 mm x 15.5 mm x 2.6 mm (sin header)
  • Interfaz:
    • I2C (400kHz) y SPI (1MHz)
    • Registros de interrupción SPI (20MHz.)

Características del Giroscopio

  • Rango de Giroscopio: 250/500/1000/2000 grados/segundo
  • Corriente de Operación: 3.2mA
  • Corriente en modo sleep: 8uA

Características del Acelerómetro

  • Rango de Aceleración: ± 2 ± 4 ± 8 ± 16 g
  • Convertidor ADC: 16 bit
  • Corriente de Operación: 450 uA
  • Corriente en modo sleep: 8uA

Características del Magnetómetro

  • Funcionamiento por Efecto Hall
  • Corriente de Operación: 280µA a 8Hz
  • Rango del campo magnético: ± 4800uT (completo)
  • Sensibilidad: 0,6 μT/LSB
  • Resolución de salida:
    • 14 bit (0.6µT/LSB)
    • 16 bit (15µT/LSB)

DOCUMENTACIÓN Y RECURSOS


INFORMACIÓN ADICIONAL

Uso de la interfaz I2C y conexión a Arduino.

El módulo utiliza la interfaz I2C para comunicarse con la MCU. Admite dos direcciones I2C diferentes; 0x68 y 0x69. Eso permite usar dos dispositivos en el mismo bus o en caso de que haya un conflicto de dirección con otro dispositivo en el bus.

El pin ADO determina la dirección I2C a usar. Este pin tiene una resistencia pull-down de 4.7K incorporada en el módulo. Si el pin se deja desconectado, la línea se reducirá y la dirección I2C predeterminada será 0x68. Para seleccionar 0x69, conecte el pin ADO a 3.3V.

Los pines SCL y SDA se conectan a los pines SCL y SDA en la MCU.

La dirección I2C auxiliar con pines etiquetados como EDA y ECL son un bus I2C controlado por el MPU-9250 para que pueda comunicarse directamente con otros sensores para que pueda obtener información adicional para sus cálculos internos.

Conexión del Arduino a MPU-9550  para interfaz de I2C

Código prueba para MPU -6050 GY-521

Se presenta el siguiente código con la finalidad de que puedas probar el funcionamiento del MPU , cabe mencionar que se requiere calibración y los datos arrojados son de fabrica. Para mas información revisar el datasheet.

#include "Wire.h"                           //Librería para poder comunicarse con dispositivos por I2C
const int MPU_ADDR = 0x68;                  // Dirección I2C del MPU-6050. Si AD0(0x69) HIGH, de lo contrario I2C(0x69)es LOW
int16_t a_x, a_y, a_z;                      // variables para el acelerómetro
int16_t g_x, g_y, g_z;                      // variables para giroscopio
int16_t m_x, m_y, m_z;                      // variables para magnetómetro 
char tmp_str[7];                            // variable temporal con 7 carácteres
char* convert_int16_to_str(int16_t i) {    // variables para conversión de int16 a texto
  sprintf(tmp_str, "%6d", i);
  return tmp_str;
}
void setup() {
  Serial.begin(9600);
  Wire.begin();
  Wire.beginTransmission(MPU_ADDR);        // Comienza la comunicación entre GY-6500 por I2C
  Wire.write(0x6B);                        // registro para direcciones
  Wire.write(0);                           // empieza en cero (encender MPU-6500)
  Wire.endTransmission(true);
}
void loop() {
  Wire.beginTransmission(MPU_ADDR);
  Wire.write(0x3B);                        // se empieza con el registro 0x3B salida del acelerómetro(ACCEL_XOUT_H)
  Wire.endTransmission(false);             // Parámetro que indica que el Arduino mandara reset. O se mantendrá la conexión activa.
  Wire.requestFrom(MPU_ADDR, 7 * 2, true); // solicitud de 14 registros

 // "Wire.read()<<8 | Wire.read();" significa 2 registros son leídos y guardados en la misma variable
  
  a_x = Wire.read() << 8 | Wire.read();   // lectura del registro para acelerómetro: 0x3B (A_XOUT_H) y 0x3C (A_XOUT_L) (HIGH/LOW)
  a_y = Wire.read() << 8 | Wire.read();   // lectura del registro: 0x3D (A_YOUT_H) y 0x3E (A_YOUT_L)(HIGH/LOW)
  a_z = Wire.read() << 8 | Wire.read();   //lectura del registro: 0x3F (A_ZOUT_H) y 0x40 (A_ZOUT_L)(HIGH/LOW)

  t = Wire.read() << 8 | Wire.read();    // lectura del registro para temperatura: 0x41 (T_OUT_H) y 0x42 (T_OUT_L)(HIGH/LOW)

  g_x = Wire.read() << 8 | Wire.read();  // lectura del registro para giroscopio: 0x43 (G_XOUT_H) and 0x44 (GYRO_XOUT_L)
  g_y = Wire.read() << 8 | Wire.read();  // lectura del registro: 0x45 (G_YOUT_H) and 0x46 (G_YOUT_L)
  g_z = Wire.read() << 8 | Wire.read();  // lectura del registro: 0x47 (G_ZOUT_H) and 0x48 (G_ZOUT_L)

  m_x = Wire.read() << 8 | Wire.read(); // lectura del registro para magnetómetro 
  m_y = Wire.read() << 8 | Wire.read(); 
  m_z = Wire.read() << 8 | Wire.read(); 
  
  // Impresión de la información
  Serial.print("aX = "); Serial.print(convert_int16_to_str(a_x));
  Serial.print(" | aY = "); Serial.print(convert_int16_to_str(a_y));
  Serial.print(" | aZ = "); Serial.print(convert_int16_to_str(a_z));
  Serial.print(" | gX = "); Serial.print(convert_int16_to_str(g_x));
  Serial.print(" | gY = "); Serial.print(convert_int16_to_str(g_y));
  Serial.print(" | gZ = "); Serial.print(convert_int16_to_str(g_z));
  Serial.print(" | mx = "); Serial.print(convert_int16_to_str(m_x + 200));
  Serial.print(" | my = "); Serial.print(convert_int16_to_str(m_y -70));
  Serial.print(" | mz = ");Serial.print(convert_int16_to_str(m_z -700));
  Serial.println();

  // espera 1s para la siguiente lectura
  delay(1000);
}

 

ENLACES EXTERNOS

Valoraciones

No hay valoraciones aún.

Sé el primero en valorar “Gy-91 Mpu9250 Módulo 9 Ejes Arduino”

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *