bclose

Los sensores PIR

Deteccción de movimiento mediante sensor piroeléctrico PIR

Objetivos

.

 
    • Presentar los sensores de movimiento PIR.
    • Mostrar su utilidad como sensores de presencia y movimiento.
    • Mostrar el modo de conexión.
    • Detallar la utilidad de los diferentes potenciómetros y jumper.

 

Material requerido.

ArduinoUNO Arduino Uno o similar.
Img_3_4Una Protoboard.
componente Un diodo LED.
Imagen frontal Un sensor PIR HC-SR501  .
 Img_3_5Una resistenciade 330 Ohmios.
Img_3_6 Algunos cablesde Protoboard.

 

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.

Detector de movimiento

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:

Sensor PIR

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)

 Sin lente

Esquema de conexión

 

Antes de que vayáis a buscar vuestros Arduinos, 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:

Esquema de protoboard

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:

Diagrama de pines

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.

 
  • Fijaros que el modelo de la imagen este jumper no existe, pero la mayor parte de los modelos que encontréis por ahí podréis seleccionar H o L, conectando el jumper entre el pin central y la selección deseada o bien dejarlo sin conectar.   

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. Podeis 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

 

 
    • Presentamos lo sensores de movimiento PIR.
    • Vimos que se pueden usar diectamente o conectados a nuestros Duinos.
    • Mostramos el detalle de conexión y la utilidad de los pines y potenciómetros disponibles.
 

 

(36) Comments

  • Hola una pregunta
    Como lo hago funcionar en vez de led a foco

    • Hola MArcos, tendría que utilizar un relé para separar la parte control del Arduino de la del foco. Échale un ojo a la sesión dedicada a los relés. Un saludo.

    • JULIO CESAR

    M AYUDAS CON MI TRABAJO ..NESESITO SAVER COMO FUNCIONAN Y PARA QUE SIRVEN LOS SIGUIENTES PIR..
    VOLUMETRICO
    DE TECHO
    CORTINA
    ANTIMASCOTAS
    EXTERIOR
    DOBLE TECNOLOGIA

    • Hola Julio, todos los PIR detectan por infrarrojos el calor que desprenden las perosnas y animales, pero no puedo darte muchas mas explicaciones por hay muchos tipos y necesitas saber de que modelo concreto hablamos

    • Fabi

    Hola buenas tardes, estoy intentando que el sensor PIR no detecte movimiento más allá de 3 metros, es posible eso mediante código? Un saludo.

    • Alexander

    hola que tal admin queria saber si hay alguna manera de que cuando prenda el led antes de apagarse por el delay que tiene se haga una funcion donde si existe movimiento nuevamente le de mas tiempo al encendido del led y asi evitar que se apage

    • Puedes colocar al minimo un potenciometro que viene con este sensor , que determina el tiempo que mantiene alta la señal de que ha detectado algo, de este modo puedes leer cada poco tiempo la señal de nuevo y usar esa informacion para determinar si sigue habiendo algo o alguien al alcance y con esa informacion mantener el control de tiempo del encendido del led

  • Estoy realizando una casa domotica funcionando Android y arduino pero tengo un problema cuando pongo el código en un switch no lee el sensor o se queda enciclado, y hago esto para poder desactivar y activsr desde la app ya que Android le envíe la variable del case a arduino y se pueda empezar la lectura pero me es imposible alguien me ayuda

    • Alex postea el codigo para revisar

  • Hola, una consulta, como hago si es que lo que yo quiero es que el sensor pir detecte el movimiento a poca distancia? Lo que quiero hacer es un griffo automatico, que con la proximidad de la mano se pueda abrir el paso de agua, se puede usar este sensor? O necesito de otro?

    • hol emilio, pues no estoy seguro de si este senso es decuado para eoo. porque stos estan pensados mas para xetectar personas en jna habktacion. hay otros pensados para distancias menores que crep serian mas adecuDos

    • Hola Emilio. Has pruebas con un CNY70. Se utilizan mucho en los coches seguidor de líneas, porque su alcance es de algunos centímetros solamente.

      Saludos.

    • Francisco Miguel Hernandez Maldonado

    Buenos días, muy bueno el tutorial, estoy pensando en ampliarlo en un punto. Este sensor controla digamos una bombilla y se ilumina así detecte el movimiento. Mi idea era gestionar varios arduinos para varias bombillas y en cuanto uno de ellos detecte el movimiento entonces que se enciendan todas las bombillas. Digamos que quiero hacer un camino iluminado, en cuanto detecte el primer sensor el movimiento todas las bombillas se encienden. Pensé en colocar varios sensores a un mismo arduino pero esta opción no es viable por la distancia, ya que cada bombilla estaría a unos 10 metros mas o menos. En este caso, ya tendría que usar una base de datos para ir almacenando la infomación captada y que cada sensor pueda acceder a dicha información para su consulta no?

    • Hola Francisco,

      Con la distancia entre sensores que mencionas tienes que usar algun tipo de comunicacion y el mas barato para esas distancias puede ser un modulo NRF24L01 que emite por RF señales.

      Puedes poner un arduino nano con sensor PIR y un un NRF24L01 en cada punto (como 10 euros todo) y tener otro arduino con NRF24 que es quien escucha a todos los otros y enciende las luces en cuanto uno de los otros detecta algo

    • Sergio

    hola, es que he subido a mi arduino uno el código que usted ha colgado y el led no se apaga, como si detectase movimiento todo el tiempo.
    ¿Podría decirme como arreglarlo?

    • Hola Sergio, prueba a ajustar el potenciómetro de la sensibilidad y el del tiempo durante el que permanece activa la señal de detección. Un saludote!

    • Hola Sergio, comprueba un poco la posicion de los potenciometros que el sensor PIR tiene porque podrian ser parte del probla, vete ajustandolos hasta conseguir el tiempo que deseas

    • Vpbece02

    Si quiero realizar una alarma con 4 sensores pir normales(los comerciales para alarmas que existen en el mercado) que trabajan con 12 voltios. Como lo puedo conectar al arduino.

    • No tienes problema. La idea basica es que una cosa es la alimentacioin de arduino y otra la de los sensores o actuadores, basta con que uses un transistor como el ls120 Que tolere 12 voltios entre emisor y colector y ya esta.

      En la seccion de electronca encontraras un ejemplo de como hacer esto con con unas luces led de 12v

  • Buenas tardes, excelente página. Con su permiso, ofrezco apoyo a el amigo Emanuel, utiliza instrucciones If anidadas, de tal manera que dupliques, tripliques o multipliques por el número necesario para que los tiempos bases los conviertas en las horas que necesites.

    • Todo el mundo es bienvenido a comentar y ayudar Gaga R

    • Emanuel

    Hola buenas, tengo un proyecto de Arduino con un rele y el sensor PIR HCSR-501. Veo que tiene un potenciometro para aumentar el tiempo de deteccion, mi pregunta es , ¿es posible poder aumentar ese tiempo deteccion mediante un codigo de programacion hasta una hora mas o menos?. He buscado con instrucciones for, if, pero no encuentro la solucion =/. El potenciometro del tiempo tiene como maximo hasta 5 min pero no me serviria para mi proyecto.

    Gracias

    • Emanuel, El sensor tiene limite en el tiempo en que mantiene activa la señal electronica que hasta donde se, no puede ser ampliado, pero tu puedes usar el programa para decidir si permites que caiga la alarma el tiempo que quieras ¿Vale?

    • Carlosmarindonatti

    Hola arme una alarma casera con estos sensores PIR son muy buenos , veo aqui que la señal que proviene del sensor se conecta a una entrada pero he tenido dos dificultades: 1) si dejaba la entrada directamente cableada al sensor al momento de iniciarse Arduino se disparaba la alarma lo solucione poniendo resistencias PULL-DOWN 2) Los 3.3 V “no llegaba a verlos” el pin de entrada de Arduino ,lo solucione intercalando un buffer o seguidor de tensión con un LM339 no me molesto nunca mas.El jumper lo puse a H lo que si me molesto es la instalación ya que la entrada de mi casa tiene reja hasta la puerta principal es un trecho de 4 metros, el sensor apuntando a la calle, entonces pasaba alguien por la vereda y se disparaba jamas pude ponerlo a 3 metros aunque en la hoja de datos dice que el pote de sensibilidad regula la distancia de detección de 3 a 7 metros.

    • nO ESTOY MUY SEGURO DE QUE DECIRTE cARLOS

  • Hola, podrían ayudarme, al parecer mi PIR detecta movimiento todo el tiempo, cambie el sensor porque pensé que se había dañado pero ocurre lo mismo con otro nuevo.
    aquí el código de la aplicación

    const int led = 13 ;
    const int sensor = 2 ;

    void setup()
    {

    pinMode( led , OUTPUT) ;
    pinMode (sensor , INPUT);
    Serial.begin(9600);
    delay(5000);
    }

    void loop()
    { if (digitalRead( sensor)){
    digitalWrite( led , HIGH);
    Serial.println(“se detecta moviento”);
    }
    else{
    digitalWrite( led , LOW);
    Serial.println(“no se detecta moviento”);
    }
    }

    • Hola Leidy, no he revisado el codigo de la sesion del pir pero lo he pobado anteriormente sin problemas y te recomiendo que lo uses como base. Si a pesar de todo tu problema persiste seguramente es que debes ajustar los potenciometros que el sensor incluye

      • David

      Hola Leidy.

      Respecto al software he detectado un error en tu programa.

      En el loop pones:
      {
      if (digitalRead(sensor))
      {
      digitalWrite(led, HIGH);

      Debes cambiar por:
      {
      if (digitalRead (sensor) == HIGH)
      {
      digitalWrite (led, HIGH);

      Respecto al hardware un par de consejos:

      En el sensor PIR hay dos potenciometros, uno que ajusta la sensiblidad y otro que ajusta el tiempo de detección. Pon el del tiempo al mínimo (mueve al contrario de las agujas del reloj hasta que haga tope), y asegurate de que das tiempo al sensor para que se calibre y estabilice cuando ejecutas el programa con Arduino (el sensor necesita aproximadamente 1 – 1,5 minutos para funcionar correctamente desde un arranque en frio).
      Asegurate de que no hay nada caliente delante del sensor, ni que esté sobre una superficie que emita reflejos como el cristal… Todo esto puede dar falsas lecturas, ya que mide la radiacion infrarroja emitida por los cuerpos (vivos o no).

  • hola,

    miraos que en la entrada suelen traer un regulador de tension para bajar esos 5 a 3.3, suele ser un 7133-1, si lo lleva ya no hay problemas de sobretensión con la alimentación de 5.

    saludos

    • Madyson RV

    Sobre el simple PIR comentas en el documento que funciona con 3.3 v, a qué máximo de volts puedo usarlo sin que se dañe?

    • Hola Madyson, o me he leido la caracteristicas que publica el fabricante despacio, pero yo no tentaria mucho la suerte y procuraria no pasar de los 3,3V nominales. Si tienes la alimentacion a mas tension seria recomenfdable que usases una fuente del tipo buck converter o al menos un divisor de tension

    • Hola Madyson.
      El modelo probado aquí admite hasta 5V, que es lo máximo que admite el chip que trae el módulo, y que suele ser un BISS0001, con un rango de voltaje de 3 a 5V. Otros PIR puede que tengan otro rango.

      Saludos.

  • Hola una pregunta el led nunca se me para a mi. Podrias darme alguna ayuda, porfavor? es urgente.

    • Hola Guillem, te ayudare encantado si me cuentas un poco mas tu problema

    • Feder

    Excelente post! Muchas gracias por compartir tu conocimiento!
    Sabes si este sensor (en movimiento, como por ejemplo en un robot o quadcopter) es capaz de reconocer la presencia de una persona? No sé si me explico.
    Saludos

    • Hola Feder, te explicas muy bien. EN principio será capaz porque detecta cambios en los infrarrojos. EL problema que veo, es que stos estos chismes estan pensados para detectar esos cambios y cuando se mueva, detectara cualquier cosa caliente que este por ahi, y su propio movimiento causara el cambio y el disparo del sensor.
      No lo he probado pero puede funcionar

Give a Reply

WordPress Anti-Spam by WP-SpamShield