Arduino Tutorial - Motion Sensor

Published

Introduction: Arduino Tutorial - Motion Sensor

About: Este é um canal para homemakers e DIY onde vai encontrar tutoriais úteis acerca de Electrónica, Arduíno, Robótica e Impressão 3D. Estes têm explicaç&oti...

Neste tutorial iremos explicar o funcionamento do um sensor de movimentoHCSR501, através de uma pequena montagem que controla uma lâmpada ou candeeiro. Esta montagem activa um relé, que por meio de um sensor liga uma lâmpada ou candeeiro sempre que este detectar movimento à sua frente.

Este sensor de movimentoHC-SR501 detecta o movimento através do calor emitido em forma de radiação infravermelha, por exemplo, de animais ou objectos. Este é formado por um sensor pireléctrico dividido em duas 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 em cima do sensor pireléctrico (Ver imagens acima).

O funcionamento deste sensor consiste em verificar se alguma destas zonas se encontra no estado diferente ao anterior, por exemplo, quando um animal ou objecto entra numa dessas zonas de detecção, o estado muda e o sensor envia um sinal digital. Alem disto, sensor também poderá ser ajustado na sua sensibilidade, tempo de rearme e modos de funcionamento.

Caso queiram saber mais sobre a sensor de movimento HCSR501 e do relé vejam as suas datasheet (Ver ficheiros abaixo), alem destes vejam também as especificações detalhadas do Arduino UNO através da página oficial do Arduino em "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 são um sensor de movimento e um pequeno relé (Ver montagem acima). Esta montagem tem como objectivo ligar ou desligar um candeeiro ou lâmpada, através desse pequeno relé que é controlado pelo Arduino que ao receber um sinal digital, enviado pelo sensor de movimento, nas suas entradas de sinal digital (Ver imagem acima).

Material necessário:

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

Instalação do sensor de movimento:

O sensor de movimento HCSR501 tem 2 pinos de alimentação, Vcc e Gnd, estes tem uma gama de tensão de alimentação entre os 5V e os 20V DC, mantendo a sua saída em nível baixo ou LOW quando se encontra em Stanby, ou seja, enquanto não se atravessa à sua frente nenhum objecto ou animal emissor de radiação infravermelha. Caso contrario este será activado, colocando a sua saída em nível alto ou HIGH, com um valor de cerca de 3,3V DC.

A saída do sensor de movimento, sendo uma saída digital é ligada a qualquer uma das entradas digitais do Arduino utilizando a sua função normal (tipo ON/OFF).

Como foi referido anteriormente, pode ser ajustada a sensibilidade deste sensor através do potenciómetro da esquerda, aumentando ou diminuindo a sensibilidade, ou seja, a distância e a quantidade de movimento necessário para este activar a saída. Caso seja necessário ajustar o tempo de rearme utilizamos o potenciómetro da direita, alterando assim o tempo que o sensor mantém activa a saída, isto depois de ser detectado algum objecto ou animal a emitir infravermelhos a passar à sua frente, esse tempo pode variar entre 3 segundos e 5 minutos (Ver imagem acima).

Este sensor tem também 2 modos de funcionamento, podendo estes serem seleccionados através de um Jumper junto aos potenciómetros. Um dos modos 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 consiste em activar a saída ao detectar movimento, mas desactiva novamente a saída apenas após o tempo de rearme ter terminado (Ver imagem acima).

Instalação do Relé:

O relé simples de 5V DC KY-019 tem também 2 pinos de alimentação Vcc e Gnd com uma gama de tensão de alimentação entre os 5V e os 12V DC, este é actuado através do seu pino de entrada de sinal digital, sendo activado através de um sinal digital vindo das saídas digitais do Arduino, que neste caso é o pino numero 7.

Ao ser activado o relé irá actuar os contactos eléctricos, fechando o circuito eléctrico do candeeiro ou lâmpada, ficando esta acesa. Sendo este um relé simples, apenas tem um contacto, que em repouso está no estado NO (Normally Open) ou normalmente aberto e actuado está no estado normalmente fechado ou NC (Normally Close) (Ver imagem acima).

Step 2: Código

Com a montagem pronta apenas nos falta carregar o código no Arduino para esta montagem, para isso ligamos o cabo USB e o respectivo software.

Este código utiliza as 2 características que os pinos digitais do Arduino compreendem, utilizando estes pinos como entradas ou saídas digitais, caso queiram saber mais sobre estas características dos pinos digitais do Arduino vejam os tutoriais "Arduino Tutorial - Digital Input - Button - Monitor Serial" e "Arduino Tutorial - Digital Output - LED".

Ou seja, em suma, utilizamos as 2 funções para controlar os pinos digitais do Arduino, para isso, colocamos em primeiro lugar 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);

De seguida, na função Loop as funções:

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){

}

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

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 5V (Ver imagem acima), o que com apenas o 3,3V de saída do sensor em nível alto não é suficiente para que este seja activado (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 e outras referências do código, vejam a sua explicação detalhada no site oficial do Arduino, através deste Link "https://www.arduino.cc/en/Reference/HomePage".

Procurem os nossos tutoriais acerca do Arduino, onde explicamos diversas montagens e o funcionamento dos seus componentes, já agora visitem o nosso canal no Youtube, Facebook ou Twitter.

Abraço e bons projectos.

Share

    Recommendations

    • Make it Move Contest

      Make it Move Contest
    • Casting Contest

      Casting Contest
    • Woodworking Contest

      Woodworking Contest
    user

    We have a be nice policy.
    Please be positive and constructive.

    Tips

    Questions

    Comments