Iluminación para pesebre de Navidad

Luces_Pesebre_Foto_01.jpg

Proyecto completo para la realización de un sistema de iluminación para pesebre navideño (Belén) que, a través de dos circuitos sencillos, controla las luces del día, de la noche y la iluminación de las casas simulando la luz del fuego o de las velas.

Hola amigos de Inventable, después de un período de mucho trabajo profesional, recién ahora puedo dedicar un poco de tiempo al blog escribiendo un nuevo artículo. Como las fiestas están cercanas, que mejor proyecto para hacer sino un sistema de iluminación para un pesebre navideño (Belén). El sistema que les presento aquí es bastante simple de hacer para los que tienen ya algo de experiencia con la electrónica y con la programación de los microcontroladores PIC. Gracias al uso de dos pequeños micros PIC12F629, he podido dar al sistema algunas funciones especiales que permite una buena iluminación de nuestro pesebre y también la posibilidad de expansión del mismo.

Luces_Pesebre_Foto_03.jpg
Foto de los dos circuitos montados que componen el sistema de iluminación para pesebre de Navidad (o Belén).

El lenguaje que he usado para la programación de los micro es el assembly porque permite un excelente control de las transiciones luminosas usando un micro pequeño y económico sin necesidad de usar módulos específicos, como por ejemplo los PWM (modulación por ancho de impulso), disponibles solo en micros mucho más grandes y potentes. Como en otros proyectos de Inventable, encontrarán los file HEX, ya listos para ser cargados en los micros y también las fuentes (file asm) para los que deseen personalizar el código o simplemente, ver como trabaja el programa. Recuerdo a los lectores que los programas fueron desarrollados directamente en assembly y que por lo tanto, no se encuentran disponibles códigos fuentes en otros lenguajes como por ejemplo en "C". Recuerdo también que para la programación de los micros se necesita un programador comercial o hecho en casa y un software que lo controle.

El sistema de iluminación se divide en dos plaquetas, la primera se ocupa del control de las luces principales para la simulación del día, la noche, el alba y el atardecer. La segunda plaqueta se ocupa de la iluminación de las casas simulando el efecto del fuego. Ambas plaquetas trabajan en modo sincronizado en modo tal que las luces de las casas se enciendan después del atardecer y se apaguen durante el alba. La idea de dividir el sistema en más de una plaqueta nos permite en el futuro de poder crear y agregar nuevos módulos para expandir el sistema.

Pesebre_circuito_dia_noche.png
Circuito de la plaqueta "Día/noche".

 

El circuito "día/noche" tiene tres canales de salida de 12V. El primero de los tres canales de salida simula la condición del día, el segundo el de la noche y el tercero el atardecer y el alba. La corriente de salida por cada canal puede llegar a 5A (si la fuente de alimentación lo permite). Por lo tanto, podemos conectar al circuito distintos tipos de luces de 12V como por ejemplo leds, tiras de leds, luces con filamento simples o alógenas. El segundo circuito, llamado "Luces casas" dispone de 4 canales de salida pero conectando varias luces en paralelo a cada canal podemos iluminar muchas casas. La corriente de salida máxima por cada canal es de 3A (si la fuente de alimentación lo permite).

 

Pesebre_pictorico_dia_noche.png
Vista pictórica y del circuito impreso de la plaqueta do control "Día/noche".

Ambos circuitos son parecidos entre sí y usan como dispositivos de potencia mosfets IRF530. Estos mosfet son bastante económicos y fáciles de encontrar en comercio. Debido al hecho que no son de tipo "logic-gate", para llevarlos al máximo nivel de conducción, es necesario aplicar en la entrada de gate una tensión superior a 5V que los micros no pueden generar por si mismos. Para resolver el problema, he agregado adaptadores de nivel hechos con transistores BC548. Para que estos adaptadores funcionen correctamente es necesario conectarlos en configuración emisor común cuyo efecto colateral es que invierten la señal de control, es decir, cuando la salida del micro se encuentra a nivel lógico "1" (5V) el mosfet interrumpe la corriente mientras que cuando es a nivel lógico "0" (0V), el mosfet conduce plenamente. Esto no representa un problema, simplemente se hace el programa en modo que el micro trabaje con sus salidas invertidas.

Un elemento clave en la iluminación de los pesebres es la regulación de la intensidad luminosa de los distintos canales para poder obtener las transiciones características del atardecer y del alba. El modo más eficiente para obtenerlas se llama PWM o modulación por ancho de impulso y que explicaré a continuación.

Controlando la intensidad de la luz con PWM

pwm.png
Control de la luminosidad con el método PWM (Modulación por ancho de impulso).

La técnica PWM para regular la intensidad luminosa obteniendo variaciones suaves entre apagado y encendido consiste en generar una onda rectangular en la cual se varía la relación entre la parte alta (conducción) y la parte baja de la onda (corte).

pwm_transicion.png
Forma de onda durante el encendido suave de una luz con la técnica PWM.

Cuando en la onda generada, predomina la parte de conducción, las luces serán más luminosas mientras que cuando predomina la parte de corte, las luces serán menos luminosas. Si ambas parte duran lo mismo, las luces serán de media intensidad. El hecho de trabajar con solo dos estados (si o no, conduce o no conduce) disminuye en modo notable la disipación de potencia en los mosfet y hace el circuito muy eficiente. Por este motivo, aunque si trabajáramos con luces de cierta potencia (50W por ejemplo), podemos usar disipadores bastante pequeños.

La plaqueta "Día/noche" dispone de un potenciómetro que permite de regular la duración del ciclo completo (día, atardecer, noche y alba). También posee una salida de control que se conecta al otro circuito para sincronizar las luces de las casas. Por su parte, también la plaqueta "Luces casas" dispone de un potenciómetro que permite de regular el retardo de encendido de las casas desde que empieza el atardecer. También posee una entrada de control que se conecta al otro circuito para sincronizar las luces de las casas. Para poder probar el circuito sin que se encuentre conectada la otra plaqueta, debemos conectar un puente entre los dos pines indicados con el nombre "TEST".

Elenco de componentes del circuito "Día/noche"

1 resistencia de 330 ohms
2 resistencias de 1K 1/4 W
3 resistencias de 4,7K 1/4 W
3 resistencias de 10K 1/4 W
1 potenciómetro de regulación (trimmer o preset) de 100K
1 capacitor de 10nF (disco, poliester o cerámico multiestrato)
2 capacitores de 100nF (disco, poliester o cerámico multiestrato)
2 capacitores electrolíticos de 22uF 25V
1 led verde 3mm de diámetro
3 transistores BC548 (o BC547 o BC337)
3 mosfet IRF530
1 PIC 12F629
1 regulador 78L05
3 kits de aislación para mosfet con encapsulado TO220
5 borneras de dos contactos
1 zócalo para circuito integrados de 8 pines
disipador de aluminio (ver figuras)
3 kits de aislación para encapsulado TO220
circuito impreso

 

Breve descripción del programa "Día/noche"

El micro del circuito "día/noche" inicia ejecutando el código que empieza con la etiqueta "main" y que sirve para configurar el micro (entradas, salidas y otros registros). Una vez hecho esto, pasa a la sección con la etiqueta "día". Esta parte del programa enciende completamente las luces del día (salida 1) y apaga las salidas restantes (salidas 2 y 3), después lee el potenciómetro de calibración (llamado trimmer o preset) memorizando su valor en una variable. Posteriormente el programa entra en un ciclo de espera con una temporización que depende de la posición del potenciómetro de calibración y del valor almacenado por la variable timerReg que es fijo. Si desean tiempos distintos y no logran alcanzarlos con el potenciómetro, pueden modificar el valor de la variable "timerReg" con un numero entre 1 y 255. Yo he usado como valor 10. Mayor será el valor, mayor será el tiempo.

ciclo-noche-dia.png
Diagrama temporal que muestra el funcionamiento del circuito "Día/noche"

Una vez terminado el día, el programa entra en la parte indicada con la etiqueta "Atardecer". Aquí se hace la transición entre el día y la noche. La primera parte de la sección del programa reduce gradualmente la luz del día y contemporáneamente aumenta la luz del atardecer (naranja / roja). Una vez que la luz del día se ha apagado completamente, empieza a encenderse la luz de la noche (yo he usado leds azules) mientras que se apaga lentamente la luz del atardecer. La velocidad del atardecer depende también de la posición del potenciómetro de regulación.

Una vez terminado el atardecer, el programa pasa a la sección con la etiqueta "Noche" que es similar a la sección "Día" con la única diferencia que el canal encendido es el de la noche (salida 2). Por último una vez transcurrido el tiempo de la noche (que dura el doble respecto al día porque la noche es más interesante para ver en el pesebre), se pasa al alba que es similar al atardecer pero encendiendo la luz del día y apagando la de la noche. La salida de sincronismo del circuito sirve para comandar la segunda plaqueta con las luces de las casas y se activa cuando empieza el atardecer para desactivarse cuando empieza el alba. La plaqueta de luces de las casas permite de regular el retardo desde el momento que la señal de sincronismo se activa. De esta forma podemos encender las luces de las casas durante el atardecer o más tarde, cuando es ya de noche. Además, si construimos más plaquetas de casas, podemos hacer que algunas casas se enciendan después de otras.

Breve descripción del programa Luces de las casas

El micro inicia ejecutando el código que empieza con la etiqueta "main" y que sirve para configurar el micro (entradas, salidas y otros registros). Una vez hecho esto, pasa a la sección con la etiqueta "Día" donde el programa entra en un bucle (loop) esperando que llegué la señal de la noche desde el circuito "Noche/Día". Para evitar el riesgo de interferencias, cuando llega la señal, el micro verifica varias veces (255) antes de pasar a la sección del programa con la etiqueta "Atardecer".

Pesebre_circuito_casas.png
Circuito de la plaqueta de iluminación "Luces casas".

La sección con la etiqueta "Atardecer" es solamente un bucle de retardo cuya duración se puede modificar con el potenciómetro de regulación. Este retardo programable sirve para encender las luces de las casas cuando queramos (durante el mismo atardecer o en la plena noche). La variable "atenuación" que al principio se carga con el valor 255 sirve para producir un encendido lento de las luces de las casas. Este valor (255) después disminuirá progresivamente hasta 100 produciendo que el parpadeo de las luces llegue a la intensidad plena.

Durante la noche, las luces de las casas parpadean simulando la luz del fuego (de las velas o de las antorchas). El efecto típico de parpadeo se obtiene cambiando continuamente la intensidad luminosa en modo casual. Para esto he creado una subrutine llamada rand que genera números casuales (en realidad pseudo casuales) de un byte con valores entre 0 y 255. Durante la noche, el micro entra en un bucle que usa el generador de números para obtener las intensidades casuales.

Pesebre_pictorico_casas.png
Vista pictórica y circuito impreso de la plaqueta "Luces casas".

El programa de las casas posee una característica particular: cuando las luces se encienden, al principio de la noche, la intensidad luminosa de los canales de salida es baja y después de pocos segundos llega a la máxima intensidad, simulando el tenue encendido de las velas. Los mismo sucede cuando llega el alba y las luces se apagan.

Elenco de componentes del circuito "Luces casas"

1 resistencia de 330 ohms
2 resistencias de 1K 1/4 W
4 resistencias de 4,7K 1/4 W
5 resistencias de 10K 1/4 W
1 potenciómetro de regulación (trimmer o preset) de 100K
1 capacitor de 10nF (disco, poliester o cerámico multiestrato)
3 capacitores de 100nF (disco, poliester o cerámico multiestrato)
2 capacitores electrolíticos de 22uF 25V
1 led verde 3mm de diámetro
4 transistores BC548 (o BC547 o BC337)
4 mosfet IRF530
1 PIC 12F629
1 regulador 78L05
4 kits de aislación para mosfet con encapsulado TO220
6 borneras de dos contactos
1 zócalo para circuito integrados de 8 pines
1 puente de dos contactos
disipador de aluminio (ver figuras)
4 kits de aislación para encapsulado TO220
circuito impreso

Consideraciones prácticas

Recuerden que los mosfet deben ser aislados respecto a los disipadores. Explico como hacerlo aquí

Al canal del día pueden conectar leds blancos (mejor si son de luz cálida), una lámpara alógena de 12V 50W o dos de 12V y 20W (junto con los leds si lo desean). Al canal de la noche pueden conectar tiras de leds azules y también leds blancos para las estrellas. Por último, para el atardecer y el alba, pueden conectar leds o luces de 12V naranjas y rojas. Respecto a la potencia, el prototipo lo he probado con 120W (a 12V). La fuente que he usado permitía una corriente de salida de 10A. Yo no he trabajado con más potencia. Si desean pueden probar, les aconsejo de reforzar las pistas de positivo y negativo de las plaquetas con alambre de cobre soldado por todo el largo del recorrido y de montar quizás de disipadores más grandes si ven que calienten demasiado.

Pesebre_conexion.png
Diagrama general de conexión del sistema de iluminación para pesebre de Navidad.

Uno es libre de usar leds o lamparillas con filamento. Yo personalmente, prefiero las lamparillas porque producen una luz más similar al fuego. Si usan leds sueltos, es necesario agregarles resistencias como he explicado en distintos artículos publicados en el blog. Si deciden de usar lamparillas, pueden comprar de distintos tipos (a rosca, a bayoneta o con los conductores de salida (las que se usan en los arbolitos de Navidad) que son muy económicas. Como dicho anteriormente, la electrónica permite corrientes de salida de algunos amperios por canal por lo que pueden conectar varias casas por cada canal. Sin embargo, demasiadas casas conectadas a los mismos canales disminuye el efecto realístico y por lo tanto, con pesebres grandes y muchas casas para iluminar, les aconsejo de construir más plaquetas iguales.

Luces_Pesebre_Foto_02.jpg
Otra foto de las plaquetas montadas.

Respecto a las fotografías de los circuitos montados, notarán alguna diferencia respecto a los diseños pictóricos. Esto se debe al hecho que una vez construidos los prototipos he notado algunos inconvenientes que he corregido. El más importante era el ancho de las pistas de alimentación de 12V. En el prototipo usé 1,8mm pero este ancho creaba problemas de funcionamiento cuando las luces eran de mucha potencia, por ejemplo luces alógenas de 12V y 50W. Por lo tanto modifiqué estas pistas a 3mm y los problemas se resolvieron.

Como de costumbre, les dejo para poder descargar, el circuito impreso en formato KiCad (también en PDF) y los programas fuentes para los micros (files asm) y los archivos compilados para cargar directamente en los micros (files hex).

En los próximos días espero de poder instalar el sistema de iluminación en un espléndido pesebre que tiene una amiga mía. Si todo va bien espero de hacer fotografías y videos para poder publicarlos. Espero que el proyecto sea de vuestro agrado.
Hasta la próxima!! 🙂

 

logo_descarga

[Circuitos impresos (formato KiCad y PDF)] (502)

 [Software completo (código asm y ficheros HEX)] (591)

 

Los contenidos de este blog son originales y están bajo una licencia Creative Commons BY_NC_SA

Iluminación para pesebre de Navidad ultima modifica: 2014-11-30T21:21:55+00:00 da inventable

37 pensamientos en “Iluminación para pesebre de Navidad”

  1. Impecable lo tuyo Gabriel, felicitaciones y gracias por compartirlo con el mundo.

    Saludos
    HJ

    Gracias amigo por tus palabras y por la gran mano que me das aquí. Un gran abrazo.
    Gabriel

  2. Muchísimas gracias, realmente útil e interesante brico para estas fiestas que se avecinan.
    Estoy muy agradecido por el tiempo que dedicas a todos tus amig@s de inventable a pesasr de lo ocupado que puedas estar.
    Un gran abrazo y siempre muy agradecido por todo lo que nos entregas.

    Gracias Jorge!! 🙂

  3. Muy bonito e interesante esta el proyecto, una pena q mis conocimientos de electrónica sean de apenas 0.1% 😀

    Voy a intentar a ver q me sale!

    Gracias.

    Probar no cuesta nada! 🙂

  4. Muy completo y didactico el proyecto. Me interesa las luces de las casas con el modulo de forma independiente. Es posible con una fuente de 4.5?

    No Santiago, el mínimo es 8V.

  5. gabriel hasta hoy comienzo la aventura con tu pagina y la verdad me doy cuenta que no te guardas nada. de verdad gracias por tu generosidad eres exelente

    Muchas gracias Raul 🙂

  6. Con el programa actual sin modificar….cual es el tiempo completo de duración. Potenciómetro a máximo.
    Alba+Dia+Atardecer+Noche.
    Gracias

    Hola Francisco, lamentablemente no he medido el tiempo con exactitud cuando lo armé. De cualquier manera se puede ver aproximadamente en el video.

  7. Saludos, hace poco que quiero empezar con los pics, no se nada de programación, he estado mirando algunos manuales pero poco, descubrí esta página buscando información y me decidí a hacer este proyecto, lo he montado todo pero me ocurre que la parte del dia la hace bien, la transición a la noche también pero cuando ha de encender la noche vuelve al dia, he estado revisando todo, he probado varios pics, lo único que me queda es cambiar el programador… alguna ayuda? muchas gracias por todo, me encanta esta página!!

    1. Ya se que este post es de hace un año pero por si alguien me lee, despues de volver al dia si hace ya el ciclo completo, o sea, empieza en el dia, hace la transición hacia la noche, vuelve al dia y ya si hace el ciclo completo dia-transición-noche, ¿ sabeis que hago mal para que al conectarlo por primera vez después de la transición del dia a la noche me vuelve al dia ?

      1. Solucionado el problema, era algo de OSCAL, no se ni como pero se solucionó, ahora el problema es la placa de las casas, al programar el pic me sale algo así
        The OSCAL value should be in the form of RETLW instruccion [ 34xx ]
        Currently [ 3Fxx ]
        Do you want this change?

        Le he dado si, a no…
        oscal value: 3F FF (se pueden modificar las dos ultímas FF)
        Bandgap: 11 (se puede modificar)
        he leido mucho pero mis conocimientos son pocos, se que la banda prohibida puede ser 00, 01, 10 o 11 he probado con todas.

        He cambiado fuses, no se mas, ¿puede ser mi programador? uso uno chino K150, en fuses selecciono esto en la placa de casas:
        WDT: Enabled PWRTE: Enabled
        MCLRE: Disabled BODEN: Enabled
        CODE PROTECT ROM: Disabled CODE PROTECT EEP: Enabled
        BANDGAP: Highest OSCILLATOR: INTOSC IOGP4 IOGP5

        A veces las luces nunca encienden, a veces enciende usa sola, otras veces se quedan encendidas desde que enciendo la fuente, otras veces encienden dos…
        Seguiré probando hasta que me aburra!

        1. Hola compañeros, antes de nada dar las gracias por la gran labor y esfuerzo, Jero a mi me pasa exactamente como a ti, la placa de noche y dia me anda perfectamente, pero la de las casas tampoco me funciona, he estropeado ya 9 pics y solo me queda 1 de los 10 que pedí, que podemos estar haciendo mal? Yo me estoy iniciando en esto de la programación, tan solo estoy iniciandome en el basic que así por encima es al unico que le veo algo de sentido para empezar, si solucionaste ya el problema dime como lo hicistes gracias.

          Hola Nico, lamento que no logres encontrar el problema. Non entiendo porqué dices que has estropeado 9 PIC. Los PIC12F629 se pueden cancelar y reprogramar todas las veces que quieras. Fijate en el programa que usas para programarlos.
          Gabriel

  8. Como comente anteriormente simule con proteus circuito y programa luces para casas y no funciona. Lo realice en físico y nada de nada. Tiene algún problema en el asm o el hex.
    Ruego una solución lo antes que pueda ya que me he quedado colgado con mi pesebre.
    Muchas gracias….
    Salu2

  9. Hola excelente página, tengo bajos conocimientos de electronica, y poco a poco espero ir adquiriendo. Me gustaría realizar este proyecto, pero quisiera regular luces a 220v, mi pregunta es si utilizando triac valdría la programación del pic, gracias de antemano

    1. Hola Ignacio, te contesto de metido…
      Sin haber analizado el código en profundidad, te diría que no te sirve para controlar luces de 220V ya que el control por PWM de los triac requiere que el pulso sea disparado durante el cruce por cero de la señal alterna de la red, necesita estar sincronizado con la red eléctrica , y este circuito, al estar diseñado para trabajar con 12V de continua, no tiene, ni en el hardware, ni en en firmware, la detección de cruce por cero por tanto no hay sincronización alguna, además estoy casi seguro que el periodo del PWM no es el mismo del de la red eléctrica.
      No confundir el sincronismo entre las plaquetas (SINC) con el sincronismo con la red eléctrica que he mencionado.

      Saludos
      HJ

    2. Puede que utilizando algún optotriac con detección de cruce por cero puedas hacer algo, pero es algo de que no poseo conocimiento y no sabría decirte si funcionaría, habría que experimentar, o esperar a que alguien con conocimiento del tema nos lo aclare…

  10. Hola. Felicidades por este proyecto y gracias por compartirlo. Tengo tres dudas:
    El disipador de aluminio no indica el tamaño, significa que habria que cortarlo y adaptarlo o tiene su referencia,si es asi te pido que me la digas.
    4 kits de aislación para mosfet con encapsulado TO220 y 4 kits de aislación para encapsulado TO220, el caso
    es que lo busco por la red y me sale lo mismo, me podrias decir la diferencia e indicarmela en el montaje.
    Que es el puente de dos contactos.
    Gracias y saludos.

    1. Hola Fernando, te contesto de metido..
      El “disipador” que utiliza Gabriel es en realidad un trozo de caño de aluminio de perfil rectangular como puede apreciarse en las diferentes imágenes. Aunque no lo dice estimo que ha de ser de 1cm de ancho x 2 cm de alto y el largo de acuerdo a la placa 4,5 cm y 5,5cm la otra.
      Los kit de aislación que mencionas son exactamente lo mismo.
      El puente de dos contactos es simplemente una tira de pines de solo dos pines con separación de 100 milésimas de pulgada, al que se le puede poner un capuchón que los une, denominado puente o jummper.

      Saludos
      HJ

      1. Gracias por tu rapida respuesta. Me ha quedado claro excepto lo último. La regla de pines podria ser lo que se conoce como ficha de empalmes. Y en que lugar del circuito iria puesto. Gracias de nuevo y disculpa.

  11. Hola Gabriel, justamente estaba por mandarte un proyecto similar, pero más simple y para lámparas de 220V. Vi el video y me encantó.
    Lo que me intriga es la rutina “rand”. Yo, para estos efectos uso normalmente tablas, pero esta rutina me pareció genial (la vi funcionar en el video).
    Vi el código y entiendo perfectamente lo que hacen las instrucciones, pero lo que no entiendo bien es el concepto. Por algún motivo me recordó al cálculo de un CRC.
    Si tenés ganas, aclarame algo. Mientras tanto, como no uso los PIC, la voy a traducir a los que uso y simularla.

    Un abrazo,
    Juan

  12. Perdón, me olvidé de un par de cosas:
    Quiero dejar la sesión abierta, pero siempre se cierra.
    La otra es: ¿alguien me puede explicar lo que son los RSS? ¿Se pueden leer con el Outlook Express, por ejemplo?

    Mil gracias,
    Juan

  13. Hola, Tras montar las placas y programar las pic, no consigo hacerlas funcionar.
    todas las luces quedan encendidas, uso el Icprog con un viejo TE20.
    Icprog al programar me indica valor de osc ausente, quieres asignar 3FFFH. he probado de las dos maneras y lo mismo.
    Entiendo que es algo de programacion pues las dos placas hacen los mismo.
    Si alguien puede ayudarme quedare agradecido.

    saludos.

    1. Hola Eduardo, te contesto de metido.
      asegúrate de setear el tipo de oscilador como “INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN”, es decir, bits 2, 1 y 0 de la palabra de configuración como “100”
      y el MCLR como “GP3/MCLR pin function is digital I/O,”, es decir, el bit 5 = “0”

      Saludos
      HJ

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *