medir-inclinacion-con-arduino-y-sensor-tilt-sw-520d

Medir inclinación con Arduino y sensor tilt SW-520d

¿Que es un sensor tilt?

Un sensor de inclinación es un dispositivo que proporciona una señal digital en caso de que su inclinación supere un umbral. Este tipo de sensor no permite saber el grado de inclinación del dispositivo, simplemente actúa como un sensor que se cierra a partir de una cierta inclinación.

Antiguamente estos sensores se constituían ubicando una gota de mercurio en el interior de una ampolla de vidrio, en cuyo interior se alojaban dos conductores. A partir de cierta inclinación la gota de mercurio se desplazaba, cerrando el contacto entre ambos conductores.

En la actualidad, por motivos medioambientales, casi todos los sensores de mercurio han sido desplazados por sensores Tilt de doble esfera. Se dispone de un cilindro cuya pared constituye un contacto eléctrico, mientras que el otro contacto esta localizado en el centro de la base. Al inclinar lo suficiente el dispositivo ambas esferas constituyen un puente entre ambos contactos, cerrando el circuito.

sw520d

Debido a su principio de funcionamiento, estos sensores resultan sensibles a movimientos bruscos y vibraciones.

Precio

Los sensores de orientación SW-520D son dispositivos baratos. Podemos encontrar 10 sensores de vibración por 1€ en vendedores internacionales en Ebay o AliExpress.

sw18020p

Esquema eléctrico

El esquema eléctrico que necesitamos es el siguiente.

arduino-tilt-esquema

Montaje

Mientras que el montaje en una protoboard sería el siguiente.

arduino-tilt-montaj

Ejemplo de código

El código necesario para realizar la lectura es simple. Simplemente leemos el estado del sensor mediante la entrada digital, usando la resistencia interna de Pull Up.

const int SensorPin = 2;
const int LEDPin = 13;

void setup() {
    pinMode(SensorPin , INPUT);
    digitalWrite(SensorPin , HIGH);    //activamos la resistencia interna PULL UP
    pinMode(LEDPin, OUTPUT);
}

void loop() {
    if (digitalRead(SensorPin))  {
        digitalWrite(LEDPin, HIGH);
    }  else  {
        digitalWrite(LEDPin, LOW);
    }
}

Descarga el código

Todo el código de esta entrada está disponible para su descarga en Github. github-full