"Todo lo que Debes Saber para Crear una Brújula con Arduino"

Introducción

En esta guía práctica, profundizaremos en el fascinante mundo de la navegación y el magnetismo. A lo largo de este tutorial, aprenderemos a construir nuestra propia brújula digital utilizando el sensor magnético triaxial HMC5893L y una placa Arduino Uno. Además, desplegaremos la orientación obtenida en tiempo real a través del puerto serial. Prepárate para descubrir cómo convertir tu simple Arduino en una sofisticada herramienta de orientación.

HMC5883L

El HMC5883L es un módulo magnetómetro de 3 ejes producido por Honeywell. Es un dispositivo que mide el campo magnético terrestre en tres dimensiones, lo que lo hace muy útil para la orientación y detección de dirección, especialmente en aplicaciones de robótica y navegación.

A continuación, te presento algunas de las características clave del HMC5883L:

  1. Medición de 3 ejes: Puede medir el campo magnético en los ejes X, Y y Z. Esto lo hace ideal para aplicaciones de orientación en 3D.

  2. Alta Precisión: El HMC5883L puede medir campos magnéticos con una resolución de hasta 5 miligauss, lo que le permite detectar cambios muy pequeños en el campo magnético.

  3. Interfaz I2C: El módulo utiliza la interfaz I2C para la comunicación con microcontroladores como el Arduino. Esto simplifica enormemente el proceso de lectura de datos del sensor.

Puedes ver el datasheet completo aquí.

Crear brújula con un magnetómetro

Los magnetómetros, como el HMC5893L, son capaces de medir la intensidad del campo magnético a lo largo de tres ejes: X, Y y Z. Esto te proporciona una representación tridimensional del campo magnético a tu alrededor.

Para una brújula, generalmente nos interesa la dirección horizontal del campo magnético, es decir, el plano X-Y. La brújula detecta el campo magnético terrestre, que indica la dirección al norte magnético.

Para determinar esta dirección, puedes considerar que los valores de X e Y representan un vector en un plano bidimensional. El ángulo de este vector con respecto al eje X (o cualquier otro eje de referencia) representa la orientación de la brújula.

Para calcular este ángulo, utilizamos la función de arco tangente (atan2 en muchos lenguajes de programación). La función atan2(Y, X) devuelve el ángulo (en radianes) entre el eje X y el vector que va desde el origen hasta el punto (X, Y).

Por último, esta orientación puede ajustarse para la declinación magnética de la ubicación específica para obtener la dirección del norte verdadero en lugar del norte magnético.

Campo magnetico terrestre

 Declinación magnética

También conocida como variación magnética, es el ángulo entre el norte magnético y el norte verdadero desde un punto específico en la Tierra. En otras palabras, es la diferencia entre la dirección a la que apunta una brújula (que apunta al norte magnético) y la dirección del verdadero norte en el mapa geográfico (que apunta al Polo Norte geográfico).

La razón de esta diferencia es que el campo magnético de la Tierra no se alinea perfectamente con los ejes de rotación de la Tierra. El norte magnético, que es el punto al que apuntan todas las brújulas, en realidad se encuentra en una ubicación diferente al norte geográfico (Polo Norte).

La cantidad de declinación varía dependiendo de dónde te encuentres en la Tierra, por lo que los mapas y las brújulas utilizados para la navegación deben tener en cuenta la declinación magnética local.

declinacion magnetica

Para este tutorial debes saber la declinación del lugar donde vives, puedes consultarla en esta página.

Puede ser positiva o negativa, este dato lo usaremos mas adelante.

 

Uso con Arduino uno

Diagrama

Al ser un sensor que usa el protocolo I2C su conexión es muy sencilla.

HMC5883L -----> ARDUINO UNO

VCC----------------> 5V

GND----------------> GND

SCL-----------------> SCL(PIN A5)

SDA-----------------> SDA(PIN A4)

 Programación

Haremos uso de la librería QMC5883LCompass, para esto vamos a Sketch>Include Library>Manage Libraries. Instalamos y reiniciamos el IDE.

Ahora iremos al ejemplo de calibración, lo subiremos al arduino asegurandonos que esta bien conectado el magnetómetro y en monitor serial nos dará indicaciones de moverlo hacia todos los ejes, una vez finalizado el proceso imprimira los datos de calibración que usaremos en cada código que usemos el magnetómetro.

Cargaremos el siguiente código para crear nuestra brújula, cambiando los valores de calibración y declinación por los previamente obtenidos.
Código

 

A continuación se explica cada parte:

  1. Inclusión de librería y definición de variables: Primero, incluye la biblioteca QMC5883LCompass.h, que proporciona las herramientas necesarias para interactuar con el módulo QMC5883L. Luego, se crea una instancia de QMC5883LCompass llamada compass que se usará para interactuar con el sensor. Se declara declinationAngle para representar el ángulo de declinación magnética de la ubicación geográfica específica, que es importante para obtener lecturas precisas de la brújula,recuerda cambiar este valor por el que obtuviste dependiendo tu ubicación geográfica.
  2. Función Setup: Dentro de la función setup(), inicializa la comunicación Serial a una velocidad de 9600 baudios para poder enviar datos al Monitor Serial. Luego, se inicia el sensor magnético con compass.init(). Finalmente, ajusta los valores de calibración del sensor con compass.setCalibrationOffsets() y compass.setCalibrationScales().
  1. Función Loop: La función loop() es la parte principal del programa que se ejecuta en un bucle continuo. Primero, lee las lecturas del sensor magnético en los ejes X, Y y Z con compass.read() y compass.getX(), compass.getY(), compass.getZ(). Luego, calcula la orientación o el rumbo en radianes usando la función atan2(). Después, añade el ángulo de declinación al rumbo para ajustarse a la ubicación actual.
  2. Después de corregir el rumbo, verifica si cae en el rango 0-2π radianes. Si no es así, lo ajusta en consecuencia.
  3. Luego, convierte el rumbo de radianes a grados y determina en qué sección cae para determinar la dirección cardinal (Norte, Noreste, Este, etc.)
  4. Finalmente, imprime la orientación en grados y la dirección cardinal en el Monitor Serial y luego espera durante 250 milisegundos antes de comenzar la próxima iteración del ciclo.

Resultados

En monitor serial podemos ver los grados y la dirección, el ciclo se repite cada 250 milisegundos, permitiendo tener una lectura casi en tiempo real.

Conclusión

Esperamos sinceramente que este tutorial detallado sobre el módulo magnetómetro HMC5883L de 3 ejes te proporcione el impulso y la claridad necesarios para tus futuros proyectos. Confiamos en que la comprensión y aplicación de esta poderosa herramienta de navegación te abrirá un mundo de posibilidades en tus próximas creaciones.

 

Productos Relacionados

Ver artículo

Ver artículo

Magnetómetro

Deja un comentario