MODULO SENSOR IMU 10DOF GY-87 ACELEROMETRO GIROSCOPIO MPU6050 MAGNETOMETRO BAROMETRO DIGITAL


MODULO SENSOR IMU 10DOF GY-87 ACELEROMETRO GIROSCOPIO MPU6050 MAGNETOMETRO BAROMETRO DIGITAL

90.000

INFORMACIÓN

El GY-87 Módulo Sensor IMU 10DOF es una unidad de medición inercial compacta que integra varios sensores para obtener información precisa de movimiento, orientación y altitud. Está compuesto por un acelerómetro y giroscopio de 3 ejes (MPU6050), un magnetómetro de 3 ejes (HMC5883L) y un barómetro digital (BMP180), lo que en conjunto proporciona 10 grados de libertad (10DOF). Su funcionamiento se basa en la captura simultánea de datos de aceleración lineal, velocidad angular, campo magnético y presión atmosférica. Estos datos se transmiten, a través de la interfaz I²C, a un microcontrolador o tarjeta de desarrollo, donde se procesan mediante algoritmos de fusión sensorial para determinar con gran precisión la posición, orientación, inclinación, velocidad y altitud del dispositivo.

El GY-87 Módulo Sensor IMU 10DOF se utiliza en aplicaciones que requieren medir y controlar el movimiento, la orientación y la altitud con alta precisión, como en drones para estabilización y navegación autónoma, robots móviles para mapeo y localización, sistemas de realidad virtual y aumentadavehículos autónomos, dispositivos portátiles de seguimiento deportivo y plataformas de navegación marítima o terrestre. También es común en proyectos de investigación, educación y desarrollo de algoritmos de fusión de sensores. Es compatible con una amplia gama de tarjetas de desarrollo como Arduino (UNO, Mega, Nano)ESP32Raspberry PiSTM32Teensy y otros microcontroladores que soporten comunicación I²C, lo que facilita su integración en diversos sistemas embebidos y prototipos.

Nota: Es posible que la librería oficial de Adafruit del HMC5883 pueda generar errores al compilar el código, las pruebas se realizaron en febrero 2023 con la última versión publicada hasta la fecha; sin embargo, puedes usar variaciones de esta librería como la que te proporcionamos aquí.


ESPECIFICACIONES Y CARACTERÍSTICAS

  • Módulo Modelo: GY-87.
  • Sensor: MPU-6050.
  • Voltaje de alimentación: 3 a 5 VDC (con regulador interno).
  • Grados de libertad (DoF): 10.
  • Dimensiones: 22 mm x 17 mm x 3 mm.
  • Peso: 3 g.
  • Interfaz: I2C.

Giroscopio.

  • Chip Principal: MPU6050.
  • Rango de Giroscopio: 250/500/1000/2000 grados/segundo.
  • Resolución ADC: 16 bit.
  • Corriente de Operación: 3.2 mA.

 Acelerómetro.

  • Chip Principal: MPU6050.
  • Rango de Aceleración: ± 2 ± 4 ± 8 ± 16 g.
  • Resolución ADC: 16 bit.
  • Corriente de Operación: 450 uA.

Magnetómetro.

  • Chip Principal: HMC5883.
  • Rango del campo magnético: ± 4800 uT (completo).
  • Medición: Hasta ±8 Gauss.
  • Resolución ADC: 14 bit.

Barómetro.

  • Chip Principal: BMP180.
  • Tipo: Sensor de presión atmosférica digital.
  • Rango del Barómetro: 0.0016 hPa.
  • Rango de Medición: 300~1100 hPa (altitud: +9000 m ~ -500 m).
  • Resolución de Temperatura: 0.01 °C.
  • Corriente de Operación: (1 Hz actualización, ahorro de energía): 2.8 uA.

DOCUMENTACIÓN Y RECURSOS

 


INFORMACIÓN ADICIONAL

Información detallada sobre los chips principales.

MPU6050.

Los dispositivos MPU6050 combinan un giroscopio de 3 ejes y un acelerómetro de 3 ejes en el mismo silicio junto con un procesador de movimiento digital (DMP) integrado capaz de procesar complejos algoritmos MotionFusion de 9 ejes.

Los algoritmos MotionFusion integrados de 9 ejes de las piezas acceden a magnetómetros externos u otros sensores a través de un bus I2C maestro auxiliar, lo que permite que los dispositivos recopilen un conjunto completo de datos de sensores sin la intervención del procesador del sistema.

HMC5883.

El  HMC5883  es un módulo multichip de montaje en superficie diseñado para detección magnética de campo bajo con una interfaz digital para aplicaciones como la magnetometría y la brújula de bajo costo. El HMC5883 incluye nuestros sensores magnetorresistivos de alta resolución de la serie HMC118X de última generación, además de amplificación que contiene ASIC desarrollado por Honeywell, controladores de correa de desmagnetización automática, cancelación de desplazamiento, ADC de 12 bits que permite una precisión de rumbo de la brújula de 1 ° a 2 °. Las aplicaciones para el HMC5883 incluyen teléfonos móviles, netbooks, electrónica de consumo, sistemas de navegación para automóviles y dispositivos de navegación personal.

BMP180.

Este sensor de precisión es la mejor solución de detección de bajo costo para medir la presión barométrica y la temperatura. Debido a que la presión cambia con la altitud. El BMP180 es la próxima generación de sensores y reemplaza al BMP085. La buena noticia es que es  completamente idéntico al BMP085 en términos de firmware / software; puede el BMP085 y cualquier código / biblioteca de ejemplo como reemplazo directo. El pin XCLR no está físicamente presente en el BMP180, por lo que si necesita saber que los datos están listos, deberá consultar el bus I2C.

Diagrama de Conexión para un Arduino Uno:

Diagrama de Conexión con Arduino.

Código, Prueba y Conexión para MPU6050 10DOF en Arduino.

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 fábrica.

#include <MPU6050_tockn.h>
#include <Wire.h>         //Librería para poder comunicarse con dispositivos por I2C      
#include "I2Cdev.h"      //Librería para para comunicación I2C 
#include "BMP085.h"      //Librería del barómetro
#include "HMC5883L.h"   //Librería del magnetómetro

MPU6050 mpu6050(Wire);   //Datos del acelerómetro y giroscopio
BMP085 barometro;        //Datos para el barómetro
HMC5883L mag;           //Datos para magnetómetro

long timer = 0;         //Variable para timer de mediciones
float temperature;      //Variable para temperatura
float pressure;          //Variable para presión
int32_t altitude;       //Variable para altitud
int16_t mx, my, mz;     //Variables para magnetómetro


void setup() {
//Inicialización de puertos y módulos
  Serial.begin(9600);
  Wire.begin();
  mpu6050.begin();
  mpu6050.calcGyroOffsets(true);
  Serial.println("Inicializando dispositivos I2C...");
  barometro.initialize();
  mag.initialize();
  // Verificación de conexión 
  Serial.println("Verificando conexión...");
  Serial.println(barometro.testConnection() ? "BMP085 conexion exitosa" : "BMP085 conexion fallida");
  Serial.println("Verificando conexión...");
  Serial.println(mag.testConnection() ? "HMC5883L conexion exitosa" : "HMC5883L conexion fallida");


}

void loop() {
  mpu6050.update();
  mag.getHeading(&mx, &my, &mz);
  //impresión y censado de variables
  if (millis() - timer > 1000) {

    Serial.println("=======================================================");
    Serial.print("temp : "); Serial.println(mpu6050.getTemp());
    Serial.print("accX : "); Serial.print(mpu6050.getAccX());
    Serial.print("  accY : "); Serial.print(mpu6050.getAccY());
    Serial.print("  accZ : "); Serial.println(mpu6050.getAccZ());

    Serial.print("gyroX : "); Serial.print(mpu6050.getGyroX());
    Serial.print(" gyroY : "); Serial.print(mpu6050.getGyroY());
    Serial.print(" gyroZ : "); Serial.println(mpu6050.getGyroZ());

    Serial.print("accAngleX : "); Serial.print(mpu6050.getAccAngleX());
    Serial.print(" accAngleY : "); Serial.println(mpu6050.getAccAngleY());

    Serial.print("gyroAngleX : "); Serial.print(mpu6050.getGyroAngleX());
    Serial.print(" gyroAngleY : "); Serial.print(mpu6050.getGyroAngleY());
    Serial.print(" gyroAngleZ : "); Serial.println(mpu6050.getGyroAngleZ());

    Serial.print("angleX : "); Serial.print(mpu6050.getAngleX());
    Serial.print(" angleY : "); Serial.print(mpu6050.getAngleY());
    Serial.print(" angleZ : "); Serial.println(mpu6050.getAngleZ());

    // solicitud de temperatura
    barometro.setControl(BMP085_MODE_TEMPERATURE);

    // lectura calibrada del valor de temperatura en Celcius
    temperature = barometro.getTemperatureC();

    // Solicitud de presión cada 23.5ms (por sobremuestreo)
    barometro.setControl(BMP085_MODE_PRESSURE_3);

    // lectura calibrada del valor de la presión en Pascales(Pa)
    pressure = barometro.getPressure(); 
    altitude = barometro.getAltitude(pressure);

    // impresión del censado de variables
     Serial.print("Temp: "); Serial.print(temperature);  Serial.print("C");
     Serial.print(" Press: "); Serial.print(pressure);
     Serial.print(" Alt: "); Serial.print(altitude);
 

    // impresión de los valores gyro x/y/z 
     Serial.print("mag:");
     Serial.print(mx);  Serial.print("x");
     Serial.print(my);  Serial.print("y");
    Serial.print(mz);  Serial.print("z");
    
// calculo de los grados del magnetómetro
    float heading = atan2(my, mx);
    if(heading < 0)
      heading += 2 * M_PI;
     Serial.print("heading: ");
     Serial.println(heading * 180/M_PI);
     Serial.println("=======================================================n");
    timer = millis();

  }

}


ENLACES EXTERNOS

SKU: ELEC002445 Categoría: Etiquetas: , , , , , , , , , ,