Hace un tiempo nos contactó un agente de element14 ofreciendo evaluar productos de los que ellos tienen a disposición en su tienda en línea. Esta fue una grata sorpresa, ya que nos permitieron elegir un juguete para jugar
. Al igual que los chavos de dangerous prototypes, no creemos que comparar resistencias y capacitores entre varios distribuidores sea buena idea, pero a diferencia de ellos, nos fuimos por algo más divertido que el flux:

Este LED es el modelo LZ4-20MA10 de LED Engin de unos fabulosos 10W de potencia! No es que seamos vendedores, pero nos ha gustado mucho este juguetito, aqui vala revisión que hicimos de él:
Primeras impresiones
La primer cosa que hay que hacer es ver la hoja de datos para ver cuanto corriente le podemos suministrar antes de que se queme. Un primer problema surge aquí, porque las especificaciones que da Newark no es suficiente, sólo menciona las terminales y sus correspondencias en colores. Claro que hay que buscar en el sitio del fabricante. Encontramos la hoja correspondiente y verificamos los datos:
Color lm @ 700mA lm @ 1 A longitud de onda (λ)
Rojo 92 105 621 nm
Verde 120 160 525 nm
Azul 35 45 460 nm
Ámbar 85 105 590 nm
Nota: Los lumens (lm) son una medida de la intensidad luminosa, ver mas en la wikipedia
Ponemos la fuente de banco y la ajustamos a los 700 mA que dice y nos topamos con esto:




Tal vez no se note mucho en las imagenes, pero el brillo que genera es cegador, no se puede mirar directamente al LED porque deja deslumbrado.
Diseñando
Le dimos vueltas al asunto de cómo montar un circuito que entregara corriente constante para los 4 diodos, hasta que alguien recordó unas muestras que obtuvmos de On Semiconductor, el manejador de LEDs CAT4101.
Este circuito, que viene en formato D2PAK (TO-263), permite entregar hasta 1 A de corriente constante, es exactamente lo que buscamos
Viendo su respectiva hoja de datos, necesitamos ponerle una resistencia de ~680 ohms para que entregue 800 mA, suponemos que es suficiente para probar.


Construcción de circuito
Hubo que resolver un detalle con respecto al manejador de LEDs, es para montaje superficial y no pretendemos construír un PCB sólo para eso, que flojera!
Así que vamos por una segunda opción.
Por pura curiosidad cayó a nuestras manos un pedazo de PCB de desecho, que se estaba usando en donde trabajamos tres de los bajhackers, del tamaño adecuado. Es un adaptador al tamaño de un DIP de 0.3″ y curiosamente permitió soldar el D2PAK bastante bien, pero sin disipador de calor, esto hay que tomarlo en cuenta!







Al LED si hay que ponerle un disipador porque se calienta bastante, no vaya a ser que se nos queme antes de terminar las pruebas. Le puse un disipador de una vieja tarjeta madre que estaba acumulando polvo en un estante.




Pruebas
Ahora si es tiempo de comenzar a jugar.


Para realizar estas pruebas nos pusimos a programar un rato, usando un arduino y una interfaz en processing, adaptada de esta que encontré por la red. El programa que se sube al microcontrolador es igual al que comenta Guiherme, salvo que se le agrega el cuarto color.
void setup() {
// declare the serial comm at 9600 baud rate
Serial.begin(9600);
// output pins
pinMode(9, OUTPUT); // red
pinMode(10, OUTPUT); // green
pinMode(11, OUTPUT); // blue
pinMode(6, OUTPUT); // amber
}
void loop() {
// call the returned value from GetFromSerial() function
switch(GetFromSerial()) {
case 'R':
analogWrite(11, GetFromSerial()); break;
case 'G':
analogWrite(10, GetFromSerial()); break;
case 'B':
analogWrite(9, GetFromSerial()); break;
case 'A':
analogWrite(6, GetFromSerial()); break;
}
}
// read the serial port
int GetFromSerial() {
while (Serial.available()
Y a la parte de processing se le modifica igualmente para el 4to color y le di un pequeño retoque a los controles. Tambien le agregue un tópe a la potencia a la que genera el PWM, esta definido al ~80% debido a que los controladores se calientan mucho, de hecho, nos quemamos un par de ellos haciendo estas pruebas :S
import processing.serial.*;
Serial port;
sliderV sV1, sV2, sV3, sV4;
color cor;
void setup() {
size(400, 120);
println("Available serial ports:");
println(Serial.list());
// check on the output monitor wich port is available on your machine
port = new Serial(this, Serial.list()[0], 9600);
// create 3 instances of the sliderV class
sV1 = new sliderV(10, 10, 80, 100, #FF0000);
sV2 = new sliderV(110, 10, 80, 100, #00FF00);
sV3 = new sliderV(210, 10, 80, 100, #0000FF);
sV4 = new sliderV(310, 10, 80, 100, #FF7E00);
}
void draw() {
background(0);
sV1.render();
sV2.render();
sV3.render();
sV4.render();
// send sync character
// send the desired value
port.write('R');
port.write((sV1.p*210/100));
port.write('G');
port.write((sV2.p*210/100));
port.write('B');
port.write((sV3.p*210/100));
port.write('A');
port.write((sV4.p*210/100));
}
/*
Slider Class - www.guilhermemartins.net
based on www.anthonymattox.com slider class
*/
class sliderV {
int x, y, w, h, p;
color cor;
boolean slide;
sliderV (int _x, int _y, int _w, int _h, color _cor) {
x = _x;
y = _y;
w = _w;
h = _h;
p = 90;
cor = _cor;
slide = true;
}
void render() {
fill(cor);
rect(x-1, y-4, w, h+10);
noStroke();
fill(0);
rect(x, h-p+y-5, w-2, 13);
fill(255);
text(p, x+2, h-p+y+6);
if (slide==true && mousePressed==true && mouseXx){
if ((mouseY=y-150)) {
p = h-(mouseY-y);
if (ph) {
p=h;
}
}
}
}
}
Y el resultado es algo así:



Y aquí hay varias imagenes que se forman de mezlcar los colores:

























Pruebas LED RGBA – Parte 1 from Bajhack on Vimeo.
Pruebas LED RGBA – Parte 2 from Bajhack on Vimeo.
Final
Sólo me queda agregar que fue mu divertido ver lo que se puede hacer con estos leds multicolores, realmente valen la pena.
Ya para finalizar, pueden comprar el led y los manejadores fácilmente desde Newark:
Y para más LEDs de LedEngin en http://mexico.newark.com/ledengin/
Por si tienen dudas, el diagrama eléctrico del circuito:

Esperamos que les haya gustado, nos vemos!