Paso 5: Sketch de Arduino
WhatItDoes: Mi bosquejo de SpotterLevel muestra el título o cojinete el alcance es apuntado hacia. El compás magnético estándar se divide en 360 grados al norte a 0, este en 90, 180 sur y oeste en 270. La dirección es la dirección que el alcance es apuntado hacia en grados.
La brújula en esta imagen, el título es cerca de 123 grados.
También visualizan la x, y y z los valores del acelerómetro en grados con nivel en 0 y la recta de arriba 90. Tan perfectamente nivel sería 0, 0, 90.0.
Utilizar bibliotecas de Adafruit para el módulo LCD5110.
ADVERTENCIA: Cuando me actualicé a Arduino a la 1.6.1, tuve que actualizar las bibliotecas de Adafruit_GFX y Adafruit_PCD8544:
https://Learn.Adafruit.com/Adafruit-GFX-Graphics-Library
https://github.com/Adafruit/Adafruit-PCD8544-Nokia-5110-LCD-Library
Como se dijo antes:
PRECAUCIÓN: Mi PCB utiliza un Atmega328 programado con MINI Pro 8 MHZ 3, 3V cargador de arranque. Si usted construye este PCB, se debe programar con el MINI Pro 8 MHZ 3.3V bootload y debe seleccionar cuando se utiliza el entorno de Arduino.
Entorno de Arduino versión 1.6.4:
Seleccionar, seleccione el puerto
Seleccione, bajo tablas, seleccione (Arduino Pro o Pro Mini)
Selección, bajo procesador, seleccione (Atmega328 (3.3V, 8 Mhz))
Nota: Las versiones más antiguas no tienen selección de procesador pero tienen un AtMega328 Mini Pro (3.3V, 8 MHz) selección bajo tableros.
El PCB está diseñado para utilizar un adaptador USB-BUB o utilizo un equivalente PL2303.
Mi bosquejo de SpotterLevel debe modificarse para los valores de calibración encontrados el último paso:
Desde el programa calibre , conecte los valores mín/máx SpotterLevel bosquejo, reemplazando los valores en las siguientes líneas:
Compass.m_min = (LSM303::vector) {-433, -600,-546};
Compass.m_max = (LSM303::vector) {570, 488, 579};
Esto debe mejorar la lectura del título.
Del programa AccelCal , conecte los valores mín/máx SpotterLevel bosquejo, reemplazando los valores en las siguientes líneas:
Calibración de acelerómetro {x, y, z}
acmin largo const [3] = {-17008,-16432,-17120};
const acmax largo [3] = {16064, 16480, 18176};
Esto debería mejorar las lecturas de nivel.
Orientación LSM303dlhc: Existe otra configuración de software que puede necesitar ser ajustado dependiendo de cómo se orienta el módulo de LSM303dlhc y dirección que le interesa. En el ámbito de spotter, quiero saber qué dirección apunta el alcance. Al instalar el módulo, usted quiere asegurarse de que es paralela o perpendicular a la dirección que te interesa. En este caso la X flecha apunta en la dirección que me interesa. Lo refleja la siguiente línea:
título = compass.heading((LSM303::vector) {1, 0, 0});
Si usted está interesado en la dirección opuesta como la X se debe utilizar:
título = compass.heading((LSM303::vector) {-1, 0, 0});
Si usted está interesado en la misma dirección como la Y se debe utilizar:
título = compass.heading((LSM303::vector) {0, 1, 0});
Si usted está interesado en la dirección hacia abajo (Z) usaría:
título = compass.heading((LSM303::vector) {0, 0, -1});
En Resumen, los tres valores son X, Y y Z. Sólo uno de ellos puede ser distinto de cero. Si es la misma dirección que la dirección de lo que es 1. Si es el lado opuesto de lo que es -1.
TECHNOBABBLE: Creo que esto está utilizando álgebra lineal y matemáticas vector. (¡ Puaj!)
Por desgracia, hay algunos más de calibración para hacer. El IC LSM303dlhc está conectado a la interface, el PCB. La Junta está atornillada a la placa superior. Todas estas tensiones en la IC afecta el acelerómetro que lee así que cero no será cero. Así que he añadido un pequeño factor de corrección en mi bosquejo.
Procedimiento de final de calibración:
Abra el dibujo de SpotterLevel para la edición. Asegúrese de que los valores en esta línea son todos 0.0:
doble ac_off [3] = {0.0, 0.0, 0.0}; Utilizarlos para la calibración.
Cargar el sketch de Arduino.
Fije el conjunto a un trípode.
Nivel de la placa superior de Asamblea. Tengo un pequeño nivel de burbuja T en él. Más trípodes tienen un par de ajustes para ajustar para el nivel.
Esto es difícil de hacer. Lo que hago es alinear el plano paralelo a uno de los ajustes. Haga el ajuste luego girar 180 grados y comprobar. Luego gire el conjunto 90 grados y repita para el otro ajuste.
PRECAUCIÓN: el cojinete tiene mucho juego así que asegúrese de que la Asamblea se apoye uniformemente sobre el cojinete.
Una vez que la placa superior como nivel como usted puede conseguir, encienda el Arduino. Ahora lentamente gire la placa de alrededor y obtener los valores max y min para x, y, z. Luego tomar la media. Esto es lo que tengo, una vez:
X Y Z
Max-0.0 0,4 83,7
Min -1,6 -1,0 83,3
Ave -0,8 -0,3 83,5
Para el Z tienes que restar 90 de él (-6.5)
Enchufe en el bosquejo
doble ac_off [3] = {0,3, -0.8,-6.5};
Finalmente se hacen con calibración!!!!