Guía completa sobre MEMS MPU6050 y LSM9DS1: teoría, práctica y casos de uso

  • Los sensores MEMS MPU6050 y LSM9DS1 permiten medir aceleración y rotación en tres ejes con alta precisión y bajo coste.
  • El MPU6050 integra acelerómetro y giroscopio, mientras que el LSM9DS1 añade también un magnetómetro, brindando orientación absoluta.
  • Mediante calibración y filtrado, ambos sensores pueden emplearse en aplicaciones como navegación inercial, robótica o wearables.
LSM9DS1

Stacked from 12 images. Method=B (R=44,S=4)

En el mundo actual de la tecnología y la electrónica, los sensores MEMS (Micro-Electro-Mechanical Systems) se han convertido en una herramienta clave para todo tipo de proyectos, desde robótica hasta domótica y wearables. Los módulos que combinan acelerómetros y giróscopos, como el MPU6050 y el LSM9DS1, son dos de las opciones más populares gracias a su versatilidad, bajo coste y facilidad de integración con microcontroladores como Arduino y otras plataformas. Comprender a fondo su funcionamiento, características únicas, diferencias e incluso la forma más óptima de sacarles partido, es fundamental para diseñar sistemas precisos que midan movimiento, orientación e inclinación.

En este artículo te llevaremos paso a paso por todo lo que necesitas saber acerca de los sensores MPU6050 y LSM9DS1: cómo funcionan, qué aplicaciones tienen, cómo integrarlos en tu proyecto, calibrarlos, interpretar sus lecturas correctamente y aprovechar al máximo sus capacidades, combinando la información recogida en los mejores tutoriales y artículos técnicos, bajo una visión práctica y actualizada con lenguaje cercano, para que consigas resultados profesionales en tus desarrollos.

¿Qué es un sensor MEMS y cómo funciona?

modulo mpu6050

Antes de adentrarnos en los modelos concretos MPU6050 y LSM9DS1, conviene tener claro el concepto de sensor MEMS. Estos dispositivos, también llamados Micro Electro Mechanical Systems, integran en un único chip componentes mecánicos microscópicos y circuitos electrónicos, de forma que pueden detectar variaciones físicas —como aceleraciones, giros o vibraciones— y convertirlas en señales eléctricas interpretables por sistemas digitales.

En el caso de los acelerómetros y giróscopos MEMS, su funcionamiento se basa en principios como:

  • La ley de Newton para la aceleración (a = F/m), utilizando estructuras internas que actúan como masas y resortes microscópicos.
  • El efecto Coriolis para detectar movimientos angulares, aprovechando la desviación que sufren pequeñas masas al rotar dentro del chip.
  • Conversores ADC internos para transformar las variaciones físicas en valores digitales de alta resolución (habitualmente 16 bits).

Estas capacidades hacen que los MEMS sean extremadamente útiles en aplicaciones que requieren medición de orientación, inclinación o movimiento en tres dimensiones, como por ejemplo sistemas de navegación, estabilización de cámaras, relojes inteligentes, drones, robots y mucho más.

Características principales del MPU6050

El MPU6050 es probablemente el sensor de movimiento MEMS más empleado entre makers, ingenieros y aficionados que buscan una solución económica y fiable para medir aceleración y rotación en tres ejes.

Sus especificaciones técnicas clave incluyen:

  • Acelerómetro de 3 ejes: Capaz de detectar aceleraciones en los ejes X, Y y Z, con rango programable de ±2g, ±4g, ±8g y ±16g.
  • Giroscopio de 3 ejes: Mide velocidades angulares en los tres ejes, con sensibilidad ajustable a ±250, ±500, ±1000 y ±2000 grados por segundo.
  • Procesador de movimiento digital (DMP): Incorpora un microprocesador interno dedicado a realizar cálculos complejos de Motion Fusion (fusión de sensores), calculando datos como cuaterniones, ángulos de Euler y matrices de rotación sin necesidad de cargar esos cálculos sobre el microcontrolador principal.
  • Salida digital por I2C: Comunicaciones mediante bus I2C con dos posibles direcciones (configurables mediante el pin AD0 a 0x68 o 0x69), permitiendo operar con la mayoría de placas Arduino, ESP y similares.
  • Conversor ADC de 16 bits: Ofrece gran resolución en la toma de datos.
  • Sensor de temperatura integrado
  • Posibilidad de ampliar con magnetómetro externo: A través del bus auxiliar I2C, el MPU6050 puede leer otros sensores conectados como el popular HMC5883L (magnetómetro), para conformar una IMU completa de 9 ejes.
  • Voltaje de funcionamiento flexible: Puede alimentarse a 3,3V o incluso 5V si se utiliza una placa base como la GY-521, que incorpora un regulador.

Además, el tamaño compacto del módulo (en torno a 25 x 15 mm) y el hecho de venir ya preparado para su integración en protoboard, lo hacen ideal tanto para pruebas como para desarrollos definitivos.

¿Qué es el LSM9DS1 y en qué se diferencia?

Por su parte, el LSM9DS1 es una opción más avanzada y moderna dentro de la familia de IMUs MEMS, aunque resulta menos popular que el MPU6050 en proyectos de iniciación. Integra en un solo chip:

  • Un acelerómetro de 3 ejes
  • Un giroscopio de 3 ejes
  • Un magnetómetro también de 3 ejes

Esto supone que el LSM9DS1 es una IMU de 9 DoF (Degrees of Freedom), lo que le permite medir aceleración, velocidad angular y campo magnético terrestre en las tres dimensiones, proporcionando lecturas completas y precisas de posición y orientación absoluta respecto a la Tierra.

Entre sus principales ventajas con respecto al MPU6050 destacan:

  • Combina los tres sensores en un solo chip físico, ahorrando espacio y simplificando las conexiones.
  • Puede comunicarse tanto mediante I2C como SPI, lo que le aporta una versatilidad mayor para diferentes plataformas.
  • Los rangos y sensibilidades de cada sensor (acelerómetro, giroscopio, magnetómetro) son configurables de forma más flexible.
  • Dispone de opciones avanzadas de filtrado digital y detección de eventos.

El LSM9DS1 suele elegirse en proyectos donde se requiere conocer la orientación absoluta (por ejemplo, brújulas, sistemas de navegación o estabilización de vuelo) sin necesidad de añadir sensores externos adicionales.

Principios de funcionamiento de acelerómetros y giróscopos MEMS

Para entender realmente cómo trabajan estos módulos MEMS, es importante conocer los conceptos físicos y cómo se traducen en datos digitales:

Acelerómetro

Un acelerómetro MEMS mide la aceleración de un objeto (cambio de velocidad con el tiempo) respecto a los tres ejes del espacio. Internamente, se basa en la presencia de una masa microscópica suspendida por anclajes flexibles o diminutos resortes. Cuando el sensor acelera, esa masa se desplaza ligeramente y esa variación se convierte a una señal eléctrica gracias a condensadores variables o piezoeléctricos.

  • El acelerómetro siempre detecta al menos una aceleración: la gravedad (9,81 m/s2), aunque el sensor esté quieto.
    Esto se usa para calcular la inclinación respecto al plano horizontal.
  • De la integración de la aceleración con respecto al tiempo se puede obtener la velocidad y, a su vez, la posición recorrida, aunque estas operaciones tienden a acumular errores.

Giroscopio

El giroscopio MEMS utiliza el efecto Coriolis para detectar la velocidad a la que rota un cuerpo alrededor de sus ejes X, Y y Z. Cuando el sensor experimenta un giro, masas vibrantes internas sufren una desviación proporcional a la velocidad angular, y ese cambio se mide electrónicamente.

  • El giroscopio mide velocidad angular: cuán rápido cambia la orientación del sensor en cada eje.
  • Integrando la velocidad angular con el tiempo se obtiene el ángulo de giro (posición angular), aunque esta operación genera errores acumulativos denominados drift.

¿Por qué combinar acelerómetro y giróscopo?

Por sí solos, tanto acelerómetros como giróscopos presentan limitaciones a la hora de determinar la orientación de un objeto:

  • Acelerómetro: Preciso para detectar inclinaciones respecto al eje vertical (usando la gravedad), pero muy sensible al movimiento brusco, aceleraciones externas o vibraciones.
  • Giroscopio: Es perfecto para medir cambios rápidos de orientación, pero sufre acumulación de errores si solo se integra su salida durante mucho tiempo.

Por ello, la mayoría de aplicaciones fusionan los datos de ambos sensores, lo que mejora en gran medida la precisión y fiabilidad de lecturas de ángulo, inclinación o posición. Para conseguirlo, se emplean filtros de procesado digital como el filtro Complementario o el filtro Kalman, que combinan y ponderan las ventajas de cada sensor.

Primeros pasos con el MPU6050: conexión y librerías

Esquema de conexiones típicas

El módulo MPU6050 normalmente se monta sobre una placa tipo GY-521, que facilita mucho la integración con microcontroladores como Arduino.

Las conexiones básicas para utilizar el módulo en modo I2C suelen ser:

MPU6050 Arduino Uno/Nano/Mini Arduino Mega/DUE Arduino Leonardo
VCC 5V 5V 5V
GND GND GND GND
SCL A5 21 3
SDA A4 20 2

El módulo dispone de resistencias pull-up integradas, por lo que generalmente no es necesario añadirlas externamente.

Dirección I2C y pin AD0

El MPU6050 permite configurar su dirección I2C a 0x68 (por defecto, cuando el pin AD0 está a GND o sin conectar) o a 0x69 (cuando se conecta AD0 a nivel alto/5V). Esto facilita utilizar varios sensores en un mismo bus.

Librería recomendada: I2Cdevlib de Jeff Rowberg

Para trabajar cómodamente con el MPU6050 en Arduino, la comunidad recomienda utilizar las siguientes librerías:

  • I2Cdev: Facilita la comunicación I2C con muchos sensores.
  • MPU6050: Permite acceder a todas las funciones del sensor, leer valores calibrados, offsets y usar el DMP.

Están disponibles en: https://github.com/jrowberg/i2cdevlib

Una vez descargadas, basta descomprimirlas y colocarlas en la carpeta libraries del IDE de Arduino.

Lectura de datos básicos: aceleración y velocidad angular

Una vez conectado y configurado el MPU6050, el paso siguiente es realizar lecturas de las aceleraciones y velocidades angulares en los tres ejes. El proceso básico, utilizando la librería citada, incluye:

  1. Inicializar el sensor mediante la función sensor.initialize().
  2. Verificar la conexión con sensor.testConnection().
  3. Leer los valores RAW (sin procesar) del acelerómetro y giróscopo en variables como ax, ay, az para aceleración y gx, gy, gz para giro.
  4. Enviar los datos al puerto serie para visualizar los resultados.

Estos datos aparecen como enteros de 16 bits en el rango .

Calibración del sensor MPU6050

Una de las fases clave a la hora de utilizar el MPU6050 es la calibración. Es muy habitual que, incluso si el sensor está perfectamente horizontal y en reposo, devuelva valores distintos de cero debido a posibles desajustes al soldar el chip en el módulo, o incluso por pequeñas imperfecciones de fábrica.

Calibrar el sensor implica determinar los offsets de acelerómetro y giróscopo en cada eje y configurarlos en el sensor para que las lecturas partan de una base correcta. Un proceso típico podría consistir en:

  • Leer los offsets actuales usando funciones como getXAccelOffset(), getYAccelOffset(), etc.
  • Colocar el sensor en posición horizontal y completamente quieto.
  • Mediante un programa, ir ajustando los offsets hasta que las lecturas filtradas (por ejemplo, usando media móvil o filtro pasa bajo) converjan a los valores ideales: ax = 0, ay = 0, az = 16384, gx = 0, gy = 0, gz = 0 en modo bruto (RAW).
  • Establecer estos valores con las funciones setXAccelOffset(), setYAccelOffset(), etc.

Una vez calibrado correctamente, el sensor proporcionará valores mucho más precisos y estables, fundamentales para aplicaciones críticas como estabilización o navegación.

Escalado y conversión de lecturas a unidades físicas

Las lecturas RAW del MPU6050 deben transformarse a las unidades del SI (Sistema Internacional) para poder interpretarse y utilizarse en cálculos físicos o visualización de datos:

  • Aceleración: El rango por defecto es ±2g, lo que equivale a ±19,62 m/s2. Un valor RAW de 16384 corresponde a 1g; por tanto, para convertir ax a m/s2: ax * (9,81/16384.0).
  • Velocidad angular: Por defecto, ±250°/s, así que la conversión sería: gx * (250.0 / 32768.0) para pasar de valores RAW a grados por segundo.

Estos factores de escala cambian si configuras el sensor en otros rangos, así que es esencial comprobar siempre la configuración de fábrica o personalizada antes de interpretar los datos.

Calcular la inclinación utilizando solo el acelerómetro

Cuando el sensor está en reposo o solo bajo el efecto de la gravedad, se pueden utilizar las lecturas del acelerómetro para calcular el ángulo de inclinación respecto a los ejes X e Y. Las fórmulas matemáticas típicas emplean funciones trigonométricas:

  • Para inclinación en X: atan(ax / sqrt(ay² + az²)) × 180/π
  • Para inclinación en Y: atan(ay / sqrt(ax² + az²)) × 180/π

Esto proporciona el ángulo de inclinación respecto a cada eje respecto al plano de la gravedad, aunque si el sensor está en movimiento o recibe otras aceleraciones, estos valores pueden verse alterados.

Cálculo de ángulos de rotación con el giroscopio

El giróscopo permite calcular la variación de ángulo por integración de la velocidad angular a lo largo del tiempo. Matemáticamente:

  • El ángulo es igual a la integral de la velocidad angular en un intervalo de tiempo determinado: θ = θ0 + ∫w·dt

En la práctica, estos cálculos pueden realizarse en bucles de programa, sumando la velocidad angular multiplicada por el período de muestreo (dt) para obtener el ángulo acumulado.

Es importante controlar el error de integración, ya que los pequeños errores se acumulan, causando drift.

Filtros de fusión de sensores: Complementario y Kalman

Para reducir los errores de interpretación y aprovechar lo mejor de cada sensor, se emplean algoritmos de fusión de datos:

Filtro Complementario

Este filtro combina el ángulo estimado por el giroscopio (que funciona bien en el corto plazo) con el calculado por el acelerómetro (que es más fiable a largo plazo pero ruidoso). La fórmula típica es:

Ángulo_final = α × (Ángulo_anterior + Velocidad_angular×dt) + (1-α) × Ángulo_acelerómetro

Donde α suele estar entre 0,95 y 0,99. Permite obtener una lectura estable y reducir el drift.

Filtro Kalman

Mucho más avanzado, este filtro fusiona las mediciones considerando la incertidumbre de cada uno y sus correlaciones, logrando estimaciones precisas en presencia de ruido. Es ampliamente utilizado en sistemas de navegación y robótica avanzada, aunque requiere mayor capacidad computacional.

Simulación 3D y visualización de orientación (Yaw, Pitch, Roll)

Una aplicación interesante es la visualización en tiempo real de la orientación 3D de un objeto, como un dron o robot, mediante la representación de los ángulos Yaw, Pitch y Roll.

Esto se logra transmitiendo los datos procesados a un software de gráficos, utilizando herramientas como el Serial Plotter o programas 3D específicos para monitorear y analizar los movimientos. Así, puedes comprender visualmente cómo se orienta tu sistema en el espacio.

Ampliación de lecturas: uso de magnetómetro y sensor LSM9DS1

El LSM9DS1 integra en un solo chip acelerómetro, giroscopio y magnetómetro, permitiendo obtener datos de posición y orientación absoluta. Además de medir la aceleración y rotación, puede detectar el campo magnético terrestre para:

  • Calcular el azimut absoluto, útil en navegación y brújulas digitales.
  • Desarrollar sistemas de orientación sin necesidad de sensores externos adicionales.
  • Fusionar los datos de todos los sensores para una estimación de posición y orientación muy precisa (9-DoF).

Consejos prácticos para un uso eficaz de MPU6050 y LSM9DS1

  • Calibrar siempre los sensores antes de su uso en aplicaciones críticas para mejorar la precisión.
  • Evitar montar los módulos cerca de fuentes de interferencia electromagnética, como motores o imanes.
  • Utilizar técnicas de filtrado y mantener un control preciso de los tiempos de muestreo.
  • Para orientación absoluta respecto al norte, se recomienda emplear un LSM9DS1 o combinar el MPU6050 con un magnetómetro externo, como el HMC5883L.
  • Implementar visualizaciones en tiempo real ayuda a interpretar mejor los datos recogidos.
  • Las librerías como I2Cdevlib simplifican mucho el trabajo, así que priorízalas para facilitar el desarrollo.
LSM9DS1
Artículo relacionado:
Guía completa del sensor LSM9DS1 con Arduino: acelerómetro, giroscopio y magnetómetro

Comienza la conversación

Deja tu comentario

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

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.