Magnetómetro HMC5883L.

Proyecto de brújula digital.

Introducción.

En la actualidad estamos rodeados de dispositivos inteligentes como móviles, GPS, tabletas, etc. en los cuales viene integrada una brújula mediante la cual se logra orientar el dispositivo, detectando la posición de apaisado a vertical que tiene nuestro móvil o la dirección del polo Norte en el GPS, ect. La brújula digital es un sensor que mide el valor del campo magnético en tres ejes, con esto es posible estimar la orientación del dispositivo respecto al campo magnético de la tierra.

En este tutorial veremos como utilizar la brújula digital o magnetómetro HMC5883L, tratando de explicar y realizar ejemplos con Arduino.

EL HMC5883L es un sensor magnetómetro de 3 ejes, se encuentra integrado en módulos como la GY-273 que incorporan la electrónica necesaria para conectarla de forma sencilla a un Arduino, de forma que podamos detectar y leer el campo magnético terrestre y así calcular la orientación con respecto al norte magnético de la tierra, siempre que nuestro sensor no este expuesto a algún campo magnético externo o cerca de algún objeto metálico que pueda perturbar el campo magnético terrestre.

bd-hmc5883l.jpg
Fig. 1 Módulo brújula digital.

Este pequeño módulo HMC5883L incorpora tres sensores de magnetorresistencia, cancelación de desfases, y conversores de 12 bits, lo que le proporciona una precisión de ±2ºC, trabaja con un tensión de 1.8 a 3.3V, pero algunos tienen un regulador interno por lo que se puede alimentar con 5V o con 3.3V en sus pines respectivos, asegúrese de estos datos. Este módulo de Honeywell HMC5883L, se comunica a través del bus I2C, cuya dirección fija es 0x1E, por lo que es sencillo obtener los datos medidos.

brujula-hnc5883-gy273.gif
Fig. 2  Conexiones.

Actualmente, con el uso de sistemas de navegación en robots y otros vehículos, como cuadricópteros, las brújulas magnéticas son dispositivos ampliamente empleados. La medición con estos sensores se ve afectada por la presencia de campos magnéticos y metales. Por tanto, para aplicaciones de navegación es necesario combinar estos sensores con acelerómetros y giroscopios.

Para realizar los ejemplos que siguen, tenemos que instalar las librerías siguientes:

https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/HMC5883L
https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/I2Cdev

Para trabajar los siguientes ejercicios es necesario instalar las librerías en el IDE Arduino. En este tutorial utilizamos la biblioteca HMC5883L.h, es una biblioteca muy útil y sencilla de utilizar, con ella podemos recoger toda la información que brinda la brújula digital, facilitando así la programación. Una vez descargada la librería instálela, siga los pasos de la imagen.

brujula_hmc5883leds.gifFig. 3  Librerías.

Una de las opciones de lectura que se puede hacer con el magnetómetro, es identificar en qué dirección está el polo norte magnético. En el tutorial de hoy mostraremos cómo puede usted fácilmente utilizar la brújula digital (magnetómetro) utilizando el Arduino.

EL ESQUEMA.

En esta ocasión vamos a utilizar 8 LEDs en circulo que nos indiquen en que dirección esta el polo norte geográfico de la Tierra, haciendo así una brújula electrónica. Para lo cual utilizamos la biblioteca HMC5883L.h, es una biblioteca muy útil y sencilla de utilizar, con la que podemos recoger toda la información que nos brinda la brújula digital HMC5883L.

brujula1.gif
Fig. 4  Esquema práctico.

El HMC5883L se comunica con un lenguaje serial llamado I2C (Wire.h) que requiere solo dos hilos para la comunicación: uno para un reloj (SCL) y otro para los datos (SDA).

EL CÓDIGO.

Brújula digital con sensor magnetómetro HMC5883.

Como ya se sabe, el código residente dentro de la función setup(), se ejecuta una vez al principio. En él, se inicializa la comunicación Serial a 9600/../115200 baudios, la que interese, la comunicación serial para enviar datos de cada eje a la computadora, también inicializamos I2C. Después, realizamos una operación de ‘escritura’ al HMC5883L, el motivo de esta operación de ‘escritura’ es ajustar el valor en el registro de configuración del HMC5883L para indicarle que está en modo de operación continua para realizar lecturas continuas de los datos de los ejes.

Nota. Por defecto, el chip está en modo de lectura única, lo que significa que después de leerlo una vez, estará inactivo para ahorrar energía. Una vez inactivo, le escribimos para activarlo antes de que podamos leer de nuevo, más información sobre los registros en las hojas de datos.

Una vez más, la función loop() se ejecutará permanentemente una y otra vez mientra tenga energía la tarjeta. Se han añadido las sentencias digitalWrite a cada led puesto a LOW, para que estén apagados.

Hasta que la dirección señalada mediante las sentencias if, encienda el led que corresponda depende del punto del globo donde esté ubicado. Para ejecutar el ejemplo, mantenga la tarjeta en posición horizontal, de modo que el eje Z no varíe mucho su posición, ya que no se ha contemplado su valor.

datos-brujula.gif

 Fig. 5 Monitor Serial

Para obtener la orientación respecto del Norte geográfico de la Tierra, usted deberá introducir la declinación de la posición en la que se encuentra. Puede consultar este valor en www.ign.es o también en www.ngdc.noaa.gov

Los datos de los ejes x, y, z se envían en serie al computador, estos valores se pueden ver utilizando el monitor ‘Serial’ del entorno de desarrollo Arduino, como se muestra en la imagen anterior. No utilizaremos los datos del eje Z. En el vídeo que sigue, se puede observar el funcionamiento del proyecto.

Vídeo

En este proyecto es posible ver con el magnetómetro, e identificar en qué dirección está el polo norte magnético. En nuestra demostración utilizamos ocho LEDs, de los cuales apuntará en la dirección que esté el Polo Norte geográfico de la Tierra, obteniendo así, una brújula electrónica.

Referencias.

https://www.luisllamas.es/brujula-magnetica-con-arduino-compass-digital-hmc5883/
https://www.naylampmechatronics.com/blog/49_tutorial-magnetometro-hmc5883l.html
https://labdegaragem.com/profiles/blogs/tutorial-bussola-eletronica-com-hmc5883l
https://www.sparkfun.com/tutorials/301

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.