Dificultad: Baja

En este artículo vamos a realizar un sencillo medidor de luz con nuestro arduino, utilizaremos un arduino con fotoresistencia LDR y mostraremos el resultado en la computadora así como como en un grupo de leds. El objetivo de este tutorial es aprender como conectar sensores que varían su resistencia dependiendo de una magnitud física. Un ejemplo de este tipo de sensores es el LDR o fotoresistor, estudiaremos el funcionamiento de este componente y su conexión con la tarjeta Arduino UNO R3 mediante un divisor resistivo en el resto de este texto.

Conceptos básicos

Para entender cómo funciona este circuito y el programa que corre en la tarjeta Arduino debemos conocer 3 conceptos clave:

  • Fotoresistencia LDR: Componente cuya resistencia varía sensiblemente con la cantidad de luz percibida. La relación entre la intensidad lumínica y el valor de la resistencia no es lineal. Se utiliza ampliamente para medir la iluminación en dispositivos electrónicos que requieren un precio agresivo. Su comportamiento es el siguiente:

Mas luz = menor resistencia eléctrica

Menos luz = mayor resistencia eléctrica

  • Divisor de voltaje: Mediante un par de resistencias en serie, es posible repartir la tensión suministrada por la fuente entre las terminales de estas, en nuestro caso, el divisor se utiliza con el LDR para obtener un voltaje variable de acuerdo a la cantidad de luz percibida.
  • Conversión Analógico-Digital (ADC): Es el proceso mediante el cual se convierte una magnitud física como un voltaje, corriente, temperatura, etc. en un número binario (o señal digital) con el propósito de facilitar su manejo por circuitos digitales como un Arduino. El mismo realiza este proceso para conocer la cantidad de luz percibida por el LDR y poder procesarla numéricamente.

Recomendamos estudiar estos conceptos a profundiad para desarrollar las habilidades necesarias para aplicarlos en otras situaciones distintas, ya que serán de gran utilidad al conectar cualquier otro sensor analógico al arduino.

Materiales necesarios:

  • 1 Arduino UNO R3
  • 1 Fotoresistor (LDR)
  • 1 Resistencia de 10 Kohm 1/4 W3 Resistencias de 220 o 330 ohm 1/4 W
  • 3 Leds 5mm
  • Cables para protoboard
  • Protoboard

Imágenes ilustrativas de componentes:
                                                                                    

Diagrama para utilizar Arduino con Fotoresistencia LDR

Debemos armar el circuito como se muestra en el siguiente diagrama. Recordar que los LED tienen polaridad y hay que respetarla. El pin más largo (positivo) va conectado a la tarjeta arduino, mientras que el pin más corto (negativo) va con una resistencia a tierra, la resistencia también puede colocarse sin problema entre el ánodo del led y el arduino (del lado positivo del led):

El circuito armado sobre el protoboard y las conexiones con el arduino quedan de la siguiente manera:

Código (sketch) para Arduino con Fotoresistencia LDR.

La explicación para el código es la siguiente: Primero se preparan los pines de salida donde están conectados los leds, el pin de entrada donde se conecta el divisor resistivo y el puerto serie para la comunicación. A continuación se ejecuta un ciclo infinito en el que se lee el valor del voltaje en el pin del LDR y se accionan los leds según correspondan. También transmitimos el valor leído por el ADC del ATMEGA328 a la PC a través del puerto serie de nuestra tarjeta arduino. Hemos comentado el código de manera que sea fácil de entender.

/*
*
* Ejemplo de medidor de luz con Arduino utilizando una fotoresistencia LDR y
* un grupo de leds para mostrar el resultado de las lecturas. Este sketch puede
* servir como base para otros proyectos que requieren medicion de la intensidad
* de luz con una fotoresistencia.
*
*/

// Pin donde se conectan los leds
int pinLed1 = 2;
int pinLed2 = 3;
int pinLed3 = 4;
// Pin analogico de entrada para el LDR
int pinLDR = 0;

// Variable donde se almacena el valor del LDR
int valorLDR = 0;

void setup()
{
// Configuramos como salidas los pines donde se conectan los led
pinMode(pinLed1, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3, OUTPUT);

// Configurar el puerto serial
Serial.begin(9600);
}

void loop()
{
// Apagar todos los leds siempre que se inicia el ciclo
digitalWrite(pinLed1, LOW);
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed3, LOW);

// Guardamos el valor leido del ADC en una variable
// El valor leido por el ADC (voltaje) aumenta de manera directamente proporcional
// con respecto a la luz percibida por el LDR
valorLDR= analogRead(pinLDR);

// Devolver el valor leido a nuestro monitor serial en el IDE de Arduino
Serial.println(valorLDR);

// Encender los leds apropiados de acuerdo al valor de ADC
if(valorLDR > 256)
{
digitalWrite(pinLed1, HIGH);
}
if(valorLDR > 512)
{
digitalWrite(pinLed2, HIGH);
}
if(valorLDR > 768)
{
digitalWrite(pinLed3, HIGH);
}
// Esperar unos milisegundos antes de actualizar
delay(200);
}

Para probar nuestro medidor de luz, solamente debemos colocarlo sobre una fuente de luz y verificar que los led se encienden conforme aumenta la cantidad de luz. En la terminal, también podremos ver cómo va cambiando el valor de la conversión analógico a digital.

Fuentes: https://www.geekfactory.mx/tutoriales/tutoriales-arduino/tutorial-arduino-con-fotoresistencia-ldr/