Cómo usar el módulo GY511 con Arduino [Hacer una brújula digital]: 11 pasos
Cómo usar el módulo GY511 con Arduino [Hacer una brújula digital]: 11 pasos
Anonim
Cómo usar el módulo GY511 con Arduino [Hacer una brújula digital]
Cómo usar el módulo GY511 con Arduino [Hacer una brújula digital]

Visión general

En algunos proyectos de electrónica, necesitamos conocer la ubicación geográfica en todo momento y realizar una operación específica en consecuencia. En este tutorial, aprenderá a usar el módulo de brújula LSM303DLHC GY-511 con Arduino para hacer una brújula digital. Primero, aprenderá sobre este módulo y cómo funciona, y luego verá cómo conectar el módulo LSM303DLHC GY-511 con Arduino.

Lo que vas a aprender

  • ¿Qué módulo de brújula es?
  • Módulo de brújula e interfaz Arduino.
  • Haz una brújula digital con el módulo GY-511 y Arduino.

Paso 1: Información general sobre el módulo de brújula

Información general sobre el módulo de brújula
Información general sobre el módulo de brújula

El módulo GY-511 incluye un acelerómetro de 3 ejes y un magnetómetro de 3 ejes. Este sensor puede medir la aceleración lineal a escalas completas de ± 2 g / ± 4 g / ± 8 g / ± 16 gy campos magnéticos a escalas completas de ± 1.3 / ± 1.9 / ± 2.5 / ± 4.0 / ± 4.7 / ± 5.6 / ± 8,1 Gauss.

Cuando este módulo se coloca en un campo magnético, de acuerdo con la ley de Lorentz, una corriente de excitación induce en su bobina microscópica. El módulo de brújula convierte esta corriente en voltaje diferencial para cada dirección de coordenadas. Con estos voltajes, puede calcular el campo magnético en cada dirección y obtener la posición geográfica.

Propina

QMC5883L es otro módulo de brújula de uso común. Este módulo, que tiene una estructura y aplicación similares a las del módulo LMS303, tiene un rendimiento ligeramente diferente. Entonces, si está haciendo los proyectos, tenga cuidado con el tipo de módulo. Si su módulo es QMC5882L, utilice la biblioteca y los códigos adecuados que también se incluyen en el tutorial.

Paso 2: componentes necesarios

Componentes requeridos
Componentes requeridos

Componentes de hardware

Arduino UNO R3 * 1

Acelerómetro de 3 ejes GY-511 + Magnetómetro * 1

Servomotor TowerPro SG-90 * 1

Módulo LCD 1602 * 1

Jerséis * 1

Aplicaciones de software

IDE de Arduino

Paso 3: Interfaz del módulo de brújula GY-511 con Arduino

Interfaz del módulo de brújula GY-511 con Arduino
Interfaz del módulo de brújula GY-511 con Arduino
Interfaz del módulo de brújula GY-511 con Arduino
Interfaz del módulo de brújula GY-511 con Arduino

El módulo de brújula GY-511 tiene 8 pines, pero solo necesita 4 de ellos para interactuar con Arduino. Este módulo se comunica con Arduino usando el protocolo I2C, así que conecte los pines SDA (salida I2C) y SCK (entrada de reloj I2C) del módulo a los pines I2C en la placa Arduino.

Nota Como puede ver, hemos utilizado el módulo GY-511 en este proyecto. Pero puede utilizar estas instrucciones para configurar otros módulos de brújula LMS303.

Paso 4: Calibración del módulo de brújula GY-511

Para navegar, primero debe calibrar el módulo, lo que significa establecer el rango de medición de 0 a 360 grados. Para hacer esto, conecte el módulo a Arduino como se muestra a continuación y cargue el siguiente código en su placa. Después de ejecutar el código, puede ver los valores mínimo y máximo del rango de medición para los ejes X, Y y Z en la ventana del monitor en serie. Necesitará estos números en la siguiente parte, así que escríbalos.

Paso 5: circuito

Circuito
Circuito

Paso 6: Código

En este código, necesita la biblioteca Wire.h para la comunicación I2C y la biblioteca LMS303.h para el módulo de brújula. Puede descargar estas bibliotecas desde los siguientes enlaces.

Biblioteca LMS303.h

Biblioteca Wire.h

Nota Si está utilizando QMC5883, necesitará la siguiente biblioteca:

MechaQMC5883L.h

Aquí, explicamos el código para LMS303, pero también puede descargar los códigos para el módulo QMC.

Veamos algunas de las nuevas funciones:

compass.enableDefault ();

Inicialización del módulo

compass.read ();

Leer los valores de salida del módulo de brújula

running_min.z = min (running_min.z, brújula.m.z); running_max.x = max (running_max.x, brújula.m.x);

Determinación de los valores mínimo y máximo del rango de medición comparando los valores medidos.

Paso 7: hacer una brújula digital

Después de calibrar el módulo, vamos a construir una brújula conectando un servomotor al módulo. Para que el servoindicador, siempre nos muestre la dirección norte, como la flecha roja de la brújula. Para hacer esto, primero el módulo de brújula calcula primero la dirección geográfica y la envía a Arduino y luego, aplicando un coeficiente apropiado, calcularás el ángulo que debe girar el servomotor para que su indicador apunte al norte magnético. Finalmente, aplicamos ese ángulo al servomotor.

Paso 8: circuito

Circuito
Circuito

Paso 9: Código

Código
Código

Para esta parte, también necesita la biblioteca Servo.h, que está instalada en su software Arduino de forma predeterminada.

Veamos algunas de las nuevas funciones:

Servo Servo1;

Inicialización del módulo

compass.read ();

Presentación del objeto servomotor

Servo1.attach (servoPin); compass.init (); compass.enableDefault ();

Inicialización del módulo de brújula y servomotor

El argumento Servo1.attach () es el número del pin conectado al servomotor.

compass.m_min = (LSM303:: vector) {- 32767, -32767, -32767}; compass.m_max = (LSM303:: vector) {+ 32767, +32767, +32767};

Con estas líneas se definen los valores mínimo y máximo para medir el rango obtenido en la parte anterior.

título flotante = compass.heading ((LSM303:: vector) {0, 0, 1});

La función header () devuelve el ángulo entre el eje de coordenadas y un eje fijo. Puede definir el eje fijo con un vector en el argumento de la función. Por ejemplo, aquí, al definir el (LSM303:: vector) {0, 0, 1}, el eje Z se considera un eje constante.

Servo1.write (título);

La función Servo1.write () aplica el valor leído por el módulo de la brújula al servomotor.

Nota Tenga en cuenta que el servomotor puede tener un campo magnético, por lo que es mejor colocar el servomotor a una distancia adecuada del módulo de la brújula, para que no se desvíe el módulo de la brújula.

Recomendado: