Interruptor crepuscular e Indicação da Intensidade Luminosa com Arduino

Quem nunca se perguntou quando criança como a lâmpada em um poste acende sozinha ao anoitecer? Ou ainda, como ela automaticamente permanece ligada somente no período noturno? Pois bem, neste tutorial vamos projetar um circuito que ascenderá uma lâmpada ao anoitecer (com ausência de luz na captação do sensor, o nosso interruptor crepuscular) e assim permanecendo até o amanhecer (com incidência de luz sensor). O Circuito também indicará via LEDs a intensidade luminosa do ambiente sobe análise.

 

Montando o projeto

Para o desenvolvimento desse projeto será necessária uma placa de desenvolvimento Arduino Uno, onde ela será responsável por receber os sinais do sensor de luminosidade e controlar as portas do microcontrolador para acendimento dos LEDs e da lâmpada.

O LED verde ascenderá no caso do ambiente estiver com um nível bom de luminosidade, o amarelo na situação de luminosidade parcial e o vermelho juntamente com a lâmpada em baixa iluminação ambiente.

Componentes Utilizados:
Arduino Uno
Modulo Sensor de Luz LDR (Light Dependent Resistor)
Módulo Relé 1 Canal 5v
3 LEDs (Vermelho, Amarelo, Verde)
3 Resistores de 470 ohms

 

A montagem do protótipo pode ser observada pela figura abaixo:

 

Vamos ligar a alimentação VCC e o GND do sensor de luminosidade ao respectivos na alimentação em 5v do Arduino, no sensor utilizaremos a saída analógica A0 conectando à entrada analógica A5 do Arduino, os LEDs serão conectados da seguinte maneira nas portas IO digitais:
– Led Vermelho (Pino 7)
– Led Amarelo (Pino 6)
– Led Verde (Pino 5)

 

O módulo relé também é alimentado pelos 5V do Arduino e o pino que recebe o sinal IN será conectado no pino 2 das portas IO digitais do microcontrolador Arduino.

Abaixo também temos na prática a montagem do circuito:

 

Desenvolvendo o código

Após montagem do hardware, prosseguimos para o código onde se controlará os sinais do sensor e do módulo relé. O Código como pode ser observado abaixo, será carregado para o microcontrolador ATMEGA do Arduino:


#define rele 2 // pino onde é conectado modulo relé
#define captacao_sensor A5 // pino onde se conecta os sinais vindos do sensor de luminosidade
#define led_vm 5 // pino do led vermelho
#define led_am 6 // pino do led amarelo
#define led_vd 7 // pino do lede verde

void setup() {

  pinMode (rele, OUTPUT); // define o pino 2 como saída
  pinMode (led_vm, OUTPUT); // define o pino 5 como saída
  pinMode (led_am, OUTPUT); // define o pino 6 como saída
  pinMode (led_vd, OUTPUT); // define o pino 7 como saída
  pinMode (captacao_sensor, INPUT);
  Serial.begin(9600); // inicia a comunicaçao serial

} 

void loop() {

  int sensor = analogRead (captacao_sensor); // cria a variavel "sensor" e a condiciona a receber os sinais advindos do sensor de luminosidade
  float valorAnalog_sensor = sensor * (5.0/ 1023.0); // modifica a leitura dos sinais advindos do sensor de luninosidade para forma de tensão
  Serial.println(valorAnalog_sensor); // escreve no monitor serial os valores recebidos em "valorAnalog_sensor"

if(valorAnalog_sensor > 2.50) // se o valor de tensão recebido do sensor for maior que 2,5V, é executado o código abaixo
{
  digitalWrite (rele, LOW); // comuta o módulo relé para o acendimento da lâmpada (Obs: o modulo relé atua em nivel baixo LOW)
  digitalWrite(led_vm, HIGH); // Ascende o led vermeho
  digitalWrite(led_am, LOW); // Apaga o Led amarelo
  digitalWrite(led_vd, LOW); //apaga o led verde
}

if (valorAnalog_sensor > 1.00 && valorAnalog_sensor < 2.50) // se o valor de tensão recebido do sensor estiver entre 1.01V e 2.49V, é excutado o código abaixo
{
  digitalWrite (rele, HIGH); // mantém o módulo relé inativo
  digitalWrite(led_am, HIGH); // Ascende o led Amarelo
  digitalWrite(led_vm, LOW); // Apaga o led vermelho
  digitalWrite(led_vd, LOW); // Apaga o led verde
}

if (valorAnalog_sensor < 1.00) // se o valor de tensão recebido do sensor for menor que 1V, é executado o código abaixo
{
  digitalWrite (rele, HIGH);  // mantém o módulo relé inativo
  digitalWrite(led_vd, HIGH); // Ascende o led verde
  digitalWrite(led_vm, LOW); // Apaga o led vermelho
  digitalWrite(led_am, LOW); // Apaga o led amarelo
 }
} 

 

Você pode consultar, baixar, modificar e compartilhar o código deste tutorial em nosso repositório do GitHub! E lá você encontra todos os códigos já publicados aqui no blog! Vamos compartilhar conhecimento!

 

Mergulhando no projeto

Software

Função Setup
Na função setup iremos definir as portas onde conectados os LEDs e o relé como saídas digitais pinMode (rele, OUTPUT) e iniciar a comunicação serialSerial.begin(9600).

Função Loop
A função Loop inicia declarando a variável int sensor, variável responsável por armazenar os dados recebidos do sensor de luminosidade. Após este processo o valor armazenado em sensor é convertido em tensão de 0 a 5V pela fórmula float valorAnalog_sensor = sensor * (5.0/ 1023.0), onde float valorAnalog_sensor armazena estas informações convertidas.

Obs: As portas de entrada analógica do Arduino Uno têm uma resolução de 10 bits (valores de 0 a 1023), para uma melhor visualização do sinal de tensão enviado pelo sensor foi incluso esta conversão.

Os valores armazenados em float valorAnalog_sensorpodem ser observados pelo monitor serial pela IDE do Arduino Serial.println(valorAnalog_sensor).
A seguir se inicia 3 condições em sequência que controlam o ascendimento dos LEDs e a atuam no modulo relé para o ascendimento da lâmpada.

if(valorAnalog_sensor > 2.50) → Se essa condição for verdadeira a lâmpada e o LED vermelho são acessos.

if (valorAnalog_sensor > 1.00 && valorAnalog_sensor < 2.50) → Se essa condição for verdadeira apenas o LED amarelo será acesso.

if (valorAnalog_sensor < 1.00) → Se essa condição for verdadeira apenas o LED verde será acesso.

Hardware

Modulo Sensor de Luz LDR (Light Dependent Resistor)


O módulo sensor de luz tem como seu principal componente um resistor de variação LDR (Light Dependent Resistor), este resistor varia de acordo com a intensidade de luz incidida sobre ele.

A captação do sinal resultante deste processo acontece por um divisor de tensão no módulo e pelo amplificador comparador Lm393. O módulo entrega sinais digitais ou analógicos que variam de 0 a 5V, pelo trimpot é possível ajustar a saída digital DO.

Pinagem:
– VCC: 3 – 5V
– GND: GND
– D0: Saída Digital
– A0: Saída Analógica

Módulo Relé 1 Canal 5v

O Módulo Relé 1 Canal 5v é composto por um relé de 5v com contatos NA/NF e um foto acoplador, a fim de isolar os circuitos internos. O Relé fecha seu contato COMUM/NA quando recebe no seu pino de IN um nível de baixo LOW.

Pinagem:
– VCC: 3 – 5V
– GND: GND
– IN: Entrada Digital de Sinal

 

Conclusão

Neste tutorial, podemos trabalhar com controle e a indicação de luminosidade ambiente por LEDs. Com um pouco de imaginação, este projeto pode ser implementado em diversas aplicações. Deixe abaixo suas dúvidas e sugestões, compartilhe conhecimento!

 

Referências

https://www.ebah.com.br/content/ABAAAAPOMAF/sensores-ldr

Sobre Pedro Pereira 8 artigos
Engenheiro Eletricista, Técnico em Eletrônica e Entusiasta na área de Sistemas Embarcados. https://www.instagram.com/laboratorio_dosfundos/

2 Comentários

  1. Seria possível um sensor crepuscular baseado em arduino para acender os faróis de um carro e com temporizador? Tipo… luz baixa acende 5 segundos após a partida do carro, pouca luz acendeu a luz baixa e nenhuma luz acende a luz alta?

    • Boa tarde jair!
      A aplicação do sensor de luz são amplas!!
      Pode sim implementar em um carro.
      Basta você adaptá-lo em um local favorável para captação da luz e com proteção contra agua, é claro rs.

      Qualquer dúvida estamos a disposição.

Deixe uma resposta

O seu endereço de email não será publicado.


*