Sensor PIR
Protoboard |
El tutorial de hoy se basa en el sensor PIR. Este sensor es el típico sensor de movimiento y proximidad que se usa en edificios grandes para que la luz sólo esté encendida cuando se encuentra alguien por las inmediaciones.
Nuestro sensor PIR posee diferentes elementos. Tres pines (VCC, GND y OUT) y dos potenciómetros TX y SX que regularán el tiempo de permanencia de la respuesta y el umbral de actuación del sensor (entre 3m y 7m).
Además usaremos un Relé con la misma configuración que en el otro tutorial de domótica.
Las conexiones las efectuaremos como siguen:
Rele:
- VCC con 5V
- GND con GND
- IN con pin 8
PIR:
Programa:
#include <Arduino.h>
//sensor PIR
//tiempo que el sensor nos da a calibrar
int tcalibracion=10;
//el tiempo cuando el sensro nos da un impulso de baja
long unsigned int lowIn;
//cantidad de respuesta en milisegundos debe de ser baja
//ademas, antes de asumir los movimientos debe detenerse (posicion inicial)
long unsigned int pause = 5000;
boolean lockLow = true;
boolean takeLowTime;
int pirPin = 7; //pin digital conectado a la salida del sensor
int RelePin= 8; //pin conectado a la instrucción del relé
///Vamos con el SETUP
void setup(){
Serial.begin(9600);
pinMode(pirPin, INPUT);
pinMode(RelePin, OUTPUT);
digitalWrite(pirPin, LOW);
//daremos un tiempo de calibración al sensor
Serial.print(" Calibrando sensor ");
for(int i=0; i< tcalibracion; i++){
Serial.print(".");
delay(1000);
}
Serial.println("hecho");
Serial.println("SENSOR ACTIVO");
delay(50);
}
//vamos a la función bucle
void loop(){
if(digitalRead(pirPin) == HIGH){
digitalWrite(RelePin, HIGH); //el relé recibe el estado de salida del sensor en mi caso mi relé funcionaba al revés, si es vuestro caso cambiar HIGH por LOW y en la otra instrucción al revés.
if(lockLow){
lockLow = false;
Serial.println("---");
Serial.print("movimiento encontrado a los ");
Serial.print(millis()/1000);
Serial.println(" segundos ");
delay(50);
}
takeLowTime = true;
delay(20000);
}
if(digitalRead(pirPin) == LOW){
digitalWrite(RelePin, LOW);
if(takeLowTime){
lowIn = millis();
takeLowTime = false;
delay(50);
}
if(!lockLow && millis() - lowIn > pause){
lockLow= true;
Serial.print("Movimiento detenido a los ");
Serial.print((millis() - pause)/1000);
Serial.println( " segundos ");
delay(50);
}
}
}
//sensor PIR
//tiempo que el sensor nos da a calibrar
int tcalibracion=10;
//el tiempo cuando el sensro nos da un impulso de baja
long unsigned int lowIn;
//cantidad de respuesta en milisegundos debe de ser baja
//ademas, antes de asumir los movimientos debe detenerse (posicion inicial)
long unsigned int pause = 5000;
boolean lockLow = true;
boolean takeLowTime;
int pirPin = 7; //pin digital conectado a la salida del sensor
int RelePin= 8; //pin conectado a la instrucción del relé
///Vamos con el SETUP
void setup(){
Serial.begin(9600);
pinMode(pirPin, INPUT);
pinMode(RelePin, OUTPUT);
digitalWrite(pirPin, LOW);
//daremos un tiempo de calibración al sensor
Serial.print(" Calibrando sensor ");
for(int i=0; i< tcalibracion; i++){
Serial.print(".");
delay(1000);
}
Serial.println("hecho");
Serial.println("SENSOR ACTIVO");
delay(50);
}
//vamos a la función bucle
void loop(){
if(digitalRead(pirPin) == HIGH){
digitalWrite(RelePin, HIGH); //el relé recibe el estado de salida del sensor en mi caso mi relé funcionaba al revés, si es vuestro caso cambiar HIGH por LOW y en la otra instrucción al revés.
if(lockLow){
lockLow = false;
Serial.println("---");
Serial.print("movimiento encontrado a los ");
Serial.print(millis()/1000);
Serial.println(" segundos ");
delay(50);
}
takeLowTime = true;
delay(20000);
}
if(digitalRead(pirPin) == LOW){
digitalWrite(RelePin, LOW);
if(takeLowTime){
lowIn = millis();
takeLowTime = false;
delay(50);
}
if(!lockLow && millis() - lowIn > pause){
lockLow= true;
Serial.print("Movimiento detenido a los ");
Serial.print((millis() - pause)/1000);
Serial.println( " segundos ");
delay(50);
}
}
}
Como siempre para cualquier duda o pregunta, no dudéis en comentarlo más abajo o enviárnosla a través de ecda.info@gmail.com
Un saludo.
C.
Un saludo.
C.
No hay comentarios:
Publicar un comentario