Sensor de luz LDR y divisor de tensión (Previsualizar)

Primero debes completar Salidas analógicas – PWM antes de ver esta lección

Introducción

El sensor de luz LDR

La fotorresistencia LDR (del inglés, Light-Dependent Resistor) es un sensor de luz de tipo resistivo.

Sensor de luz LDR

Es un tipo de resistencia especial que cambia su valor según la cantidad de luz que incide sobre ella.

Curva LDR

Vamos a utilizar este sensor para activar un LED de forma automática cuando detectemos poca luz.

Divisor de tensión

Las entradas analógicas de Arduino sirven para medir voltajes entre 0 y 5V, pero no pueden medir la resistencia del LDR. Para poder medir la cantidad de luz usando un LDR necesitamos convertir su resistencia a un voltaje que medir con Arduino.

El circuito más sencillo para ello es el divisor de tensión, también conocido como divisor de voltaje.

Divisor de tensión

Este circuito consiste en dos resistencias conectadas en serie, a las que se aplica un voltaje en sus extremos, Vin. Al conducirse corriente a través de estas dos resistencias, se produce un voltaje en el punto donde se unen, Vout, cuyo valor puede determinarse con la fórmula:

formula-divisor-de-tension

LDR en un divisor de tensión

En nuestro caso con el sensor LDR, construiremos un divisor de tensión donde R1 es nuestro propio LDR, y R2 es una resistencia que seleccionamos nosotros.

LDR en divisor de tensión

A este circuito le aplicamos los 5V de nuestro Arduino en Vin, generando un voltaje en Vout que podemos leer con sus entradas analógicas. Al variar la resistencia del LDR, también lo hace el voltaje Vout que recoge nuestro Arduino, y de esta forma podemos detectar la cantidad de luz que hay en el ambiente.

Explora

Para comprender el comportamiento del circuito con nuestro LDR, vamos a construirlo en la breadboard:

esquema-conexion-LDR-Arduino

Para leer el voltaje de salida del circuito, Vout, vamos a utilizar el ejemplo AnalogReadSerial de Arduino IDE, que encontramos en Archivo > Ejemplos > 01.Basics > AnalogReadSerial.

Se abrirá una nueva ventana con el sketch completo.

Para hacer más cómoda su lectura, vamos a incrementar el retardo de cada iteración a 250ms. Así, donde dice delay(1);, lo cambiamos por delay(250);.

Hecho esto, subimos el sketch arduino-icono-subir a Arduino y abrimos el monitor serie arduino-icono-monitor-serie . Veremos que recibimos el valor de Vout en nuestro ordenador. Prueba a tapar poco a poco la luz que incide sobre el LDR con la mano y observa cómo varía.

Ventana monitor serie con salida del LDR

Encendido de un LED automático con la oscuridad

Ahora que sabemos cómo detectar la cantidad de luz que tenemos en el ambiente, vamos a hacer que un LED se encienda automáticamente cuando ésta sea muy tenue.

Partiendo del código anterior, antes de la función setup(), vamos a declarar el pin donde se encuentra nuestro LED (en este caso el LED integrado en el pin 13), así como una variable que contiene el umbral de luz en el que decidimos apagarlo o encenderlo:

int ledPin = 13; // pin donde se conecta el LED
int umbral = 512; // variable que determina el umbral

El umbral habrá que determinarlo de forma experimental. Para empezar podemos poner 512 que está en la mitad del rango del ADC, e ir variando según nuestro propio criterio.

En setup(), añadimos la declaración del pin como salida:

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

En loop(), después de leer el valor de Vout, actuamos según sea necesario:

void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // print out the value you read:
  Serial.println(sensorValue);
  // toma de decisión sobre el LED según la cantidad de luz disponible
  if(sensorValue < umbral) {  // luz por debajo del umbral
    digitalWrite(ledPin, HIGH);
  } else { // luz por encima del umbral
    digitalWrite(ledPin, LOW);
  }
  delay(250);        // delay in between reads for stability
}

Quedando el sketch completo:

Sube el sketch arduino-icono-subir a Arduino y vuelve a reducir la luz sobre el LDR con las manos para observar qué ocurre.

Sigue explorando

Detector de nivel de luz

Conecta varios LEDs y, con varios umbrales de oscuridad, iluminarlos poco a poco según el nivel de luz detectado con el LDR.

Ajustar la intensidad del LED a la luz ambiente

Utilizando la función analogWrite(), varía la intensidad del LED según la luz ambiental que detectes con el LDR.

Volver a: Iniciación a Arduino

©2017 Fábrica Digital desde Jerez de la Frontera, España.

956 05 77 07 (llamadas) / 717 717 452 (Whatsapp) / hola@fabricadigital.org

De Lunes a Viernes de 9 a 13h y de 14 a 18h. Sábados de 10 a 14h.

Calle Manuel Yélamo Crespillo, Edif. Los Ramos, 11401 Jerez de la Frontera, Cádiz. - Cómo llegar

Información Legal - Aceptamos

 

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account