Vistas de página en total

miércoles, 9 de diciembre de 2015

Control Belén con Pic

    Dado que llega Navidad, voy a aprovechar para añadir un circuito para controlar un belén.
    La tecnología ha cambiado en cuanto a la iluminación y ahora se pueden hacer cosas que antes eran impensables, como por ejemplo iluminar en RGB, o utilizar solo tensiones de seguridad.



     Características del circuito

  • Alimentación circuito y salidas 1A. 6-12V
  • Alimentación  salidas 2A 5-48V
  • 8  Salidas 2A.
  • 8 salidas  1A.
  • Conector ICSP
  • Conector Serire TTL para futuras ampliaciones.
  • Conector SPI. para futuras ampliaciones.
  •  

      Uso de las salidas con el firmware actual

      En esta versión inicial he implementado en el firmware unas cuantas características básicas para el belén. Eso no implica que no se puedan usar las salidas transistorizadas para otros usos en otro belén.
      En el caso que propongo actualmente el belén dispondrá de :
  • 2 Salidas de 2A con posibilidad de alimentar a 48V, para 2 conjuntos de LEDs RGB. Uno para generar el atardecer y otro para generar el amanecer
  • 2 Salidas de 2A con posibilidad de alimentar a 48V, para colocar LEDs de potencia cálidos, para la iluminación central y la transición del amanecer al atardecer.
  • 4 salidas de 1A 12V para el encedido de estrellas en 4 grupos diferentes.
  • 3 Salidas de 1A 12V para el encendido de casas en 4 grupos diferentes.
  • 1 Salida de 1A 12V para el encendido de antorchas y hogueras.
        Todo está debe de ser realizado con LEDs.
                 El atardecer y el amanecer con leds RGB de alta potencia (10W) (20W).
                 La mañana y la tarde con LEDS cálidos de potenia (20W)
                 Las estrellas con leds alto brillo agrupados en series de 4 leds o 5 leds.
                 Las casas igualmente con leds alto brillo agrupados en serie de 4 leds
                 La hogueras y antorchas con leds rojos alto brillo agrupados en series de 5 leds.

    Esquema

       Como se puede ver el esquema no puede ser más simple. Todo se hace con un Pic16F73 al que se le amplifica la potencia de las salidas mediante ULN2003 y transistores.
       Las salidas que van diréctamente a ULN2003, tendrán 1A máximo de salida, y funcionarán cerrando el circuito a masa. Es decir el + es el común y la salida debe de conectarse al negativo del diodo.
        En cambio las salidas conectadas a los transistores funcionan al revés. Es decir, el común es el negativo y las salidas deberán ser conectadas al + del diodo.


    Implementaciones en el Firmware actual

        El programa del pic está dividido en tres partes.
  1.         Control de las estrellas
  2.         Control de los fundidos
  3.         Control del ciclo.

   Control de Estrellas

          El control de las estrellas, su tintineo, está implementado en la interrupción RTCC, de forma que periódicamente se entra en esta interrupción y se valora si se deben o no apagar momentaneamente las estrellas. El tiempo que tardará entre dos tintineos es aleatorio, y diferente para cada grupo de estrellas, por lo que no se verán tintinear todas a la vez, sino por grupos. como se ve en el programa he llamado a las estrellas ESTRELLAS1 y ESTRELLAS2 y para cada una hay H y L.
     ¿Qué significa esto?   Que hay cuatro salidas de estrellas. Los grupos 1 y 2 están pensados para ser puestos por el lado del amanecer y por el lado del atardecer, y los H y L son partes del mismo conjunto de estrellas, pero que serán calculadas para que den diferente luminosidad.
     Es decir para formar la constelación de Orión, usamos Estellas1_H para las estrellas de primera magnitud y Estrellas1_L para las de segunda magnitud. Para conseguir mayor iluminación en la primera magnitud con respecto de la segunda, bastará colocar una resistencia limitadora en las de segunda magnitud.
     Así podremos emular mejor una constelación. Además en el ciclo encenderé antes las de 1ª magnitud que las de la segunda durante el atardecer. igualmente apagaré antes las de 2ª magnitud que las de 1ª magnitud durante el amanecer.
     Que haya dos grupos, 1 y 2, nos permite colocar un grupo en el amanecer y otro en el atardecer del belén, de forma que podemos encender antes las del lado de amanecer cuando atardece y apagar antes las del lado del atardecer cuando amanece.

      Control de fundidos

     Para conseguir realizar el amanecer y la transición del amanecer al atardecer, he usado fundidos, más o menos complejos.
     Para gestionar esos fundidos uso PWM. Este PWM está programado en la interrupción del TIMER1.
     En ella, según el valor hayamos dado a la intensidad de luz, 0 a 255, se generará un PWM para controlar la potencia de la salida.
     En este caso las salidas controladas por este método son los tres colores del atardecer, y los tres del amanecer, la mañana y la tarde. En total 8 salidas, que podrían ser usadas para otras cosas en el futuro.
     Para mayor comodidad en la gestión de los valores he creado dos estructuras
      La priemera Tipo_crepusculo, permite definir los colores el atardecer y el amanecer, para conseguir pasar del blanco del día al azul de la noche, a través de un rojo del atardecer.

                typedef struct { //estructura para control rgb del
                           int rojo;
                           int verde;
                            int azul;
                         }Tipo_crepusculo;
     
Esta estrucutra es usada a su vez para crear unas variables de nivel de potencia de las luces, de forma que sean fáciles de identificar y manejar en el programa.

                 struct Niveles_Str {                
                             Tipo_crepusculo LUZ_Amanecer, LUZ_atardecer;
                              int LUZ_manana;
                              int LUZ_tarde;
                              } Nivel, Nivel_tmp;

      Control de ciclo

       Una vez que tenemos la estructura de mando del sistema, solo queda pensar en el ciclo.
       El ciclo, en este caso es muy complejo. Por pasos sería
  1.  Subimos la Nivel.LUZ_Amanecer pasándolo del azul de la noche al blanco
  2. Antes incluso de alcanzar el blanco en el amanecer, comenzamos a subir la mañana, que es luces colocada a 1/3 de la longitud del belén.
  3. Cuando se llega a un nivel en la mañana comenzamos a subir la tarde, y luego subimos el Nivel.LUZ_Atardecer, con todos los colores igual ,para subir en blanco.
  4.  Esto nos ilumina completamente el belén desde el amanecer a toda la escena de forma progresiva.
  5. Una vez alcanzado el día, esperamos un tiempo y comenzamos el atardecer.
  6. Para ello vamos bajando la luz del amanecer del blanco al azul, pasando por el rojo.
  7. De forma sincronizada, vamos apagando las luces de la mañana,y la tarde. De forma que vayan en escala descendente.
  8. Cuando  el amanecer esta en rojo y está apagada casi la mañana y ya ha ido bajando la tarde, comienzo el descenso del atardecer del blanco al rojo.
  9. Para finalizar, el amanecer queda en azul, la mañana y la tarde se apagan y el rojo del atardecer pasa finalmente a azul. Se ha hecho la noche.
     Durante este proceso, deberemos ir encendiendo y apagando las estrellas, las casas y las antorchas y fuego.
     Como en el caso anterior lo iremos haciendo progresivamente de forma sincronizada con las luces del atardecer y el amanecer.
     Cuando comienza a caer la tarde, vamos encendiendo las antorchas, algunas casas y las estrellas del la de del amanecer , y cuando aparece el crepúsculo se van encendiendo las estrellas  del lado del atardecer. Todas ellas en dos fases, Primero las más intensas y luego las débiles.
     La noche queda como se desee, alternando casas y dejando encendidas las estrellas. El fuego y las casas se apaga al cabo de un tiempo.
  
      Llegamos al amanecer. Entonces, vuelvo a encender las casa y el fuego. Y volvemos a ir subiendo el amanecer del azul al blanco. Volviendo al paso 1. Durante un tiempo, mientras amanece, permanecerán las hogueras y algunas casas encendidas.
       Para implementar este ciclo, por lo tanto, en el programa he creado cuatro rutinas. Amanecer, Atardecer, Día y Noche, en las cuales se irá colocando el ciclo decada parte. Igualmente he creado constantes de tiempo para el fundido y los retardos principales, para poder variarlos de forma rápida.
  

      Mejoras

          En otra entrega usaré lasa salidas de comunicación reservadas RS-232 y SPI.
       Con el SPI controlarré tarjetas adicionales, tales como figuras con servocontroles, o motorrizadas, las cuales se crearán con su propio contról de ciclo y serán gestionadas mediante esta tarjeta mediante comandos.
       Igualmente en el RS-232, podremos conectar un Bluetooth o un ESP8266, para gestionar el ciclo, tiempos, puesta en marcha u otras características del belén mediante un móvil o internet.
       Pero eso queda para otro día.

       Descargar Control_Belén