Pic
shadow

Un interruptor crepuscular es un circuito que cambia su comportamiento cuando se alcanza una cierta intensidad de luz. Un ejemplo lo podemos encontrar en prácticamente cualquier ciudad, cuando anochece o por la razón que sea hay poca luz (un día especialmente nublado, por ejemplo), las farolas se encienden, cuando el sol vuelve a brillar, se apagan.

Existen muchas formas de crear uno de estos interruptores, puede hacerse con componentes discretos (es decir, sin microcontrolador), con un PIC.. etc. En nuestra sección de circuitos se pueden encontrar algunos ejemplos, pero aquí vamos a centrarnos en cómo hacerlo con Arduino.

Vamos a montar el siguiente circuito:

  • Protoboard Ampliar
    Esquema Ampliar

Cómo vemos, esta compuesto por una resistencia LDR. Una resistencia LDR es un componente cuya resistencia al paso de la corriente eléctrica varia en función de la luz que recibe. Si quieres saber más sobre este componente, puedes hacerlo en este tutorial que hemos prepardo

Vamos a montarla de tal forma que su resistencia sea proporcional a la cantidad de luz que recibe, es decir, cuanta más luz, mayor será la resistencia que oponga al paso de la corriente eléctrica, para ello la montaremos cómo vemos en la imagen, con una resistencia de 1KOhm para estabilizar su salida.

Además hemos colocado un led que se encender cuando haya poca luz y se apagará cuando se supere cierto umbral. Este led necesita una resistencia de 470Ohm para no quemarse, ya que se alimentará de los 5V que proporciona Arduino.

Ahora veamos el código:

	int ldr = A0; //La resistencia LDR estará en la entrada 0 de analogico
	int led = 1; //El led estará conectado a la salida digital 1
	int luz = 0; // Variable para el valor de la intensidad de la luz
	int umbral = 10; //umbral en el que encenderemos/apagaremos el led
	int t = 5000;
	void setup() {
		pinMode(ldr,INPUT);//configuramos el pin de la resistencia como entrada
		pinMode(led,OUTPUT);//configuramos el pin del led cómo salida
	}
	 
	void loop(){
	 	//leemos el valor de la resitencia LDR	
		luz = analogRead(ldr); 
		if (luz >= umbral){
            //si no supera el umbral, encendemos el led
			digitalWrite(led,HIGH);
		}else{
            //si lo supera, lo apagamos.
			digitalWrite(led,LOW);
		}
		
		//esperamos antes de volver a leer y comprobar
		delay(t);
	}
	

Cómo vemos, es sencillo, cada 5 segundos leemos la intensidad de luz gracias a la resistencia, si supera el umbral, el led estará apagado, en caso contrario lo encenderemos. El umbral se puede ajustar cambiando el valor de la variable umbral, y el tiempo de espera con la variable t (en milisegundos.)

Este es solamente un ejemplo muy sencillo, ahora podemos complicarlo mucho más, podríamos utilizar actuadores para, por ejemplo, bajar las cortinas si entra demasiada luz, o si ya es de noche y subirlas cuando nos interese, desplegar un toldo, encender las luces...