«

»

Oct 29

Vela electrónica

vela

En mi opinión, el equivalente al “Hello Word” en la programación de microcontroladores  es el led parpadeante. Lo de hoy es una práctica para principiantes un poco evolucionada para que sea más vistosa.

Los ingredientes necesarios son una pila de botón, un circuito elevador de tensión (buck-bost), un pic de 8 patas como el 12F683, un led rgb y unas resistencias (y una impresora 3d para hacer una caja que parezca una vela, aunque esto es opcional). Evidentemente necesitaremos también el software y hardware necesario para programar el PIC, si necesitas los detalles de todo eso ya están explicados en otros artículos del blog.

La pila alimentará al circuito elevador para dar una salida estable de 5V para el pic que tendrá conectadas las patas R,G y B del led a los pines A0,A1 y A2 a través de tres resistencias de 390 ohm. La pata larga del led es el ánodo y se conectará directamente a 5V.

El circuito elevador se consigue fácilmente en internet por poco más de 1€, aunque no es estrictamente necesario, para poder miniaturizar el circuito lo bueno es usar una simple pila de botón, o una pila de tamaño AAA, y con esto no llegamos ni de lejos a iluminar la componente azul  del led que necesita unos 3.5V.

El circuito coge la tensión de 1.5V o 3V y nos proporciona una salida estable de 5, ocupa muy poco y tiene un rendimiento muy alto (mucho mejor que una pila de 9V y un regulador lineal tipo 7805).

elevador

Circuito elevador de 1.5V – 5V

El led RGB es una especie de pack de tres led (azul, rojo y verde) en un solo encapsulado. Si es de ánodo común como el mío, la pata larga se debe conectar a 5V y las cortas corresponden a los tres colores (y el led se enciende con la salida a 0). Usaremos las resistencias en serie con las patas del led para limitar la corriente máxima y no quemar ni el led ni el pic. Para variar la luminosidad de cada color debemos generar un PWM en cada pata de salida y para que los colores se mezclen bien hay que tapar el led con algún tipo de difusor, ya que si lo miramos directamente veremos los tres colores separados.

led

Lo único importante para que parezca una vela es que los colores que empleemos sean parecidos a los de una llama y que oscilen de vez en cuando. El programa que os pongo realiza esa función y permite configurar fácilmente los colores de la llama a lo largo del tiempo. Desde luego hay mil soluciones, y una vez hecho el montaje lo mejor es ir probando hasta obtener el resultado deseado.

#include <main.h>

int16 lcin,lcout,lpos,lcolor;

int color(int cin,int cout,int pos)
{
   lpos=(int16)pos;   
   lcin=(int16)cin;
   lcout=(int16)cout;
   lcolor=(100-lpos)*lcin;
   lcolor+=lpos*cout;
   lcolor/=100;
   return (int)lcolor;
}

void main()
{
unsigned int8 r,g,b,base,ur,ug,ub;
int16 t;
int ar[21]={100, 98, 96, 90, 80, 50, 90,100, 98,100, 96, 98,100, 98, 95, 90, 80, 95, 90, 98,100};
int ag[21]={ 75, 78, 78, 75, 65, 20, 70, 80, 73, 78, 73, 70, 75, 72, 68, 65, 67, 68, 70, 72, 75};
int ab[21]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int i;

   setup_oscillator(OSC_8MHZ);
   base=0;
   r=ur=100;
   g=ug=90;
   b=ub=50;
   t=0;
   i=0;
   if (r>0) output_low(PIN_A0);
   if (g>0) output_low(PIN_A1);
   if (b>0) output_low(PIN_A2);
   while(TRUE)
   {
      if (base>=r) output_high(PIN_A0);
      if (base>=g) output_high(PIN_A1);
      if (base>=b) output_high(PIN_A2);
      if (++base>=100) {
         base=0;

         t++;

         if (t>=100) {
            t=0;
            r=ur=ar[i];
            g=ug=ag[i];
            b=ub=ab[i];
            i++;
            if (i>=20) i=0;
         } else {
            r=color(ur,ar[i],t);
            g=color(ug,ag[i],t);
            b=color(ub,ab[i],t);
         }
         if (r>0) output_low(PIN_A0);
         if (g>0) output_low(PIN_A1);
         if (b>0) output_low(PIN_A2);
      }

   }

}

Programamos el pic, y probamos ajustando parámetros hasta que nos guste como queda.

Queda meter en invento en una caja. Yo he tirando de la impresora 3d y usando PLA de color “natural” y un modelo de Thingiverse parametrizable, pero se puede usar un vaso, o una cirio o una vela vieja, es cuestión de echarle imaginación.

carcasa

Caja de plástico con forma de vela

Conectamos todo y ponemos una tapa y un difusor para el led, además es conveniente utilizar un interruptor lo más pequeño posible, o un jumper en la base para poder apagar y encender sin quitar la tapa.

pic_y_tapa

Tapa y PIC12F683

El resultado es este:

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies