jueves, 13 de agosto de 2015

3 Axis Digital Compass HMC5883L

Pues la verdad que tenía esta placa por casa que había comprado en Aliexpress hace ya un tiempo y decidí ponerla en funcionamiento. Por solo 0.80€ nos podemos hacer un sensor de campos magnéticos o un pequeño compass.
Pasemos a la parte técnica...

Estamos frente a una breakout board que monta el IC HMC5883L desarrollado por Honeywell para detección de campos magnéticos.
Su funcionamiento se lleva a cabo mediante unos sensores magnetoresistivos que aplicando una diferencia de potencial los sensores convierten cualquier campo magnético incidente en la dirección del eje sensible con una salida de voltaje diferencial. Estos sensores están hechos de un hierro de níquel de película delgada y modelado como un elemento de tira resistiva. Cuando hay presencia de un campo magnético, un cambio en los elementos resistivos puente provoca un cambio correspondiente en la tensión a través de las salidas.
Estos elementos resistivos  están alineados entre sí para tener un eje común cada uno de ellos que proporcionará un cambio positivo de tensión con el incremento del campo magnético en la dirección correspondiente(Segun el diagrama de la PCB).


Ya hemos explicado por encima el funcionamiento ahora hablemos un poco de las características de la placa.
Vdd 2.16 a 3.3V(100mA consumo aprox)
Precision-> 2 mG con un full scale de +-8Gauss. Aplicado al desarrollo de compass nos encontramos con un error de precisión de +-1º
Output Rate-> 160Hz max output rate.
Comunicación-> mediante Bus I2C
Otras caracteristicas-> offset cancellation

¿Campos magnéticos?
Navegando por la red encontré este enlace donde la verdad que se explica bastante bien el fenómeno del magnetismo, por si alguien necesita darle  un vistazo.
http://www.endesaeduca.com/Endesa_educa/recursos-interactivos/conceptos-basicos/magnetismo


¿Como medimos los campos magnéticos?
Actualmente se utilizan dos unidades, en primer lugar hablamos del Tesla (T) que es la unidad empleada para medir la densidad de flujo magnético. En términos físicos nos referimos a la inducción de un campo magnético que ejerce una fuerza de 1 Newton sobre una carga de 1 Culombio que se mueve a una velocidad de 1m/s dentro del campo magnético y perpendicularmente a las líneas de inducción magnética. El Tesla pertenece al SI desde 1960, en honor al físico e inventor Nikola Tesla.
Y la otra unidad empleada es el Gauss que corresponde al Sistema Cegesimal de Unidades, nombrada en honor al matemático y físico alemán Carl Friederich Gauss, Que corresponde 1 Maxwell por centímetro cuadrado.

¿Comenzamos con el sensor magnético?
Después de una pequeña introducción referente a la placa que vamos a utilizar y una ligera dosis de física, nos pondremos manos a la obra para conectar la placa con nuestro Arduino.

Respecto al Pinout es bastante sencillo como mencionamos al principio utiliza el Bus de comunicación I2c, así que haremos el conexionado de la siguiente manera:

HMC5883L-> Arduino Nano
Vcc-> 3.3V
Gnd-> Gnd
Scl-> A5
Sda-> A4
Drdy-> Data Ready. No lo conectaremos en este caso, es bastante útil en algunas ocasiones ya que se suele emplear para cuando hay dato disponible generar una interrupción.


Una vez conectado así es como nos quedaría la cosa.


Terminada la parte física pasaremos a la parte del software. No nos vamos a complicar demasiado y utilizaremos las librerías de Adafruit

Primero descargaremos e instalaremos la libreria Adafruit Sensor en el siguiente enlace:
https://github.com/adafruit/Adafruit_Sensor

Y por último la librería Adafruit HMC5883
https://github.com/adafruit/Adafruit_HMC5883_Unified

Actualmente he comenzado a usar la versión de Arduino IDE 1.6.5 y la cosa para añadir librerías es bastante sencillo. Cuando hayamos descargado las dos librerías tenemos que renombrarlas como Adafruit_Sensor y Adafruit_HMC5883_U, omitiendo el -master.
Ahora vamos a añadirlas, nos dirigimos dentro del entorno de Arduino IDE en la barra de menus, Programa->Include Library->Add .Zip library, aparecerá una nueva ventana donde seleccionamos las librerías y hacemos click en abrir, si todo ha salido bien debería darnos la confirmación. Reiniciamos el entorno y ya están operativas.
Hecho esto abriremos el proyecto de ejemplo magsensor y le cargaremos a nuestro Arduino


Por último accederemos al monitor serie y nuestro sensor comenzará a darnos los datos magnéticos al momento en función de su orientación respecto a las 3 componentes X, Y, Z.





No hay comentarios:

Publicar un comentario