Paso 5: Firmware
La función principal del firmware es supervisar el control de brillo (mediante VR1, puerto serie o IR remote) y controlar la salida. Al comienzo, el control de brillo mediante el potenciómetro es leer a través de convertidor del A/D(analog-to-digital) y se utiliza como nivel inicial/atenuación de brillo.Bucle principal
El controlador crea tensión de referencia V-REF (ver circuito "Generador de voltaje de referencia" del esquema), que se conecta a una entrada positiva del comparador incorporado. Voltaje actual del sentido sentido C se compara contra esta tensión por el comparador. Las vueltas del microcontrolador en la Q1 por un momento rápido, luego ver si el inductor actual fue lo suficientemente alto como para "disparar" el comparador (que significa que L1 actual había alcanzado o superado el nivel deseado). Si el comparador no dispara, se aumenta el "tiempo" y el ciclo se repite hasta que el comparador. Si las salidas del comparador, entonces el "tiempo" se reduce un poco, entonces el bucle continúa. Esto forma un controlador de bucle de realimentación simple. Esencialmente el nivel de salida es fijado por la tensión de referencia.
Tensión de referencia se crea mediante la salida de señal (software) PWM de ciclo de trabajo proporcional a la tensión deseada. El PWM de salida desde el microcontrolador es tensión fijada por un diodo (a la misma escala/la tensión de sentido actual), luego alisada por la R15 y C8 (filtro RC). Este voltaje de referencia se mantiene entre 0 a 0. 6V.
Convertidor A/D no es adecuado para la lectura del corriente del inductor debido a la velocidad (falta de). Inductor es ráfagas cortas de corriente, en intervalos de microsegundos. Comparador puede responder a un pico de corriente, mientras que el convertidor A/d necesita el voltaje de entrada sea estable al mismo tiempo de muestreo.
La señal de "tiempo" es generada por el módulo de PWM por hardware. Está configurado para generar PWM frecuencia entre 32kHz a 175kHz (configurable). Los cambios de frecuencia según el nivel de atenuación. Cuanto menor sea el brillo, cuanto más baja la frecuencia. Cambiando la frecuencia, también cambia el ciclo de trabajo efectivo de la salida. Combinando el cambio de ciclo de deber para el cambio de la corriente mediante el conversor de modo interruptor, se logra mucho mejor atenuación curva.
Salida sobre la protección del voltaje
Cuando la salida está abierta (es decir, nada está conectada, mala conexión o muerto LED) o demasiados LEDs están conectados en serie, el voltaje de salida puede llegar demasiado alto para el MOSFET manejar. Aquí MOSFET puede manejar hasta 60V entre drenaje y fuente. Un voltaje más alto puede destruir el dispositivo (algo rápido fumar muerte como experimenté varias veces durante el desarrollo).
La tensión de salida es atenuada para que el voltaje es seguro para el microcontrolador (debajo de 5V), entonces alimenta el módulo comparador. Tensión de referencia interna se establece para que el comparador viajes en sobre 59V (configurable en pasos de 3V). El comparador se conecta internamente por hardware a «apagar» PWM de salida cuando viajes. Así que sobre la protección del voltaje de salida funciona instantáneamente como debería. (Otra razón que necesitaba comparadores integrados) Cuando la protección entra en acción (mediante hardware), el firmware, detecta y detiene el funcionamiento, luego parpadea el LED de estado. Sólo puede ciclismo poder restablece esta condición.
Sensor de voltaje de la fuente
Tensión de alimentación es leída por el convertidor A/D y el valor se utiliza para compensar el nivel de salida, por lo que la potencia de salida es constante en un rango de tensiones de alimentación. También, la oferta sobre voltaje protección patadas en xxV (configurable en el firmware).
Receptor IR
IR remota señal es detectada por el sensor y genera interrupciones. La señal es decodificada por el ISR (rutina de servicio de interrupción).
Usted puede controlar el nivel de brillo/atenuación, salida vía el mando a distancia IR. Cuando el brillo se modifica a través de infrarrojos remoto, el potenciómetro está deshabilitado hasta que se mueva otra vez.
Sólo el protocolo remoto de Sony es compatible en este momento (por supuesto puede siempre agregar otros protocolos).
Botones
Interruptores de botón son encuestados acerca de cada milisegundo 4 y debounced en firmware. Brillo función arriba/abajo se implementa por ahora. (pero puede hacerlo que quieras)
Cuando el brillo se modifica a través de los botones, el potenciómetro se desactiva hasta que se cambia otra vez.
También puede conectar botones externos mediante el puerto SPI para control remoto rápido y fácil. (véase el esquema)
Control de bidireccional serie/SPI
Estilo SPI serial puede usarse para controlar este controlador. Cambio de brillo/atenuación sólo se admite ahora. Los datos de brillo de 8 bits es enviados vía el puerto del mismo cuando se mueve el potenciómetro. Así que si conecta dos o más de este controladores vía el puerto SPI, todos del controlador pueden controlarse moviendo sólo uno de los potenciómetros (banda de regulación). Esto resulta útil cuando usted tiene un montón de controladores a la luz una gran sala.
Puerto SPI y los interruptores de botón comparten los mismos puertos de E/S, por lo que el firmware determina la fuente de la señal por la duración del pulso. Puesto que los seres humanos pueden solamente los botones tan rápidos, pulsos que son más largos que unos 47 microsegundos se consideran pulsar botón y más cortos son decodificadas como señal SPI.
El formato de datos es sencillo: sólo tienes que enviar el nivel de brillo en formato de 8 bits. Eso es todo por ahora - tal vez ampliado para hacer otras cosas...
Open Source
Puede descargar el código fuente, así como el archivo HEX para programar el microcontrolador. Me encantaría ver a alguien que se extiende mi código.