No artigo anterior apresentamos como ligar uma lâmpada AC utilizando um relê. Dando continuidade a esse assunto, agora vamos explicar como acionar automaticamente uma lâmpada conforme a luminosidade ambiente, utilizando como sensor o LDR.
LDR
O LDR é um resistor sensível à luz que varia sua resistência conforme é alterada a intensidade luminosa que incide sobre ele. À medida que a intensidade luminosa aumenta (o ambiente fica mais claro) a sua resistência diminui para algumas dezenas de Ohms, e quando a intensidade luminosa diminui (o ambiente fica mais escuro) a sua resistência aumenta para alguns mega Ohms.
Através dessa característica pode-se utilizar esse sensor para detectar a luminosidade do ambiente, para tomar uma decisão como, por exemplo, ligar uma lâmpada, como ocorre nas fotocélulas.
Ele é um sensor de baixo custo e está presente em muitos circuitos eletrônicos que necessitam monitorar a luz ambiente. O seu uso é bem simples, onde através de um circuito divisor resistivo a variação de resistência é convertida em tensão e usada pelo circuito de controle.
Para fazer a leitura da variação de luminosidade, ou seja, a variação de resistência do LDR, é necessário montar um divisor de tensão, conforme o esquema abaixo:
Você pode montar esse circuito facilmente em um protoboard:
Através do circuito apresentado pode-se calcular o valor da tensão de saída para uma determinada resistência do LDR, através da seguinte fórmula:
Por exemplo, em uma ambiente quase escuro o LDR apresenta resistência de aproximadamente 500 KOhm, e o valor de tensão de saída será:
E em uma ambiente claro a resistência do LDR cai para aproximadamente 300 Ohm. Assim, a tensão de saída será:
Nota-se através dos cálculos que a tensão de saída do conversor aumenta quando a intensidade luminosa aumenta e diminui quando ambiente vai ficando escuro.
Para verificar o valor de conversão AD do Arduino, para a variação de temperatura podemos usar o seguinte sketch:
/*
* Entrada analógica
* le o valor do sensor de luminosidade e envia valor para o computador
*/
int sensorPin = 0; // selecione o pino de entrada ao potenciômetro
int val;
void setup() {
Serial.begin(9600);
}
void loop() {
val = analogRead(sensorPin); // ler o valor do potenciômetro
Serial.println(val); //emvia valor para o pc
delay(1000); //aguarda 1 segundo
}
Abrindo o monitor serial pode verificar a variação do valor de conversão AD.
Montagem do Circuito para Acionamento de lampada com Arduino e LDR
Agora vamos à montagem do circuito completo para controle da lâmpada com Arduino e LDR.
Atenção: Esse projeto utiliza eletricidade (tensão alternada – AC) que pode ser perigosa para quem trabalha com ela e não saiba exatamente o que está fazendo. Apenas reproduza esse projeto com segurança. Caso não tenha o conhecimento necessário para fazer a experiência de maneira segura, faça-o na presença ou sob orientação de alguém mais experiente. Assuma sempre que a sua segurança deve estar em primeiro lugar.
O sketch a seguir fará com que a lâmpada acenda quando estiver escuro, e apague quando estiver claro:
#define VALOR_ESCURO 400 // valor para ligar rele
#define VALOR_CLARO 600 //valor para desligar rele
const byte rele = 8; //pino do rele
const byte sensorPin = 0; // selecione o pino de entrada ao potenciômetro
int val; //variável auxiliar para leitura de valor
void setup() {
Serial.begin(9600); //inicia comunicação serial
pinMode(rele,OUTPUT); //configura pino do rele como saída
}
void loop() {
val = analogRead(sensorPin); // ler o valor do potenciômetro
Serial.println(val); //envia valor para o computador
if(val<VALOR_ESCURO) //se menor que valor definido
{
digitalWrite(rele,HIGH); //liga rele
}
else if(val >=VALOR_CLARO)
{
digitalWrite(rele,LOW); //desliga rele
}
delay(500); //delay de 0,5 seg
}
Funcionamento do Arduino LDR
Inicialmente foram definidas duas constantes para o relê e para a entrada do sensor. Na função Setup o pino do relê foi configurado como saída digital. Na função loop, inicialmente é lido o valor da conversão AD no pino A0, e existe uma estrutura de decisão baseada nesse valor. Caso ele esteja abaixo do valor determinado como parâmetro para ambiente escuro (note que este valor pode ser alterado facilmente no #define), o relê é ligado. O rele só será desligado quando o valor lido for maior ou igual ao valor determinado como ambiente claro. Esse valores limites podem ser determinados através do sketch que faz a leitura do LDR, e através de alguns testes pode-se verificar os valores para as condições ambientes submetidas. Pode-se variar os valores limites para adequar a outros ambientes ou determinadas necessidades.
Conclusão
A leitura do LDR é bem tranquila, necessitando apenas da montagem de um divisor de tensão e a correta leitura do canal analógico. O exemplo apresentado pode ser utilizado para automação residencial para verificar a luminosidade do ambiente onde você poderá ligar uma lâmpada, ou outro dispositivo. Pode ser interessante adicionar outros recursos, como temporização, por exemplo, e as lâmpadas só poderão ficar ligadas de segunda a sexta, da hora que acenderem até as 00:00. Para isso basta acrescentar um relógio de tempo real e verificar o horário de desligar. Você pode também utilizar o LDR em conjunto com um sensor de presença em uma garagem, por exemplo, e só acender a lâmpada apenas quando tiver movimento e estiver escuro.
Existem diversas aplicações para o uso do LDR, espero que você possa aplicar em outros circuitos. Conte suas experiências e em qual aplicação pretende usar o LDR.
Para aprender mais sobre Arduino
Criando suas próprias bibliotecas para Arduino











Como posso saber a unidade de medida que o programa do Arduino esta me indicando no monitor serial ?
Vai depender da escala de conversão que você utilizar. No caso desse artigo ele está apenas enviando o valor da conversão analógica para digital com um conversor de 10 bits.
Abraços
Caros colegas! Primeiramente desculpe-me a ignorância, mas, utilizando o mesmo esquema acima, teria como alterar a luminosidade da Lâmpada de acordo com a variação da luminosidade do ambiente (um FADE com uma lâmpada ao invés de LEDs como exemplos comumente encontrados)? Grato!
Olá André, com o exemplo acima só é possivel ligar e desligar a lampada. Para controlar a intensidade luminosa você precisa de um circuito com triac. Da uma olhada nesses exemplos: https://playground.arduino.cc/Main/ACPhaseControl
https://www.instructables.com/id/safe-and-simple-AC-PWM-Dimmer-for-arduino-Raspberr/
https://www.instructables.com/id/Arduino-controlled-light-dimmer-The-circuit/
https://www.youtube.com/watch?v=CmU2u2kHH1U
Abraços
Eu poderia utilizar o LDR no sinal analógico para determinar a turbidez da água? Visto que a turbidez é medida em relação à quantidade de luz que ultrapassa uma quantidade de águaá
Sim, porém você deverá ter um ambiente controlado com uma fonte de luz também controlada, além de um circuito de condicionamento de sinal para o sensor.
Da uma olhada nesses videos:
https://www.youtube.com/watch?v=IV_esqVmYGk
https://www.youtube.com/watch?v=tTkK3uVHPJc
Show Fábio!!! Muito obrigado
Ótima explicação!!!
Eu queria saber é possível ligar um led ou motor com o ldr sendo quando tem luminosidade no lugar. ou seja acionar quando ligar a lanterna
Parabéns Pelo post, E muito bom, quando não tem onde comprar, assim distribuidores, revendedores, e outros podem compartilhar a informação. Muito bom.
Olá Fábio. Será que pode me dar uma dica? Estou tentando montar um circuito simples com o LDR e arduino com a finalidade apenas de o horário da aurora e do ocaso, ou seja quando o Sol nasceu e quando se pôs. Para tanto estou registrando os valores de tensão obtidos a partir do fotoresistor. Aqui é que está o problema. Meu código só tem dado dois valores de tensão (mínima e máxima) 0,16V e 5,00V, ou seja é tudo ou nada, parece não haver para ele valores intermediários de iluminação. Será que você teria uma dica que eu pudesse… Leia mais »
Olá Luiz,
Acredito que o ganho do operacional está muito alto. Tente calibra o potenciômetro para uma faixa maior de leitura. Você pode simular diferentes ambientes de iluminação e calibrar o circuito.
Abraços
Muito obrigado Fábio. Tentarei isso.
Outra matéria com fotos faltando.
Olá Carlos, estou providenciando as imagens. Obrigado por avisar.
Olá Carlos, as imagens foram atualizadas. Muito obrigado pelo aviso.
Abraços
Obrigado, vou ler.