20. Sensor Inercial Acelerometro

 Tutorial: Introducción al Acelerómetro (Sensor Inercial)

¡Hola a todos! Bienvenidos a un nuevo capítulo de nuestro curso. Hoy exploraremos uno de los cuatro tipos de sensores inerciales: el acelerómetro. Los sensores inerciales incluyen el acelerómetro, el giroscopio, el magnetómetro y el barómetro, cada uno midiendo una función específica. En este caso, el acelerómetro se encarga de medir la aceleración que experimenta un objeto en sus ejes.


¿Qué es un Acelerómetro?

Imaginemos un acelerómetro como un dispositivo que detecta cambios en la aceleración. Si lo colocamos en una posición plana y estable, la única fuerza que actúa sobre él es la gravedad, generando una aceleración de 1g (aproximadamente 9.8 m/s²).

Pero, ¿cómo puede medir esta aceleración si está estático? La clave está en su funcionamiento interno. Dentro del chip del acelerómetro, hay una masa suspendida (como una pequeña esfera o estructura) sostenida por microestructuras. Cuando la gravedad tira de esta masa, el sensor detecta la oposición a este movimiento y la traduce en una señal eléctrica. Es similar a cómo una balanza mide tu peso: aunque no te estés moviendo, la gravedad sigue actuando.


Ejemplos Prácticos

1. Posición Plana

  • Eje Z: Aceleración ≈ 1g (gravedad).

  • Eje X y Y: Aceleración ≈ 0g.

  • El acelerómetro genera voltajes proporcionales a estas aceleraciones.

2. Inclinación

Al inclinar el acelerómetro, la gravedad se descompone en sus componentes según los ejes del sensor. Por ejemplo:

  • Si lo inclinamos hacia adelante, el eje Y registrará parte de la gravedad.

  • El eje Z seguirá midiendo una componente, pero reducida.

  • La suma vectorial de las aceleraciones en todos los ejes siempre será igual a 1g.


Configuración y Código

Usaremos un acelerómetro analógico XBL335 o similar, conectado a un Arduino:

  • Alimentación: 3.3V (¡no 5V!).

  • Conexiones:

    • Eje X → Pin A0.

    • Eje Y → Pin A1.

    • Eje Z → Pin A2.

Ejemplo 1: Lectura de Valores Enteros

cpp
int x = analogRead(A0);
int y = analogRead(A1);
int z = analogRead(A2);

Serial.print("X = ");
Serial.print(x);
Serial.print(" | Y = ");
Serial.print(y);
Serial.print(" | Z = ");
Serial.println(z);
delay(200);

Ejemplo 2: Conversión a Voltaje

cpp
float voltX = (x * 5.0) / 1023;
float voltY = (y * 5.0) / 1023;
float voltZ = (z * 5.0) / 1023;

Ejemplo 3: Cálculo de Aceleración (en g)

Fórmula general:

Aceleracioˊn=VoltajeVoltaje de Referencia0.33
cpp
float accelX = (voltX - 1.74) / 0.33;
float accelY = (voltY - 1.76) / 0.33;
float accelZ = (voltZ - 2.16 + 0.33) / 0.33;

Ejemplo 4: Control de LED con Acelerómetro

Variamos la velocidad de parpadeo de un LED según la inclinación en el eje Y:

cpp
int ledPin = 8;
int delayTime = map(y, 286, 430, 50, 250);
digitalWrite(ledPin, HIGH);
delay(delayTime);
digitalWrite(ledPin, LOW);
delay(delayTime);

Resultados

  • En posición plana: (0, 0, 1).

  • Invertido: (0, 0, -1).

  • Inclinación lateral: (1, 0, 0) o (-1, 0, 0).

El acelerómetro responde correctamente a los cambios de orientación, permitiéndonos usarlo en proyectos como controles de videojuegos, estabilizadores, o wearables.


Conclusión

Hemos aprendido los fundamentos del acelerómetro, su conexión con Arduino, y cómo interpretar sus datos. En el próximo capítulo, exploraremos aplicaciones más avanzadas.

¡Muchas gracias por su atención! Nos vemos en la siguiente lección.

Comentarios

Entradas más populares de este blog

12. Demostracion de como usar Tinkercad para simular Arduino con circuitos

11. Ejemplos Básicos de Leds y Pulsadores

Lectura de Potenciómetro con Arduino Uno en Tinkercad