Objetivos
Material requerido
Arduino Uno o similar. | |
Un sensor PIR HC-SR501 . | |
Sensores de movimiento PIR
Con bastante frecuencia necesitamos algún sistema de detectar la presencia de personas o animales en movimiento en un área dada. Es la base de cualquier sistema de detección de intrusos pero también se usan mucho en las escaleras comunitarias o aseos públicos para encender la luz en cuanto detecta el movimiento.
Todos los seres vivos desprenden calor y lo mismo ocurre con los automóviles y cualquier otra maquinaria, y ese calor se emite en forma de radiación infrarroja que podemos detectar con los dispositivos adecuados, como los sensores PIR.
Ya hablamos algo de la radiación infrarroja en una sesión previa en relación con los mandos a distancia IR y podéis darle un vistazo si queréis volver sobre el tema.
En esta sesión nos vamos a centrar en los sensores PIR, que son elementos que detectan cambios en la radiación infrarroja que reciben y que disparan una alarma al percibirlo.
Los PIR más frecuentes son sensores de movimiento, y para ello están divididos en dos mitades de forma que detecten el cambio de radiación IR que reciben uno y otro lado, disparando la alarma cuando perciben ese cambio.
Parece un poco más complicado que los sensores que hemos usado hasta ahora, pero la verdad es que se trata de una tecnología muy fiable y que cuenta con la ventaja adicional de ser baratos y múltiples fuentes de suministro disponibles.
El propio sensor PIR se puede comprar independientemente:
Pero naturalmente siempre es más cómodo de manejar con un pequeño circuito de estabilización y control, que nos permita usarlo como un sensor digital directo.
Lo normal además es que estos sensores se recubran con pequeñas lentes de plástico que mejoren su angulo de detección
La imagen que os pongo anexa, os muestra el sensor HC-SR501 con la lente puesta y quitada para que veáis el sensor montado (Podéis sacarla vosotros mismos, va a presión)
Esquema de conexión
Antes de que vayáis a buscar vuestro Arduino uno o Arduino mega, debéis saber que estos sensores PIR pueden disparar directamente una alarma con una señal de 3.3V y son capaces de excitar pequeños relés, de modo que no necesitáis micro controladores, si lo único que queréis es encender una luz o dispara una alarma.
Por eso vamos a hacer, en primer lugar, un pequeño circuito de prueba como este, de modo que nos sirva para probar el sensor, y veais que se puede usar directamente.
Vamos a montar un circuito sencillo de detección de movimiento que encienda una LED cuando perciba algo:
Fijaros que hay 3 pines en el lateral, que usaremos para pinchar el sensor PIR HC-SR501 a nuestra protoboard, y aquí debajo os pongo el esquema de conexiones:
Como podéis ver enseguida, hay un par de potenciómetros que podemos usar para ajustarlo además de un jumper para elegir modo. Vamos con ello.
Ajustando el sensor
Empezad por colocar el sensor en la misma posición que la imagen de arriba porque mi modelo no trae rotulado ningún nombre (Lo que me hizo poner nervioso al principio pero después vi que era completamente estándar).
He visto en Internet que recomiendan poner el jumper en la posición H para las primeras pruebas que arriba está rotulado como Auto Reset, pero en mi caso me ha resultado más fiable sacar el jumper y dejarlo al aire.
Cuando colocamos el sensor en la posición L, al detectar algo el LED se encenderá, y al poco se apagará y hará una cadencia tipo blinking LED dependiendo de lo que detecte. A este modo se le llama no retriggering y no suele demasiado interesante.
Si lo ponemos en H, cuando detecte movimiento se encenderá y mantendrá así durante un tiempo (Llamado retrigger mode) y suele ser más conveniente en buena parte de los circuitos practicos .
Para ajustar la sensibilidad podemos usar uno de los potenciómetros que incluye el sensor, fijaras en la imagen de arriba. (Girando a favor del reloj aumentamos la sensibilidad)
El segundo potenciómetro ajusta el tiempo que estará activa la señal de detección después de que esta haya desaparecido. Pero parece que también afecta al retraso con que inicia la alarma, así que es cuestión de que vayáis jugando para encontrar un punto adecuado para vuestra alarma.
Aquí os dejo un mini video con una demostración práctica
Programa de control
Si queréis usar estos sensores en conjunción con vuestro Arduino, por ejemplo para montar un detector con varios puntos controlados, como una habitación con múltiples puertas, basta con tomar la señal del sensor y la leáis directamente en los pines digitales de Arduino.
La señal que os entrega el sensor HC-SR501 es digital todo o nada en cuanto detecta movimiento de una fuente de calor. Podéis leer el sensor directamente sin mucha complicación, con un programa similar a este:
const int led = 6 ; const int sensor = 7 ; void setup() { pinMode( led , OUTPUT) ; pinMode (sensor , INPUT); } void loop() { if (digitalRead( sensor)) digitalWrite( led , HIGH); else digitalWrite( led , LOW); }
Resumen de la sesión