Magnetómetro HMC5883L.

PROYECTO DE BRÚJULA DIGITAL.
Creado en Diciembre 2017

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.

 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.

 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:

Para trabajar los siguientes ejercicios es necesario instalar las librerías en el IDE Arduino. En este tutorial utilizamos la biblioteca HMC5883L.h, facilitando así la programación. Una vez descargada la librería instálela, vaya al menú Programa-> Incluir librería-> Añadir Librería .ZIP y seleccione la instalación desde el archivo recién descargado, o siga los pasos de la imagen.

 Fig. 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.

 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 tajeta. Se han añadido las sentencias digitalWrite a cada LED puesto a LOW, para que estén apagados.

    • digitalWrite(led1, LOW);
    • digitalWrite(led2, LOW);
    • digitalWrite(led3, LOW);
    • digitalWrite(led4, LOW);
    • digitalWrite(led5, LOW);
    • digitalWrite(led6, LOW);
    • digitalWrite(led7, LOW);
    • digitalWrite(led8, LOW);

Hasta que la dirección señalada mediante las sentencias if, encienda el led que corresponda en cada rumbo. 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.

 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/
  • http://www.naylampmechatronics.com/blog/49_tutorial-magnetometro-hmc5883l.html
  • http://labdegaragem.com/profiles/blogs/tutorial-bussola-eletronica-com-hmc5883l
  • https://www.sparkfun.com/tutorials/301

5 comentarios sobre «Magnetómetro HMC5883L.»

  1. Buenos días Vicente.
    Tengo que trabajar con un campo magnético que gira, y según su posición que me transmita un valor para Arduino. En un principio había pensado utilizar este sencillo módulo, pero me encuentro con la interferencia del campo magnético terrestre.
    Sabes cómo podría hacer para que no influya?
    Gracias.

Deja una respuesta

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