Inicio » Sensores para Arduino » Fotorresistencias

(Última actualización: 15 de octubre de 2023)

¿Qué es una fotorresistencia?

Una fotorresistencia, célula fotoeléctrica o LDR (del inglés «Light Dependent Resistor») es un componente eléctrico que varía su resistencia eléctrica en función de la luz que incide sobre él. Son un tipo de resistencia variable.

fotorresistencia

Suelen estar fabricadas con materiales semiconductores que aumentan su conductividad eléctrica cuando se exponen a la luz, como el sulfuro de cadmio (CdS) o el óxido de plomo (PbO). Esto significa que, a mayor cantidad de luz, menor resistencia y viceversa.

¿Para que sirve una fotorresistencia?

Hay una gran variedad de usos que le puedes dar a una fotorresistencia. Entre los escenarios más comunes se encuentran los siguientes:

  • Detectar la presencia o ausencia de luz en una habitación o medir la intensidad de la misma.
  • Sistemas de iluminación automática que encienden o apagan las luces en función de la intensidad de luz que existe en el ambiente.
  • Controlar de movimiento en sistemas de alarma.
  • Regular la exposición de cámaras fotográficas.
  • Detectar la luz infrarroja en un sistema de control remoto.

¿Cómo funciona una fotorresistencia?

Como ya mencioné anteriormente, las fotorresistencias están fabricadas con materiales semiconductores que reaccionan a la luz, variando su resistencia eléctrica.

Los fotones de la luz interactúan con los átomos del material, lo que provoca que se liberen electrones. Esta liberación de electrones crea pares electrón-hueco (un hueco es la ausencia de un electrón), que son los responsables del aumento de conductividad eléctrica y de la disminución de la resistencia.

Cuanta más luz incide sobre el material, más electrones se liberan, por lo que la resistencia disminuye de forma inversamente proporcional a la intensidad de la luz.

¿Cuántos ohmios tiene una fotorresistencia?

No existe una única respuesta para esta pregunta, depende del modelo de la fotorresistencia.

A continuación te dejo una tabla de fotorresistencias comunes, con sus respectivas especificaciones, para que puedas consultar cuál es la que mejor se adapta a tus necesidades.

ModeloVoltaje máximoResistencia a la luzResistencia oscuraTiempo respuesta
(arriba / abajo)
GL5506150V DC2KΩ – 5KΩ0.2MΩ30ms
GL5516150V DC5KΩ – 10KΩ0.5MΩ20ms / 30ms
GL5528150V DC10KΩ – 20KΩ2MΩ20ms / 30ms
GL5537150V DC20KΩ – 50KΩ3MΩ20ms / 30ms
GL5539150V DC30KΩ – 50KΩ3MΩ20ms / 30ms
GL5549150V DC50KΩ – 100KΩ10MΩ20ms / 30ms

En el siguiente apartado puedes aprender a calcular la resistencia más apropiada a tu circuito para que te resulte más sencillo elegir la fotorresistencia correcta.

¿Cómo conectar una fotorresistencia con Arduino?

En el siguiente esquema puedes ver las conexiones básicas de una fotorresistencia con Arduino:

conexión fotorresistencias con Arduino

Como habrás podido comprobar, la fotorresistencia (que también es una resistencia, pero variable) está conectada en serie con una segunda resistencia de valor fijo, esta segunda de 10KΩ.

Por otro lado, la fotoresistencia va conectada a 5V y la resistencai fija a GND.

Justo entre las dos resistencias va la conexión con Arduino, en este caso con un pin analógico (el pin A3). A través de este pin entrarán diferentes valores en el Arduino en función de la cantidad de luz que incida sobre la fotorresistencia.

Divisor de tensión

Este circuito es lo que se conoce como divisor de tensión. Vamos a analizarlo un poco más en detalle para que lo entiendas.

El siguiente circuito es exactamente el mismo pero en formato esquemático:

R1 es la fotorresistencia y R2 la reistencia fija, pero por un momento imagina que las dos resistencias (R1 y R2) fuesen fijas y ninguna de las dos fuese una fotorresistencia:

Imagina también que ambas resistencias tuviesen el mismo valor. Si estas condiciones fuesen ciertas, en el punto A, que es justo donde está la conexión con Arduino, el voltaje sería exactamente la mitad, es decir, 2.5V. ¿Cómo lo se? Pues muy simple, aplicando la Ley de Ohm:

I = V / R

Como hay 2 resistencias en serie, R es igual a la suma de ambas resistencias, es decir:

I = V / (R1 + R2)

Sabemos que V es 5V y sabemos que R2 es 10KΩ. Como estamos suponiendo que ambas resistencias son iguales, R1 también es de 10KΩ. Pasando todo a Ω nos queda así:

I = 5V / (10000Ω + 10000Ω)
I = 5V / 20000Ω
I = 0.00025A

Ahora que ya conocemos la corriente (I) que atraviesa el circuito, podemos calcular el voltaje en el punto A utilizando esta formula:

VA = I x R2

Sustituyendo I y R2 obtenemos:

VA = 0.00025A x 10000Ω = 2.5V

Prueba con el valor que quieras para R1 y R2, el valor de VA siempre será la mitad cuando ambas resistencias sean iguales.

Divisor de tensión con fotorresistencia

Ahora volvamos a nuestro circuito inicial. R1 es una fotorresistencia, por lo que su valor cambiará en función de la luz que incida sobre ella. Supongamos que la fotorresistencia ha reducido su resistencia a 5 KΩ. Si aplicamos de nuevo la Ley de Ohm igual que antes vemos que la corriente varía:

I = V / (R1 + R2)
I = 5V / (10000Ω + 5000Ω)
I = 5V / 15000Ω
I = 0.00033A

Si ahora calculamos el voltaje en el punto A obtenemos el siguiente resultado:

VA = I x R2
VA = 0.00033A x 10000Ω = 3.3V

Si lo comparamos con el resultado anterior (2.5V) vemos que ahora el voltaje es mayor (3.3V), puesto que la resistencia R1 es menor como consecuencia de la luz.

El voltaje calculado en el punto A es lo que recibe Arduino a través del pin analógico en el que está conectada la fotorresistencia, en nuestro ejemplo el pin A3. Leyendo el valor que recibimos a través de ese pin sabremos si está incidiendo o no luz sobre la fotorresistencia.

¿Cómo programar una fotorresistencia con Arduino?

Ya solo nos queda el último detalle para completar la conexión de la fotorresistencia con nuestro Arduino. Programar un sketch que nos permita leer los valores que entran a través del pin analógico para interpretarlos y actuar en consecuencia.

Utilizaremos el siguiente sketch:

//declaraciones
const int FR = A3;
int entrada = 0;

//configuración
void setup() {
  Serial.begin(9600);
}

//función loop
void loop() {
  entrada = analogRead(FR);
  Serial.println(entrada);
  delay(500);
}

Como puedes ver es bastante sencillo.

Declaraciones

Empecemos por las declaraciones. Primero he declarado una constantes que he llamado FR a la que le he dado valor A3. Todos los pines analógicos tienen un identificador asociado: A0, A1, A2, etc. Como estamos utilizando el pin analógico 3, para hacer la lectura usaremos su identificador correspondiente: A3.

Por otro lado, he declarado una variable entera, que he llamado entrada, en la que posteriormente guardaremos las lecturas del pin A3.

Configuración

En cuanto a la configuración, solo inicializo el puerto serie con Serial.begin(9600) para poder mostrar a través del monitor serie los valores que leamos del pin A3.

Para utilizar los pines analógicos no es necesario configurarlos como entrada o salida como ocurre con los digitales, puesto que estos pines siempre son entradas.

Función loop

Y ya solo nos queda la función loop. En este caso solo leeremos el valor del pin analógico para ver cómo varia su valor en función de la luz que incide sobre la fotorresistencia.

Con la función analogRead(FR) leemos el pin A3. Recuerda que declaramos una constantes FR anteriormente para identificar este pin. El valor resultante de la lectura lo almacenamos en la variable entrada.

En la siguiente línea mostramos el valor de entrada en el monitor serie utilizando Serial.println(entrada) y posteriormente esperamos medio segundo (500 ms) utilizando la instrucción delay(500).

Ejecuta el sketch en tu Arduino y observa lo que aparece en el monitor serie cuando tapas la fotorresistencia y cuando aplicas un foco de luz sobre ella. Verás que los valores aumentan cuando aumenta la intensidad de la luz y disminuyen cuando hay más oscuridad.

A partir de la información que recojas de estas lecturas podrás definir los valores umbrales que usarás en tu proyectos.

Tutoriales con fotorresistencias y Arduino

Sigue practicando con los siguientes tutoriales de fotorresistencias:


Te avisaré cuando publique nuevo contenido en paraarduino.com y en mi canal de YouTube (@ParaArduino).

No hemos podido validar tu suscripción.
¡Se ha realizado tu suscripción!

Newsletter

Suscríbete para que te avise cuando publique nuevo contenido.

Usamos Brevo como plataforma de marketing. Al hacer clic a continuación para enviar este formulario, consiente que la información proporcionada sea transferida a Brevo para su procesamiento de acuerdo con sus términos de uso