Negro caja - Arduino Mega, último escudo GPS + LSM303 (3 / 4 paso)

Paso 3: Arduino Mega + acelerómetro (LSM303)

Para conectar el acelerómetro, simplemente Unido el SCL y SDA pasadores en la LSM303 a la Mega SCL(21) y SDA (20) pins. (Que es LSM303 SCL a Mega SCL, entonces LSM303 SDA a Mega SDA)

Fijar la 5v y tierra a las ubicaciones apropiadas. Pude también utilizar un pedazo de anti estática espuma debajo del dispositivo con un poco de pegamento caliente para montar el acelerómetro para tablero de proto de GPS.

empecé con la biblioteca de LSM303 de (https://github.com/pololu/lsm303-arduino). Contiene tres ejemplos, uno de los cuales, "Calibrar", que terminó usando muy a menudo. Esto funcionó para mí sin ninguna modificación y me permitió poner a prueba mi cableado. Esto solía para tirar los valores mínimos y máximos para el acelerómetro x, y, x eje, estos valores se utilizan para balancear hacia fuera el dispositivo de cálculo de fuerzas G.

G-fuerzas:
Para calcular las fuerzas G en el LSM303 solo tenemos que equilibrar los valores de acelerómetro y luego escalarlos hacia abajo. No encuentro el sitio donde obtuve primero el código así que pido disculpas de antemano pero espero pronto tener que actualizar.

Primero! Ejecutar el sketch de calibrar desde la biblioteca de LSM303 para obtener su x, y, z max y min los valores. Para ello, mantenga su LSM303 en cada uno de los seis ejes y actualice el esbozo sosteniendo todavía muy. No quieren causar ningún batidos al dispositivo como será deshacerse de sus lecturas, esto me tomó varios intentos para conseguirlo finalmente calibrado correctamente.

Cuando haya terminado, sobre una superficie plana debe obtener una lectura como esta (:: 0.00G, - 0.00G, 1.00G) donde x e y son 0 y z es 1. podría no ser exacto pero debe flotar alrededor de ésos números.

#include < Wire.h >
#include < LSM303.h >

LSM303 compás;
Estos son mis valores, más probable es que no funcionará para usted
ejecutar el sketch de calibrar desde la biblioteca LSM303 para obtener su
valores máximos y mínimos para x, y, z
int xRawMin =-16240;
int xRawMax = 15616;
int yRawMin =-17216;
int yRawMax = 16992;
int zRawMin =-14560;
int zRawMax = 18448;

void setup()
{
Serial.Begin(14400);
Wire.Begin();
Compass.init();
compass.enableDefault();
}

void loop()
{
Compass.Read();
xRaw largo = compass.a.x;
yRaw largo = compass.a.y;
zRaw largo = compass.a.z;

Convertir valores crudos a ' milli-Gs "
xScaled largo = mapa (xRaw, xRawMin, xRawMax, -1000, 1000);
yScaled largo = mapa (yRaw, yRawMin, yRawMax, -1000, 1000);
zScaled largo = mapa (zRaw, zRawMin, zRawMax, -1000, 1000);

volver a escalar a Gs fraccionadas
Float xAccel = xScaled / 1000.0;
Float yAccel = yScaled / 1000.0;
Float zAccel = zScaled / 1000.0;

Serial.Print("::");
Serial.Print(xAccel);
Serial.Print ("G,");
Serial.Print(yAccel);
Serial.Print ("G,");
Serial.Print(zAccel);
Serial.println("G");

Delay(200);
}

La echada y del rodillo:
Encontré un hilo en los foros de arduino por "ArthurSpooner" para calcular el Pitch y Roll
, simplemente modifiqué el código existente para mi LSM303. Agregar en las bibliotecas y el programa de instalación desde el bosquejo de calibrar, entonces sólo quitar el analogread y sustituirla por su compass.a.x.

Aquí está la versión modificada del código de Arnie que usé:
código por Arne
el acclerometer establecer la forma en que se ve la aceleración z
el cielo y x y es plano--> como la mayoría de sistemas de coordenadas cartesianas
Utilizar un A7270 como un acelerómetro -> en un tablero de arranque de aproximadamente $20 USD
y un HMC5843 como un eje triple Sensor magnético $50 USD
Siéntase libre de comentar el código -> mejora siempre se agradece
Usted puede hacer preguntas en inglés o alemán

necesaria para los cálculos de
#include < math.h >
#include < Wire.h >
#include < LSM303.h >
LSM303 compás;
al aumentar la alphaAccel la respuesta será más rápida
pero el ruido va aumentar [alfa debe estar entre 0 y 1]
valores de paso bajo digital
Float alphaAccel = 0.4;
Float alphaMagnet = 0.4;
unsigned int xOffset = 0; unsigned int yOffset = 0; zOffset unsigned int = 0;
Paso del flotador = 0;
Rollo de flotador = 0;
Desvío del flotador = 0;
xRaw int = 0; int yRaw = 0; int zRaw = 0;
Float xFiltered = 0; Float yFiltered = 0; Float zFiltered = 0;
Float xFilteredOld = 0; Float yFilteredOld = 0; Float zFilteredOld = 0;
Float xAccel = 0; Float yAccel = 0; Float zAccel = 0;

void setup()
{
Serial.Begin(115200);       inicializar el puerto serie
analogReference(EXTERNAL);  tensión de referencia externa (3, 3V)
Delay(2000);  calibrar sensor después de un breve retraso
Wire.Begin();
Compass.init();
compass.enableDefault();
getAccelOffset();           mantenerlo plano y no móvil en la mesa
hay otras maneras de calibrar el offset, cada una tiene algunos advantes
y desventaja...
Comparar la nota de aplicación AN3447
http://www.Freescale.com/files/sensors/doc/app_note/AN3447.pdf
}

void FilterAD()
{
Leer anuncios y restar el offset
xRaw=compass.a.x-xOffset;
yRaw=compass.a.y-yOffset;
zRaw=compass.a.z-zOffset;
Digital Low Pass - comparar: (para acelerometro)
http://en.wikipedia.org/wiki/Low-pass_filter
xFiltered = xFilteredOld + alphaAccel * (xRaw - xFilteredOld);
yFiltered = yFilteredOld + alphaAccel * (yRaw - yFilteredOld);
zFiltered = zFilteredOld + alphaAccel * (zRaw - zFilteredOld);
xFilteredOld = xFiltered;
yFilteredOld = yFiltered;
zFilteredOld = zFiltered;
}

void AD2Degree()
{
3.3 = Vref; 1023 = 10 bits AD; 0.8 = sensibilidad al acelerómetro
(compare la ficha técnica de su acelerómetro)
la * aceleración debe estar entre -1 y 1; que tenga a
para añadir/restar + 1 dependiendo de la orientación del acelerómetro
(como yo en el zAccel)
no son necesarios, pero son útiles para la depuración
xAccel = xFiltered * 3.3 / (1023.0 * 0.8);
yAccel = yFiltered * 3.3 / (1023.0 * 0.8);
zAccel = zFiltered * 3.3 / (1023.0 * 0.8) + 1.0;

Calcular Pitch y Roll (compárese nota de aplicación AN3461 de Freescale
http://www.Freescale.com/files/sensors/doc/app_note/AN3461.pdf
Microsoft Excel cambia los valores de atan2
-> esta información puede hacer su vida más fácil :-D
ángulos son el radián, grado (* 180/3.14159)
Rodillo = atan2 (yAccel, sqrt(sq(xAccel)+sq(zAccel)));
Pitch = atan2 (xAccel, sqrt(sq(yAccel)+sq(zAccel)));
}

void loop()
{
Compass.Read();
FilterAD();
AD2Degree();
Serial.Print ("Pitch:");
Serial.Print(int(pitch*180/PI));
Serial.Print ("Roll:");
Serial.println(int(roll*180/PI));
Delay(50);
}

void getAccelOffset()
{//you puede hacer aproximadamente 60 iteraciones porque usamos un int sin signo
de lo contrario obtendrá un desbordamiento. Pero 60 iteraciones deben estar bien
Compass.Read();
para (int i = 1; i < = 60; i ++) {}
xOffset += compass.a.x;
yOffset += compass.a.y;
zOffset += compass.a.z;
}
xOffset = 60;
yOffset = 60;
zOffset = 60;
Serial.Print ("xOffset:"); Serial.Print(xoffset);
Serial.Print ("yOffset:"); Serial.Print(YOFFSET);
Serial.Print ("zOffset:"); Serial.println(zOffset);

}

El código de ArthurSpooner también contiene la brújula hacia el, sin embargo logré encontrar este código en adafruit y decidió utilizar en lugar de ellos, he probado usando compass.heading() pero no obtengo resultados exactos:

Compass.Read();
mx int = compass.m.x;
int mi = compass.m.y;

Float Pi = 3.14159;
partida de flotador = (atan2(my,mx) * 180) / Pi;
Normalizar a la 0-360
Si (encabezado < 0)
{
rumbo = 360 + partida;
}
Serial.println(Heading);

Artículos Relacionados

Arduino Mega GPS con pantalla LCD y SD Registro

Arduino Mega GPS con pantalla LCD y SD Registro

Utilice su Audino Mega como un registrador de GPS con una pantalla de LCD clara y 5 botones de función. Un LED bicolor se utiliza para proporcionar información de estado.La SDcard puede ser dejado en y leer utilizando un bosquejo de lector de tarjeta
Hacer un escudo Arduino Mega

Hacer un escudo Arduino Mega

La plataforma Arduino ofrece un potente conjunto de herramientas para hacer dispositivos electrónicos interactivos. Para muchos proyectos, cableado a un protoboard es todo lo que se necesita. Pero si usted tiene planes más ambiciosos para el desarrol
Escudo de prototipos para Arduino Mega

Escudo de prototipos para Arduino Mega

se trata de un down y sucio escudo de prototipos que funciona de Arduino Mega y pin hay clones compatibles. Esta es la primera vez que he hecho esta tarjeta, pero tengo otros proyectos creo que esto sería útil para.Materiales utilizados:Protostack es
8 x 8 x 8 LED cubo con Arduino Mega (+ sonido + PS controlador + juego)

8 x 8 x 8 LED cubo con Arduino Mega (+ sonido + PS controlador + juego)

este es un instructivo que se basa en el cubopor Chr, (por SuperTech-IT, (y por das-labor.org, (http://www.das-labor.org/wiki/Borg3d_Bauanleitung...)pero creo que su mejor y más fácil.Comencé este proyecto sin ninguna habilidad de toprogramming de so
RS485 Comunicación Serial entre Arduino Mega y Arduino Nano con Visuino

RS485 Comunicación Serial entre Arduino Mega y Arduino Nano con Visuino

A veces necesitamos conectar placas Arduino ubicados muy lejos unos de otros. RS485 es una manera muy conveniente para conectar las tablas con sólo 2 conductores y puede trabajar a una distancia de 1200 m (4000 pies). También permite múltiples tablas
Guía de un newbie para configurar ESP8266 con Arduino Mega 2560 o Uno

Guía de un newbie para configurar ESP8266 con Arduino Mega 2560 o Uno

Por productos de código abierto para tener éxito o adopción en masa por los "fabricantes" / "DIY-ers" / "dev" / "etc"; una documentación actualizada y exacta o guía de inicio rápido tiene que ser proporcionado. Mens
Arduino Mega Intro

Arduino Mega Intro

Hey todo el mundoEl Arduino Mega es un increíble microcontrolador para proyectos que necesitan una gran cantidad de io o procesamiento de energía y es muy divertido para usar. En este instructable veremos el:Especificaciones de Arduino Megaslos proye
Arduino Mega 8 x 8 x 8 RGB LED cubo

Arduino Mega 8 x 8 x 8 RGB LED cubo

"Por lo tanto, desea construir un 8 x 8 x 8 RGB LED Cube"Yo he estado jugando con la electrónica y de Arduino por un tiempo ahora, incluyendo la construcción de un controlador de interruptor de alto amperaje para mi coche y un seis lane Pinewood
Alimentar el Arduino Mega con una batería de litio

Alimentar el Arduino Mega con una batería de litio

este es un pequeño y corto tutorial que explica paso a paso cómo conectar el escudo de hardware de código abierto Mega litio mochila con Arduino Mega, para darle vida de la batería y permiten la Mega ser untethered desde el ordenador.Las piezas fuero
Dagu rover 5 - arduino mega 2560 - Xbee

Dagu rover 5 - arduino mega 2560 - Xbee

Hola. Esta es mi 1ª plataforma de robot y Instructable 1er post. Soy un gran creyente del intercambio de conocimientos y he aprendido mucho de internet, así que aquí está me agregar al conocimiento colectivo. Lo siento por la falta de principios foto
Cómo utilizar 2.4 pulgadas TFT LCD SPFD5408 con arduino MEGA 2560

Cómo utilizar 2.4 pulgadas TFT LCD SPFD5408 con arduino MEGA 2560

Este instructable le mostrará cómo para el SPFD5408 2.4 pulgadas lcd a la arduino MEGAPaso 1:Paso 2: bibliotecasAlgunos de ustedes pueden comprar esta pantalla LCD o el pensamiento de conseguiruno. Su una gran pantalla para la visualización de imágen
Sencilla calculadora basada en Arduino MEGA

Sencilla calculadora basada en Arduino MEGA

Hoy en día, haciendo cálculos no es un problema en absoluto. Calculadoras de gran alcance pueden comprar por pocos euros o fácilmente instalados en teléfonos y computadoras. Sin embargo, hemos decidido hacer nuestro Arduino una calculadora porque pen
Hazlo tú mismo Arduino Mega 2560 o 1280

Hazlo tú mismo Arduino Mega 2560 o 1280

así que esta es mi primera instructables... Vamos a probar esto!* el original se puede encontrar aquí: http://tsjwang.blogspot.com/2013/08/diy-arduino-mega-2560.html*Muy bien.Esta es la historia: estaba trabajando en este proyecto de Arduino frustran
Kit Arduino Mega + principiante Gearbest

Kit Arduino Mega + principiante Gearbest

Gearbest es una empresa online de muy rápido crecimiento, proporciona una amplia gama de productos de alta calidad bajo un montón de categorías. Gracias a sus grandes descuentos, su ayuda profesional y confiable y su función en todo el mundo envío gr