bclose

Sensor de inclinación (Tilt Switch)

Inclinometro rudimentario y sensor de choque

Objetivos

.

 
    • Presentar un sensor de inclinación.
    • Montar un circuito de ejemplo.
    • Es una sesión de descanso, para que nos relajemos
    • Muestra un Debouncing sin delay.

 

Material requerido.

ArduinoUNO  Arduino Uno o similar.
Img_3_4 Una Protoboard.
componente  Un diodo LED.
Tilt switch  Un sensor de inclinacion o tilt switch.
 Img_3_5 Una resistencia de 330 Ohmios.
Img_3_6  Algunos cables de Protoboard.
tienda online prometec

Sensores de inclinación (Tilt Sensors)

 

Para los que hace ya unos años jugábamos a las maquinas, entones llamadas de Petacos y hoy llamadas Pinball (Como cambian las cosas y los nombres) nos acostumbrábamos enseguida a que si te dejabas llevar por la emoción y le metías un empujón a la máquina, rápidamente marcaba Tilt y te impedía seguir jugando.

Así que acabamos pensando que Tilt era algo así como falta, pero no.  En ingles Tilt es inclinar o ladear y se refiere a inclinar el plano de referencia sobre el que se asienta nuestro sistema de coordenadas (Movimiento que de no impedirse, nos aseguraríamos de que la bola nunca llegara abajo del Pinball, ya que bastaría con levantar de las patas más próximas al jugador).

Creo recordar que en aquellas antiguas maquinas se realizaba mediante un péndulo, pero que podría haberse realizado mediante uno de los sensores que nos ocupan en esta sesión: Los sensores de inclinación o Tilt Sensors.

Tilt switch

Son sensores de unos pocos milímetros de longitud, que llevan en su interior una o dos pequeñas bolas conductoras, capaces de cerrar el circuito con los pines  metálicos inferiores del cilindro..

Cuando hacen contacto permiten el paso de la corriente y cierran el contacto exactamente igual que si fueran un interruptor (Y de hecho se manejan igual)  pero que a partir de un cierto Angulo de inclinación dejan de hacer contacto y abren el contacto.

Sensor de inclinacion

No es una tecnología reciente, pues llevan en uso mucho tiempo, pero antes se hacían con una gotita de mercurio líquido, que es conductor y que al desplazarse por el interior del cilindro acababa por cerrar el circuito entre un par de contactos en el fondo.

Pero dado que el mercurio es sumamente toxico para el entorno y para las personas que lo manejan, hace ya bastante tiempo que se han reemplazado por el modelo que vamos a usar, aunque aún es fácil encontrarnos con que se siguen llamando interruptores de mercurio.

A todas luces se comportan igual que un interruptor sencillo y de hecho vamos a tener que hacer el debouncing igual que estos, porque si aquí rebotaban los contactos, podéis imaginaros los rebotes que van plantear las bolitas de poca masa.

Veamos el circuito de prueba que vamos a usar

 

Esquema de conexión

 

Vamos a usar el mismo esquema de conexión que con un interruptor normal. Por ello necesitamos usar una resistencia de  pullup, y según el valor que leamos encendemos o apagamos un LED conectado al pin 13.

 
  • Por una vez, y sin que sirva de precedente conectaremos el LED al pin 13 sin resistencia, porque este pin ya lleva una en serie. Para cualquier otro pin deberíamos poner una resistencia de limitación o veremos un bonito plof con el LED.
  • Vamos a usar lógica negativa. Esto es una manera complicada de decir que puesto que en condiciones normales, el interruptor está cerrado, la señal de disparo será cuando leamos un LOW en el pin 2.
 

El diagrama de conexión será:

Circuito con Arduino y tilt switch

Y aquí tenemos el esquema de protoboard

Circuito con tilt switch

 

Programa de control

 

El programa va a ser muy similar al que usamos en la sesión previa, condicionales y botones. Pero por aquello de variar un poco, vamos a usar un debouncing de tiempo variable (que si no, nos aburrimos).

Aquí tenéis el programa: Prog_28_1

int inPin = 2;
int outPin = 13;
int lectura;
int previo = LOW;

long time = 0;            // Para guardar la hora de la inversion de valor
long debounce = 50;       // Tiempo de rebote

void setup()
   {  pinMode(inPin, INPUT_PULLUP);
      pinMode(outPin, OUTPUT);
   }

void loop()
   {  lectura = digitalRead(inPin);
      if (lectura != previo)     // Si hay cambio en la lectura
          time = millis();
      if ((millis() - time) > debounce)
           digitalWrite(outPin, lectura);

      previo = lectura ;
   }

No hay nada Nuevo en el programa. Con lectura vamos leyendo el pin 2 hasta que es diferente del último valor leído. A partir de esto comprobamos que ha transcurrido el tiempo de debouncing  para filtrar los rebotes y escribimos en el pin de salida lo que leemos.

En la practica son bastante fáciles de manejar y os permiten detectar un movimiento brusco del sensor y también detectan una inclinacion superior a un cierto angulo.

No es difícil imaginárselo en un circuito que detecta si una puerta de garaje esta levantada o no, por ejemplo, o en un sensor de impacto. Por alguna razón que se me escapa estos sensores parecen ser muy populares entre nuestros Arduinos.

Aquí os dejo un minivideo con el resultado:

 

Resumen de la sesión

 
    • Hemos visto que estos pequeños sensores de inclinación son simples y razonablemente eficaces.
    • Se comportan exactamente igual que un interruptor de contacto, pero con mas rebote.
    • Hemos visto que se pueden usar como un sensor de movimiento brusco o inclinación.
 

 

 

 

 

(8) Comments

  • Buenas noches
    Tengo un problema con mi proyecto, tengo un sensor de humedad (analogico) conectado a un ADC (covertidror analagico digital), este mimso a una entrada digital, pero el problema es que no estando conectado el sensor la entrada me arroja un valor al aire, bien quisiera saber si alguna manera de verificar si realmente esta conectado mi sensor o es un sensor al aire.

    Gracias

    • Puedes ponerla a tierra a través de una resistencia para que forzar la lectura a 0 cuando no tengas el sensor.

    • Ramses

    Buenas tardes,

    “En este capítulo dice: Vamos a usar lógica negativa. Esto es una manera complicada de decir que puesto que en condiciones normales, el interruptor está cerrado, la señal de disparo será cuando leamos un LOW en el pin 2.”

    Según el esquema, si el interruptor está normalmente cerrado, D2 está a nivel LOW, ¿no?.

    Saludos y gracias

    • Hola Ramsés, parece que llevas razón, aunque en este caso como sólo queremos detectar el cambio de estado tampoco nos importaría demasiado. Un saludo.

  • Buenas tardes admin

    Al sensor de sonido.
    He puesto aquí la pregunta pues no está activo el foro en esa página.

    • Disculpame JCS, se me habia pasado. Ya estan activos los comentarios e esa pagina

  • Buenas noches

    Quisiera hacer una pregunta del sensor de sonido. He visto que las conexiones que vienen en el montaje no son correctas con el programa de control. Es así? Otra pregunta es que todo va bien y he puesto todo correcto pero el led esta siempre parpadeando y por más que muevo el potenciometro no deja de hacerlo. ¿que puedo haber hecho mal?
    Un saludo y gracias

    • Hola JCS, no estoy muy seguro de tu pregunta. Te refieres al sensor de sonido o al de llama?

Give a Reply

WordPress Anti-Spam by WP-SpamShield