Configurar, leer datos y calibrar la brújula digital HMC5883L usando Python

Como en otros blogs, éste también contiene información que puede encontrarse en otros lugares en la web. Yo sólo estructurado para que sea fácil de usar para principiantes aficionados a robot.

Conexión de la brújula es muy sencilla. Cuando monte el sensor al bot, ser conscientes del marcador x-y-z en el sensor y asegurar que los puntos de-> de x hacia la parte delantera del bot.

La brújula utiliza el protocolo I2C. Conectar el sensor a los pines GPIO (I2C-) en el Pi como sigue:

  • Conectarse a VCC pin-1 (3.3.V)
  • Conectar 3 pin SDA (SDA = datos del sistema)
  • Conecte el SCL al pin 5 (SCL = reloj del sistema)
  • Conectar el GND al pin 7 (GND)

En primer lugar de todas las necesidades de frambuesa Pi ser configurado para utilizar el protocolo I2C. Esto está deshabilitado por defecto en la frambuesa. Encontrarás un excelente tutorial en: https://learn.adafruit.com/adafruits-raspberry-pi...

Al probar el I2C conexión tal como se explica al final de la lección de Adafruit, la dirección 0x1e lo más probable es que se mostrara el HMC5883L sensor. Si tiene una dirección diferente, que tendrás que cambiar la variable de dirección en las secuencias de comandos.

Para calibrar la brújula el bot debe dar vuelta varias veces. Esto puede hacerse a mano. Usé una pantalla giratoria de snack para hacer girar el bot, manteniendo lo horizontal, fácil.

El siguiente paso es leer y Mostrar datos del sensor. Para ello he utilizado un script muy simple que se puede encontrar aquí:

https://bitbucket.org/RoboBasics/Raspberry-robo-CA...

Cómo utilizar el sensor registra para la lectura binaria y escritura puede encontrarse en la hoja de datos del sensor y en la secuencia de comandos. No entraré en eso detalles aquí. El script inicializa del sensor como sigue:

  • muestras de 8 a 15 Hz,
  • LSb ganancia 1.5 (por defecto),
  • 1090 de Gauss (por defecto),
  • muestreo continuo,
  • escala 0.92

Si no quiere sumergirse en las características del sensor, simplemente deje los valores como en la secuencia de comandos. Son bastante genéricos y será suficiente para casi todas las situaciones.

Ahora el script lee el x, y y z los registros, calcula el arco tangente de x e y y convierte el resultado en grados. Basta con ejecutar el script y obtendrá un primer cojinete por ejemplo, 46.53891942 (46° 53' 89,2") comienzo de rotación el bot hasta llegar cerca de 0 grados. Gire a través de cuatro posiciones de 90°, leyendo los datos del sensor en cada paso. Probablemente se podría ver que los valores se desvían y no están completamente bien.

Así que vamos a averiguar lo que está sucediendo. Para esto puede utilizar la siguiente secuencia de comandos simple:

https://bitbucket.org/RoboBasics/Raspberry-robo-CA...

Esta secuencia de comandos recopila 500 lecturas y escribe los valores en un archivo CSV, que puede ser fácilmente importado en Excel y se trazan en un gráfico disperso. Ejecutar el script ( sudo python HMC5883L_calibrate_step_2.py ) y empezar a girar el bot nuevo y remite a través de 360 ° mientras el script se está ejecutando. El resultado debería ser algo así como en la foto.

Ahora se visualiza el offset (solo un leve uno en mi caso). Para obtener un valor más específico para x e y offset, puede utilizar la escritura de tercera, que se puede encontrar aquí:

https://bitbucket.org/RoboBasics/Raspberry-robo-CA...

Esta secuencia de comandos otra vez toma lectura 500, mantiene los valores mínimos y máximos de x e y y calcula los desvíos. Ejecute el script en la misma forma que el script anterior, girando constantemente el bot. Debe obtener algo como esto:

  • Minx:-212
  • Miny:-246
  • Maxx: 262
  • Maxy: 239
  • x offset: 25
  • y offset: -4

Ahora estas compensaciones pueden aplicarse fácilmente a la escritura, que se hace en este ejemplo:

https://bitbucket.org/RoboBasics/Raspberry-robo-CA...

(Para hacer un nuevo trazado, la secuencia de comandos puede combinarse con el paso 2 los valores guardados en un archivo CSV.)

El último paso para conseguir una brújula de trabajo algo exacto, es la adición de la declinación. Usted encontrará su declinación específica a través de esta página: http://www.magnetic-declination.com/

Tener en cuenta que la declinación en grados, así que sumar (o restar) la declinación cuando el rodamiento se calcula en grados. Un ejemplo puede encontrarse aquí:

https://bitbucket.org/RoboBasics/Raspberry-robo-CA...

Ahora se realiza la calibración, ejecute el script pasado y repetir la primera prueba girando el bot a través de pasos de 90° y comparar incluso el rodamiento con otra brújula digital (en su teléfono celular por ejemplo).

Eso es todo!

Artículos Relacionados

Leer datos analógicos directamente en el proceso de

Leer datos analógicos directamente en el proceso de

este instructable presenta un rápido una forma fácil de usar datos recibidos de un sensor análogo en el proceso. Usted aprenderá a utilizar las tarjetas electrónicas Arduino y prototipo para leer datos significativos del ambiente. Los sensores pueden
Leer datos del Sensor ultrasónico a FireFly

Leer datos del Sensor ultrasónico a FireFly

Este Instructable le mirando cómo configurar un Sensor ultrasónico utilizando Arduino y Firefly, con el fin de detectar la distancia de objetos y cualquier geometría cambiante dentro de Rhino y, finalmente, cómo utilizar los datos para la detección d
Brújula Digital de Grove 3 ejes

Brújula Digital de Grove 3 ejes

Este es el cuarto tutorial de una serie de tutoriales donde muestro cómo conectar sensores de Grove y componentes a un Arduino y empezar un proyecto de robot usando estos sensores. En el pasado pocos instructables, enseñó a empezar con el Conductor d
Brújula Digital DIY (para tu coche)

Brújula Digital DIY (para tu coche)

Me sorprende que algunos coches no tienen una brújula digital siempre visible. Tampoco tienes que lanzar la aplicación de navegación cada vez que puede incluso desaparecer cuando usted ajusta la radio. En este proyecto, a crear una brújula digital qu
Ploteo de datos en tiempo real de Arduino usando Python (matplotlib)

Ploteo de datos en tiempo real de Arduino usando Python (matplotlib)

Arduino es fantástico como un intermediario entre tu ordenador y un circuito electrónico crudo. Usando la interfaz serial, puede recuperar información de los sensores conectados a su Arduino. (También puede enviar información a través de la interfaz
Brújula Digital de Arduino (HMC5883L - 2 modos de visualización)

Brújula Digital de Arduino (HMC5883L - 2 modos de visualización)

¡ Hola!!!!!!Hoy voy a mostrar cómo hacer tu propia brújula de arduino usando el tablero de brújula digital MHC5883L 3 ejes.Antes de empezar, asegúrese de que usted tiene:Arduino unoTablero del sensor HMC5883LPantalla Nokia 5110 (versión de pcb)2 x bo
Utiliza tu iPhone para escanear vehículos códigos y leer datos del Sensor

Utiliza tu iPhone para escanear vehículos códigos y leer datos del Sensor

Con el uso de un muy barato (10$!) adaptador puede utilizar tu iPhone como herramienta de diagnóstico para averiguar del motor del cheque del vehículo ligero, borrar los códigos, o ve los sensores (tales como temperaturas, lecturas del sensor de oxíg
Hacking murió el disco duro portátil para leer datos y utilizarlo como disco duro interno

Hacking murió el disco duro portátil para leer datos y utilizarlo como disco duro interno

Cómo se siente para encontrar el disco duro externo que estaba trabajando bien hasta que ayer por la noche trabaja no más... ??Está reducido a un entumecido con sólo su disco duro interno para almacenar su exiguo espacio??Ya no son capaces de leer cu
Experimentos en avanzada de registro de datos (usando Python)

Experimentos en avanzada de registro de datos (usando Python)

Hay un montón de registro instructables, así que cuando quise construir un proyecto de registro de mi propia miró a su alrededor en un montón de datos. Algunas eran buenas, algunas no tanto, así que me decidí a tomar algunas de las mejores ideas y ha
Cómo leer libros en un marco de fotos digital

Cómo leer libros en un marco de fotos digital

cómo convertir (texto) a las imágenes del libro y leerlo en un marco de fotos digital(También hay programas que pueden hacer esto, más o menos éxito.)Mi marco de fotos tiene 7" 480 x 234 de resolución.No lee txt o pdf. Aquí es cómo crear imágenes de
Robot casero de limpieza con Bluetooth

Robot casero de limpieza con Bluetooth

INTRODUCCIÓN¿Siempre quiso una Roomba, pero es demasiado caro para una pieza de plástico? ¿Por qué inventar su propio? Yo mismo, encontrar vacío limpiador / barredora robots demasiado demasiado caro y sobrevalorado. No hay nada absurdo en lo que no p
Interfaz Digital Compass (HMC5883L) con frambuesa Pi 2 con Python3

Interfaz Digital Compass (HMC5883L) con frambuesa Pi 2 con Python3

Inicialmente, estaba trabajando en un laberinto robot de problemas. En lugar de utilizar ultrasónica e infrarroja en el Arduino Mega para la siguiente pared igual mis amigos, trato de hacer algo diferente con la brújula digital y frambuesa Pi 2. Esta
Laser Cut Record

Laser Cut Record

Unos meses atrás, escribí acerca de cómo utilizado una impresora 3D para transformar cualquier mp3 en un disco físico.  Aunque toda la documentación para que el proyecto está disponible aquí, y los modelos 3D potencialmente podrían ser impreso a trav
¿Cómo leer los datos de temperatura en su sitio web?

¿Cómo leer los datos de temperatura en su sitio web?

Hoy, voy a mostrarle cómo leer datos de temperatura de humedad DHT11 y sensor de temperatura está conectado a Arduino UNO que utiliza shield ethernet para enviar datos de temperatura a su sitio web personal! Esto suena perfecto! Me deja medir el esta