Lampara con Arduino - Moodlamp Imprimir
Escrito por Albertito   
Domingo, 26 de Junio de 2011 10:47

 

En este artículo vamos a cubrir la construcción de una lámpara que cambia de color (pulsando un botón o cada cierto tiempo). Además tiene la posibilidad de que el color que se muestra posea un "efecto vela" que hace que parezca que realmente hay una vela dentro de la lámpara.

 

La lámpara se controla mediante una pequeña placa con tres botones que nos permite cambiar entre el "modo color fijo" y el "modo color aleatorio", seleccionar el "efecto vela" y cambiar manualmente el color que actualmente estamos viendo. Para motivar a nuestros seguidores vamos a ver en primer lugar un vídeo del aspecto final de la lámpara en funcionamiento.

 

Dim lights Embed Embed this video on your site

 

Para la fabricación de la lámpara he utilizado:

  • Placa arduino (http://www.arduino.cc/es/)
  • Lámpara barata de Ikea (http://www.ikea.com/es/es/catalog/products/80096372)
  • 15 diodos LED de alta luminosidad. (5 rojos, 5 verdes, 5 azules) Estos LEDs son mucho más luminosos que los normales y es imprescindible utilizarlos de este tipo para que la lámpara alumbre.
  • 3 diodos LED ordinarios para los indicadores de estado en la placa de control.
  • 3 pulsadores normalmente abiertos para controlar la lámpara.
  • Resistencias varias (ver esquema del circuito más adelante).
  • 3 transistores NPN BC137
  • Placa para soldar
  • Conectores macho/hembra para conectar las placas entre sí.
  • Cable.
  • Soldador, estaño, placa de prototipo…

En primer lugar vamos a ver un esquema del circuito para entender mejor cómo funciona todo (hacer click para ampliar).

Viendo el esquema del circuito voy a intentar aclarar los puntos que puedan ser un poco más difíciles de entender:

 

  • Todos los LED están en paralelo. La alimentación del circuito serán 5V, los diodos rojos de alta luminosidad que yo utilicé tienen una caída de tensión de 1.8V, los azules y verdes 3.5V. La única forma de que enciendan es poniéndolos en paralelo ya que en serie la caída de tensión acumulada haría que el circuito no funcionase.
  • Hay tres bloques de diodos LED. 5 rojos, 5 verdes y 5 azules, cada uno de estos bloques se controla a la vez, es decir, podemos elegir si encender los diodos azules, verdes o rojos pero si decidimos encender los diodos de un color se encienden los 5 de ese color.
  • Los pins 9, 10 y 11 que controlan los bloques de diodos son salidas analógicas de Arduino lo que quiere decir que vamos poder controlar que los diodos brillen más o menos variando la cantidad de tensión que les enviamos. Si fuesen pins digitales sólo podríamos controlar si están encendidos o apagados.
  • Las resistencias que utilizo para cada uno de los LEDs han sido calculadas para que por los LEDs circulen 20mA de corriente lo que asegura que los diodos alumbren bien y no se quemen. Para el cálculo utilizar la ley de Ohm o esta página que es de mucha utilidad: http://led.linear1.org/led.wiz
  • Utilizar una resistencia por cada LED!! No utilizar una resistencia para cada grupo de 5 LEDs o algo así, ya que podría quemarse por no poder disipar toda la potencia. Además este enfoque es mucho más conveniente y seguro.
  • Los transistores… esta parte es la más difícil. Arduino sólo es capaz de suministrar uno 40mA en cada uno de sus puertos de salida. Como hay 3 bloques de LEDs (los rojos, los verdes y los azules) y teniendo en cuenta que por cada LED van a circular unos 20mA si conectásemos cada uno de estos bloques el puerto de salida de Arduino tendría que dar 100mA para cada bloque de LEDs (5 LEDs x 20mA). Probablemente esto acabaría quemando nuestra placa Arduino. El transistor funciona aquí como un amplificador de corriente, nosotros le aplicamos a través de los pins 9, 10 y 11 de arduino una pequeña tensión y él es capaz de amplificar esa tensión soportando los 100mA que queremos entre la salida de cada bloque de LEDs y la toma a tierra.
  • Los LEDs de estado no tienen mucho misterio, simplemente vamos poder controlar si se encienden o apagan mediante las salidas digitales de arduino en función del estado en que se encuentre la lámpara. En cuanto a los pulsadores, simplemente nos van a informar de que están pulsados o no a través de los pins 2, 3 y 4 de arduino. Qué hacer cuando alguien pulsa uno de los pulsadores es una elección totalmente libre que definiremos en nuestra aplicación.
  • Para alimentar el circuito utilizo el cable USB que va conectado a Arduino utilizando una fuente de alimentación USB que suministre 5V y una corriente de 1A (realmente con la mitad sería suficiente). Para esto viene muy bien el cargador del iPhone o iPad…

 

Comprobamos que todo funciona montando el circuito en una placa de prototipado y cargando en Arduino un programa simple que se encargue de encender y apagar progresivamente los LEDs. Vemos un video de esto:

 

Dim lights Embed Embed this video on your site

 

Una vez que hayamos comprobado que nuestro circuito funciona como queremos es hora de soldar nuestra placa para que todo quede fijo y bien colocado. En este paso hay que tener muy claro en qué lámpara vamos a meter después la placa para que nos quepa. En mi diseño he colocado 5 bloques de LEDs (uno verde, otro rojo y otro azul) para intentar que los colores se mezclen mejor. Aquí vemos cómo queda la placa soldada y conectada con Arduino:

 

Dim lights Embed Embed this video on your site

 

Ahora nos toca encastrar todos estos circuitos dentro de la lámpara, en mi caso con un poco de imaginación conseguí encontrar la forma de que el circuito quedase dentro de la lámpara sin moverse:

Ahora es momento de soldar en una pequeña plaquita los LEDs de estado y los pulsadores para que podamos elegir el color que la lámpara va a mostrar, si va a cambiar de color automáticamente y si queremos que los colores tengan el “efecto vela”.

 

Explico algunas cosas del código que yo desarrollé. Este código puede descargarse aquí

 

  • Defino al principio las constantes de la aplicación por ejemplo los puertos donde los diodos e interruptores van conectados. Además defino 3 vectores con todas las posibles combinaciones de colores que la lámpara puede producir, de esta forma luego será sencillo cambiar de color.
  • Defino qué pins son de entrada y cuales de salida. Los de entrada son por los que esperamos recibir información (los 3 interruptores) y los de salida por la que vamos a enviar alguna señal (los leds tanto de estado como los de alta luminosidad).
  • La aplicación tiene 3 modos, el modo fijo (se muestra un color o combinación de colores), el modo bucle (cada 15 segundos más o menos el color activo va cambiando) y el modo apagado (si pulsamos uno de los pulsadores durente varios segundos la lámpara se apaga, al volver a pulsarlo se enciende).
  • Hay que tener en cuenta que la aplicación itera continuamente con lo cual cuando queremos hacer algo en respuesta a que alguien pulsó un botón hay que hacerlo sólo una vez hasta que el botón se suelte, si ejecutamos nuestra acción comprobando únicamente que el botón esté pulsado podríamos estar repitiendo esa acción decenas de veces si el usuario pulsa el botón durante un segundo sin soltarlo por ejemplo.
  • Hay un botón que controla el modo en que la aplicación está, otro botón que controla si el efecto vela está activo y otro que cambia el color de la lámpara. Cada botón tiene su led de estado asociado que parpadea, se enciende o apaga en función de lo que estemos haciendo.

 

 

 

 

Última actualización el Domingo, 26 de Junio de 2011 13:18