ADXL345 Acelerómetro digital 3 ejes GY-291 (ref: 0035)

2,50 

Hay existencias

Cantidad Descuento
1 - 5 -
6 - 10 3%
11 - 15 5%
16 + 10%
SKU: 0035 Categorías: , Etiquetas: , , , , ,

Descripción

El ADXL345 (ADXL-345) es un acelerómetro de 3 ejes (3 DOF: x, y, z) construido a base de unos condensadores minúsculos. El proceso de fabricación se llama  miocromecanizado y a los dispositivos fabricados así se les suele denotar por las siglas MEMS. El acelerómetro tiene una pequeña masa suspendida sobre unos muelles en su interior; cuando una fuerza actúa sobre él la masa se mueve, deformando alguno de los muelles. Los micro-condensadores están unidos a esta masa y, así, varía la capacidad de ellos, al variar la distancia entre sus placas.

La salida del acelerómetro es digital, siendo posible comunicarse con él vía i2c ó SPI. Este módulo, modelo GY291 (GY-291) se puede alimentar tanto a 3,3V como a 5V. El rango de medición es ajustable, para obtener una gran precisión, siendo posibles los ajustes: ± 2g / ± 4g / ± 8g / ± 16g. El convertidor ADC interno funciona con una resolución excelente de 13bits, lo que se traduce en una resolución efectiva de hasta 40mg/bit

Si se desea, el módulo ofrece dos interrupciones (INT1, INT2) que pueden configurarse para usarlas como detección de golpes, impactos o caída libre.

Conexionado (por i2c):

  • Pin Vcc del ADXL345: al pin 5V de Arduino
  • Pin GND del ADXL345: al pin GND de Arduino
  • Pin SCL del ADXL345: Al pin A5 de Arduino UNO o NANO.
  • Pin SDA del ADXL345: al pin A4 de Arduino UNO o NANO.

Código de ejemplo:

#include <Wire.h>

const int DEVICE_ADDRESS = (0x53);   // Dirección i2c del ADXL345
byte _buff[6];
//Definición de direcciones de los registros del ADXL345
char POWER_CTL = 0x2D;
char DATA_FORMAT = 0x31;
char DATAX0 = 0x32;   //X-Axis_0
char DATAX1 = 0x33;   //X-Axis_1
char DATAY0 = 0x34;   //Y-Axis_0
char DATAY1 = 0x35;   //Y-Axis_1
char DATAZ0 = 0x36;   //Z-Axis_0
char DATAZ1 = 0x37;   //Z-Axis_1
// *** CONFIGURACIÓN ***
void setup() {
  Serial.begin(9600); // Monitor Serie a 9600bps
  Serial.println("Iniciado...");
  Wire.begin();
  writeTo(DEVICE_ADDRESS, DATA_FORMAT, 0x01); //ADXL345 ajustado en rango +/- 4g
  writeTo(DEVICE_ADDRESS, POWER_CTL, 0x08);
}
// *** CÓDIGO PRINCIPAL ***
void loop() {
  readAccel(); //Leer datos de aceleración en ejes x, y, z
  delay(500);  // Espera de 500s para leer de nuevo
}
// *** FUNCIONES ***
void readAccel() { // Lectura de valores de aceleración
  uint8_t numBytesToRead = 6; // Número de bytes a leer: 2 para cada eje
  readFrom(DEVICE_ADDRESS, DATAX0, numBytesToRead, _buff);
  //Unir los 2 bytes de cada eje
  int x = (((int)_buff[1]) << 8) | _buff[0];   
  int y = (((int)_buff[3]) << 8) | _buff[2];
  int z = (((int)_buff[5]) << 8) | _buff[4];
  // Mostrar datos por monitor serie
  Serial.print("x: ");  Serial.print( x );
  Serial.print(" y: ");  Serial.print( y );
  Serial.print(" z: ");  Serial.println( z );
}
void writeTo(int device, byte address, byte val) { // Escritura de datos a través del i2c
  Wire.beginTransmission(device);
  Wire.write(address);
  Wire.write(val);
  Wire.endTransmission(); 
}
void readFrom(int device, byte address, int num, byte _buff[]) { // Lectura datos i2c
  Wire.beginTransmission(device);
  Wire.write(address);
  Wire.endTransmission();
  Wire.beginTransmission(device);
  Wire.requestFrom(device, num);
  int i = 0;
  while(Wire.available())  { 
    _buff[i] = Wire.read();
    i++;
  }
  Wire.endTransmission();
}

 

Más información: Hoja de datos ADXL345

Valoraciones

No hay valoraciones aún.

Solo los usuarios registrados que hayan comprado este producto pueden hacer una valoración.

También te recomendamos…