Como ligar o sensor de movimento PIR HC-SR501 com Arduino - Arduino Portugal
O Sensor de Movimento PIR HC-SR501 funciona detetando o calor emitido em forma de radiação infravermelha por pessoas, animais ou objetos. Está formado por um sensor piroelétrico dividido em duas zonas sensíveis; a radiação infravermelha e uma lente especial chamada "lente fresnel" que multiplica a zona de deteção, é essa tampa branca em forma de cúpula a cima do sensor piroelétrico.
Quando o sensor piroelétrico deteta que uma destas zonas se encontra em diferente estado da outra, por exemplo, quando uma pessoa ou um objeto entra na zona de deteção, este emite-nos sinal.
Ajustes do sensor
No circuito impresso do sensor estão soldados 2 potenciómetros e um jumper que nos permitem modificar o seu comportamento e adaptá-lo às nossas necessidades ajustando o alcance de deteção, tempo de rearmado, comportamento, deteção repetitiva, etc….
#1: Modo de trabalho: Através deste jumper, selecionamos se queremos que o sensor funcione de modo contínuo, ou seja, se o sensor detetar movimento de maneira continuada vai manter um sinal continuo, ou em modo repetição. Neste modo, o sensor ativa ao detetar movimento e volta a seguir ao estado de repouso, não vai funcionar de maneira contínua ainda que detete movimento. Na fotografia, podem-se ver ligados os pinos 1 e 2, neste caso o modo de trabalho seria contínuo, para ativar o modo repetição temos que ligar os pinos 2 e 3.
#2: Sensibilidade do sensor: Com este potenciómetro aumenta ou diminui a sensibilidade do sensor piroeléctrico para ajustar a distância e a quantidade de movimento necessário para activar, por exemplo, para distinguir entre uma pessoa e um mascote.
#3: Temporizador: Com este potenciómetro ajustamos o tempo que se activará o sensor una vez que se dispare, o alcance está entre 3 segundos e 5 minutos. Se o sensor está configurado em modo continuo, o valor deste potenciómetro é irrelevante.
As ligações do sensor HC-SR501 são muito simples, ligamos o pino VCC do sensor à saída de 5V do Arduino, o pino OUT do sensor ao pino analógico A5 do Arduino e o pino GND do sensor a qualquer pino GND do Arduino.
O negativo do LED é conectado a um GND do Arduino e o pino positivo do LED é ligado ao pino 9 do Arduino com uma resistência de no mínimo 220 Ohms intercalada para não quimar. Para mais detalhes, veja a seguinte imagem:
//Declaramos os pinos que vamos a usar
int analogPin = A5;   //Analogico A5 para o sensor
int ledPin = 9;       //Digital 9 para o LED
//Declaramos uma variável para armazenar o valor que nos devolve o sensor
Serial.begin(9600);         //Iniciamos a comunicação serial
pinMode(ledPin, OUTPUT);    //Configuramos o pino digital 9 como saída
pinMode(analogPin, INPUT);  //Configuramos o pino analogico A5 como entrada
val = analogRead(analogPin);    //Lemos o valor analogico que nos devolve o sensor
if(val > 100)                   //Si o valor é maior que 100
Serial.println(val);          //Sacamos o valor do sensor por serial
digitalWrite(ledPin,HIGH);    //Acendemos o LED
delay(3000);                  //Fazemos uma pausa de 3 segundos
else                            //Se o valor é menor que 100
Serial.println(val);         //Obtemos o valor do sensor por serial
digitalWrite(ledPin,LOW);    //Apagamos o LED
O sensor vai estar a funcionar e ao enviar um valor baixo, quando uma pessoa ou objeto cruze a zona de deteção, o sensor vai disparar enviando um valor alto, superando o limite estabelecido em código e ativando o LED. Quando o objeto sair da zona de deteção a leitura do sensor voltará a baixar ao seu valor normal e o LED vai-se apagar.