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.
tienda online prometec

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.
 

 

(72) Comments

    • Sergio

    Lo que pasa es que vi otro tutorial de como reproducir sonido .mp3 o .wav en arduino y se necesita un modulo SD card para almacenar los sonidos que se reproducirán.

  • Buenas, buen tutorial, tengo una duda, lo que pasa es que necesito programar un sensor pir, y que cuando detecte movimiento se reproduzca un sonido .wav con una bocina y un modulo de tarjeta sd, podría ayudarme con el código?

  • buen dia alguien me puede colaborar

    como conecto 2 sensores pir a un arduino uno R3

    • Hola Harold, selecciona cualquiera de los pines digitales y declara 2 como entrada, conectas los PIR y los lees. Un saludo.

      • Buen dia me puedes colaborar analizando este código para la conexión de dos sensores con Arduino uno R3

        Tengo 2 leds con pin (13 y 12), dos sensores Pir con pin (2 y 4) un buzer con pin( 10) respectivamente como puedo organizar el código… y una ultima pregunta puedo cambiar la funcion (delay) por otra funcion para que no recaliente el arduino

        int ct = 15; //calibration time
        int pirPin2 = 2; //PIR sensor’s output
        int pirPin4 = 4; //PIR sensor’s output
        int ledPin13 = 13;
        int ledPin12 = 12;
        int buzzerPin = 10;

        void setup(){
        Serial.begin(9600);
        pinMode(pirPin2, INPUT);
        pinMode(pirPin4, INPUT);
        pinMode(ledPin13, OUTPUT);
        pinMode(ledPin12, OUTPUT);
        pinMode(buzzerPin, OUTPUT);
        digitalWrite(pirPin2, LOW);
        digitalWrite(pirPin4, LOW);
        digitalWrite(ledPin13, LOW);
        digitalWrite(ledPin12, LOW);
        digitalWrite(buzzerPin, LOW);

        Serial.println(“Espere, ahora calibrando el sensor….”);
        for(int i = 0; i <= ct; i++){
        Serial.print(((i*100)/ct));
        Serial.print("% ");
        Serial.println("COMPLETADO…..");
        delay(1000);
        }
        Serial.println("Calibracion Completada Satisfactoriamente.");
        Serial.println("** SENSOR ACTIVO **");
        delay(50);
        }

        void loop(){
        if(digitalRead(pirPin2) == HIGH)
        if(digitalRead(pirPin4) == HIGH)
        {
        digitalWrite(ledPin13, HIGH);
        digitalWrite(ledPin12, HIGH);
        digitalWrite(buzzerPin, HIGH);
        Serial.println("————————");
        Serial.println("** MOVIMIENTO DETECTADO **");
        Serial.println("————————");
        Serial.println("");
        delay(1000);
        }

        else
        {
        digitalWrite(ledPin13, LOW);
        digitalWrite(ledPin12, LOW);
        digitalWrite(buzzerPin, LOW);
        }

        }

    • Sergio

    Como puedo hacer que una bocina suene con un modulo sd card cuando el sensor pir detecte movimiento? Me seria de gran ayuda.

    • No tendrías más que sustituir el LED por un zumbador o una bocina. Lo que no entiendo muy bien es lo de la sdcard.

    • Ariel

    Hola, tengo una duda sobre el voltaje, en la primer imagen dice 3,3 y en la otra da un rango de 5-20, gracias desde ya

    • Buenos dias ariel, Normalmente la mayor parte de los sensores TTL que usamos (de 5V) suelen aceptar en las entradas señales de 3,3 voltios. Te en cuenta que los sensores se suelen usar indistintamente con ttl a 5V y con CMOS a 3,3V por lo que los fabricantes procuran trabajar con ambas

    • Dario

    Hola,e intentado miles y no funciona,intente tu instalacion y el led solo queda prendido,me podes ayudar,donde vivo hay algunos animales como leopardos,y hace unos dias andan lobos alrrededor,si logro que este sensor 501 funcione correctamente me ayudara,.Desde ya te agradesco,.

    • Hola Darío, puede ser que tengas que ajustar la sensibilidad. Recuerda que el PIR tiene dos potenciómetros, uno con el que ajustas la sensibilidad y otro el tiempo durante el que quedará activada la salida. Puede ser que tengas demasiado alta la sensibilidad y salte continuamente. Un saludo.

  • disculpa quiero usar un sensor de movimiento pero en tarjeta beysist 2, si se puede!? me podrias ayudar en eso!?

    • Me temo que no conozco esa tarjeta Alexa

  • Hola sabes que código debo añadir para poder manejarlo con una app via bluetooth, la ideas es un sensor de movimiento PIR + buzzer activo(simulando una alarma ), llego hacer que funcione por separado , pero necesito tener todo en un solo sketch y aparte quiero que con una letra por ejemplo la “A” se active el sensor y con la “B” se desactive, así hacer que el blothooth interprete esas variables y ejecutarlo desde el móvil, muchas gracias de antemano.

    • Hola Bruno, no tendrías más que leer el puerto serie al que hayas conectado el bluetooth y hacer una estructura tipo switch case. Echa un ojo a esta sesión en la que controlamos un coche teledirigido con Bluetooth que te puede ser de utilidad http://www.prometec.net/coche-bluetooth/
      Un saludo.

    • Gaspar Lizama

    Hola admin. Crees que es posible detectar una llama con este sensor? de manera que se graduaría para algo que emita mayor radiación. O en su caso, que rango de distancia suelen alcanzar los sensores de flama? He visto algunos por internet pero el rango de sensado es muy bajo.

    • Hola Gaspar,

      No me atrevo a recomendarte estos sensores PIR para detectar llama, porque aun cuando en principio pudiera servir, su objetivo y afinacion estan en otra direccion y probablemente tendrias muchos falsos. Ademas su rango de distancia no e smucho mayor que el de los sensores de llama, de unos 4 o 5 metros

      No los he usado pero hay sensores de llama industrales de mucho mayor alcance y precio que seria lo que deberias usar

    • Kiko

    Hola Buenas,

    He seguido el esquema de conexion para montar el sensor sin arduino, aunque en realidad uso el arduino unicamente para dar corriente al circuito.

    Sorpresa la mia cuando jugando con los potenciometros no consigo hacer que el sensor deje de emitir señal, por lo que siempre tengo el led encedido.
    He girado los potenciometros de un lado al otro, he girado el pin tanto para no reset como auto reset y sin poner y sigo sin poder ver el led apagado.
    Mi proyecto inicia con este sensor funcionando para activar una tira de leds en los pasillos de casa, pero con este pequeño contratiempo me veo incapaz de seguir con mi primer proyecto.

    El esquema que he montado con la protoboard, resistencia, led y sensor es un calco del publicado en este artículo.
    ¿Se os ocurre algo que se me escape?

    Gracias!

    • Hola Kiko, No he usado estos sensores sin arduino, pero hay un punto en el que girando los potenciometros modificas el rango e intensidad de la deteccion

      Yo probaria con otro sensor por si estuviera dañado

      • Hola,

        Muchas gracias por la información.
        Justo tenía 3 sensores PIR de camino a casa cuando escribia la duda en el foro.
        Acabo de comprobar que el sensor PIR que tenía en mi kit de iniciación debe estar roto ya que el potenciómetro que regula el tiempo sólo tiene dos posiciones: o bien al mínimo, o bien al máximo.
        Por poco que mueva el potenciómetro del mínimo, paso al valor máximo del mismo. He conectado el sensor al pin 13 de mi arduino mega y así he conseguido averiguar cuando detecto y cuando no y de esta forma he podido calcular el tiempo que tarda en dejar de dar tensión por el pin dedicado a ello.

        Dejo esta aclaración aquí ya que creo que a mas de uno le puede estar pasando lo mismo. Los otros 3 sensores, al regularlos, tengo distintos tiempos de espera, pero este concreto parece averiado.

        Gracias por tu dedicación y tus tutoriales.

        Saludos.

    • José

    Hola Admin, este código de sensor PIR me sirve para servomotores, es decir, usar los dos juntos y cuando detecte un moviendo los servos se muevan. Gracias

  • buen día, mi pregunta es, se puede conectar un sensor de IR pasivo comercial de alarma con un Arduino? éstos suelen traer 6 pines, dos de alimentación, 2 de tamper o antidesarme y dos de señal. Muchas gracias

    • Como siempre depende del sensor, pero en realidad si es de 5V no deberias tener problemas

  • Hola ese sensor puede detectar fuego a una distancia de 5 metros??
    espero su respuesta gracias

    • Hola Kevin, no he usado sensores pir para deteccion de llamas por lo que no me atrevo a responderte pero puedes usar un sensor de llama a 5m sin problemas

    • Jose Sanchez

    Hola Admin, tenía la idea de usar el modulo PIR para activar un extractor de aire en el baño cuando una persona entra y que quede activado unos minutos. Hasta ahi, perfecto. Pensaba que no iba a necesitar ni siquiera un arduino, conecto el PIR a un rele y este al extractor. El problema es que si la señal de salida es de 3v3 no se si llegará a encencer el rele que tengo que es de 5v. Hay alguna forma de asegurar el cierre del circuito, no se, tal vez usando transistores? Gracias.

    • Hola Jose, en efecto no necesitas un arduino y normalmente el PIR deberia dar una señal suficiente para excitar el rele de 5v, porque normalmente saben que hay mucha electronica a 3.3V, asi que yo probaria primero sin nada a ver que tal y si no, usa una fuente de 5V que el pir lo soporta sin problemas y aentonces seguro que excita el rele

        • Jose Sanchez

        Muchas gracias! Lo voy a probar y cuento.

Give a Reply

WordPress Anti-Spam by WP-SpamShield