"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:
-
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.
-
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.
-
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.
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.
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.
A continuación se explica cada parte:
-
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 deQMC5883LCompass
llamadacompass
que se usará para interactuar con el sensor. Se declaradeclinationAngle
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. -
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 concompass.init()
. Finalmente, ajusta los valores de calibración del sensor concompass.setCalibrationOffsets()
ycompass.setCalibrationScales()
.
-
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 concompass.read()
ycompass.getX()
,compass.getY()
,compass.getZ()
. Luego, calcula la orientación o el rumbo en radianes usando la funciónatan2()
. Después, añade el ángulo de declinación al rumbo para ajustarse a la ubicación actual. - Después de corregir el rumbo, verifica si cae en el rango 0-2π radianes. Si no es así, lo ajusta en consecuencia.
- 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.)
- 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
No comments
comments