Tabla de contenido:

Varias velas electrónicas: 3 pasos
Varias velas electrónicas: 3 pasos

Video: Varias velas electrónicas: 3 pasos

Video: Varias velas electrónicas: 3 pasos
Video: Vela para cumpleaños musical animada en flor de loto. 2024, Diciembre
Anonim
Varias velas electrónicas
Varias velas electrónicas

Las velas electrónicas se han publicado muchas veces en Instructables, ¿por qué esta?

En casa tengo estas pequeñas casitas navideñas semitransparentes que tienen una luz LED y una pequeña batería. Algunas casas tienen LED con efecto de vela y algunas tienen LED que están encendidos. Las baterías pequeñas se agotan relativamente rápido y como quería tener un efecto de vela en todas las casas, decidí convertirlo en un proyecto PIC. Por supuesto, también puede convertirlo en un proyecto Arduino.

Entonces, ¿qué hace que esta vela electrónica sea especial? PIC y Arduino tienen todos hardware de modulación de ancho de pulso (PWM) a bordo que se puede usar para crear un efecto de vela usando un LED, pero en mi caso quería tener 5 velas electrónicas independientes usando un controlador y eso no está presente, al menos no que yo sepa La solución que utilicé fue hacer estas cinco señales PWM independientes completamente en software.

Paso 1: Modulación de ancho de pulso en software

La modulación por ancho de pulso se ha descrito varias veces, p. Ej. en este artículo de Arduino:

PIC y Arduino tienen hardware PWM especial a bordo que simplifica la generación de esta señal PWM. Si queremos hacer una o más señales PWM en software, necesitamos dos temporizadores:

  1. Un temporizador que se usa para generar la frecuencia PWM
  2. Un temporizador que se utiliza para generar el ciclo de trabajo PWM

Ambos temporizadores se generan e interrumpen cuando se completan, por lo que el manejo de la señal PWM se realiza por completo con interrupción. Para la frecuencia PWM utilizo el temporizador 0 del PIC y dejo que se desborde. Con un reloj de oscilador interno de 8 MHz y una preescala de 64, la fórmula es: Fosc / 4/256/64 = 2.000.000 / 256/64 = 122 Hz u 8, 2 ms. La frecuencia debe ser lo suficientemente alta para que el ojo humano no pueda detectarla. Una frecuencia de 122 Hz es suficiente para eso. Lo único que hace esta rutina de interrupción del temporizador es copiar el ciclo de trabajo para un nuevo ciclo PWM y encender todos los LED. Hace esto para los 5 LED de forma independiente.

El valor del temporizador para manejar el ciclo de trabajo de PWM depende de cómo hagamos el efecto de vela. En mi enfoque, simulo este efecto aumentando el ciclo de trabajo con un valor de 3 para aumentar el brillo del LED y lo disminuyo con un valor de 25 para disminuir el brillo del LED. De esta manera obtienes un efecto parecido a una vela. Como utilizo un valor mínimo de 3, el número de pasos para controlar el ciclo de trabajo completo con un byte es 255/3 = 85. Esto significa que el temporizador del ciclo de trabajo PWM tiene que funcionar con una frecuencia de 85 veces la frecuencia del Temporizador de frecuencia PWM que es 85 * 122 = 10.370 Hz.

Para el ciclo de trabajo PWM utilizo el temporizador 2 del PIC. Este es un temporizador con recarga automática y utiliza la siguiente fórmula: Periodo = (Recarga + 1) * 4 * Tosc * Valor de preescala del Timer2. Con una recarga de 191 y una preescala de 1 obtenemos un período de (191 + 1) * 4 * 1 / 8.000.000 * 1 = 96 us o 10.416 Hz. La rutina de interrupción del ciclo de trabajo de PWM verifica si el ciclo de trabajo ha pasado y apaga el LED para el cual se completa el ciclo de trabajo. Si no se supera el ciclo de trabajo, disminuye un contador de ciclo de trabajo con 3 y finaliza la rutina. Hace esto para todos los LED de forma independiente. En mi caso, esta rutina de interrupción toma alrededor de 25 us y como se llama cada 96 us, ya se usa el 26% de la CPU para administrar el ciclo de trabajo de PWM en el software.

Paso 2: el hardware y los componentes necesarios

El hardware y los componentes necesarios
El hardware y los componentes necesarios

El diagrama esquemático muestra el resultado final. Aunque solo controlo 5 LED de forma independiente, agregué un sexto LED que se ejecuta junto con uno de los otros 5 LED. Dado que el PIC no puede controlar dos LED en un pin de puerto, agregué un transistor. La electrónica es alimentada por un adaptador de CC de 6 voltios / 100 mA y utiliza un regulador de voltaje de baja caída para producir 5 voltios estables.

Necesita los siguientes componentes para este proyecto:

  • 1 microcontrolador PIC 12F615
  • 2 condensadores cerámicos: 2 * 100nF
  • Resistencias: 1 * 33k, 6 * 120 Ohm, 1 * 4k7
  • 6 LED naranja o amarillo, alto brillo
  • 1 transistor BC557 o equivalente
  • 1 condensador electrolítico 100 uF / 16 V
  • 1 regulador de voltaje de baja caída LP2950Z

Se puede construir el circuito en una protoboard y no requiere mucho espacio, como se puede ver en la imagen.

Paso 3: el software restante y el resultado

La parte restante del software es el bucle principal. El bucle principal aumenta o disminuye el brillo de los LED ajustando el ciclo de trabajo de forma aleatoria. Dado que solo incrementamos con un valor de 3 y decrementamos con un valor de 25, tenemos que asegurarnos de que las reducciones no ocurran con tanta frecuencia como los incrementos.

Como no usé ninguna biblioteca, tuve que hacer un generador aleatorio usando un registro de desplazamiento de retroalimentación lineal, ver:

en.wikipedia.org/wiki/Linear-feedback_shif…

El efecto de la vela está influenciado por la rapidez con que se cambia el ciclo de trabajo de PWM, por lo que el bucle principal usa un retraso de aproximadamente 10 ms. Puede ajustar este tiempo para cambiar el efecto de vela según sus necesidades.

El video adjunto muestra el resultado final donde usé una tapa sobre el LED para mejorar el efecto.

Usé JAL como lenguaje de programación para este proyecto y adjunté el archivo fuente.

Diviértete haciendo este Instructable y esperando tus reacciones y resultados.

Recomendado: