Tabla de contenido:

Interfaz del sensor de giroscopio de 3 ejes BMG160 con partículas: 5 pasos
Interfaz del sensor de giroscopio de 3 ejes BMG160 con partículas: 5 pasos

Video: Interfaz del sensor de giroscopio de 3 ejes BMG160 con partículas: 5 pasos

Video: Interfaz del sensor de giroscopio de 3 ejes BMG160 con partículas: 5 pasos
Video: Interfacing L3G4200 triple axis Gyro with Arduino 2024, Mes de julio
Anonim
Image
Image

En el mundo actual, más de la mitad de los jóvenes y los niños son aficionados a los juegos y todos los que les gustan, fascinados por los aspectos técnicos de los juegos, conocen la importancia de la detección de movimiento en este ámbito. También nos sorprendió lo mismo y solo para traerlo a las placas, pensamos en trabajar en un sensor de giroscopio que pueda medir la velocidad angular de cualquier objeto. Entonces, el sensor que usamos para hacer frente a la tarea es BMG160. BMG160 es un sensor de giroscopio triaxial digital de 16 bits que puede medir la velocidad angular en tres dimensiones de habitación perpendiculares.

En este tutorial, vamos a demostrar el funcionamiento de BMG160 con Particle Photon.

El hardware que va a necesitar para este fin es el siguiente:

1. BMG160

2. Fotón de partículas

3. Cable I2C

4. Escudo I2C para fotones de partículas

Paso 1: Descripción general de BMG160:

Que necesitas..!!
Que necesitas..!!

En primer lugar, nos gustaría familiarizarlo con las características básicas del módulo sensor que es BMG160 y el protocolo de comunicación en el que funciona.

BMG160 es básicamente un sensor de giroscopio triaxial digital de 16 bits que puede medir velocidades angulares. Es capaz de calcular velocidades angulares en tres dimensiones de habitación perpendiculares, los ejes x, y y z, y proporcionar las señales de salida correspondientes. Puede comunicarse con la placa Raspberry Pi mediante el protocolo de comunicación I2C. Este módulo en particular está diseñado para cumplir con los requisitos de aplicaciones de consumo, así como con fines industriales.

El protocolo de comunicación sobre el que trabaja el sensor es I2C. I2C significa circuito interintegrado. Es un protocolo de comunicación en el que la comunicación se realiza a través de líneas SDA (datos en serie) y SCL (reloj en serie). Permite conectar varios dispositivos al mismo tiempo. Es uno de los protocolos de comunicación más simples y eficientes.

Paso 2: ¡¡Lo que necesitas …

Que necesitas..!!
Que necesitas..!!
Que necesitas..!!
Que necesitas..!!
Que necesitas..!!
Que necesitas..!!

Los materiales que necesitamos para lograr nuestro objetivo incluyen los siguientes componentes de hardware:

1. BMG160

2. Fotón de partículas

3. Cable I2C

4. Escudo I2C para fotones de partículas

Paso 3: Conexión de hardware:

Conexión de hardware
Conexión de hardware
Conexión de hardware
Conexión de hardware

La sección de conexión de hardware básicamente explica las conexiones de cableado necesarias entre el sensor y la partícula. Asegurar las conexiones correctas es la necesidad básica al trabajar en cualquier sistema para obtener la salida deseada. Entonces, las conexiones requeridas son las siguientes:

El BMG160 funcionará sobre I2C. Aquí está el diagrama de cableado de ejemplo, que demuestra cómo cablear cada interfaz del sensor.

Fuera de la caja, la placa está configurada para una interfaz I2C, por lo que recomendamos usar esta conexión si, por lo demás, es agnóstico.

¡Todo lo que necesitas son cuatro cables! Solo se requieren cuatro conexiones Vcc, Gnd, SCL y pines SDA y estos se conectan con la ayuda del cable I2C.

Estas conexiones se muestran en las imágenes de arriba.

Paso 4: Código de partículas de medición del giroscopio de 3 ejes:

Código de partículas de medición de giroscopio de 3 ejes
Código de partículas de medición de giroscopio de 3 ejes
Código de partículas de medición de giroscopio de 3 ejes
Código de partículas de medición de giroscopio de 3 ejes

Comencemos ahora con el código de partículas.

Mientras usamos el módulo sensor con el arduino, incluimos la biblioteca application.hy spark_wiring_i2c.h. La biblioteca "application.h" y spark_wiring_i2c.h contiene las funciones que facilitan la comunicación i2c entre el sensor y la partícula.

El código de partículas completo se proporciona a continuación para comodidad del usuario:

#incluir

#incluir

// La dirección BMG160 I2C es 0x68 (104)

#define Addr 0x68

int xGyro = 0, yGyro = 0, zGyro = 0;

configuración vacía ()

{

// Establecer variable

Particle.variable ("i2cdevice", "BMG160");

Particle.variable ("xGyro", xGyro);

Particle.variable ("yGyro", yGyro);

Particle.variable ("zGyro", zGyro);

// Inicializar la comunicación I2C como MASTER

Wire.begin ();

// Inicializar la comunicación en serie

Serial.begin (9600);

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Seleccionar registro de rango

Wire.write (0x0F);

// Configurar 2000 dps a escala completa

Wire.write (0x80);

// Detener la transmisión I2C

Wire.endTransmission ();

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Seleccionar registro de ancho de banda

Wire.write (0x10);

// Establecer ancho de banda = 200 Hz

Wire.write (0x04);

// Detener la transmisión I2C

Wire.endTransmission ();

retraso (300);

}

bucle vacío ()

{

datos int sin firmar [6];

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Seleccionar registro de datos

Wire.write (0x02);

// Detener la transmisión I2C

Wire.endTransmission ();

// Solicita 6 bytes de datos

Wire.requestFrom (Dirección, 6);

// Leer 6 bytes de datos

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb

if (Cable disponible () == 6)

{

datos [0] = Wire.read ();

datos [1] = Wire.read ();

datos [2] = Wire.read ();

datos [3] = Wire.read ();

datos [4] = Wire.read ();

datos [5] = Wire.read ();

}

retraso (300);

// Convertir los datos

xGyro = ((datos [1] * 256) + datos [0]);

si (xGyro> 32767)

{

xGyro - = 65536;

}

yGyro = ((datos [3] * 256) + datos [2]);

si (yGyro> 32767)

{

yGyro - = 65536;

}

zGyro = ((datos [5] * 256) + datos [4]);

si (zGyro> 32767)

{

zGyro - = 65536;

}

// Salida de datos al tablero

Particle.publish ("Eje X de rotación:", String (xGyro));

Particle.publish ("Eje Y de rotación:", String (yGyro));

Particle.publish ("Eje Z de rotación:", Cadena (zGyro));

retraso (1000);

}

Paso 5: Aplicaciones:

Aplicaciones
Aplicaciones

BMG160 tiene una variedad de aplicaciones en dispositivos como teléfonos celulares, dispositivos de interfaz hombre-máquina. Este módulo de sensor ha sido diseñado para cumplir con los requisitos de aplicaciones de consumo tales como estabilización de imagen (DSC y teléfono con cámara), juegos y dispositivos señaladores. También se emplea en sistemas que requieren reconocimiento de gestos y los sistemas utilizados en la navegación interior.

Recomendado: