Växla läge Altoids iPOD laddare med 3 "AA" batterier (5 / 8 steg)
Steg 4: FIRMWARE
Komplett redogörs SMPS firmware i nixie SMPS instructable. För alla matematik och smutsiga Detaljer för operatörer med betydande Marknadsinflytande, Läs min nixie rör uppsving omvandlare instructable:
(
Firmware är skriven på MikroBasic, kompilatorn är gratis för program upp till 2 K (http://www.mikroe.com/).
Om du behöver en PIC programmerare, du min förbättrade JDM2 programmerare ombord också postat på instructables (
Grundläggande firmware operation:
1. När driva, appliceras startar PIC.
2. PIC förseningar i 1 sekund att tillåta spänning för att stabilisera.
3. PIC läser leverans spänning feedback och beräknar optimal månadskapaciteten och tidstypiska värden.
4. PIC loggar ADC läsning, månadskapaciteten och tidstypiska värden till EEPROM. Detta gör att vissa felsökning och hjälper diagnostisera katastrofala misslyckanden. EEPROM adress 0 är skriva pekaren. En 4 byte loggen sparas varje gång SMPS är (åter-) började. Första 2 byte är ADC hög/låg, tredje byte är lägre 8 bitar av duty cycle värde, fjärde byte är perioden värdet. Totalt 50 kalibreringar (200 byte) loggas innan skriva pekaren rullar över och startar igen på EEPROM adress 1. Den senaste loggen kommer att placeras vid pekaren-4. Dessa kan läsas av chip med en PIC programmerare. De övre 55 byte lämnas fri för framtida förbättringar.
5. PIC träder ändlös ögla - högspänning feedback värde mäts. Om det är lägre än önskat värde PWM duty cycle registren är laddade med det beräknade värdet - Obs: de nedre två bitarna är viktiga och måste laddas in i CPP1CON < 5:4 >, övre 8 bitar går in i CRP1L. Om feedback är över önskat värde, laddar PIC duty cycle registren med 0. Detta är en 'puls skip' system. Jag bestämde mig på puls hoppa av två skäl: 1) vid sådana höga frekvenser finns det inte en massa tull bredd att spela med (0-107 i vårt exempel, mycket mindre på högre matningsspänningar), och 2) frekvensmodulering är möjligt, och ger mycket mer utrymme för justering (35-255 i vårt exempel), men endast plikt är dubbel BUFFRAS i hårdvara. Ändra frekvensen när PWM är i drift kan få "konstiga" effekter.
Ändringar:
Firmware får några uppdateringar från nixie rör SMPS-versionen.
1. de pin-anslutningarna ändras. En LED elimineras, en enskild led indikator används. PIN ut visas i bilden. Beskrivningar i rött är standard PIC Stifttilldelningar som inte kan ändras.
2. den analog digital omvandlaren som nu refereras till en extern spänning på stift 6, snarare än matningsspänningen.
3. som batterierna dränera ändras matningsspänningen. Den nya firmware tar en leverans spänningsmätning med några minuters mellanrum och uppdaterar pulse bredd modulator inställningarna. Denna "omkalibrering" håller induktor fungerar effektivt som batterierna ansvarsfrihet.
4. intern oscillator inställd på 4 MHz, en säker hastighet till ca 2,5 volt.
5. fast loggning så behöver inget ställas in i EEPROM att starta på position 1 på en färsk bild. Lättare att förstå för nybörjare.
6. induktor ansvarsfrihet tid (off-tid) beräknas i firmware. Föregående multiplikatorn (en tredjedel i tid) är otillräcklig för sådana små ökar. Det enda sättet att upprätthålla effektiviteten i hela batteriet ansvarsfrihet var att utvidga firmware för att beräkna den verkliga off-tid. Ändringarna som är experimentella, men har sedan dess införlivats i den slutliga firmware.
Från TB053 hittar vi off-tid ekvationen:
0 = ((volts_in-volts_out)/coil_uH) * fall_time + coil_amps
Mangel detta till:
fall_time = L_Ipeak/(Volts_out-Volts_in)
där: L_Ipeak = coil_uH * coil_amps
L_Ipeak är en konstant som redan används i firmware (se firmware). Volts_in beräknas redan för att bestämma induktor på-tid. Volts_out är en känd konstant (5/USB eller 12/Firewire). Detta bör fungera för alla positiva värden för V_out-V_in. Om du får negativa värden, har du större bekymmer! Alla ekvationer beräknas i helper kalkylbladet medföljer NIXIE smps instructable.
Följande rad lades till avsnittet konstanter firmware beskrevs i kalibrering steg:
CONST v_out som byte = 5 "utspänning att bestämma off-tid