Descripción
El HC-SR501 sensor PIR de movimiento o presencia es un módulo electrónico que se utiliza para detectar movimiento y/o presencia de personas en proyectos electrónicos. Dentro del HC-SR501 se integra toda la electrónica necesaria para el soporte del sensor PIR y entrega un pulso compatible con TTL que puede ser aceptado por la mayoría de los microcontroladores.
El módulo contiene dos potenciómetros y un jumper que permiten adaptarlo a las necesidades de la aplicación, permitiendo ajustar sensibilidad de detección, tiempo de activación y tipo de respuesta a detecciones repetitivas.
Los sensores PIR se utilizan ampliamente en aplicaciones como sistemas de alarma, puertas automáticas, luces automáticas, etc. Con este módulo podrás realizar cualquier proyecto similar que dependa de la detección de presencia de personas.
Características y especificaciones
- Basado en el sensor: RE200B
- Circuito de acondicionamiento: BISS0001
- Circuitos de control incluidos en el módulo
- Tiempo de activación y sensibilidad ajustable
- Voltaje de alimentación: 4.5 – 12 VDC
- Corriente de operación: <60uA
- Salida: Pulso lógico 3.3V
- Tiempo de retardo: 5 – 200 Segundos (ajustable)
- Distancia de detección: 3 – 7 Metros (ajustable)
- Peso: 0.008 kg
- Dimensiones:
- Largo: 3.2 cm
- Ancho: 2.5 cm
- Alto: 2.5 cm
Funcionamiento y configuración del módulo HC-SR501
Potenciómetros
Los potenciómetros permiten ajustar el tiempo de disparo y la sensibilidad de detección. La figura nos muestra cómo realizar el ajuste del sensor utilizando los potenciómetros.

Sosteniéndo el sensor en la posición que se muestra, el funcionamiento de los potenciómetros es el siguiente:
- El potenciómetro izquierdo controla el tiempo en alto (activo) de la señal de salida. Al girarlo en sentido de las manecillas del reloj el tiempo en alto aumenta, mientras que al girar en sentido antihorario el tiempo en alto disminuye. El tiempo de activación puede ajustarse entre 2 segundos y 5 minutos aproximadamente.
- El potenciómetro derecho controla la sensibilidad de detección. Al girarlo en contra de las manecillas del reloj aumentamos la sensibilidad, mientras que al girarlo en sentido horario la sensibilidad disminuye. Con esto podemos controlar también la distancia de detección entre aproximadamente 3 y 7 metros.
Jumper
El jumper permite elegir el modo de operación del módulo de sensor PIR.
- Modo de un disparo: En este modo, cuando ocurre una detección de movimiento la salida del sensor se activa durante el tiempo configurado por el potenciómetro. Si durante este tiempo se detecta movimiento nuevamente, este no será considerado para cambiar el estado de la salida ni aumentará en tiempo que esta permanece en alto. Por ejemplo si tenemos configurado un tiempo aproximado de 60 segundos y durante este tiempo se hay una nueva detección, esta última no será considerada.
- Modo de disparo repetido: En este modo cada nueva detección de movimiento es considerada, de forma que el tiempo que la salida permanece en alto se va alargando con cada evento que el sensor detecte. Continuando con el ejemplo anterior, si mediante el potenciómetro hemos seleccionado un tiempo de 60 segundos y transcurridos 30 segundos el sensor detecta movimiento nuevamente, esto causará que el tiempo de activación comience a contarse nuevamente, resultado en un pulso en la salida de aproximadamente 60 + 30 = 90 segundos.
En cualquiera de estos casos, cuando la salida regresa a su estado inactivo existirá un retardo de aproximadamente 3 segundos durante los cuales el sensor no considerará nuevamente nuevas detecciones. Pasado este periodo el sensor volverá a retomar su funcionamiento normal.
Ejemplo de código en Arduino
Este ejemplo nos muestra cuando el sensor HC-SR501 detecta movimiento en el monitor serial de Arduino. También se enciende el LED conectado al pin 13 cuando el sensor se encuentra en estado activo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | /** Geek Factory - "Dale vuelo a tus proyectos" www.geekfactory.mx PROGRAMA DE PRUEBA PARA SENSOR DE MOVIMIENTO PIR HC-SR501 CONSULTA EL ARCHIVO LICENCIA.TXT PARA CONOCER MÁS SOBRE LOS DERECHOS DE DISTRIBUCIÓN DE ESTE MATERIAL O LA SIGUIENTE URL: HTTPS://WWW.GEEKFACTORY.MX/LICENCIA-CONTENIDO. PUBLICADO BAJO LICENCIA ATTRIBUTION-NONCOMMERCIAL-SHAREALIKE 4.0 INTERNATIONAL (CC BY-NC-SA 4.0). GEEK FACTORY INVIERTE TIEMPO Y RECURSOS EN DESARROLLAR ESTOS EJEMPLOS Y TUTORIALES. SI ENCUENTRAS ÚTIL ESTE CÓDIGO, CONSIDERA REALIZAR UNA COMPRA CON NOSOTROS. Resumen: Programa básico para el sensor de movimiento HC-SR501 en el que se muestra cuando se detecta movimiento en el monitor serial de Arduino. También se activa el LED en la placa Arduino cuando el sensor pone en estado alto su salida. */ // definición de pines const int ledpin = 13; const int pirpin = 12; // variable que almacena el ultimo estado del pin int ultimoestado = LOW; /** Función setup: se ejecuta una vez cuando encendemos el arduino */ void setup() { // preparar la comunicación serial Serial.begin(9600); // mostrar mensaje inicial Serial.println(F("----------------------------------------------------")); Serial.println(F(" EJEMPLO SENSOR DE MOVIMIENTO PIR HC-SR501 ")); Serial.println(F(" https://www.geekfactory.mx ")); Serial.println(F("----------------------------------------------------")); // configurar los pines de entrada / salida pinMode(pirpin, INPUT); pinMode(ledpin, OUTPUT); } /** Función loop: se ejecuta continuamente mientras el arduino permanece encendido */ void loop() { // leer el estado del pin donde está conectado el sensor PIR int estado = digitalRead(pirpin); // detectamos cuando el pin cambió de estado, esto nos permite solamente enviar mensajes // a la interfaz serie cuando cambia el estado del pin conectado al sensor if (estado != ultimoestado) { // actualizar la variable para detectar cambios ultimoestado = estado; if (estado == HIGH) { // al detectar un pulso en alto es que el sensor detectó movimiento Serial.println(F("Movimiento detectado")); digitalWrite(ledpin, HIGH); } else { // el estado bajo en el pin del sensor significa que no hay detección Serial.println(F("Sensor en reposo...")); digitalWrite(ledpin, LOW); } } } |









Valoraciones
No hay valoraciones aún.