¿Cómo usar un sensor LDR con Arduino?

¿Cómo usar un sensor LDR con Arduino?

¿Cómo usar un sensor LDR con Arduino?

El fin de este nuevo tutorial es aprender a utilizar un sensor LDR (Light-Dependent Resistor) junto a nuestro Arduino. Al finalizarlo, habremos creado un medidor de intensidad de luz ambiente haciendo uso de LEDs como indicadores y nuestro sensor LDR.
En primer lugar... ¿Qué es un sensor LDR? Se trata de un sensor que actúa como una resistencia variable en función de la luz que capta. A mayor intensidad de luz, menor resistencia: el sensor ofrece una resistencia de 1M ohm en la oscuridad, al rededor de 10k ohm en exposición de luz ambiente, hasta menos de 1k ohm expuesto a la luz del sol.
Otro concepto que debemos conocer es la diferencia entre pines digitales y pines analógicos. Hasta hora hemos utilizado únicamente pines digitales, los cuales pueden determinar como entrada o salida sólo dos valores lógicos de acuerdo a su voltaje: 1 o 0 (HIGH o LOW en el código, respectivamente). En cambio, los pines analógicos convierten el voltaje de entrada (entre 0v y 5v) a un valor digital que varía entre 0 y 1023. Según el valor en el cual se encuentre, podremos decir que hay más luz o menos luz, se está ejerciendo más fuera o menos, etc dependiendo del tipo de sensor que tengamos conectado al pin analógico.

Durante el desarrollo utilizaremos los siguientes componentes:

  1. Placa Arduino UNO
  2. Sensor LDR
  3. 3 LEDs
  4. 3 Resistencias 220ohm
  5. 1 Resistencia 10K ohm
  6. Breadboard
  7. Jumper cables
Componentes tutorial LDR con Arduino
Componentes tutorial LDR con Arduino

El circuito constará de dos partes, la que contiene a los LEDs, que será similar al circuito realizado en nuestro primer tutorial, y una segunda sección, la cual contendrá al sensor LDR. Para comprender bien como funciona y está formada la segunda parte del circuito, tendrán conocer el concepto de Divisor de Voltaje. En nuestro sitio poseemos una explicación clara y completa para que comprendan de qué se trata, para qué se usa y cómo funciona un divisor de voltaje. A continuación el esquema del circuito:

Diagrama sensor LDR con Arduino
Diagrama sensor LDR con Arduino

Obviaremos la parte del circuito que se encarga de conectar los LEDs a los pines digitales 2, 3 y 4, la cuál ya fue explicada en tutoriales previos (este y este) y pasaremos a la parte que más nos importa, ¿cómo conectar el sensor LDR? Como dijimos en la introducción, el LDR actúa como una resistencia variable. Para conocer la cantidad de luz que el sensor capta en cierto ambiente, necesitamos medir la tensión de salida del mismo. Para ello utilizaremos un divisor de tensión, colocando el punto de lectura para Vout entre ambas resistencias. De esta forma:

V_{out} = \frac{R_{2}}{R_{1} + R_{2}} . V_{in}

Dónde Vout es el voltaje leído por el PIN analógico de Arduino y será convertido a un valor digital, Vin es el voltaje de entrada (5v), R2 será el valor de la resistencia fija colocada (10k ohm) y R1 es el valor resistivo del sensor LDR. A medida que el valor del sensor LDR varía, obtendremos una fracción mayor o menor del voltaje de entrada Vin.

Ahora que hemos visto el circuito, podemos pasar al código, que es bastante sencillo:

Una vez subido el sketch a nuestro Arduino, podemos verlo en funcionamiento:

Sensor LDR con Arduino
Sensor LDR con Arduino
Sensor LDR con Arduino

Fotos del circuito terminado:

Circuito finalizado: sensor LDR con Arduino
Circuito finalizado: LDR con Arduino

¿Qué es un divisor de voltaje?

¿Qué es un divisor de voltaje?

¿Qué es un divisor de voltaje?

Un divisor de voltaje es una configuración de circuito eléctrico que reparte la tensión V de una fuente f entre una o más impedancias conectadas en serie.  (Wikipedia)

Haciendo uso de la Ley de Ohm podremos calcular el voltaje a la salida de cada resistencia (caída de voltaje). Existen dos tipos diferentes de divisores, el resistivo y el capacitivo. En el resistivo ambas impedancias son resistencias, en cambio en el capacitivo, se trate de capacitores (también llamados condensadores). Para ejemplificar y finalizar la explicación, haremos uso del resistivo, aunque los mismos conceptos son aplicados al capacitivo (con su consecuente cambio de unidades).

Observemos el siguiente circuito:

Esquema Divisor de Voltaje
Esquema Divisor de Voltaje

En primer lugar, vamos a definir como circuito serie, un circuito en el cual los componentes están conectados secuencialmente, mediante sus terminales: salida de un componente se conecta a la entrada del siguiente, y así sucesivamente. Otro concepto que debemos tener en cuenta es el siguiente: cuando dos o más resistencias se encuentran conectadas en serie, el valor total de resistencia, es igual a la suma de las resistencias involucradas. En el caso de nuestro circuito de ejemplo:

 R_{total} = R_{1} + R_{2}

Nuestro objetivo es averiguar el voltaje Vout, que corresponde a la caída de tensión de R2. Para ello podemos hacer uso de la Ley de Ohm:

 V_{out} = I\ .\ R_{2}

Donde I es la corriente que circula por el circuito, Vout el voltaje que queremos encontrar y R2 el valor de la resistencia que provoca la caída de tensión. Por otro lado, la Ley de Ohm dice:

 V_{in} = I\ . R \Rightarrow I = \frac{V_{in}}{R} \Rightarrow I = \frac{V_{in}}{R_{1} + R_{2}}

Vin es la tensión de entrada, proporcionada por la fuente. La última equivalencia se logra utilizando el concepto de circuito serie. Reemplazando la ecuación obtenida en la primera, obtenemos lo siguiente:

 V_{out} = I .\ R_{2} \Rightarrow V_{out} = \frac{V_{in}\ .\ R_{2}}{R_{1} + R_{2}}

Organizando llegamos a la fórmula final:

V_{out} = \frac{R_{2}}{R_{1} + R_{2}} .\ V_{in}

Esta fórmula es aplicable a un circuito de N resistencias conectadas en serie, y puede ser generalizada de la siguiente forma:

V_{i} = \frac{R_{i}}{R_{1} + R_{2} + ... + R_{N-1} + R_{N}} .\ V_{in} \Rightarrow V_{i} = \frac{R_{i}}{R_{eq}} .\ V_{in}

A Req se la denomina resistencia equivalente.

De acuerdo al valor de cada una de las resistencias, se podrán establecer ciertas simplificaciones:

  1. Si todas las resistencias poseen el mismo valor K, Vi será la enésima parte de Vin. Esto se debe a que:

V_{i} = \frac{R_{i}}{R_{1} + R_{2} + ... + R_{N-1} + R_{N}} .\ V_{in} \Rightarrow V_{i} = \frac{K}{N . K} .\ V_{in} \Rightarrow \frac{V_{in}}{N}

  1. Si una de las resistencias, Ri tiene un valor mucho mayor que el resto (al menos un orden de magnitud), y queremos averiguar Vi, correspondiente a Ri, llegaremos a la conclusión de que es muy cercano a Vin. Esto se debe a que el cociente entre Ri y Req será muy próximo a 1.
  1. Si una de las resistencias, Ri tiene un valor mucho mayor que el resto (al menos un orden de magnitud), y queremos averiguar Vj, correspondiente a una Rj diferente, de mucho menor valor resistivo, llegaremos a la conclusión de que es muy cercano a 0v. Esto se debe a que el cociente entre Rj y Req será muy próximo a 0, por lo cual, al multiplicarlo por Vin dará un valor muy bajo.

¿Para qué se utiliza un divisor de voltaje?

Estos circuitos tienen gran cantidad de aplicaciones y se encuentran entre los circuitos más utilizados en electricidad y electrónica. Veremos aplicaciones por ejemplo en los tutoriales que involucren sensores, como por ejemplo el tutorial para realizar un medidor de luz.

Circuito para forma un divisor de voltaje con LDR
Circuito para forma un divisor de voltaje con LDR
(imagen: http://www.varesano.net/blog/fabio/variable%20resistance%20components%20thermistors%20and%20light%20dependent%20resistors%20ldr%20arduino%20simp)
Quizás el ejemplo más básico de divisor de voltaje es el potenciómetro: consiste en una resistencia y un contacto móvil, quien divide divide a la resistencia en dos más pequeñas, y a medida que varía su posición, modifica el valor resistivo de cada una de ellas. El potenciómetro posee 3 conexiones, uno para la entrada desde la fuente, otro para la salida y el tercero, conectado al contacto móvil, funciona como punto de medición, en nuestra formula, nos permitirá conocer Vout. A medida que se ajusta el potenciómetro, se irán variando los valores de la resistencia, cumpliéndose en el centro y en los extremos, las simplificaciones mencionadas previamente.

Otro ejemplo, en cual mucho en nuestros tutoriales, se trata de utilizar un divisor de voltaje, para facilitar la medición de datos obtenidos desde nuestros sensores. Muchos sensores son resistencias que varían de acuerdo a ciertas magnitudes que toman del mundo real: luz, ruido, fuerza, etc. Para un microcontrolador, como Arduino, es mucho más sencillo medir voltajes, gracias a su convertidor analógico-digital, que analizar la resistencia que ofrece bajo cierta circunstancia un sensor. Cómo se logra esto? Agregando a la resistencia variable (sensor), otra resistencia fija, formando así un divisor de voltaje. A medida que la resistencia variable cambia su valor, la el valor Vout irá variando, permitiendo al microcontrolador, establecer lecturas en base al voltaje recibido.