Brújula digital HMC5883L y acelerómetro ADXL345

Brújula digital HMC5883LAcelerómetro ADXL345Seguimos con más componentes del módulo 10DOF, probando el funcionamiento de cada uno de ellos y escribiendo a la vez una pequeña librería para manejarlos. En esta ocasión vamos a ver el HC5883L, que es un magnetómetro o brújula digital, capaz de medir el campo magnético en los tres ejes con una precisión de entre 1 y 2º, y el ADXL345 que es un acelerómetro también de tres ejes con una precisión de 4mg (0.039 m/s²) y un rango de medida hasta 16g.

El acelerómetro sometido al campo gravitatorio nos debe devolver continuamente un vector de valor 1 g en perpendicular a la horizontal, lo que nos permitirá compensar la inclinación del magnetómetro para obtener la orientación exacta hacia el norte magnético. Por supuesto también se puede usar para obtener las aceleraciones a las que está sometido nuestro invento.

En cuanto al magnetómetro, es una instrumento muy sensible que puede servir para medir cualquier tipo de campo magnético diferente del terrestre, o las variaciones que induce en el mismo un material ferromagnético. En las pruebas que he realizado llega al extremo de detectar la variación en el campo magnético que produce un destornillador a 30 cm del módulo, o un iman a más de un metro de distancia.

Por el momento sólo vamos a leer los datos en «crudo» a modo de prueba y en otro capítulo veremos como tratar estos datos para obtener medidas más utilizables.

Al igual que el resto de componentes de la placa 10DOF que estamos usando, la comunicación se hace por I2C, sólo hay que conectar las resistencias de pull-up en las líneas SDA y SCL, o bien, como en este ejemplo poner a 1 las resistencias de internas del PIC.

El procedimiento para comunicar con los dos integrados de este artículo es similar al empleado con el barómetro, enviamos una trama de configuración a uno de los registros del chip y luego leemos los datos en otros registros, por ello he juntado las funciones comunes dentro del fichero 10DOF.h.

En el caso del HMC5883 enviamos un 0 al registro 0x02 de configuración para configurarlo en modo de medición continua a 15Hz, luego leemos los tres ejes en los registros 0x03 – 0x07.

En el ADXL345 utilizamos el registro 0x2D para pasar el chip a modo sleep y luego a medición como indica el datasheet, luego podemos leer los valores de los tres ejes en los registros 0x32 – 0x37. En este caso hay que tener en cuenta que el byte alto de cada registro de 16 bits está en la dirección más alta (al revés que en el HMC5883).

Os dejo un programa de ejemplo con estos dos sensores y el barómetro enviando datos por el puerto serie:

Fichero sólo visible para usuarios registrados

Entrada anterior

Continuará …

Responder a David Cancelar la respuesta

Tu email nunca se publicará.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies