LDR (Fotoresistor): O Resistor que Enxerga — Eletrônica Básica
LDRFotoresistor · Light Dependent Resistor
Existe um resistor que enxerga: no escuro ele segura a corrente; na luz, deixa passar. O olho mais barato da eletrônica.
💡 O que é um LDR?
O LDR (Light Dependent Resistor) — também chamado de fotoresistor ou fotocélula — é um resistor cujo valor de resistência muda conforme a quantidade de luz que ele recebe. Mais luz = menos resistência. Menos luz = mais resistência.
É feito de material semicondutor fotossensível (geralmente sulfeto de cádmio — CdS). Quando fótons de luz atingem o material, liberam elétrons que facilitam a condução de corrente — por isso a resistência cai na presença de luz.
⚙️ Como Funciona
🌑 No Escuro
Alta RPoucos fótons → poucos elétrons livres → alta resistência. O LDR "segura" a corrente. Pode chegar a megaohms (MΩ) na escuridão total.
☀️ Na Luz
Baixa RMuitos fótons → muitos elétrons livres → baixa resistência. O LDR "deixa passar" a corrente. Cai para centenas de ohms com luz intensa.
📊 Os Valores — Do Escuro ao Sol
A variação é enorme — de centenas de ohms a megaohms. É exatamente essa variação que você lê pelo Arduino:
| Condição de Luz | Resistência do LDR | Tensão em A0 (5V)* | analogRead() |
|---|---|---|---|
| 🌑 Escuridão total | ~1 MΩ | ~0.05 V | ~10 |
| 🌒 Ambiente escuro | ~100 kΩ | ~0.45 V | ~93 |
| 💡 Luz ambiente | ~10 kΩ | ~2.5 V | ~512 |
| 🔦 Luz intensa | ~1 kΩ | ~4.55 V | ~930 |
| ☀️ Luz solar direta | ~200 Ω | ~4.9 V | ~1000 |
* Com resistor fixo de 10 kΩ em divisor de tensão
🔌 Como Ligar — Divisor de Tensão
O LDR sozinho não dá tensão — ele precisa de um resistor fixo parceiro para formar um divisor de tensão. O pino analógico do Arduino lê a tensão no ponto do meio:
Circuito Divisor de Tensão com LDR
Escuro → R_LDR grande → V(A0) baixa → analogRead pequeno.
Claro → R_LDR pequena → V(A0) alta → analogRead grande.
⚠️ ATENÇÃO: Limitações do LDR
O LDR é lento para reagir (dezenas de milissegundos) e não serve para precisão fina — a resposta varia com a temperatura e entre unidades diferentes. Mas é incrivelmente barato e ótimo para detectar simplesmente claro × escuro. Para precisão, use fotodiodo ou fototransistor.
- Tempo de resposta: ~20 ms (claro→escuro) a ~100 ms (escuro→claro)
- Cada LDR tem curva ligeiramente diferente — calibre no seu ambiente
- Sensível à temperatura: em ambientes muito quentes a resistência muda
🌍 Onde o LDR é Usado
Do poste de rua ao robô seguidor de linha — o LDR está em projetos simples e elegantes:
Luz Automática
Liga a lâmpada ao anoitecer, desliga de manhã. O clássico do LDR.
Sensor de Presença
Detecta interrupção de feixe de luz — portão, gaveta, contador de peças.
Seguidor de Linha
Robô detecta linha preta/branca com par LDR + LED para navegar.
Brinquedos e Jogos
Interruptores por luz, alarmes simples, displays que ajustam brilho.
📐 Símbolo no Esquema Elétrico
Símbolo do LDR (Fotoresistor) — IEC/IEEE
O símbolo é um resistor padrão (retângulo IEC) com duas setas de luz apontando para ele. As setas indicam que é fotossensível.
💻 Na Prática com Arduino
O sketch mais clássico: LED que acende automaticamente no escuro — como um poste de rua em miniatura:
// ┌────────────────────────────────────────────────────────────────┐ // │ LDR + LED — Luz automática (como um poste de rua!) │ // │ Ligação: VCC → LDR → A0 → 10kΩ → GND │ // └────────────────────────────────────────────────────────────────┘ const int LDR_PIN = A0; // divisor: VCC→LDR→A0→10kΩ→GND const int LED_PIN = 13; // LED onboard (ou externo com resistor) const int LIMIAR = 400; // ajuste conforme seu ambiente void setup() { pinMode(LED_PIN, OUTPUT); Serial.begin(9600); Serial.println("LDR pronto! Abra o Monitor Serial."); } void loop() { int leitura = analogRead(LDR_PIN); // 0 (escuro) a 1023 (claro) Serial.print("LDR: "); Serial.print(leitura); if (leitura < LIMIAR) { digitalWrite(LED_PIN, HIGH); Serial.println(" → ESCURO — LED LIGADO 💡"); } else { digitalWrite(LED_PIN, LOW); Serial.println(" → CLARO — LED DESLIGADO"); } delay(200); } // Dica: abra o Monitor Serial (9600 baud) e tampe/descubra o LDR // para ver a leitura mudar em tempo real. Ajuste LIMIAR!
// Quanto mais escuro o ambiente → mais brilhante o LED // Usa mapeamento inverso para transformar leitura em PWM const int LDR_PIN = A0; const int LED_PIN = 9; // pino PWM! void setup() { pinMode(LED_PIN, OUTPUT); } void loop() { int leitura = analogRead(LDR_PIN); // 0–1023 // Mapeia: escuro (leitura baixa) → brilho alto int brilho = map(leitura, 0, 1023, 255, 0); analogWrite(LED_PIN, brilho); // PWM 0–255 delay(100); }
✅ Boas Práticas com LDR
-
Use sempre o resistor fixo em divisor de tensão. O LDR sozinho não produz tensão. Sem o resistor parceiro, o pino analógico fica "no ar" e a leitura é inválida. Use 10 kΩ como ponto de partida.
-
Calibre o limiar no ambiente real do projeto. A leitura ideal depende da iluminação local. Imprima os valores no Monitor Serial e ajuste o LIMIAR conforme o que fizer sentido para seu projeto.
-
Não use o LDR para medir lux com precisão. Ele é ótimo para detectar claro × escuro, mas cada unidade tem curva ligeiramente diferente. Para medição precisa de luminosidade, use um sensor BH1750 ou TSL2561.
-
O LDR é lento — não exija reação em milissegundos. Um delay() de 100–200 ms no loop é suficiente e evita leituras desnecessárias. Para detecção de alta velocidade, use fotodiodo.
-
Adicione um capacitor (100nF) para filtrar ruído. Em ambientes com lâmpadas fluorescentes ou LED piscando (120 Hz), o LDR pode oscilar. Um capacitor em paralelo com o resistor fixo suaviza a leitura.
-
Proteja o LDR externo de água e luz direta intensa. Para projetos externos, use caixa com janela translúcida ou difusor. Luz solar direta em LDR descoberto pode saturar a leitura em 1023 indefinidamente.
🛒 LDRs e Sensores de Luz na Mamute
LDRs, fotoresistores e sensores para todos os seus projetos de automação e eletrônica
💡 Pronto para o projeto de luz automática?
LDRs, resistores, Arduino e tudo que você precisa para construir seu primeiro sensor de luminosidade.
🛒 Ver LDRs e Sensores na Mamute