Introduction: Arduino Tutorial - Motion Sensor

About: This is a channel for Homemakers and DIY where you will find useful tutorials about Arduino and IOT systems, some Gardening techniques and Woodworking projects.

Neste tutorial vamos explicar o funcionamento de um sensor de movimento que estará montado numa montagem simples e controlará um relé ligando uma lâmpada ou candeeiro sempre que este sensor de movimento detectar movimento à sua frente.

O sensor de movimento utilizado é um HC-SR501 e este detecta o movimento através do calor emitido em forma de radiação infravermelha, que pode ser por exemplo de animais ou objectos. Este é formado por um sensor piroeléctricodividido em 2 zonas sensíveis, a zona de radiação infravermelha e uma lente especial chamada Lente Fresnel, que multiplica a zona de detecção sendo esta facilmente identificável, pois normalmente é uma tampa branca em forma de cúpula que se encontra em cima do sensor piroeléctrico (Ver imagens acima).

O funcionamento deste sensor consiste em verificar se em alguma destas zonas se encontra num estado diferente ao anterior, por exemplo quando um animal ou objecto entra numa dessas zonas de detecção, o estado desta muda e o sensor envia um sinal digital.

Normalmente este tipo sensor tem uma forma de ajustar a sua sensibilidade e tempo de reacção ou rearme dependendo dos modos de funcionamento, podendo assim configurar o sensor da forma mais adequada ao cenário que encontramos.

Caso queiram saber mais sobre a sensor de movimento HCSR501e do relévejam as suas datasheet (Ver ficheiros abaixo), como também as especificações detalhadas do Arduino UNO através da seguinte ligação https://store.arduino.cc/arduino-uno-rev3.

Step 1: Montagem

Para realizar esta montagem apenas é necessário utilizar um Arduino Uno, onde ligamos os nossos componentes, que neste caso serão um sensor de movimento HCSR501 e um pequeno modulo de relé.

Esta tem como objectivo ligar ou desligar uma lâmpada, através do relé que será controlado pelo nosso Arduino, que recebe informação através de um sinal digital enviado pelo sensor de movimento, ambos os componentes são ligados aos pinos de sinal digital do Arduino, no entanto, um dos pinos terá a função de saída e o outro a função de entrada (Ver imagem acima).

Material necessário:

  • 1x Arduino UNO;
  • 1x Cabo USB;
  • 1x Sensor de movimento HCSR501;
  • 1x Relé 5VDC KY-019;
  • 1x Lâmpada ou candeeiro.

Instalação do sensor de movimento:

O sensor de movimento HCSR501 é contem 3 pinos, sendo 1 de saída do sinal informando a sua activação e os outros 2 de alimentação, podendo este ser alimentado através de uma tensão com uma gama entre os 5VDC e os 20VDC.

Já o pino de saída de sinal é mantido em nível baixo ou "LOW" quando se encontra em "Stanby", ou seja, enquanto não não for detectado nenhum objecto ou animal emissor de radiação infravermelha na sua frente, caso contrario este será activado colocando assim a sua saída em nível alto ou "HIGH", com um valor de cerca de 3,3V.

O sinal enviado pelo sensor de movimento é um sinal digital com a função I/O do tipo "On / Off", logo este pino do sensor pode ser ligado a qualquer um pinos de sinal digital do Arduino (Ver imagem acima).

Como foi referido anteriormente, pode ser ajustada a sensibilidade do sensor através de uma pequena resistência variável que se encontra na placa, aumentando ou diminuindo a distância e a quantidade de movimento necessário para o sensor seja activado e assim alterar o estado da sua saída (Ver imagem acima).

Para ajustar o tempo rearme utilizamos uma outra resistência variável, alterando assim o tempo que o sensor mantém activa a sua saída, depois de ser detectado algum objecto ou animal a emitir infravermelhos a passar na sua frente, o ajuste do tempo de rearme pode variar entre 3seg e 5min (Ver imagem acima).

Por fim este sensor tem também 2 modos de funcionamento, sendo estes seleccionados através de um "Jumper" junto às resistências variáveis de ajuste. Um dos modos possíveis coloca o sensor a funcionar em Modo contínuo ou repetição, ou seja, se o sensor detectar movimento continuamente, este irá manter a saída activa até o sensor o deixar de o detectar, o outro modo é o Modo rearme e consiste em activar a saída ao detectar movimento, mas desactiva novamente a saída apenas após o tempo de rearme ajustado anteriormente ter terminado (Ver imagem acima).

Instalação do Relé:

O outro componente da montagem é um relé de 5VDCKY-019 e tem também 2 pinos de alimentação mas a suagama de tensão é entre os 5VDC e os 12VDC, alem deste pinos tem também um outro pino de entrada de sinal, sendo este sinal, um sinal digital enviado pelo Arduino UNO através do pino 7 (Ver imagem acima).

Sempre que o relé é activado este faz actuar os seus contactos eléctricos, fechando o circuito eléctrico da lâmpada ficando esta acesa. Como este um relé simples e com apenas um contacto eléctrico, quando está em repouso este tem um dos contactos eléctricos no estado NO ou "Normally Open" e outro no estado NC "Normaly Close" sempre este é activado altera ambos os contactos eléctrico (Ver imagem acima).

Step 2: Código

Com a montagem pronta apenas nos falta carregar o código no Arduino, para isso abrimos o seu programa de ligamos o cabo USB.

Este código utiliza um dos pinos de sinal digital do Arduino como entrada e o outro como saída, caso queiram relembrar as características deste tipo de função dos pinos de sinal digital do Arduino vejam os tutoriais:

Arduino Tutorial - Digital Input - Button - Monitor Serial

https://www.instructables.com/id/Arduino-Tutorial-Digital-Input-Button-Monitor-Seri/

Arduino Tutorial - Digital Output - LED

https://www.instructables.com/id/Arduino-Tutorial-Digital-Output-LED/

Resumindo utilizamos 2 tipos de funções para tornar os pinos de sinal digital do Arduino em entradas e saídas, mas em primeiro lugar colocamos na função Setup as seguintes funções:

//Definição do tipo de pino (Saída):
pinMode(Pino_Rele, OUTPUT);

e

//Definição do tipo de pino (Entrada):
pinMode(Pino_Sensor, INPUT);

Depois, na função Loop são colocadas as seguintes funções dependendo se forem saídas ou entradas:

Como Saídas:

//Coloca a saída em LOW ou nível baixo:
digitalWrite(Pino_Rele, LOW);

ou

//Coloca a saída em HIGH ou nível baixo):
digitalWrite(Pino_Rele, HIGH);

Como entradas:

//Se a leitura do pino for LOW ou nível baixo:
if (digitalRead(Pino_Sensor) == LOW){

}

ou

//Se a leitura do pino for HIGH ou nível alto:
if (digitalRead(Pino_Sensor) == HIGH){

}

Abaixo pode observar-se o código completo para a nossa montagem, todavia chamo a atenção, pois à primeira vista pode pensar-se, que não é necessário utilizar o Arduino UNO para realizar esta montagem (Ver ficheiro abaixo).

De facto isso pode ser verdade, desde que se utilize um equipamento que coloque na entrada do relé uma tensão igual ou superior a 5VDC(Ver imagem acima), pois o sensor apenas permite colocar os 3,3VDCna sua saída, não sendo o suficiente para activar o relé quando este se encontra em nível alto (Ver datasheet dos componente acima).

int Pino_Sensor = 8;  //Variável para o pino do sensor de movimento.
int Pino_Rele = 7;    //Variável para o pino do Relé.

//Correr a função SETUP apenas uma vez após ser pressionado Reset:
void setup() {
	pinMode(Pino_Sensor, INPUT);  //Definição do tipo de pino (Saída ou Entrada):

	pinMode(Pino_Rele, OUTPUT);   //Definição do tipo de pino (Saída ou Entrada):
}

//Correr a função LOOP repetidamente:
void loop(){

	//Se a leitura de Pino_Sensor for igual a HIGH ou nível alto:
	if (digitalRead(Pino_Sensor) == HIGH){
		//Liga o Relé (LOW é nível baixo):
		digitalWrite(Pino_Rele, LOW);
	}
	else{
		//Desliga o Relé (HIGH é nível baixo):
		digitalWrite(Pino_Rele, HIGH);
	}
}

Caso queiram saber mais ou tenham dúvidas sobre estas ou outras referências no código, vejam a sua explicação detalhada no site oficial do Arduino, através da ligação https://www.arduino.cc/en/Reference/HomePage.

Procurem os nossos tutoriais sobre o Arduino, onde são explicadas diversas montagens e o funcionamento dos seus componentes, já agora visitem também o nosso canal no Youtube, Instagram, Facebook ou Twitter.

Um grande abraço e bons projectos.