O LDR é um sensor muito interessante de se implementar nos projetos. Como foi dito no outro post, ele permite a detecção da intensidade de luz em um ambiente. Portanto é preciso entender como usar ele nos circuitos, com ou sem microcontrolador.
Caso você não tenha visto o post explicando o que é o LDR e como ele funciona, clique aqui.
Sem microcontrolador
Imagine que desejamos fazer dois circuitos: um para acender um LED quando o ambiente estiver escuro; e outro para acender um LED caso o ambiente esteja iluminado. Para dispensar o uso de um microcontrolador, nós usaremos o transistor. Ele irá atuar como uma chave, deixando a corrente passar ou não dependendo do caso. Para entender o funcionamento e o circuito, é importante ler o post sobre o que é o transistor e sobre como usar o transistor.
Após a leitura, vamos aos dois circuitos:
Acendimento automático
Circuito para acender um LED quando está escuro.
No circuito acima, temos o nosso LED em série com um resistor ligado ao coletor do transistor. Isso porque ele é a nossa carga, então deve ficar conectado ao coletor ou emissor do transistor. A base do transistor é o nosso controle, é ela que dirá se a carga deve ser alimentada ou não, digamos assim. Portanto, criaremos um divisor de tensão na base, sendo que, uma das resistências é o próprio LDR.
Para entender o funcionamento desse circuito, basta pensar o seguinte: quanto maior a intensidade luminosa, menor o valor da resistência do LDR. E quanto menor esse valor, menor será a tensão em cima da base do transistor. Sendo assim, o transistor não permitirá a passagem de corrente. E a lógica inversa se aplica, quanto menor a intensidade de luz no LDR, maior a resistência e maior a tensão na base do transistor.
Basta pensar que, com uma resistência 0, seria como se o LDR não existisse e, assim, a base estaria ligada direto no GND. Com isso, o transistor não é acionado.
O valor da resistência R1 pode mudar, pois, de acordo com o post de como usar o transistor, os cálculos dependem de Beta. E o Beta varia de transistor para transistor. Nesse caso, o ideal é resistores com valores altos (>10k). Também é possível colocar um potenciômetro e criar um ajuste para o circuito.
Cálculo do LED
O cálculo do LED é simples de ser feito. Leia esse post para saber mais. Basta saber a queda de tensão em cima do LED (olhar tabela) e subtrair da tensão de alimentação. Com isso, usando a lei de Ohm, é só dividir pela corrente limite. Neste caso, a tensão de alimentação é 5v e a corrente limite é 20mA (limite máx pra LED). Portanto se considerarmos um LED vermelho (queda de tensão de 2v aproximadamente) temos:
Detectar intensidade luminosa
Circuito para acender um LED quando está claro.
Como é possível observar, o circuito é praticamente o mesmo do anterior, porém com as resistências invertidas. Pra você observar o funcionamento, basta fazer a mesma análise de antes: quanto maior a intensidade luminosa menor o valor de resistência do LDR e, com isso, maior a tensão em cima da base do transistor. E o contrário se aplica. Para observar isso facilmente, considere o valor da resistência do LDR de 0, a tensão em cima da base será igual a da fonte.
Assim como no outro circuito, o valor da resistência R1 pode mudar e também é possível colocar um potenciômetro para criar um ajuste para o circuito. Nesse caso, o ideal é usar resistores com valores mais baixos (<5k). Por fim, o cálculo do resistor do LED é o mesmo.
Para outros tipos de circuito, basta seguir a mesma linha de raciocínio: utilizar transistores.
Microcontrolador
Essa é a forma mais fácil de usar o LDR, pois o nosso circuito constará apenas de um divisor de tensão. Dessa vez, a ideia é criar uma lógica para ler o valor da resistência do LDR. Vou utilizar o Arduino para facilitar o entendimento do processo.
Circuito
Basicamente é um divisor de tensão, sendo que um dos resistores é o LDR.
Temos o LDR conectado, em uma ponta, no 5v, e na outra, em um nó. Neste nó, estão conectados um cabo que vai pro A0 e um resistor. Por fim, na outra ponta deste resistor, ele é ligado ao GND. Ou seja, é um divisor de tensão, sendo que a tensão será lida no pino A0.
O valor do resistor independe, pois o importante será a leitura na programação. Porém, pode-se usar 470Ω,1000Ω… Calcule com a fórmula de divisor de tensão, ou teste e descubra um valor que encaixe bem no seu projeto.
Programação
Para entender a programação, sugiro que leia o post sobre leitura de valores analógicos com o Arduino.
Para fazer a conversão do valor lido para resistência, precisamos saber qual a faixa de leitura do nosso circuito. Para isso, faça a leitura do pino e mande printar no serial:
R = analogRead(ldr);
Serial.print(R);
No meu caso, os valores foram de 0 à 492. Com esses valores, é preciso criar uma regra de 3, de modo que: 492 (intensidade luminosa máxima) seja equivalente a 0Ω, e 0 (não há luz) seja equivalente a 10kΩ. Para isso, já existe o comando map no Arduino, basta apenas colocar as faixas.
map(analogRead(ldr),0,492,10000,0);
Basicamente o comando acima remapeia os valores de 0 a 492 entre 10000 e 0. Observe que a ordem importa, pois os valores máximos são trocados. Feito isso, é só printar o valor obtido.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #define ldr A0 float R; void setup(){ Serial.begin(9600); //Inicializa a comunicação serial pinMode(ldr, INPUT); //Define o pino A0 como saida } void loop(){ R = map(analogRead(ldr),0,492,10000,0); // Lê e converte o valor do LDR Serial.print(R); Serial.println(" Ohms"); delay(1000); } |
Agora já é possível criar seus projetos utilizando esse sensor tão simples e útil.
LDR – O que é e como funciona
olá, juro por Deus que o arduino tá me quebrando a cabeça, eu estou com um projeto pra um protótipo, mas preciso da seguinte configuração: que o led emita luz e o ldr capte, só isso!! Para que eu possa desenvolver um equipamento da área de química, será que você poderia me ajudar??? To atrasado no projeto já…
Obrigado, muito agradecido.
Olá, posso ajudar sim. Porém, preciso de mais informações a respeito do seu problema. Onde exatamente você está com dificuldade? (acionar o led, ler o valor do ldr, fazer o LED ser visto pelo LDR etc…) Qualquer coisa entre em contato comigo por e-mail (mundoprojetado@gmail.com) e envie fotos ou algum esquemático do projeto se for necessário para o entendimento.
Muito boa as suas informações…Esta de parabéns.
Tenho uma pergunta a fazer ao que se refere ao uso do ldr.
Estou com um projeto de iluminação do tipo led,montei uma placa PWM para alimentar os led’s,porém eu quero que a intensidade luminosa varie com o sensor LDR. Pergunto:eu consigo aumentar oi diminuir os espaços de onda quadrada com o uso do LDR?
Muitíssimo obrigado Jefferson. Consegue sim, mas depende do seu circuito. Se você estiver utilizando um microcontrolador, dá para medir a resistência do LDR assim como fiz no post e remapear o valor para os valores do PWM que você deseja, com o comando map. Agora, se você está usando um circuito à parte, recomendo dar uma olhada neste post, pois, no fim dele, tem um circuito que utiliza um CI 555 com um potenciômetro para variar o pulso (PWM) da alimentação de um motor. Enfim, dê uma olhada nestas questões que comentei e, qualquer coisa, pode voltar a perguntar e, se for o caso, me mande alguma foto do circuito que você está usando no meu email (mundoprojetado@gmail.com).
blá blá blá
Obrigado pelo retorno, Pablo. Espero que os demais posts do site possam trazer alguma informação útil para você.
Muito Obrigado pela explicação, está Super.
Coloco apenas uma questão, no circuito “para acender um LED quando está escuro”, existe a possibilidade de adicionar mais 1 LED mas para estar acesso apenas quando está Claro, e depois quando ficar escuro apaga esse Led e acende então o outro…
Obrigado!
Eu é que agradeço pelo feedback, Tiago!
Na hora de te responder reparei que os circuitos estavam com um pequeno erro, pois eu fiz os esquemáticos com um transistor BJT PNP, sendo que era pra ter sido um NPN. Mas a correção já está feita.
Existe esta possibilidade sim. Eu consegui isto configurando o circuito da seguinte forma: esquemático. Nesta configuração, quando a corrente fluir na base do transistor, o LED 1 irá acender e a queda de tensão em cima do transistor (entre coletor e emissor) será quase 0, portanto este novo LED (LED 2) ficará apagado. E, quando não houver corrente suficiente para saturar o transistor, o LED 1 será apagado e a queda de tensão em cima do transistor será alta o suficiente para que o LED 2 seja aceso. Enfim, espero ter ajudado.
bom dia. Excelente. Gostei. vou fazer um circuito desse. Ótima a explicação. Só assim posso desenvolver mais ainda meus conhecimentos na eletrônica. Parabéns pelo trabalho profissional. Obrigado. Resido no Rio de Janeiro, e estou à disposição de V.Sa.” QUE SEUS CONHECIMENTOS SEJAM AINDA MAIS ILUMINADOS POR DEUS”(21) 9.9502-0237
Boa tarde, Carlos! Muitíssimo obrigado pela mensagem, meu amigo. É ótimo saber que o conteúdo lhe foi útil. Que Deus ilumine sua jornada também. Abraço.
Bastante claro
Que ótimo, Tania! Obrigado pelo retorno.
Show a orientação acima, excelente.
Gostaria de perguntar se posso montar vários LDRs em série e em paralelo, para captação de movimento de luz, e se a utilização de múltiplos leds fará diferença na sensibilidade, no resultado e precisão na captação de luz. e como programar isso?
Agradeço seus comentários, estou iniciando meus conhecimentos no tema de programação e Arduino …
Olá, Marcelo. Obrigado! Pode montar sim. Se você montar os LDRs em série, o que muda é que a resistência total vai ser a soma de todos eles. Por exemplo, 3 LDRs de 10k em série darão uma resistência total de 30 kΩ no escuro e uma resistência total de centenas de ohms quando os 3 estiverem bem iluminados. No caso dos 3 LDRs (de 10k) em paralelo, a resistência total será 10k/3 = 3,33 kΩ no escuro e será de dezenas de ohms quando os 3 estiverem bem iluminados. Nos dois casos, não é possível saber de forma isolada a medição de cada LDR. Ao meu ver, a vantagem deste tipo de montagem é economizar pinos, pois você pode medir vários LDRs utilizando apenas 1 pino do Arduino. Mas, se você tiver mais pinos à disposição, é melhor ligar cada LDR em um pino diferente para conseguir medir cada um separadamente. E, ao meu ver também, a precisão da medição não mudaria fazendo as montagens série/paralelo.
Sobre os LEDs, quanto mais você usa, melhor o sensor detecta a luminosidade, mas não sei se teria um efeito na precisão. No caso do Arduino, a precisão da medição é limitada pela precisão da conversão AD do Arduino.
Enfim, te desejo sucesso na sua jornada de aprendizado!
Tem um circuito de ldr com transistor que quando luz liga led verde e quando escuro ligue led vermelho?
Excelente pergunta, Luciane. O jeito mais fácil de fazer seria usar 2 LDRs e replicar os dois circuitos apresentados no post. Entretanto, é possível fazer um arranjo para usar apenas 1 LDR e 1 transistor. Pelo que testei, o circuito seria mais ou menos assim. Talvez seja preciso ajustar os valores dos resistores.
gostei do conhecimento
Bacana, Rondynelle. Valeu pelo comentário!
Qual deve ser a tensão de entrada para que o comportamento do circuito seja o esperado? Todos os resistores disponíveis são adequados? Se o LDR estivesse no lugar de R2, o comportamento seria o mesmo? Justifique todos os questionamentos.
Olá turma alguem pode me ajudar nesta questão ?
Olá, Ledilson. Difícil te ajudar sem saber o circuito. Me mande por e-mail pra eu dar uma olhada: mundoprojetado@gmail.com
Olá Fábio, antes de mais nada, excelente a escrita, bem simples e direta. Muito esclarecedor (pelo menos para mim). Estou com uma dúvida: Montei um projeto semelhante a este segundo circuito, onde um led (no meu caso um buzzer) acende quando recebe intensidade de luz no LDR. A diferença é que no meu circuito eu não uso um resistor R1 (4,7 Kohms), pois ligo uma perna do ldr direto na base do transistor. Porque você usa esse resistor? Preciso usá-lo? Qual a diferença se eu não o usar ?
Que ótimo, Diego. Muito obrigado pelo feedback!
Excelente pergunta. Não sei dizer ao certo se existe um motivo exato de usar o resistor R1. Mas, se me lembro bem, quando fiz esse circuito, apenas segui o que era mais usual das pesquisas que tinha feito. Esse tipo de circuito com o R1 ligado no GND se chamada “polarização universal ou independente de β”. A razão pra utilizá-lo é ter um circuito menos sensível à temperatura (mais estável). Isso é desejado em circuitos que precisam tratar um sinal com alta fidelidade (o que não é o caso do circuito do LDR). No fim das contas, acho que tanto faz usar o R1 ou não. Claro que isso vai envolver um ajuste no valor da outra resistência (R2). Se para você funcionou bem sem o R1, então continue sem ele. Aqui no site tem um post sobre os tipos de polarização do transistor, caso queira dar uma lida.
Olá, muito bom e completo o artigo, parabéns!
Estou com uma questão e talvez você possa me ajudar, gostaria de fazer um circuito com LDR que, a partir da falta de luz, fosse gerado um pulso ( apenas um pulso) e caso a aluz nao volte em pouco segundo fosse gerado outro pulso e assim seguia ate que o LDR detectasse luz novamente. É possível algo assim?
Desde já muito obrigado e mais uma vez, parabéns!
Olá, Thiago. Muito obrigado!
Sobre sua dúvida, é totalmente possível sim. Porém não sei dizer a melhor foram de fazer isso, pois seria necessário queimar alguns neurônios por um tempo. Acredito que a forma mais fácil seria usando um microcontrolador (Arduino e afins). Mas, a implementação mais simples seria usando um circuito discreto diretamente. Neste último caso, você pode usar o CI 555 no modo monoestável para gerar os pulsos. Aqui no site tem um post detalhando o CI 555. Agora, sobre a geração do segundo pulso estar condicionada a falta de luz durante 2 segundos, talvez dê pra fazer isso criando uma máquina de estado com circuitos digitais (aqui no site tem um curso sobre eletrônica digital para te dar uma ideia). Ou talvez nem precise de uma máquina de estados e um circuito combinacional simples resolva o problema. Recomendo pedir umas ideias pro Chat-GPT.
Enfim, espero ter ajudado. Abraço!
Olá bom dia como faria pra fazer o led acender ao se iluminar o ldr, mas gostaria de fazer um circuito sem orecisar do arduino, obrigado.