G024 Sensor de inclinación (Tilt Switch)

 ADM
Descripción 
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

Uno de los sensores que nos ocupan en esta sesión: Los sensores de inclinación o Tilt Sensors.
 
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 la bolas conductoras se mueven dejan de hacer contacto y abren el circuito.
 
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.

Materiales
Placa de Arduino
1 Resistencia de 220
1 LED de 5mm
1 Sensor de Inclinación 
Protoboar, Cables para la conexión y el cable USB para conectar el Arduino al PC y que sirve además de alimentación.



Esquema
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.
 
Montaje


Código
El programa va a ser muy similar al programa de un pulsador. Pero vamos a usar un debouncing de tiempo variable.

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 ;
}
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 permiten detectar un movimiento brusco del sensor y también detectan una inclinación 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 Arduino uno y Arduino mega.

No hay comentarios:

Publicar un comentario