Tilt switch, sensor de inclinación… no sé, el tubo ese con una bola

Cómo utilizar un tilt switch en arduinoAhoj de nuevo, chaval! Buscando por la red he encontrado un tipo de sensores llamados sensores de inclinación. Estos sensores sirven para detectar la inclinación que tiene el elemento.

No es comparable a un acelerómetro ni a los bichos que tiene tu teléfono móvil incluidos pero puede servir para algún que otro proyecto. ¿Destripamos juntos los tilt switches? 😉

Los tilt switches y su funcionamiento

Los sensores de inclinación se llaman en la lengua de Shakespeare (y Trump) tilt switches. Tilt switch en singular. Para encontrar algún ejemplo de componente me he ido a Adafruit, una tienda americana con muchas cosas electrónicas. He encontrado este tilt switch.

La primera frase que encuentro ahí es: ¡El acelerómetro para el hombre pobre! Por lo que vamos muy bien. Históricamente, estos sensores se han hecho con mercurio. El mercurio es un material conductor de la electricidad. Por lo que imagínate el sensor (si no has entrado ya al link a verlo) como una pequeña cápsula de comprimidos. Así alargada y de metal con unos contactos en su interior. Pongamos que están los dos en la parte inferior.

El circuito está abierto ya que son contactos pero no están cerrados. La que cierra el circuito es la gota de mercurio. Si está bajo del todo se encenderá el circuito inferior, sino se supone que la gota está por arriba. No se sabe a ciencia cierta si arriba del todo o en medio, pero está claro que el circuito ya no está cerrado por lo que está en otra posición a la anterior.

Si te fijas, esto suena un poco a un interruptor. Cuando pulsas se cierran los contactos y el circuito fluye y funciona, al no pulsar ya no fluye la corriente y el circuito se queda parado. Pero como ya sabes, el mundo se va a la mie*** porque contaminamos a más no poder. Y el mercurio es uno de esos elementos que contamina a cascoporro. Es por eso por lo que esta tecnología está en desuso.

Si te fijas en el sensor de Adafruit, dice que se trata de una bola metálica que es la que cierra el circuito. En lugar del mercurio se tiene una bola que cuando el sensor esté en una posición vertical, ella cerrará el circuito. Pero que según se vaya ladeando el sensor poco a poco caerá y dejará de conectar los dos contactos o pines. Entonces sabremos que ha cambiado la posición.

Probando el tilt switch con un multímetro

Con lo dicho, este pequeño sensor cilíndrico de 4mm puede detectar movimiento o la orientación en la que está puesto el sensor. Pero supongo que tendrás ganas de probarlo. Una manera sencilla sería con un multímetro.

Si recuerdas, en los multímetros digitales hay una función para conocer la continuidad del circuito. De hecho, con ella puedes encender leds… pero eso ya es otra historia. Supongo que ya te estás oliendo de qué va esto, pero te lo cuento por si acaso aún no has caído…

La función de continuidad del multímetro hace que éste suene si hay continuidad entre las dos puntas del multímetro. Me explico: si la punta negra y la roja están tocando cada uno una parte del circuito y el multímetro suena, quiere decir que ambas partes del circuito están conectadas.

En nuestro caso puedes probar con un pin del sensor y con el otro. Si el sensor está en vertical el multímetro sonará. Y lo seguirá haciendo según vayas inclinándolo. Hasta que llegue a un punto que la inclinación sea demasiado y puf…. dejará de emitir ese sonido que se te clava en los oídos.

Pero bueno… vayamos a una prueba más real…

Opt In Image

El sensor de inclinación que era un pulsador

Para probar el sensor en un circuito con tu Arduino puedes tomártelo como un pulsador. Puedes conectar una pata del sensor tilt switch a 5V, la otra a un led ( a la pata larga del led) y luego la pata corta del led a una resistencia y de la resistencia a GND. Así consigues algo como esto:

Tilt Switch con una batería

Así lo que tienes es un circuito en el cuál se encenderá el led si la bola está posicionada en la parte baja del sensor. La resistencia de hecho es para no quemar el led cuando el circuito esté cerrado y todo se ilumine. Yo pondría una resistencia de mínimo 270 Ohms, tal y como calculé en su día aquí.

Como ves, esto no tiene programación ni nada de nada, así que es hora de que utilice Arduino para algo más que para una simple batería.

Leyendo el estado del sensor de inclinación con Arduino

Para utilizar Arduino al 100% lo que hago es alimentar el sensor con 5V y GND. Eso sí, esto me obliga a poner una resistencia en serie con el sensor para protegerlo. Si lo conectara directamente a 5V y GND se quemaría. ¿De cuánto debe ser esta resistencia? Pues en una página específica sobre el sensor MS-100906 (así se llama) se nombra que aguanta hasta 24 V y 5mA.

Arduino saca 20mA por pin por lo que necesito dividir por 4 esta corriente. Si te acuerdas de la Ley de Ohm, dice que el voltaje dividido por la resistencia me dará la corriente. Mi voltaje es de 5 Voltios así que añadiendo una resistencia de 1K, dividiré entre mil y ya tendré 5mA. Si no quieres apurar tanto puedes poner una de 10K.

Ya tengo alimentado el circuito. Ahora necesito poder saber lo que pasa en el circuito. Así que en la misma pata en la que está conectado la resistencia, conecto ahí un cable que vaya a un pin digital de entrada. Algo como esto:

sensor de inclinación en Arduino

Claro, ahora puedo leer perfectamente el valor si está encendido o no. Falta programarlo:

void setup(){
    pinMode(7 , INPUT);
    Serial.begin(9600);
}
 
void loop(){
    if (digitalRead(7)){
        Serial.println("El sensor está en vertical");
    }  
    
    else{
        Serial.println("El sensor ha cambiado de posición");
    }
}

Como ves, Lo que hago es sacar por el Serial el estado que tiene solamente leyendo el estado del pin digital. Y con esto ya lo tienes en pleno uso 🙂

Dudas, dudas y más dudas con el acelerómetro de los pobres…

Ahora, terminando ya el post me vienen dos preguntas a la cabeza: ¿Se puede hacer más simple el circuito de antes? ¿Para qué sirven estos sensores?

La primera tiene fácil solución. Se podría pasar de la alimentación del sensor y conectar directamente el sensor a otro pin digital. De manera que uno sea OUTPUT y alimente el circuito y el otro sea INPUT y mida lo que pasa en el circuito. Esto es así porque los pines digitales de Arduino tienen una resistencia de protección de 10K, sobretodo para que los más novatos no quemen leds.

Mira, el circuito y el programa quedarían algo como esto:

Sensor de inclinación con pines digitales

void setup(){
    pinMode(7, INPUT);
    Serial.begin(9600);
    pinMode(2, OUTPUT);
    digitalWrite(2, HIGH);
}
 
void loop(){
    if (digitalRead(7)){
        Serial.println("El sensor está en vertical");
    }  
    
    else{
        Serial.println("El sensor ha cambiado de posición");
    }
}

Si te fijas el código es igual que el anterior pero le añado al principio el encendido del pin digital que alimenta el sensor.

En cuanto a la segunda pregunta, lo primero que me viene es algo relacionado con una puerta de garaje de estas que están en vertical pero al levantarlas se ponen en horizontal. Podría ser algún proyecto relacionado con algún enganche que al ser golpeado caiga y cambie su posición. Podría ser el movimiento de un coche ya que al estar en movimiento se quedará fijo en la parte inferior por la aceleración y al frenar la bola irá hacia la parte delantera de la cápsula.

Y no me pidas más que estoy espeso y no me da para más. ¿Tienes alguno de estos sensores? ¿Para qué lo utilizas? Coméntame ahí debajo anda 😉

[Total:3    Promedio:4.7/5]

Déjame un comentario que en el fondo soy buen chaval

  1. David

    Responder

Deja un comentario