Paso 4: FIRMWARE
Detalles completos del firmware SMPS se contornean en el nixie SMPS instructable. Para todas las matemáticas y los detalles sucios de SMPS, lea mi nixie tubo convertidor instructable:
(
El firmware esta escrito en MikroBasic, el compilador es libre para programas hasta 2 K (http://www.mikroe.com/).
Si usted necesita un programador PIC, considerar mi mayor Junta de programador JDM2 publicada también en instructables (
Operación básica del firmware:
1 cuando se aplica energía comienza el PIC.
2 retrasos de PIC durante 1 segundo para permitir estabilizar los voltajes.
3 PIC lee la realimentación de tensión de fuente y calcula valores períodos y ciclo de trabajo óptimo.
4 PIC registra la lectura ADC, ciclo de deber y los valores de período en la EEPROM. Esto permite algunos problemas y ayuda a diagnosticar fallas catastróficas. Dirección 0 de la EEPROM es el puntero de escritura. Un registro de 4 byte se guarda cada vez que se la SMPS (re-) comenzó. Los primeros 2 bytes son ADC alta-baja, tercer byte es 8 bits inferiores del valor del ciclo de deber, cuarto byte es el valor de período. Se registran un total de 50 calibraciones (200 bytes) antes de que el puntero de escritura da la vuelta y comienza otra vez en la dirección EEPROM 1. El registro más reciente estará ubicado en el puntero-4. Estos pueden leerse en el chip mediante un programador PIC. El superiores 55 bytes quedan libres para futuras mejoras.
5 PIC entra en bucle infinito - se mide el valor de retroalimentación de alto voltaje. Si es por debajo del valor deseado se cargan los registros de ciclo de trabajo PWM con el valor calculado - Nota: los dos bits más bajos son importantes y deben ser cargados en CPP1CON < 5:4 >, superiores 8 bits entran CRP1L. Si la regeneración está por encima del valor deseado, el PIC carga los registros del ciclo de deber con 0. Este es un sistema de pulso de skip. Me decidí por pulso skip por dos razones: 1) a estas altas frecuencias no hay mucha anchura deber jugar con (en nuestro ejemplo, mucho menos en voltajes más altos de la fuente 0-107), y 2) modulación de frecuencia es posible y da mucho más espacio para el ajuste (35-255 en nuestro ejemplo), pero sólo deber es doble búfer en HARDWARE. Cambio de la frecuencia mientras está funcionando el PWM puede tener efectos 'extraños'.
Cambios:
El firmware recibe algunas actualizaciones de la versión SMPS de tubo nixie.
1 las conexiones de perno se cambian. Un LED se elimina, se utiliza un solo indicador led. Pines se muestran en la imagen. Descripciones en rojo son asignaciones de pines PIC por defecto que no se puede cambiar.
2 el convertidor digital analógico ahora se hace referencia a un voltaje externo en pin 6, en lugar de la tensión de alimentación.
3.as descarguen las baterías va a cambiar la tensión de alimentación. El nuevo firmware toma una medida de voltaje de suministro cada pocos minutos y actualiza la configuración de modulador de anchura de pulso. Este "recalibración" mantiene el inductor operar eficientemente como descargan de las baterías.
4 oscilador interno de a 4 MHz, una velocidad de operación segura a aproximadamente 2,5 voltios.
5 fijo registro así nada debe establecerse en EEPROM para iniciar en la posición 1 en una imagen fresca. Más fácil de entender para principiantes.
6 tiempo de descarga de inductor (de momento) se calcula ahora en el firmware. El multiplicador anterior (una tercera parte a tiempo) es insuficiente para tales mejoras pequeñas. La única manera de mantener la eficiencia en la descarga de la batería fue ampliar el firmware para calcular cierto tiempo. Las modificaciones son experimentales, pero desde entonces se han incorporado en el firmware final.
Desde TB053 nos encontramos con la ecuación de tiempo:
0 = ((volts_in-volts_out)/coil_uH) * fall_time + coil_amps
Mangle esto:
fall_time = L_Ipeak/(Volts_out-Volts_in)
donde: L_Ipeak = coil_uH * coil_amps
L_Ipeak es una constante que se utiliza ya en el firmware (ver sección de firmware). Volts_in ya se calcula para determinar el inductor en el tiempo. Volts_out es una constante conocida (5/USB o Firewire/12). Esto debería funcionar para todos los valores positivos de V_in V_out. Si obtiene valores negativos, tienes problemas más grandes! Todas las ecuaciones se calculan en la hoja de cálculo de ayuda incluida con el smps NIXIE instructable.
La siguiente línea se agregó a la sección de constantes del firmware descrito en el paso de calibración:
v_out const como byte = 5 ' voltaje para determinar el tiempo de apagado de la salida