Midiendo intensidad de luz con LDR (foto resistencia) y arduino

Midiendo intensidad de luz con LDR (foto resistencia) y arduino

Hola en esta publicación vamos a ver como podemos medir la intensidad de luz, usando un sensor LDR o foto resistencia y mostrar el resultado en un valor de 0 a 100%. 

El resultado lo podremos observar tanto en el monitor serial como en un display LCD, en mi caso he utilizado un lcd de 16×2. Para poder hacer una medición de este tipo sera necesario conectar el sensor por medio de una resistencia pullup a una entrada analogía de arduino y luego convertir el valor leído en un porcentaje. 

Hay que aclarar que esto no es lo mismo que un luxometro ya que estos se hacen con otro tipo de sensores, de modo que el resultado sera solo en un valor de cantidad de luz ( 10 o 50 o 100%), nos puede ser util para comprar que tan distinto es el nivel de luz de 2 ambientes distintos. 

el circuito que deberemos montar es el siguiente: 

LDRAnalogread arduino ligth sensor

LDRAnalogread arduino ligth sensor

Los que se quieran ahorrar de poner un lcd pueden ver la medición por medio del Monitor serie de arduino ide sin modificar nada del código ya que están contempladas las 2 posibilidades. 

El programa lee la entrada analógica que estará en un nivel alto cuanto menos luz incida en el LDR y pasara a niveles mas bajos a medida que la luz aumente. Esto es por que la resistencia sensible a la luz aumenta su conductividad a medida que recibe mas luz. Haciendo que el voltaje presente en el pin analógico disminuya. Luego el valor obtenido por el conversor analógico digital de arduino se almacena en una variable tipo entero. 

El valor que obtenemos de el conversor analógico digital puede estar entre 0 y 1023, pero nosotros queremos observar en la lcd un valor de porcentaje así que tendremos que transformar este valor. 

para esto se usa la función map() que lo que hace es transformar un valor de un nivel mínimo y máximo a otro nivel mínimo y máximo diferente. 

el uso es el siguiente :                                                              

  Variable = map(valor a transformar, de mínimo 1, y máximo 1, a mínimo 2,  y máximo 2); 

Se guardara en variable un valor relativo entre 0 y 100, de modo que si el valor es 0 el porcentaje sera 0, si el valor es 512 el porcentaje sera 50 y si el valor es 1023 el porcentaje sera 100. 

A continuación dejo el código del programa para arduino: 

#include <LiquidCrystal.h>

#define IN A0  // pin entrada analogica
LiquidCrystal lcd(8,9,10,11,12,13); // pines donde se conecta el lcd


void setup() {
  
Serial.begin(115200); // configuramos el puerto serie
}

void loop() {
int luz = map(analogRead(IN), 1023 ,0, 0 ,100); // leemos el valor de la entrada analogica donde
                                                // tenemos el LDR y lo guardamos en la variable luz
// notar que se usa la funcion map para transformar el valor de 0 a 1023
// en un valor de 0 a 100 que sera mostrado como porcentaje

Serial.print("LUZ = "); // imprimimos los valores por Monitor Serial
Serial.print(luz);
Serial.println(" %");

lcd.setCursor(0,0); //imprimimos los valores en el display LCD
lcd.print("LUZ = ");
lcd.print(luz);
lcd.print(" %");
delay(500);
lcd.clear();
}

 

Ahora solo resta por cargar el programa en nuestro arduino y con esto ya podemos empezar a experimentar con el sensor ldr. 

Dejo un video con el proyecto en funcionamiento: 

Espero que les sea de utilidad, no olviden dejar sus comentarios y compartir. 

Hasta la próxima. 

 

Tagged , , , , , , , , , . Bookmark the permalink.

Deja un comentario