Usar un acelerómetro ADXL345 con Arduino


arduino-acelerometro-adxl345

¿Qué es un acelerómetro ADXL345?

El ADXL345 es un acelerómetro micromecanizado capacitivo de 3 ejes independientes (3 DOF), que puede ser fácilmente conectado a un autómata o procesador como Arduino.

Es un sensor micromecanizado (MEMS) capacitivo que detecta la aceleración en los ejes X, Y y Z. También es posible determinar la orientación del sensor, gracias a la acción de la fuerza de la gravedad.

El ADXL345 es un dispositivo de ultra bajo consumo, con 45 µA en modo de medición y 0.1 µA en standby. Además dispone de un bloque de memoria FIFO que almacena hasta 32 conjuntos X, Y, Z.

La comunicación puede realizarse tanto por bus SPI como por bus I2C, por lo que es sencillo obtener los datos medidos. La tensión de alimentación es de bajo voltaje entre 2.0 a 3.6V.

Anuncio:

Frecuentemente se encuentran integrados en módulos que incorporan la electrónica necesaria para conectarla de forma sencilla a un Arduino. En la mayoría de los módulos, esto incluye un regulador de voltaje que permite alimentar directamente a 5V.

El ADXL345 tiene un rango de medición ajustable entre ±2g, ±4g, ±8g, ±16g, y una alta resolución de hasta 13 bits, con una sensibilidad de 40mg/LSB en todos los rangos, lo que equivale a una precisión superior a un 1º.

El ADXL345 dispone de dos pines de interrupciones que podemos configurar para responder a ciertos eventos. Estos eventos incluyen detección de movimientos rápidos golpes y vibraciones, en uno o dos pulsos, y detección de condiciones de caída libre 0-g.

Los acelerómetros son dispositivos ampliamente utilizados en todo tipo de dispositivos, desde determinar la orientación en móviles o tablets, detectar la caída libre, medir pasos en podómetros, estabilización de cámaras, alarmas y sensores de vibración, entre muchos otros.

Si quieres saber más sobre acelerómetros, giroscopios e IMU's en Arduino consulta las serie de entradas Cómo usar un acelerómetro con Arduino, Cómo usar un giroscopio con Arduino y Medir la inclinación con IMU.

Precio

El ADXL345 es un acelerómetro barato. Podemos encontrarlo en placas de montaje como la GY-291, que incorpora la electrónica necesaria para conectarlo de forma sencilla a Arduino, por 1.10€ en vendedores internacionales de eBay o AliExpress.

arduino-acelerometro-adxl345-componente

Pese a ser barato, por precios similares tenemos IMUs como el MPU6050, que incorporan acelerómetro y giroscopio, y por tanto tienen características superiores y son más versátiles.

Esquema montaje

La conexión es sencilla, simplemente alimentamos el módulo desde Arduino mediante GND y 5V y conectamos el pin SDA y SCL de Arduino con los pines correspondientes del sensor.

arduino-acelerometro-adxl345-esquema

Mientras que la conexión vista desde el lado de Arduino quedaría así.

arduino-acelerometro-adxl345-conexion

En Arduino Uno, Nano y Mini Pro, SDA es el pin A4 y el SCK el pin A5. Para otros modelos de Arduino consultar el esquema patillaje correspondiente.
Verificar que vuestra placa es compatible con 5V antes de conectarla a Arduino. Si no, tendréis que usar un adaptador de nivel lógico.

Ejemplos de código

El siguiente código realiza la lectura del AXDL345 en bruto (RAW) y muestra los valores por puerto serie.

También podemos usar una de las múltiples librerías disponibles. Por ejemplo, la librería proporcionada Sparkfun para el ADXL345. Esta librería proporciona métodos para comunicar tanto por I2C como por SPI, para configurar el ADXL345, y definir interrupciones para detección de actividad, inactividad, pulsaciones normales y dobles.

La librería proporciona ejemplos de código, que resulta aconsejable revisar. El siguiente ejemplo es una versión reducida a partir de los disponibles en la librería, que hace las mismas funciones que el ejemplo anterior con un código mucho más conciso.

Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección Tutoriales de Arduino

Anuncio:

Previous Brújula magnética con Arduino y compass digital HMC5883
Next Usar un acelerómetro MMA7455 con Arduino
1000
3 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
newest oldest
jomaiz

¿Hay alguna forma de traducir los datos que nos da el sensor a fuerzas g en los diferentes ejes?

Marta

Hola, quería saber qué acelerómetro sería más indicado para detectar pequeñas vibraciones, de hecho se dejaría fijo y no se movería, sólo para detectar las vibraciones.

He visto varios tipos y modelos, pero no sé cual sería más adecuado.

Gracias

Felipe C

Saludos, seguí todo al pie de la letra pero al momento de revisar la pantalla de comunicación serial muestra la línea "Iniciar" pero ningún dato de los ejes. Se queda en blanco. ¿Será que el sensor está fallado?