El módulo GY-521 es un componente muy utilizado en proyectos que implican la medición de movimiento y orientación, gracias a que integra un acelerómetro y giroscopio en un solo dispositivo. Este componente es versátil y se puede utilizar en proyectos con plataformas de desarrollo como Arduino, aportando datos importantes sobre la aceleración en tres ejes y la velocidad angular.
Este artículo te proporcionará toda la información que necesitas para entender y trabajar con el GY-521, desde sus características más técnicas hasta ejemplos de código que puedes implementar con Arduino. También veremos cómo se puede conectar este módulo a Arduino y qué tipo de datos se pueden extraer y utilizar en tus proyectos.
¿Qué es el GY-521 y cómo funciona?
El módulo GY-521 está basado en el sensor MPU-6050, un chip que combina un acelerómetro de tres ejes con un giroscopio de tres ejes. Esto significa que el GY-521 puede medir tanto la aceleración como la velocidad angular en los tres ejes (X, Y y Z).
El acelerómetro mide la aceleración en tres direcciones, lo que incluye tanto la aceleración debida al movimiento como la aceleración causada por la gravedad. Esto significa que puede detectar el ángulo en el que está inclinado el dispositivo con respecto a la Tierra.
El giroscopio, por su parte, mide la velocidad angular o rotacional en tres ejes. De esta manera, puedes averiguar la rapidez con la que algo está girando y en qué dirección.
Características técnicas del GY-521
El GY-521 destaca no solo por su integración de acelerómetro y giroscopio, sino también por una serie de características técnicas que lo hacen ideal para proyectos de robótica, drones y otros sistemas que requieren medición precisa del movimiento.
- Voltaje de operación: Puede ser alimentado tanto a 3.3V como a 5V, gracias a que incluye un regulador de voltaje en el propio módulo.
- Conexión I2C: Este módulo se comunica con Arduino o cualquier otra plataforma mediante el bus I2C, lo que simplifica la conexión y el control del dispositivo.
- Rango de medición del acelerómetro: El acelerómetro puede medir en un rango ajustable que va desde ±2g hasta ±16g, lo que permite ajustar la precisión según las necesidades del proyecto.
- Rango de medición del giroscopio: Al igual que el acelerómetro, el giroscopio también tiene diferentes rangos ajustables, concretamente ±250, ±500, ±1000 o ±2000 grados por segundo.
Además de estas características, el GY-521 cuenta con un Convertidor Analógico Digital (CAD) de 16 bits, lo que asegura una precisión alta en la conversión de las señales analógicas provenientes de los sensores en datos digitales que pueden ser procesados por tu Arduino.
Conexión del GY-521 con Arduino
La conexión del módulo GY-521 con Arduino es muy sencilla gracias a la interfaz I2C. El bus I2C utiliza dos pines: uno para la señal de datos (SDA) y otro para la señal de reloj (SCL).
Para conectar el GY-521 a una placa Arduino UNO:
- Conecta el pin VCC del módulo al pin de 5V de Arduino.
- Conecta el pin GND del módulo al pin GND de Arduino.
- Conecta el pin SCL al pin A5 de Arduino.
- Conecta el pin SDA al pin A4 de Arduino.
Una vez hayas conectado el GY-521 a Arduino, puedes cargar un ejemplo de código simple para empezar a leer los datos del acelerómetro y el giroscopio.
Ejemplo de código para leer datos del GY-521 con Arduino
A continuación, te mostramos un ejemplo de código básico para comenzar a leer los datos que provienen del acelerómetro y el giroscopio. Se usa la librería Wire.h que facilita la comunicación con dispositivos I2C como el GY-521.
#include
const int MPU = 0x68; // Dirección I2C del MPU-6050.
int16_t accelerometer_x, accelerometer_y, accelerometer_z;
int16_t gyro_x, gyro_y, gyro_z;
int16_t temperature;
void setup() {
Serial.begin(9600);
Wire.begin();
Wire.beginTransmission(MPU);
Wire.write(0x6B); // Registro de gestión de energía del MPU6050.
Wire.write(0); // Coloca a cero para activar el sensor.
Wire.endTransmission(true);
}
void loop() {
Wire.beginTransmission(MPU);
Wire.write(0x3B); // Comienza a leer desde el registro 0x3B (datos de aceleración).
Wire.endTransmission(false);
Wire.requestFrom(MPU, 14, true); // Solicita 14 registros del sensor.
// Leer datos de aceleración:
accelerometer_x = Wire.read() << 8 | Wire.read();
accelerometer_y = Wire.read() << 8 | Wire.read();
accelerometer_z = Wire.read() << 8 | Wire.read();
// Leer datos de giroscopio:
gyro_x = Wire.read() << 8 | Wire.read();
gyro_y = Wire.read() << 8 | Wire.read();
gyro_z = Wire.read() << 8 | Wire.read();
Serial.print("Acc: X="); Serial.print(accelerometer_x);
Serial.print(" | Y="); Serial.print(accelerometer_y);
Serial.print(" | Z="); Serial.println(accelerometer_z);
Serial.print("Gyro: X="); Serial.print(gyro_x);
Serial.print(" | Y="); Serial.print(gyro_y);
Serial.print(" | Z="); Serial.println(gyro_z);
delay(500);
}
Este código básico leerá los datos de aceleración y giro en los tres ejes, y mostrará los valores en el Monitor Serial de Arduino.
Ajuste de escala y sensibilidad
El GY-521 permite ajustar la escala y sensibilidad tanto del acelerómetro como del giroscopio, lo cual es útil si deseas obtener mediciones con mayor precisión o para proyectos en los que se espera detectar movimientos más bruscos.
Para cambiar la escala del giroscopio y acelerómetro, debes modificar los registros específicos del MPU-6050. A continuación te mostramos cómo realizar esto:
- Escala del acelerómetro: Puedes ajustar el rango a ±2g, ±4g, ±8g o ±16g mediante el registro ACCEL_CONFIG. Según el valor que se escriba en este registro, se asigna el rango deseado.
- Escala del giroscopio: Para el giroscopio, el rango se puede ajustar entre ±250, ±500, ±1000 y ±2000 grados por segundo mediante el registro GYRO_CONFIG.
Haciendo estos cambios, el sensor cambiará su sensibilidad, permitiéndote obtener datos más precisos o detectar un rango de movimiento más amplio.
Filtrado de datos: Filtro complementario
Uno de los retos al trabajar con sensores como el GY-521 es que los datos de aceleración y giroscopio suelen tener cierto nivel de ruido. Para mejorar la calidad de los datos, se puede aplicar un filtro complementario que combine ambos sensores para obtener una estimación más precisa de la orientación del dispositivo.
Un filtro complementario utiliza los datos del giroscopio para medir cambios rápidos en la orientación, mientras que los datos del acelerómetro se utilizan para corregir la deriva y obtener una medida más estable a largo plazo.
Aplicaciones del GY-521
Gracias a su capacidad para medir aceleración y velocidad angular, el GY-521 se utiliza en una amplia variedad de proyectos y aplicaciones. Algunas de las más comunes incluyen:
- Sistemas de control de drones: La información proporcionada por el acelerómetro y el giroscopio es clave para mantener la estabilidad en vuelo.
- Robótica: Algunos robots utilizan datos de aceleración y rotación para moverse y detectar cambios en su entorno.
- Dispositivos portátiles: Los sensores como el GY-521 se utilizan en dispositivos como bandas de actividad o relojes inteligentes para medir el movimiento del usuario.
Estos son solo algunos ejemplos, pero las aplicaciones son realmente ilimitadas cuando se trata de medir e interpretar datos de movimiento y orientación.
Conclusión: Por qué debes elegir el GY-521 para tus proyectos
El GY-521, con su integración de acelerómetro y giroscopio en un solo chip, es una herramienta poderosa y versátil para cualquier proyecto de electrónica. Al ser compatible con Arduino y tener una interfaz I2C, es realmente sencillo de integrar en cualquier sistema. Además, su capacidad de ajuste en cuanto a sensibilidad y el hecho de que puede ser implementado en una variedad de proyectos de robótica, control de movimiento y más, lo convierte en una opción ideal para cualquier maker o ingeniero en formación.
Si estás buscando un sensor fiable, fácil de usar y con múltiples aplicaciones, el GY-521 definitivamente debería estar en tu lista de componentes indispensables.