Stap 4: FIRMWARE
Volledige details van de exploitanten met AMM firmware zijn beschreven in de watergeest SMPS instructable. Voor alle de wiskunde en vuile details voor exploitanten met AMM, lees mijn watergeest buis boost converter instructable:
(
De firmware is geschreven in MikroBasic, de compiler is gratis voor de programma's tot 2 K (http://www.mikroe.com/).
U moet een PIC programmer, overweeg mijn verbeterde JDM2 programmeur boord ook gepost op instructables (
Fundamentele firmware bewerking:
1. Wanneer de macht wordt toegepast begint de PIC.
2. PIC vertragingen gedurende 1 seconde om spanningen te stabiliseren.
3. PIC leest de levering spanning feedback en optimale taakcyclus en periode waarden berekend.
4. PIC aanmeldt de ADC lezing, taakcyclus en periode waarden de EEPROM. Dit maakt het oplossen van bepaalde problemen en helpt diagnosticeren van kritieke fouten optreden. EEPROM adres 0 is de aanwijzer schrijven. Één 4 byte logboek wordt opgeslagen telkens wanneer de SMPS is (her-) begonnen. De eerste 2 bytes zijn ADC hoog/laag, derde byte is lagere 8 bits van plicht cyclus waarde, vierde byte is de historische waarde. Een totaal van 50 kalibraties (200 bytes) worden vastgelegd voordat de aanwijzer schrijven rolt over en begint opnieuw op EEPROM adres 1. De meest recente log zal worden gevestigd op aanwijzer-4. Dit kunnen worden gelezen uit de chip met behulp van een PIC programmer. De bovenste 55 bytes zitten gratis voor toekomstige verbeteringen.
5. PIC invoert eindeloze lus - hoogspanning feedback waarde wordt gemeten. Als het lager dan de gewenste waarde is de PWM plicht cyclus registers worden geladen met de berekende waarde - Opmerking: de onderste twee bits zijn belangrijk en moet worden geladen in de CPP1CON < 5:4 >, hogere 8 bits gaan CRP1L. Als de feedback die hoger dan de gewenste waarde is, laadt de PIC de plicht cyclus registers met 0. Dit is een systeem van 'pulse overslaan'. Ik besloot op puls overslaan om twee redenen: 1) bij dergelijke hoge frequenties er niet veel met de breedte van de plicht om te spelen met (0-107 in ons voorbeeld, veel minder op de hogere voedingsspanningen), en 2) frequentie modulatie is mogelijk, en geeft veel meer ruimte voor aanpassing (35-255 in ons voorbeeld), maar alleen plicht IS dubbele GEBUFFERD IN HARDWARE. De frequentie wijzigen terwijl de PWM actief kan 'vreemd' gevolgen hebben.
Wijzigingen:
De firmware krijgt een paar updates van de nixie-buis SMPS-versie.
1. de pin aansluitingen worden gewijzigd. Een LED is uitgeschakeld, wordt een enkele led indicator gebruikt. PIN uit wordt weergegeven in de afbeelding. Beschrijvingen in het rood zijn standaard PIC pin-toewijzingen die niet kunnen worden gewijzigd.
2. de analoog-digitaal conversie wordt nu verwezen naar een externe spanning op pin 6, in plaats van de voedingsspanning.
3. zoals de batterijen afvoer zal de voedingsspanning veranderen. De nieuwe firmware neemt een meting van de spanning toevoerleiding om de paar minuten en puls breedte modulator instellingen worden bijgewerkt. Deze "herkalibratie" houdt de spoel functioneren efficiënt de batterijen ontladen.
4. interne oscillator ingesteld op 4 MHz, een veilige snelheid tot ongeveer 2,5 volt.
5. vaste logboekregistratie zo hoeft niets te worden ingesteld in de EEPROM te beginnen op positie 1 op een verse PIC. Gemakkelijker te begrijpen voor beginners.
6. inductor geen kwijting tijd (uit-tijd) wordt nu berekend in ingebouwde programmatuur. De vorige multiplier (eenderde op tijd) is ontoereikend zijn voor dergelijke kleine verhoogt. De enige manier om de efficiëntie doorheen de kwijting van de batterij was om uit te breiden van de firmware voor het berekenen van de ware uit-tijd. De wijzigingen zijn experimenteel, maar sindsdien zijn opgenomen in de definitieve firmware.
Van TB053 vinden we de uit-tijd-vergelijking:
0 = ((volts_in-volts_out)/coil_uH) * fall_time + coil_amps
Mangel dit:
fall_time = L_Ipeak/(Volts_out-Volts_in)
waar: L_Ipeak = coil_uH * coil_amps
L_Ipeak is een constante die reeds in de firmware gebruikt (Zie firmware sectie). Volts_in is al berekend om de spoel op-tijd te bepalen. Volts_out is een bekende constante (5/USB of 12/Firewire). Dit zou moeten werken voor alle positieve waarden van V_out-V_in. Als u negatieve waarden krijgt, heb je grotere problemen! Alle vergelijkingen worden berekend in het werkblad van de helper opgenomen met de NIXIE smps instructable.
De volgende regel is toegevoegd aan de sectie van de constanten van de firmware in de kalibratie-stap beschreven:
Const v_out als byte = 5 ' uitgangsspanning om te bepalen uit-tijd