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.

LDR acendendo LED com transistor

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:

Vf = 5 - 2,0R = \frac{Vf}{Imax}R = \frac{3}{0,020}R = 150\Omega

Detectar intensidade luminosa

Circuito para acender um LED quando está claro.

Circuito para LDR detectar se tem luz

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.

LDR com Arduino

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