Si alguna vez te has preguntado cómo medir eficientemente el nivel de luz en un entorno con Arduino, estás en el sitio adecuado. En este artículo, te explicaremos paso a paso cómo hacerlo usando una fotoresistencia LDR, también conocida como fotorresistor. Estas pequeñas maravillas tecnológicas son componentes electrónicos capaces de cambiar su resistencia según la cantidad de luz que reciben, lo que abre un sinfín de posibilidades para proyectos electrónicos y de automatización.
Las aplicaciones del sensor de luz con Arduino son muchas: desde sistemas de iluminación automática hasta robots que se orientan en función de la luz. Lo mejor de todo es que es un componente asequible y fácil de utilizar. Aquí te daremos toda la información necesaria para que puedas construir tu propio sistema de medición de luz con Arduino y aprovechar todo su potencial.
¿Qué es una LDR y cómo funciona?
Una LDR (Light Dependent Resistor) es una resistencia cuya magnitud varía dependiendo de la cantidad de luz que incide sobre ella. En condiciones de oscuridad, la resistencia es muy alta, llegando a valores de hasta 1 MOhm. Por el contrario, cuando la LDR recibe abundante luz, la resistencia disminuye considerablemente, llegando a valores entre 50 a 100 Ohms bajo luz intensa.
Su funcionamiento se basa en el principio de conductividad de materiales semiconductores. Al recibir luz, los fotones energizan los electrones del material, lo que facilita el flujo de corriente y, por lo tanto, disminuye la resistencia. Este tipo de sensor es muy útil para aplicaciones donde se requiera una medida relativa de la luz en el entorno.
Características de la LDR
Este componente es muy popular debido a su bajo costo y facilidad de uso. Los valores típicos de su resistencia van desde 1 MOhm en completa oscuridad hasta 50-100 Ohm en luz brillante. Sin embargo, cabe mencionar que no son los sensores más precisos si lo que buscas es medir con exactitud la iluminancia (luz en lux), ya que pueden verse afectados por factores como la temperatura.
La variación de resistencia es bastante lenta, tardando entre 20 a 100 milisegundos dependiendo del modelo. Esto significa que no es adecuado para detectar cambios rápidos de luz, como los producidos bajo luces alimentadas por corriente alterna, pero ofrece una estabilidad excelente en condiciones de luz más constantes.
Si bien las LDR son más adecuadas para medir tendencias de luz que para proporcionar datos exactos, su bajo coste y facilidad de integración con las placas Arduino las convierten en un sensor ideal para proyectos DIY.
Circuito y Esquema de Conexión
Para que el Arduino pueda medir la variación de resistencia del LDR, es necesario montar el sensor en lo que se conoce como un divisor de tensión. Este es un circuito muy simple compuesto por la LDR y una resistencia fija conectadas en serie. Se coloca la LDR entre el voltaje de entrada (por ejemplo, 5V en la placa Arduino Uno) y el pin de entrada analógica, y la resistencia fija se conecta entre el pin y la masa (GND).
El valor de la resistencia fija suele ser de 10 kOhms, aunque puede variar dependiendo de la sensibilidad que quieras conseguir en tu medida.
Montaje y Ejemplos de Código
Para montar un sistema básico con Arduino y una LDR, lo primero que debes hacer es conectar los siguientes elementos:
- Un extremo de la LDR a la alimentación de 5V.
- El otro extremo de la LDR a la entrada analógica (A0, por ejemplo) y al mismo tiempo a una resistencia fija que irá conectada a masa.
Con este montaje puedes empezar a leer los valores que la LDR proporciona a través de la entrada analógica. El código que sigue es un ejemplo básico para leer esos valores:
const int pinLDR = A0;
void setup() {
Serial.begin(9600); // Iniciar monitor serie}
void loop() {
int valorLDR = analogRead(pinLDR); // Leer valor de LDR
Serial.println(valorLDR); // Imprimir valor en monitor
delay(500);
}
Este código imprimirá valores comprendidos entre 0 (es decir, cuando no hay luz) y 1023 (máxima luz recibida). Estos valores son proporcionales a la luz percibida por la LDR.
El comportamiento de la resistencia en función de la luz
Como ya se ha mencionado, la resistencia de la LDR disminuye a medida que recibe más luz. Para obtener una medición precisa de la cantidad de luz, necesitas conocer los valores de resistencia de tu LDR en diferentes condiciones de iluminación.
En la serie GL55, por ejemplo, los valores van de 5 kΩ a 200 kΩ en presencia de luz y desde 500 kΩ hasta 10 MΩ en condiciones de oscuridad. Estos valores pueden variar de un modelo a otro, por lo que siempre es recomendable consultar la hoja de datos del fabricante del sensor.
Una peculiaridad interesante de las LDR es que su sensibilidad es mayor en la porción del espectro de luz verde, aproximadamente en longitudes de onda de 540 nm. Esto quiere decir que las LDR responden mejor a la luz verde que a otras partes del espectro visible.
Aplicaciones Prácticas
Las posibles aplicaciones de las LDR conectadas a un Arduino son casi infinitas. Entre las más prácticas se encuentran los sistemas de iluminación automática, donde el circuito puede activar o desactivar luces según los niveles de luz detectados. También se usan para robots seguidores de luz y sistemas domóticos.
Puedes, por ejemplo, crear un sistema donde a medida que los niveles de luz disminuyan, un LED se encienda para compensar la falta de luz. Aquí un ejemplo sencillo de código:
int LDRPin = A0; // Pin para la LDR
int LEDPin = 13; // Pin para el LED
int threshold = 500; // Umbral para encender el LED
void setup() {
pinMode(LEDPin, OUTPUT);
pinMode(LDRPin, INPUT);}
void loop() {
int valorLuz = analogRead(LDRPin);
if (valorLuz < threshold) {
digitalWrite(LEDPin, HIGH); // Enciende el LED
} else {
digitalWrite(LEDPin, LOW); // Apaga el LED
}
delay(100);}
Este pequeño programa lee el valor de la LDR y, si el nivel de luz es inferior al umbral establecido, enciende el LED. De lo contrario, lo apaga. Un ejemplo fácil pero altamente funcional en proyectos de automatización de iluminación.
Limitaciones y precauciones
Aunque el uso de una LDR es muy conveniente en muchos proyectos, es importante tener en cuenta algunas de sus limitaciones:
- No son muy precisas si lo que buscas es medir la intensidad exacta de la luz en lux.
- Su comportamiento puede variar según la temperatura.
- Funcionan mejor para detectar cambios mayores de luz y no variaciones rápidas.