Iluminación ambiental.

Un Led RGB es un diodo led que tiene 4 patillas donde una de ellas es común para las otras 3 patillas. Dependiendo del tipo de patilla común, los diodos RGB se clasifican del tipo de cátodo común y del tipo ánodo común como ves a continuación.

tipos de led RGB

Los más comunes son de cátodo común (como el usado en éste tutorial), pero si usas un ánodo común solo tendrás que conectar la patilla común al positivo de alimentación en vez de al negativo como se procede con el cátodo común. En cuanto a su configuración interna, aunque en los esquemas ponen que la configuración es RED, GREEN, BLUE (rojo, verde y azul), en la realidad, la configuración del LED usado en el tutorial es RED, BLUE, GREEN, y no te puedo decir el porqué se ha construido así, así que supongo sea un error del fabricante. Aunque también Autodesk Circuits ha utilizado ésta configuración en su Led RGB que es Led RBG.

Así que suponiendo que un led RGB se conectara correctamente y como lo vamos a montar en esta práctica, el circuito equivalente por cada color sería los siguientes:

diodo rojo diodo azul diodo verde

Si se pusieran a la vez todos los circuitos, se obtendría el color blanco ya que la unión de los colores puros rojo, azul y verde se neutralizan en blanco. Esto se traduce también en una circulación de corriente similar por cada patilla del led.

neutralización de colores electrónicos

Entonces si utilizasemos en lugar de resistencias limitadoras fijas, potenciómetros variables, podríamos obtener una serie de colores en el diodo RGB de acuerdo a las tramas y mezcla de colores obtenidas por la variación de corriente por cada patilla del dispositivo led.

Pixelando la entrada.

La siguiente imagen muestra los valores teóricos y reales de mezcla para conseguir un color específico y son valores en formato decimal de 0 a 255 por cada color del Led RGB.

valores de los colores en decimal

Y es que a la hora de introducir estos valores en programas y controladores como ARDUINO, la resolución está muy bien ya que solo tienes que introducir el valor correspondiente a dicho color. Pero cuando se trata de manejar corrientes por cada patilla del RGB, la cosa resulta un poco complicada ya que no existe forma de meter valores alternativos digitales desde un simple circuito eléctrico. Así que partiendo del circuito siguiente, ¿podemos establecer diferentes intensidades para cada patilla del RGB? Pues sí, y eso lo veremos más tarde en esta práctica, pero así se introducirían manualmente sin Arduino.

variación de color

fotoresistencia.

fotoresistencia o fotocélula LDR sensible a la luz, es un dispositivo electrónico que cambia su resistencia en función de la cantidad de luz que recibe.

funcionamiento de una fotoresistencia

Como puedes ver cuando no hay luz, la resistencia de la fotoresistencia es máxima. El simbolo de la fotoresistencia es el siguiente:

simbolo eléctrico de la fotoresistencia

Su cuerpo está formado por una célula fotorreceptora y dos patillas. El valor de resistencia eléctrica de un LDR es bajo cuando hay luz incidiendo en él (puede descender hasta 50 ohms) y muy alto cuando está a oscuras (varios megaohmios).

Su funcionamiento se basa en el efecto fotoeléctrico. Un fotorresistor está hecho de un semiconductor de alta resistencia como el sulfuro de cadmio. Si la luz que incide en el dispositivo es de alta frecuencia, los fotones son absorbidos por las elasticidades del semiconductor dando a los electrones la suficiente energía para saltar la banda de conducción. El electrón libre que resulta, y su hueco asociado, conducen la electricidad, de tal modo que disminuye la resistencia. Los valores típicos varían entre 1 MΩ, o más, en la oscuridad y 100Ω con luz brillante.

Las células de sulfuro del cadmio se basan en la capacidad del cadmio de variar su resistencia según la cantidad de luz que incide en la célula. Cuanta más luz incide, más baja es la resistencia. Las células son también capaces de reaccionar a una amplia gama de frecuencias, incluyendo infrarrojo (IR), luz visible, y ultravioleta (UV).

La variación del valor de la resistencia tiene cierto retardo, diferente si se pasa de oscuro a iluminado o de iluminado a oscuro. Esto limita a no usar los LDR en aplicaciones en las que la señal luminosa varía con rapidez. El tiempo de respuesta típico de un LDR está en el orden de una décima de segundo. Esta lentitud da ventaja en algunas aplicaciones, ya que se filtran variaciones rápidas de iluminación que podrían hacer inestable un sensor (p. ej., tubo fluorescente alimentado por corriente alterna). En otras aplicaciones (saber si es de día o es de noche) la lentitud de la detección no es importante.

Se fabrican en diversos tipos y pueden encontrarse en muchos artículos de consumo, como por ejemplo en cámaras, medidores de luz, relojes con radio, alarmas de seguridad o sistemas de encendido y apagado del alumbrado de calles. También se fabrican fotoconductores de Ge-Cu que funcionan dentro de la gama más baja "radiación infrarroja".

Iluminación ambiental.

En esta práctica de arduino vamos a construir una iluminación ambiental, es decir un sistema basado en fotoresistencia en el que de acuerdo a la iluminación ambiental, cambie el color de un LED RGB.

iluminación ambiental circuito

Ya sabes que la placa de Arduino UNO no puede suministrar más de 5 voltios de tensión, por lo que la variación de voltaje para producir ese efecto se debe de realizar mediante los puertos PWM (Power Width Modulation) para atenuar un LED a modo de bombilla. La PWM incrementa y decrementa rapidamente el voltaje de la clavija de salida a lo largo de un periodo de tiempo fijo.

Cuando cambiamos el valor de HIGH a LOW a gran velocidad, lo que hacemos es cambiar el voltaje. Mientras la clavija esté en HIGH a dicho tiempo se le llama ciclo de trabajo.

Cuando la clavija está en HIGH durante la mitad de la duración de un ciclo y en LOW durante el otro ciclo, el ciclo de trabajo es del 50%. Extrapolándo a nuestro LED, un ciclo de trabajo más bajo, mostrará mayor atenuación en el LED que comparado con un ciclo de trabajo más alto.

Con la ayuda de una fotoresistencia, lo que vamos a hacer es que la iluminación exterior o una fuente luminosa modifique la tensión de los puertos digitales y se ilumine el LED en consecuencia.

Componentes necesarios:
Necesitaras los siguientes componentes:

● 3 fotoresistencias LDR
● 3 resistencias de 330Ω
3 resistencias de 10KΩ
1 LED RGB
● Placa Arduino
● cableado vario.

El ensamblaje del circuito lo puedes ver en la pestaña de vídeo

circuito de iluminación ambiental

Trasteándo con el código.

Empezamos por declarar las constantes y variables que utilizaremos en nuestro proyecto.

declaración de variables y constantes

Estas variables se usarán para los valores de entrada de los sensores y para los valores de salida que estarás usando para atenuar el LED. Usaré el tipo de dato int para todas las constantes y variables.

declaración de setup

En el setup() empieza la comunicación en seria a 9600 bps. Al igual que en hicimos en otros ejemplos del curso para averiguar los valores instantáneos de los sensores, el monitor serie nos mostrará los valores de los sensores. Además veremos los valores mapeadosque vas a usar para atenuar el LED. También se programarán los puertos como salida con la instrucción pinMode().

declaración loop

En el loop(), se leerán los valores de los sensores A0, A1, A2 con la instrucción analogRead() y se almacenará su valor en las variables correspondientes. Puedes ver que utilizo un delay() para introducir una pausa ya que el convertidor analógico - digital del ATMega suele llevar un tiempo para realizar su trabajo y la pausa le viene bien en su taréa.

NOTA: el carácter "\t" es equivalente al tabulador del teclado.

La instrucción Serial.print sirve para mostrar mensajes de texto en el monitor serial, pero en este caso además nos muestra los valores de los sensores fotoresistencias.

funciones de conversión

La función para cambiar el brillo del LED a través de PWM es la analogWrite(). Con esta estamos escribiendo directamente un valor en el puerto por lo que requiere de un número de entre 0 y 255. Por lo tanto, el primer valor de analogWrite() será un número entre 0 y 255; el segúndo número representa el ciclo de trabajo en que Arduino realizará en el puerto indicado. Un valor de 255 llevará a la clavija a HIGH todo el tiempo, haciendo que el LED conectado a ella, brille a su máxima corriente (de ahí la resistencia limitadora por cada pin del LED). un valor de 127 pondrá la clavija en HIGH durante la mitad del ciclo de trabajo, atenuándo el LED.

Para convertir la lectura del sensor de un valor entre 0 y 1023 a un valor de 0 y 255 para analogWrite(), se divide la lectura del sensor entre 4.

funciones de conversión

Cuando cargues el sketch, dependiendo de la iluminación, el led debería de tener un color blanquecino. Puedes observar los valores que llegan al monitor serial. Al apagar la luz de la habitación, mira a ver que pasa con el LED y verás que cambia de color a un color vivo, ya que la intensidad que llega al LED es mayor y por tanto los colores tienden a ser más puros (neutralizándose en el color blanco). Pero bueno eso depende de la oscuridad de tu habitación.

Pasa a la pestaña video para ver la realización de la práctica. Podrás descargarte el sketch desde el enlace de descarga del menú inferior.