Controle de luz com LDR e Arduino - Arduino e Cia
Algumas pessoas me escreveram perguntando sobre sensores de luz, e como poderia ser montado um dispositivo que acendesse uma lâmpada ao escurecer. Esse é um circuito bem simples de montar, e que utiliza pouquíssimos componentes. Entre eles, um componente barato e fácil de encontrar: o LDR (Light Dependent Resistor, ou Resistor Dependente de Luz).
Como funciona o LDR
Ao iluminarmos um LDR, a sua resistência apresenta valores muito baixos. Ao cortarmos a iluminação, a resistência sobe. Observe isso na prática nas fotos abaixo:
Com incidência de luz no LDR (imagem da esquerda), a resistência medida é baixa. Cobrindo parcialmente o LDR (imagem da direita) ocorre o efeito contrário, ou seja, o aumento da resistência.
Conectando o LDR no Arduino
Conhecendo os princípios básicos do componente, podemos montar um circuito com LDR e Arduino, onde o led vai acender em um ambiente escuro, e apagar em um ambiente claro. Conectamos o led na porta digital 10 e o LDR na porta analógica A5:
O programa para este circuito lê o valor da porta analógica (que deve estar na faixa de 0 a 1024), verificando se o valor é maior do que 500 (LDR encoberto) e consequentemente acendendo o led.
Usei no meu circuito um resistor de 330 ohms para o led e de 10K para o LDR. Caso o seu circuito não funcione adequadamente, ajuste esses valores:
if (estado > 500)
E você lembra deste post sobre dimmer usando potenciômetro? Pois bem, podemos utilizar o circuito acima para obter o mesmo efeito de dimmer: quanto mais encoberto estiver o LDR, maior será a luz emitida pelo LED:
Estes são dois exemplos simples de utilização do LDR, mas que você pode usar para acionar outros dispositivos. Experimente colocar no lugar do LED um módulo relé para acionar, por exemplo, uma lâmpada comum ao anoitecer.
Nao funciona, qualidade pessima, com sensibilidade minima! Nao façam
Arduino e Cia 9 de junho de 2014 15:41
Todos os circuitos apresentados aqui no Arduino e Cia foram testados exatamente do jeito que foram publicados. Erros podem aparecer dependendo do material utilizado, diferença em especificações, etc.
Lembramos que os circuitos são muito utilizados para conhecimentos de componentes do Arduino e fins didáticos.
Abraço e obrigado pela sua contribuição !
Anônimo 21 de agosto de 2014 23:58
Tem como implementar um sensor pir para detectar presença e um controle ir para ligar e desligar o led tambem
Arduino e Cia 22 de agosto de 2014 09:50
Tem sim, você pode juntar as informações sobre esse artigo do sensor de presença :
http://www.arduinoecia.com.br/2014/06/sensor-presenca-modulo-pir-dyp-me003.html
E esse que eu utilizo um sensor IR TCRT5000 :
http://www.arduinoecia.com.br/2013/10/sensor-optico-reflexivo-tcrt5000.html
Anônimo 1 de junho de 2016 23:09
montei como apresentado aqui e funcionou muito bem. legal
Clenilso Felipe 9 de junho de 2016 09:32
Montei, funcionou legal!!! todos os projetos com Arduíno requerem conhecimento básico em eletrônica, porém para aplicações específicas com precisão e sensibilidade o conhecimentos de sistemas de controle é fundamental.
Alex 5 de setembro de 2017 16:54
Também montei e funcionou muito bem. Está inclusive servindo de base para um estudo;
Jocelio Rodrigues 9 de outubro de 2017 10:18
funcionou super bem!!
MARCELO ZEMINIAN 21 de outubro de 2014 17:02
Gostaria de saber se alguem tem esquema de algum circuito com ldr que possa ler a turbides da agua, ou seja, se ela estiver suja não aciona uma bomba por exemplo e se tiver limpa sim,aciona a bomba.
Arduino e Cia 22 de outubro de 2014 13:39
Interessante esse projeto. Não tenho nada pronto com relação à isso, mas eu acho que nesse caso você poderia construir alguma solução com um ldr no fundo do tanque/caixa, e uma luz direcionada (sugiro um módulo laser) para verificar se a água está suja ou não.
Essa solução depende de vários testes e ajustes, mas a idéia do laser pode ser um ponto de partida.
Anônimo 5 de agosto de 2017 20:50
Boa noite! Nesse caso um sensor infravermelho não seria o mais ideal não??
Gostei da ideia do colega e quero aprimorar.
Anônimo 15 de junho de 2015 16:52
Desculpe duplicar o post, mas o anterior não ficou adequado. na verdade, gostaria de saber se tem como controlar a rotação de um ventilador AC 127V para uma faixa de luminosidades lidas de um LDR e não um liga/desliga como o descrito neste tópico (http://blog.filipeflop.com/modulos/controle-modulo-rele-arduino.html#comment-14520). Trata-se da aplicação do Arduino como PID, para adequar o comportamento de acordo com a variação do Set-point.
Pedro Alexandre Freitas 25 de junho de 2015 21:36
Quais os ajustes devo fazer nesse circuito para controlar o brilho de uma lâmpada de 24V por exemplo? O LDR varia gradativamente a sua resistência de acordo com a luminosidade? Quero transformar essa variação gradativa numa variação proporcional na lâmpada.
Arduino e Cia 26 de junho de 2015 17:52
Exato, esse é o princípio do LDR, variar a resistência de acordo com a luminosidade. Dependendo do tipo de lâmpada que vc for utilizar, vai precisar de um circuito auxiliar.
Victor Péret 20 de agosto de 2015 18:12
Olá, estou com uma duvida, gostaria de por varios LEDs tentei por ' int Led = 8; 9; 10; ' e ' int Led = 8, 9, 10; ' mas nada disso funcionou,
Arduino e Cia 28 de agosto de 2015 14:16
int led3 =10;
Led Tecnico 24 de agosto de 2015 11:27
Ola amigo bom dia, sou curioso em eletronica e a pouco tempo começei a adquirir algumas placas e sensores Arduino.
Gostaria de saber se é possivel me ajudar estou querendo fazer um circuito que possa estar controlando um refletor de led que tenho aqui no meu quintal, a idéia é o seguinte:
Tenho uma pequena placa Solar que carrega uma bateria e me fornece 12V ok, o que pretendo fazer é um circuito usando um LDR para ligar o circuito ao escurecer e assim que ligar uma saida PWM do Arduino no valor maximo e depois de algum tempo ele diminua os pulsos pela metade e depois de mais um certo tempo ele desliga, fazendo assim eu ter um melhor aproveitamento da carga da bateria. Se puder me ajudar ou indicar alguma coisa neste sentido que possa estar usando ficarei muito Grato. Obrigado
Arduino e Cia 27 de agosto de 2015 11:58
Você pode utilizar essa mesma solução do "dimmer", só precisa ver como integrar isso ao refletor de led que vc tem.
Unknown 13 de novembro de 2015 02:10
Boa noite! Belo tutorial! Como eu consigo achar a função transferência deste modelo? Obrigado!
Arduino e Cia 15 de novembro de 2015 11:03
Não entendi a pergunta, o que é função transferência ? :/
Costuras da Normalia 1 de dezembro de 2015 23:32
Boa noite amigo, esse primeiro esquema junto a um relé srd 5v, no caso pra acionar lampadas de 127, daria certo?
Arduino e Cia 2 de dezembro de 2015 14:40
Daria sim, sem problemas.
Olá, o valor da luminosidade é em que unidade?
Arduino e Cia 5 de dezembro de 2015 15:11
O LDR apenas varia a resistência de acordo com a luz, creio que com ele você não vai ter muita precisão em valores de luminosidade. Para esse tipo de medição, utiliza um sensor de luz como esse:
http://www.filipeflop.com/pd-152bd1-sensor-de-luz-tsl2561-lux-luminosidade.html
Anônimo 21 de dezembro de 2015 09:57
gostaria de fazer um disparador de câmera DSLR, para captar raios. A ideia é colocar um LDR na ocular do obturador da câmera, e quando houver um clarão do raio, o arduino dispare o clique. Pôrem estou em duvida se um LDR é a melhor opção de sensor para essa aplicação.
Arduino e Cia 21 de dezembro de 2015 10:48
Acho que vai depender da intensidade do raio, e o local onde você vai colocar a câmera. talvez se você "direcionar" o LDR para o céu, utilizando um tubo, ajude. Não entendo muito dessa parte de fotografia, mas é uma ideia.
Existe também esse sensor de luz aqui, que eu pretendo fazer um post em breve. É mais preciso que um LDR:
Se puder depois me falar qual solução funcionou pra vc, seria legal para compartilhar com os outros leitores do blog. :)
Fagner Freire 29 de janeiro de 2016 10:44
Bom dia, gostaria de saber como poderia fazer um carrinho seguidor de linha preta
Lucas Araújo 16 de abril de 2016 18:30
Boa noite, estou com um problema na programação. Não sei como comparar duas variáveis "char".Eu tentei comparar assim:
Considerando que as variáveis letra e resposta sejam char.
if(letra == resposta){
Mas n dá certo, msm q as variáveis sejam diferentes o contador aumenta.
sdi rheinheimer 30 de abril de 2016 21:04
Boa noite.Parabéns pelo post,me ajudou muito.Obrigado
Arduino e Cia 8 de maio de 2016 15:48
Opa. Valeu. Abraço! :)
Luiz C 14 de setembro de 2016 14:29
Olá. Boa tarde. Será que pode me dar uma dica? Estou tentando montar um circuito simples com o LDR e arduino com a finalidade apenas de determinar 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 testar? (obs.: estou usando o módulo pronto do LDR que vem com o potenciômetro exatamente o deste endereço http://www.filipeflop.com/pd-10fd75-sensor-de-luz-ldr.html?ct=41d97&p=3&s=1, o arduino é o mega 2560 e tudo rodando no Linux Ubuntu). O código que estou usando é bem simples. Segue abaixo o código. Desde já agradeço. Att, Luiz.
float sensorValue = 0.000; // value read from the pot
Caio Ribeiro Pereira 15 de setembro de 2016 17:36
Quero ligar esse LDR num raspberry, o esquema seria o mesmo, apenas mudando a porta A5 por uma GPIO? E sobre a entrada, posso usar uma de 3.3v ou é necessário 5v para usar o LDR?
Arduino e Cia 24 de setembro de 2016 20:26
Você vai precisar de um conversor analógico digital.. o RPi não tem porta analógica...
Dê uma olhada nesse artigo aqui, por favor: https://learn.adafruit.com/raspberry-pi-analog-to-digital-converters/overview
Lucas Garcia 22 de setembro de 2016 11:40
Bom dia, queria saber se da para aumentar o brilho do LED gradativamente conforme fica mais escuro utilizando o LDR como sensor de brilho.
Se for possível, posso fazer isso como?
Arduino e Cia 24 de setembro de 2016 20:09
Dê uma olhada nesse artigo aqui, que usa o potenciômetro.. Troque o potenciômetro pelo LDR e faça um teste.. talvez precisa de alguns ajustes na faixa de leitura, mas o principio de funcionamento é o mesmo.
http://www.arduinoecia.com.br/2013/07/dimmer-usando-portas-analogicas-para.html
Lucas Garcia 24 de setembro de 2016 20:16
Obg pela atenção, vou dar uma olhada, enooois
Alexandre Vitoria 13 de outubro de 2016 23:43
Por favor, estou precisando de uma orientação para controlar a velocidade de um servo motor. É um sensor de luminosidade, e está funcionando corretamente, em 3 ângulos. Apenas quero que ele se desloque mais lentamente de um angulo a outro.
int pinS1dir = 1; // Entrada analogica A1
float S1dir = 0; // Recebe o valor do sensor da direita
int pinS2esq = 0; // Entrada analogica A0
float S2esq = 0; // Recebe o valor do sensor da esquerda
S1dir = analogRead(pinS1dir); // Le valores de 0 a 1023
S2esq = analogRead(pinS2esq); // Le valores de 0 a 1023
if(S2esq*0.80 >= S1dir)
else if(S1dir*0.80 >= S2esq)
Alef Dias 17 de outubro de 2016 22:25
Ola meu amigo fez com arduino um sistema de liga e deliga luz pelo computador agora ta passando pro celular so que tem uma linha de comando que um amigo dele passou e ele não me passa vcs tem essa linha de comando feito para me arrumar
Anônimo 8 de janeiro de 2017 18:34
Queria fazer uma pergunta urgente !!!
Se eu quisesse registrar o TEMPO(DATA E HORA) que o Led apaga e mandar printar na tela, como ficaria a programação ? URGENTE!!
Implementei o acionamento deste sensor LDR no meu projeto.
Funcionou perfeito....
Mas estou tentando acionar o mesmo led que é ligado quando o ldr fica sem luminosidade também de forma remota(pagina web ethernet).
O problema que quando envio o comando pela pagina web para ligar o led que é acionado pelo ldr, o mesmo liga e desliga, não se mantém ligado. Acho que o codigo que detecta se esta claro ou escuro deliga o led pois no momento do teste esta claro .
Meu objetivo é ligar o led tanto pela variacao do ldr quanto pelo comando enviado pela pagina web.
Alguém tem alguma dica para resolver esse problema?
Marinaldo Abdon 25 de setembro de 2017 09:28
Senhores, bom dia. Montei esse circuito do LDR exatamente como está, mas há um problema quanto ao controle do fechamento de rele, pois ele fecha e abre inúmeras vezes quando a luminosidade transita de claro pra escuro e vice versa de forma lenta. O que posso fazer pra resolver esse "flicker"???
Marinaldo Abdon 25 de setembro de 2017 09:31
Desculpem-me, eu usei esse esquema e Sketch para ligar um relê em vez de um led. E está ocorrendo inúmeros fechamentos e aberturas do relê quando a luminosidade vai de claro para escuro de forma lenta, tipo quando está escurecendo. Alguém pode ajudar, obrigado.
Arduino e Cia 3 de outubro de 2017 09:58
Bom dia Marinaldo,
Você pode limitar a faixa em que o LDR vai acionar o relé usando comandos IF. Exemplo:
IF (luminosidade >0 e luminosidade <300)
//liga rele
IF (luminosidade >800 e luminosidade <1000)
//desliga rele
Nesse caso, você pode colocar algum comando entre a luminosidade de 300 e 800 para que o relé não seja acionado.
Westin Games 2 de outubro de 2017 19:39
Ola Gostaria de Saber como faço para quando eu passar o dedo no sensor ele mudara de cor e se eu voltar novamento ele acende outra cor e assim adiante!
Como Fose um botão aperta uma vez ele acender uma cor aperta de novo acende outra, Eu queria Fazer assim com Sensor Ldr. Poderia me ajudar queria ver a programação, e no modo ArduinoBlock
123 21 de setembro de 2018 12:10
Boa tarde, gostaria de saber quais mudanças poderia fazer na programação do arduino para ao invés do led ligar e desligar com o sensor ldr ele variar entre luz forte e luz fraca sem desligar.