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!