Arduino con fotoresistencia (LDR)

 Buenas, en este proyecto vamos a ver el funcionamiento de una fotoresistencia LDR, que nos permitirá detectar el nivel de luminosidad en el ambiente.

LDR

El componente LDR (Light Dependant Resistor, de sus siglas en inglés) varía su resistencia interna de manera inversamente proporcional a la luz que detecta. El LDR puede ser muy útil para detectar la luminosidad del ambiente y gestionar esta información para llevar a cabo cualquier acción (encender un led, una lámpara, etc)

 

Detalle de un LDR

Divisor de tensión

Pero cómo podemos medir el valor de la resistencia R del LDR?

Añadiendo una segunda resistencia en serie al LDR y conectando entre medias la entrada analógica por ejemplo A0

Esquema de conexión, divisor de tensión

Este tipo de circuito se denomina divisor de tensión y permite que podamos medir la tensión de salida variable gracias a la inserción del cable del pin analógico A0 entre la resistencia del LDR (R1) y la resistencia de 10K (R2) que hemos puesto en serie.

¿Y por qué 10k para R2? En este proyecto estamos haciendo uso del modelo LDR GL5528 cuya resistencia la luz brillante oscila entre los 10 y 20K según el datasheet.

Ahora solo queda armar el circuito y ver qué salida nos da para estos valores.

Diagrama de conexión

En el diagrama de conexión usamos dos componentes, un LED con su resistencia conectado al pin D5 y el LDR junto con una resistencia en serie de 10K  y entre medias el pin analógico A0 conectado para leer la variación de voltaje en base a la variación de la resistencia variable (LDR) tipificada como R1.
Prototipo de conexión

Código

Con el siguiente código podremos ver la salida por consola serie del valor que lee el pin analógico A0 y determinar en los distintos escenarios o ambientes cuál es el valor umbral para determinar si se desencadena alguna acción (por ejemplo encender un LED)
 
#define LDRPin  A0   //Pin del LDR
#define LEDPin 5

int V;


void setup()
{
   Serial.begin(9600);
   pinMode(LEDPin, OUTPUT);
}

void loop()
{
   V = analogRead(LDRPin);         
  if(V < 300)
    digitalWrite(LEDPin, HIGH);
    else
    digitalWrite(LEDPin, LOW);
    
   Serial.println(V);   
   delay(1000);
}

 
Y eso es todo. Ahora podemos combinar el LDR con un sensor PIR y obtener iluminación nocturna más"inteligente".
Gracias por tu tiempo y atención.
Un saludo

Fuentes

  • https://www.geekfactory.mx/tutoriales/tutoriales-arduino/tutorial-arduino-con-fotoresistencia-ldr/
  • https://www.prometec.net/ldrs/