Imagen de Modulo Acelerómetro Gy-291 Adxl345 Sensor Aceleración

Modulo Acelerómetro Gy-291 Adxl345 Sensor Aceleración

Categorías: Modulos, Sensores


El Acelerometro ADXL345 GY-291 realiza detección de movimiento en 3 ejes con una resolución en medición (13 bits) de hasta ± 16 g. Los datos de salida se componen de 16 bits   y se puede acceder a través de la interfaz digital SPI (3 o 4 cables) o I2C.

¿Para qué sirve el Acelerometro ADXL345 GY-291?


El Acelerometro ADXL345 GY-291 es ideal para:

  • Aceleración estática en las aplicaciones de detección de inclinación, su alta resolución (3,9 mg / LSB) permite medir cambios de inclinación inferiores a 1,0 °

  • Aceleración dinámica resultante del movimiento o el choque.


Adicional es funcional para la detección de actividad e inactividad detectando la presencia o la falta de movimiento al comparar la aceleración en cualquier eje con los umbrales establecidos por el usuario. La detección de toques detecta los toques simples y dobles en cualquier dirección. La detección de caída libre detecta si el dispositivo se está cayendo. Estas funciones se pueden asignar individualmente a cualquiera de los dos pines de salida de interrupción.






ESPECIFICACIÓN Y CARACTERÍSTICAS



  • Voltaje de funcionamiento : 3 V a 5 V

  • I/O rango de voltaje: 1.7 V a 3.6V

  • Chip Principal: ADXL345

  • Grados de libertad (DoF): 3

  • Rango de medición: ± 2 g a ± 16 g (± 2g / ± 4g / ± 8g / ± 16g.)

  • Rango de temperatura (−40°C to +85°C)

  • Dimensiones:  3 mm × 5 mm × 1 mm

  • Detección:

    • Caída Libre

    • Actividad/Inactividad

    • De un solo toque/doble toque



  • Corriente:

    • 40 µA in modo medición

    • 0.1 µA in modo reposo



  • Resolución:

    • Default:  10-bit.

    • Máxima: 13-bit a ±16 (manteniendo 4 mg/LSB como factor de escala en todos los rangos)



  • Interfaz:

    • SPI (3 o 4 hilos) a 5 MHz

    • I2C (2 hilos) a 100kHz-400kHz








DOCUMENTACIÓN Y RECURSOS







INFORMACIÓN ADICIONAL



Uso de la interfaz I2C y conexión a Arduino.


Para utilizar el Acelerometro con la interfaz de I2C con Arduino solo requerimos utilizar los pines SDA y SCL ,conexión de tierras (GND) y alimentación a la placa (3.3V ).




Código prueba para ADXL345


Se presenta el siguiente código con la finalidad de que puedas probar el funcionamiento del MPU , cabe mencionar que se requiere calibración y los datos arrojados son de fabrica. Para mas información revisar el datasheet.
#include          //Librería para poder comunicarse con dispositivos por I2C

#define DEVICE (0x53) // Dirección del ADXL345 especificada en el datasheet para iniciar comunicación
byte _buff[6];
char POWER_CTL = 0x2D; //Registro de control
char DATA_FORMAT = 0x31;
char DATAX0 = 0x32; //X-Eje Data 0
char DATAX1 = 0x33; //X-Eje Data 1
char DATAY0 = 0x34; //Y-Eje Data 0
char DATAY1 = 0x35; //Y-Eje Data 1
char DATAZ0 = 0x36; //Z-Eje Data 0
char DATAZ1 = 0x37; //Z-Eje Data 1

void setup() {
Wire.begin();
Serial.begin(9600);
writeTo(DATA_FORMAT, 0x01); //Coloca al ADXL345 dentro +/- Rango de 4G para escribir el valor en 0x01 al registro DATA_FORMAT
writeTo(POWER_CTL, 0x08); //Coloca al ADXL345 en Mode Medición para escribir el valor en registro 0x08 al registro POWER_CTL
}

void loop() {
readAccel(); // función de lectura de la inclinación en x/y/z
delay(1000); // lecturas cada segundo
}

void readAccel() { //función de lectura de la inclinación en x/y/z
uint8_t dato = 6; //Lectura de 6 bit
readFrom( DATAX0, dato, _buff); //lectura del acelerómetro en el registro DATX0 de ADXL345
// cada eje tiene una resolución de 10 bits empezando desde LSM
// conversión de bytes a entero desde los buffer de lectura
int x = (((int)_buff[1]) << 8) | _buff[0];
int y = (((int)_buff[3]) << 8) | _buff[2];
int z = (((int)_buff[5]) << 8) | _buff[4];
//impresión de los valores de cada eje
Serial.print("x: ");
Serial.print( x );
Serial.print(" y: ");
Serial.print( y );
Serial.print(" z: ");
Serial.println( z );
}

void writeTo(byte address, byte val) { //función para escritura de datos en los registros
Wire.beginTransmission(DEVICE); // comienza la comunicación
Wire.write(address); // envía las direcciones de registros
Wire.write(val); // envió del valor
Wire.endTransmission(); // fin de la comunicación
}


void readFrom(byte address, int num, byte _buff[]) { // Funcion para la lectura de numero de bytes para las direcciones de registros en el buffer
Wire.beginTransmission(DEVICE); // comienza la comunicación
Wire.write(address); // envia la direccion que fue leida
Wire.endTransmission(); // fin de la transmisión
Wire.beginTransmission(DEVICE); // comienza la comunicación
Wire.requestFrom(DEVICE, num); // solicitud de 6 bytes al MPU
int i = 0;
while (Wire.available()) { // El MPU puede enviar menos datos que los requeridos(abnormal)
_buff[i] = Wire.read(); // recibe bytes en los guarda en el buffer
i++;
}
Wire.endTransmission(); // fin de la transmisión
}








ENLACES EXTERNOS


$23.000

Carrito de compras

Enviar pedido por WhatsApp
Vaciar carrito