Tabla de contenido:

Medición de la aceleración con ADXL345 y fotón de partículas: 4 pasos
Medición de la aceleración con ADXL345 y fotón de partículas: 4 pasos

Video: Medición de la aceleración con ADXL345 y fotón de partículas: 4 pasos

Video: Medición de la aceleración con ADXL345 y fotón de partículas: 4 pasos
Video: ✅ Acelerómetro y Giroscopio Electrónico 2024, Noviembre
Anonim
Image
Image

El ADXL345 es un acelerómetro de 3 ejes pequeño, delgado y de potencia ultrabaja con medición de alta resolución (13 bits) de hasta ± 16 g. Los datos de salida digital están formateados como un complemento de dos de 16 bits y se puede acceder a ellos a través de la interfaz digital I2 C. Mide la aceleración estática de la gravedad en aplicaciones de detección de inclinación, así como la aceleración dinámica resultante de movimientos o golpes. Su alta resolución (3,9 mg / LSB) permite medir cambios de inclinación inferiores a 1,0 °.

En este tutorial se ha ilustrado la interfaz del módulo sensor ADXL345 con fotones de partículas. Para leer los valores de aceleración, hemos utilizado partículas con un adaptador I2c. Este adaptador I2C hace que la conexión al módulo sensor sea fácil y más confiable.

Paso 1: Hardware necesario:

Hardware requerido
Hardware requerido
Hardware requerido
Hardware requerido
Hardware requerido
Hardware requerido

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

1. ADXL345

2. Fotón de partículas

3. Cable I2C

4. Escudo I2C para fotones de partículas

Paso 2: 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 el fotón de partículas. 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 ADXL345 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 3: Código para medir la aceleración:

Código para medir la aceleración
Código para medir la aceleración

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

Mientras usamos el módulo sensor con la partícula, incluimos application.hy la biblioteca 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 ADXL345 I2C es 0x53 (83)

#define Addr 0x53

int xAccl = 0, yAccl = 0, zAccl = 0;

configuración vacía ()

{

// Establecer variable

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

Particle.variable ("xAccl", xAccl);

Particle.variable ("yAccl", yAccl);

Particle.variable ("zAccl", zAccl);

// Inicializar la comunicación I2C como MASTER

Wire.begin ();

// Inicializar la comunicación en serie, configurar la velocidad en baudios = 9600

Serial.begin (9600);

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Seleccionar registro de tasa de ancho de banda

Wire.write (0x2C);

// Seleccione la tasa de datos de salida = 100 Hz

Wire.write (0x0A);

// Detener la transmisión I2C

Wire.endTransmission ();

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Seleccionar registro de control de potencia

Wire.write (0x2D);

// Seleccione la desactivación automática del sueño

Wire.write (0x08);

// Detener la transmisión I2C

Wire.endTransmission ();

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Seleccionar registro de formato de datos

Wire.write (0x31);

// Seleccione resolución completa, +/- 2g

Wire.write (0x08);

// Fin de la transmisión I2C

Wire.endTransmission ();

retraso (300);

}

bucle vacío ()

{

datos int sin firmar [6];

para (int i = 0; i <6; i ++)

{

// Iniciar transmisión I2C

Wire.beginTransmission (Addr);

// Seleccionar registro de datos

Wire.write ((50 + i));

// Detener la transmisión I2C

Wire.endTransmission ();

// Solicitar 1 byte de datos del dispositivo

Wire.requestFrom (Dirección, 1);

// Leer 6 bytes de datos

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb

si (Cable disponible () == 1)

{

datos = Wire.read ();

}

retraso (300);

}

// Convierte los datos a 10 bits

int xAccl = (((datos [1] y 0x03) * 256) + datos [0]);

si (xAccl> 511)

{

xAccl - = 1024;

}

int yAccl = (((datos [3] y 0x03) * 256) + datos [2]);

si (yAccl> 511)

{

yAccl - = 1024;

}

int zAccl = (((datos [5] y 0x03) * 256) + datos [4]);

si (zAccl> 511)

{

zAccl - = 1024;

}

// Salida de datos al tablero

Particle.publish ("La aceleración en el eje X es:", String (xAccl));

Particle.publish ("La aceleración en el eje Y es:", String (yAccl));

Particle.publish ("La aceleración en el eje Z es:", String (zAccl));

}

La función Particle.variable () crea las variables para almacenar la salida del sensor y la función Particle.publish () muestra la salida en el tablero del sitio.

La salida del sensor se muestra en la imagen de arriba para su referencia.

Paso 4: Aplicaciones:

Aplicaciones
Aplicaciones

ADXL345 es un acelerómetro de 3 ejes pequeño, delgado y ultrabajo de potencia que puede emplearse en teléfonos móviles, instrumentación médica, etc. Su aplicación también incluye juegos y dispositivos señaladores, instrumentación industrial, dispositivos de navegación personal y protección de unidades de disco duro (HDD).

Recomendado: