Masterproef Bidirectionele Boost Converter
Studiegebied Industriële wetenschappen en technologie Opleiding Master in de industriële wetenschappen: Elektronica-ICT Afstudeerrichting Elektronica-ICT Academiejaar 2009-2010
Dries Vromman Dries Rollez
Howest – departement Graaf Karel de Goedelaan 5, 8500 Kortrijk
Masterproef Bidirectionele Boost Converter
Studiegebied Industriële wetenschappen en technologie Opleiding Master in de industriële wetenschappen: Elektronica-ICT Afstudeerrichting Elektronica-ICT Academiejaar 2009-2010
Dries Vromman Dries Rollez
Voorwoord Op het einde van het derde jaar kiezen alle studenten een onderwerp voor hun masterproef. Wij hebben de laatste vier jaar op regelmatige basis samengewerkt voor verschillende labo’s en vonden het ook fijn om samen onze masterproef uit te werken. Toen er in de lijst met onderwerpen een onderwerp stond dat zich in het domein van de vermogenelektronica afspeelde twijfelden we niet lang om onze tanden in dit onderwerp te zetten. De masterproef is een project dat ons als student het hele vierde jaar bezighoudt. Dit document is een technisch verslag dat een duidelijk beeld van de realisatie van de masterproef moet schetsen. Een voorwoord dient ook om een aantal mensen te bedanken. Bij deze willen wij onze families, vriendinnen, vrienden en medestudenten bedanken voor de hulp, steun en een luisterend oor tijdens de moeilijke momenten. Daarnaast zouden we ook het docentenkorps in het algemeen en onze copromotoren in het bijzonder willen bedanken voor hun bijdrage tot deze masterproef. Tot slot, en daarom zeker en vast niet minder belangrijk, willen we nog twee mensen in het bijzonder bedanken voor hun onvoorwaardelijke bijdrage tot dit project. Want zonder de tomeloze inzet van onze promotor ir. Marc Windels en zonder de technische ondersteuning van Xavier Vanhoutte was de realisatie van deze masterproef waarschijnlijk veel moeizamer verlopen. Dries Vromman Dries Rollez 6 mei 2010
Dries Vromman Dries Rollez
I
Abstract Many systems have a requirement to ride through short voltage interruptions. This paper describes the design of a bidirectional boost converter which is connected to a capacitor bank. The converter stores the energy in this bank at a high voltage because the energy in a capacitor is quadratic with the voltage. During a dropout, the converter transfers the energy from the storage bank to the bus. A special configuration with three MOSFET’s and a diode is used for the converter topology. This topology is more robust for the inrush current problem than a traditional boost converter. The converter has an efficiency of 83% in boostmode and 93% in buckmode. The capacitor bank, used as energy buffer, has a total capacity of 33mF and can be loaded to 100V. This allows us to have 40W of power during 4 seconds. A control system based on a dsPIC® 30F2020 Digital Signal Controller measures all the necessary signals, provides security and controls the Pulse Width Modulation (PWM) switching pattern of the MOSFET’s.
Dries Vromman Dries Rollez
II
Inhoudsopgave Voorwoord ............................................................................................................................................... I Abstract ................................................................................................................................................... II Inhoudsopgave ....................................................................................................................................... III Lijst afkortingen ..................................................................................................................................... VII Lijst figuren en tabellen ........................................................................................................................ VIII Inleiding ................................................................................................................................................... 1 Hoofdstuk 1:
BIDIRECTIONELE BOOST CONVERTER ALS ENERGIEOPSLAGSYSTEEM ........................ 2
1.
Inleiding ....................................................................................................................................... 2
2.
Converter configuratie ................................................................................................................ 5 2.1
2.1.1
Opbouw ....................................................................................................................... 5
2.1.2
Werking – boostmode ................................................................................................. 6
2.1.3
Werking – buckmode................................................................................................... 8
2.1.4
Nadelen configuratie 1 ................................................................................................ 9
2.2
3.
Configuratie 1 ...................................................................................................................... 5
Configuratie 2 .................................................................................................................... 10
2.2.1
Opbouw ..................................................................................................................... 10
2.2.2
Werking – boostmode ............................................................................................... 11
2.2.3
Werking – buckmode................................................................................................. 13
2.2.4
Besluit ........................................................................................................................ 14
Opstelling................................................................................................................................... 14
Hoofdstuk 2:
HARDWARE................................................................................................................ 15
1.
Inleiding ..................................................................................................................................... 15
2.
Vermogenprint .......................................................................................................................... 15 2.1
Inleiding ............................................................................................................................. 15
2.2
Bidirectionele boost converter .......................................................................................... 15
2.2.1
Elektrisch schema ...................................................................................................... 15
2.2.2
Printontwerp ............................................................................................................. 17
2.2.3
Stuklijst ...................................................................................................................... 18
2.2.4
Rendement converter ............................................................................................... 19
2.3
dsPIC® ................................................................................................................................ 20
2.3.1
Dries Vromman Dries Rollez
Wat is een dsPIC® ...................................................................................................... 20 III
2.3.2
dsPIC30F2020 ............................................................................................................ 21
2.3.3
Software .................................................................................................................... 21
2.3.4
Gebruikte modules .................................................................................................... 22
2.4
3.
4.
MOSFET’s ........................................................................................................................... 27
2.4.1
Inleiding ..................................................................................................................... 27
2.4.2
VDSS ............................................................................................................................. 27
2.4.3
RDS,ON .......................................................................................................................... 27
2.4.4
Total Gate Charge QTG ............................................................................................... 28
2.4.5
Figure Of Merit (FOM) ............................................................................................... 29
2.5
Diodes ................................................................................................................................ 29
2.6
Spoel .................................................................................................................................. 30
2.7
Current monitor................................................................................................................. 30
2.7.1
Inleiding ..................................................................................................................... 30
2.7.2
Principe ...................................................................................................................... 30
2.7.3
Werking ..................................................................................................................... 31
2.7.4
Praktisch .................................................................................................................... 31
2.7.5
Belangrijke specificaties ............................................................................................ 32
2.7.6
Probleem ................................................................................................................... 33
FET Driver .................................................................................................................................. 38 3.1
Probleem ........................................................................................................................... 38
3.2
Elektrisch schema .............................................................................................................. 38
3.3
Printontwerp ..................................................................................................................... 40
3.4
Stuklijst .............................................................................................................................. 40
3.5
Meting ............................................................................................................................... 41
3.6
Vermogen in functie van de schakelfrequentie ................................................................ 42
Condensatorbank ...................................................................................................................... 45 4.1
Inleiding ............................................................................................................................. 45
4.2
Elektrisch schema .............................................................................................................. 46
4.3
Stuklijst .............................................................................................................................. 46
4.4
Printontwerp ..................................................................................................................... 47
4.5
Veiligheid ........................................................................................................................... 48
4.5.1
Inleiding ..................................................................................................................... 48
4.5.2
Ogenblikkelijk vermogen ........................................................................................... 49
Dries Vromman Dries Rollez
IV
4.5.3
Thermisch model ....................................................................................................... 50
4.5.4
Condensatorbank praktisch ontladen ....................................................................... 53
Hoofdstuk 3:
DIGITALE REGELKRING............................................................................................... 54
1.
Inleiding ..................................................................................................................................... 54
2.
Slope compensation .................................................................................................................. 54 2.1
Inleiding ............................................................................................................................. 54
2.2
Probleem: Subharmonische oscillaties.............................................................................. 55
2.2.1
Peak Current Mode Control ...................................................................................... 55
2.2.2
Subharmonische oscillaties ....................................................................................... 55
2.2.3
Slope compensation .................................................................................................. 57
2.3
3.
4.
Digitale slope compensatie ............................................................................................... 59
2.3.1
Digitale current controller ......................................................................................... 60
2.3.2
Discreet regelalgoritme ............................................................................................. 60
2.3.3
Stabiliteitscontrole .................................................................................................... 62
Software .................................................................................................................................... 68 3.1
Toestanden ........................................................................................................................ 68
3.2
Boostmode ........................................................................................................................ 71
3.3
Buckmode .......................................................................................................................... 73
3.4
Sleepmode ......................................................................................................................... 74
Code........................................................................................................................................... 75 4.1
Hoofdprogramma .............................................................................................................. 75
4.2
Initialisatie ......................................................................................................................... 76
4.3
Interrupt ADC .................................................................................................................... 77
4.3.1
ADC-PAIR0 ................................................................................................................. 79
4.3.2
ADC-PAIR1 ................................................................................................................. 80
4.3.3
ADC-PAIR2 ................................................................................................................. 81
4.3.4
ADC-PAIR3 ................................................................................................................. 82
4.4
Interrupt Compare............................................................................................................. 83
4.5
Boost- en buckalgoritme in DSP ........................................................................................ 84
Besluit .................................................................................................................................................... 85 De vermogenprint ............................................................................................................................. 85 Condensatorbank .............................................................................................................................. 86 Software ............................................................................................................................................ 86
Dries Vromman Dries Rollez
V
Literatuurlijst ............................................................................................................................................ I Bijlagen ..................................................................................................................................................... I 1.
Schema vermogenprint ................................................................................................................ I
2.
Schema FET-Driver ...................................................................................................................... V
3.
Schema condensatorbank .......................................................................................................... VI
4.
Analytische analyse slope compensation .................................................................................. VII
5.
MATLAB script stabiliteitscontrole ............................................................................................. IX
6.
Onderzoek convergentie recursieformule .................................................................................. X
7.
Blokschema van de dsPIC30F2020 ........................................................................................... XIV
8.
Software .................................................................................................................................... XV
Dries Vromman Dries Rollez
VI
Lijst afkortingen ACMC
Average Current Mode Control
ADC
Analoog Digitaal Converter
DAC
Digitaal Analoog Converter
DPWM
Digital Pulse Width Modulator – Digitale pulsbreedtemodulator
DSP
Digital Signal Processor – Digitale signaal processor
CMRR
Common Mode Rejection Ratio
FET
Field Effect Transistor
FOM
Figure Of Merit
HVES
High Voltage Energy Storage
I/O
Input/Output
IC
Integrated Circuit – Geïntegreerde schakeling
LED
Light Emitting Diode
MCLR
Master Clear
MOSFET
Metal-Oxide-Semiconductor Field-Effect Transistor
PCB
Printed Circuit Board – Printplaat
PCMC
Peak Current Mode Control
PID
Proportioneel, Integrerende en Differentiërende regelaar
PSRR
Power Supply Rejection Ratio
SAR
Successive Approximation Register
SMPS
Switch Mode Power Supply – Geschakelde voeding
TTM
Time To Market
VMC
Voltage Mode Control
Dries Vromman Dries Rollez
VII
Lijst figuren en tabellen Figuur 1: Principe opstartstroom ............................................................................................................ 2 Figuur 2: Energieopslag onder de vorm van een condensatorbank ....................................................... 2 Figuur 3: Energieopslag in een condensatorbank d.m.v. een bidirectionele boost converter ............... 4 Figuur 4: Configuratie 1 bidirectionele boost converter ......................................................................... 5 Figuur 5: Boostmode configuratie 1 - Fase 1........................................................................................... 6 Figuur 6: Boostmode configuratie 1 - Fase 2........................................................................................... 6 Figuur 7: Samenvatting spoelstroom tijdens boostmode (configuratie 1) ............................................. 7 Figuur 8: Buckmode configuratie 1 - Fase 1 ............................................................................................ 8 Figuur 9: Buckmode configuratie 1 - Fase 2 ............................................................................................ 8 Figuur 10: Samenvatting spoelstroom tijdens buckmode (configuratie 1) ............................................. 9 Figuur 11: Configuratie 2 bidirectionele boost converter ..................................................................... 10 Figuur 12: Boostmode configuratie 2 - Fase 1....................................................................................... 11 Figuur 13: Boostmode configuratie 2 - Fase 2....................................................................................... 11 Figuur 14: Samenvatting spoelstroom tijdens boostmode (configuratie 2) ......................................... 12 Figuur 15: Buckmode configuratie 2 - Fase 1 ........................................................................................ 13 Figuur 16: Buckmode configuratie 2 - Fase 2 ........................................................................................ 13 Figuur 17: Samenvatting spoelstroom tijdens buckmode (configuratie 2) ........................................... 13 Figuur 18: Praktische opstelling ............................................................................................................ 14 Figuur 19: Vermogenprint ..................................................................................................................... 18 Figuur 20: MPLAB IDE project manager ................................................................................................ 22 Figuur 21: Verwerkingstijd buck-algoritme met gewone instructies .................................................... 22 Figuur 22: Verwerkingstijd buck-algoritme met DSP-instructies .......................................................... 23 Figuur 23: Blokschema ADC-module ..................................................................................................... 24 Figuur 24: Trigger-event op ½ Ton .......................................................................................................... 24 Figuur 25: Edge-Aligned PWM en blokschema primaire time base ...................................................... 25 Figuur 26: Blokschema comparator ...................................................................................................... 26 Figuur 27: Symbool MOSFET ................................................................................................................. 27 Figuur 28: RDS,ON in functie van de junctietemperatuur TC .................................................................... 28 Figuur 29: Gate charge van een FDP2532 ............................................................................................. 28 Figuur 30: Configuratie 2 met extra diodes........................................................................................... 29 Figuur 31: Principe INA194 .................................................................................................................... 30
Dries Vromman Dries Rollez
VIII
Figuur 32: Opstelling buckmode met current monitor resistief belast ................................................. 33 Figuur 33: Simulatie current monitor - belast met weerstand 9K1 ...................................................... 34 Figuur 34: Meting current monitor - belast met weerstand 9K1 .......................................................... 34 Figuur 35: Meting current monitor - hoog impedant belast met ingang ADC ...................................... 35 Figuur 36: Meting current monitor - uitgang niet belast ...................................................................... 36 Figuur 37: Meting current monitor - uitgang belast met 200Ω ............................................................ 36 Figuur 38: High side probleem .............................................................................................................. 38 Figuur 39: Afstand tussen de twee connectoren .................................................................................. 39 Figuur 40: FET driver.............................................................................................................................. 40 Figuur 41: Uitgang FET driver bij een duty cycle van 50%..................................................................... 41 Figuur 42: Delay FET driver.................................................................................................................... 41 Figuur 43: Stroom I in functie van de frequentie (praktisch) ................................................................ 42 Figuur 44: Blokschema FET driver ......................................................................................................... 42 Figuur 45: Stroom I in functie van de frequentie (theoretisch) ............................................................ 44 Figuur 46: Condensatorbank ................................................................................................................. 45 Figuur 47: Condensatoren parallel ........................................................................................................ 47 Figuur 48: Condensatoren parallel met gelijke afstand tot ingang ....................................................... 47 Figuur 49: Principeschema condensatorbank ....................................................................................... 48 Figuur 50: Ontladen condensatorbank.................................................................................................. 49 Figuur 51: Ogenblikkelijk vermogen p(t) gedissipeerd in weerstand van de condensatorbank ........... 50 Figuur 52: De Wirewound heatsink mounted serie van ARCOL ............................................................ 50 Figuur 53: Voorstelling weerstand voor thermisch model .................................................................... 51 Figuur 54: Equivalent thermisch model weerstand .............................................................................. 52 Figuur 55: Simulatie van het equivalent thermisch model ................................................................... 53 Figuur 56: Praktisch ontladen condensatorbank .................................................................................. 53 Figuur 57: Principefiguur subharmonische oscillaties ........................................................................... 55 Figuur 58: Spoelstroom zonder slope compensatie .............................................................................. 56 Figuur 59: Subharmonische oscillaties .................................................................................................. 57 Figuur 60: Slope compensation ............................................................................................................. 58 Figuur 61: Digitale Current Controller ................................................................................................... 60 Figuur 62: Digitale slope compensation ................................................................................................ 61 Figuur 63: Slope compensation grafisch ............................................................................................... 62 Figuur 64: Controle van de stabiliteit voor R=0,7.................................................................................. 66
Dries Vromman Dries Rollez
IX
Figuur 65: Controle van de stabiliteit voor R=1,1.................................................................................. 67 Figuur 66: Toestandsdiagram ................................................................................................................ 70 Figuur 67: Principeschema regelkring boostmode ACMC ..................................................................... 71 Figuur 68: Principeschema regelkring VMC buckmode ........................................................................ 73 Figuur 69: Blokschema hoofdprogramma ............................................................................................. 75 Figuur 70: Blokschema initialisatie ........................................................................................................ 77 Figuur 71: Algemeen blokschema van een ADC-interrupt ................................................................... 78 Figuur 72: Blokschema PAIR0 ................................................................................................................ 79 Figuur 73: Blokschema PAIR1 ................................................................................................................ 80 Figuur 74: Blokschema PAIR2 ................................................................................................................ 81 Figuur 75: Blokschema PAIR3 ................................................................................................................ 82 Figuur 76: Blokschema compare interrupt............................................................................................ 83 Figuur 77: Blokschema algoritme .......................................................................................................... 84
Tabel 1: Stuklijst vermogenprint ........................................................................................................... 18 Tabel 2: Verschil tussen dsPIC30F2020 en dsPIC33FJ16GS502 ............................................................. 21 Tabel 3: FOM voor een aantal MOSFET’s met een VDS van 150V .......................................................... 29 Tabel 4: Stuklijst FET driver ................................................................................................................... 40 Tabel 5: Stuklijst condensatorbank ....................................................................................................... 46 Tabel 6: Verband thermische en elektrische capaciteit ........................................................................ 51 Tabel 7: Specifieke warmtes voor thermisch model weerstand ........................................................... 52 Tabel 8: Thermische weerstanden voor thermisch model weerstand ................................................. 52 Tabel 9: Voorwaarden bij toestandsdiagram ........................................................................................ 70
Dries Vromman Dries Rollez
X
Inleiding Deze masterproef is uitgevoerd aan de Hogeschool West-Vlaanderen te Kortrijk. Het is een interne masterproef die zich bevindt in het domein van de vermogenelektronica, meer bepaald in het gebied van de schakelende voedingen. Een meer universele naam die uit de Engelse taal ontleend is, is SMPS (Switch Mode Power Supply). Het is de bedoeling om één bepaalde topologie uit te werken en die dan te koppelen aan een energievat zodat het mogelijk wordt een energieopslagsysteem te bouwen. Ten eerste wordt de gebruikte converter gekenmerkt door twee energiestromen. Enerzijds van de bus, waar de belasting en de bron aan gekoppeld zijn, naar het energievat en anderzijds van het energievat naar de bus. De gebruikte topologie zal dus bidirectioneel moeten zijn. Ten tweede zal de energieopslag op een hogere spanning gebeuren omdat de opgeslagen energie in het energievat kwadratisch verloopt met de spanning. Dit alles in acht genomen betekent dat er nood is aan een bidirectionele boost converter. De toepassing wordt net als de gebruikte topologie toegelicht in hoofdstuk 1. Verder kan deze masterproef opgesplitst worden in twee grote blokken. Enerzijds is er het hardwareontwerp en anderzijds is er de ontwikkeling van de benodigde software. Het hardwaregedeelte is op zijn beurt opgedeeld in verschillende deelproblemen. Zo is er in eerste instantie een FET driver ontworpen om de MOSFET’s aan te sturen die zich op de vermogenprint bevinden. Op de vermogenprint is de bidirectionele boost converter geïmplementeerd die aangestuurd wordt door een dsPIC®. Tot slot is er nog een condensatorbank ontworpen die dienst doet als energievat. Het hardwaregedeelte wordt dieper uitgewerkt in hoofdstuk 2. Naast het hardwaregedeelte is er ook nog een softwaregedeelte. De hardware is opgebouwd rond een dsPIC30F2020 van Microchip. Deze microcontroller is volledig geprogrammeerd in assembler. In de geschreven software is de regelkring voorzien van een boost- (opladen energievat) en een buckmode (ontladen energievat). Daarnaast is er in de software ook de benodigde beveiliging voorzien naast de beveiliging die uitgevoerd is in hardware. Dit alles wordt omschreven in hoofdstuk 3.
Dries Vromman Dries Rollez
1
Hoofdstuk 1: BIDIRECTIONELE BOOST CONVERTER ALS ENERGIEOPSLAGSYSTEEM 1. Inleiding Sommige belastingen vereisen een overbrugging van spanningsdips of spanningsfluctuaties, andere hebben op bepaalde momenten een extra stroomvraag. Een voorbeeld van een extra stroomvraag kan een belasting zijn die tijdens het opstarten meer stroom trekt. Dit voorbeeld wordt hieronder principieel weergegeven in figuur 1. Een belasting die een stroomverloop in functie van de tijd iLoad(t) heeft, is aan een bus gekoppeld. Deze bus voorziet de belasting van een spanning VBUS.
Figuur 1: Principe opstartstroom
Als bovenstaande situatie zich in de praktijk voordoet dan zal de bron (hier VBUS) gedimensioneerd moeten worden volgens de piekstroom IP. Dit leidt meestal tot een meerkost. Om hiervoor (en ook tegen spanningsdips) een oplossing te bieden kan een extra energiebuffer aangewend worden. Dit energievat kan geïmplementeerd worden onder de vorm van een condensatorbank die door middel van een tweedraadsverbinding verbonden is met de bus zoals weergegeven in figuur 2.[1]
Figuur 2: Energieopslag onder de vorm van een condensatorbank
Dries Vromman Dries Rollez
2
De beschikbare energie in een dergelijke configuratie is te schrijven als: 𝐸=
1 ∙ 𝐶 ∙ 𝑉12 − 𝑉22 2
(1)
Met E = de beschikbare energie in Joule (J) Met C = de capaciteit van de condensatorbank in Farad (F) Met V1 = startspanning, de spanning over de condensatorbank voor het ontladen in Volt (V) Met V2 = eindspanning, de spanning over de condensatorbank na het ontladen in Volt (V) Uit bovenstaande formule kan besloten worden dat, voor eenzelfde beschikbare energie E, de capaciteit groter zal moeten worden als het spanningsverschil tussen V1 en V2 kleiner wordt. Dit is nu ook het probleem bij een configuratie zoals weergegeven in figuur 2. Van de spanning op de bus wordt meestal verwacht dat die vrij stabiel is. Dit wil zeggen dat de spanningsverandering 𝑉1 − 𝑉2 zo klein mogelijk moet zijn bij het opvangen van een spanningsdip en/of een extra stroomaanvraag. Om de spanningsverandering zo klein mogelijk te houden, voor eenzelfde beschikbare energieinhoud, moet de totale capaciteit van de condensatorbank zo groot mogelijk zijn. Dit betekent dat er relatief veel capaciteit (dus veel condensatoren en dus een grotere kost) nodig zal zijn, wat meteen een groot nadeel is van deze methode. Ten tweede kan uit bovenstaande formule ook geconcludeerd worden dat, voor eenzelfde capaciteit, er meer energie kan opgeslagen worden bij een hogere spanning. De opgeslagen energie in een condensator verloopt immers kwadratisch met de spanning. Een andere manier om de eerder beschreven problemen op te lossen is High-Voltage-Energy Storage (HVES) [1]. Bij HVES wordt de energie in de condensatoren opgeslagen op een hogere spanning waardoor het spanningsverschil tussen de startspanning (V1) en de eindspanning (V2) groter kan worden. Bij een dergelijke manier van werken is er wel een extra stuk hardware nodig dat ten eerste in staat moet zijn energie van de bus naar de condensatorbank te brengen, maar ook omgekeerd, en ten tweede moet de condensatorbank opgeladen worden tot op een hogere spanning. Om bovenstaande te realiseren wordt in deze masterproef gebruik gemaakt van een bidirectionele boost converter. Het algemeen blokschema is weergegeven in figuur 3. De ingang van de bidirectionele boost converter, de kant die met de bus verbonden is, wordt de lage spanningskant genoemd en de uitgang, de kant die met de condensatorbank verbonden is, wordt de hoge spanningskant genoemd.
Dries Vromman Dries Rollez
3
Figuur 3: Energieopslag in een condensatorbank d.m.v. een bidirectionele boost converter
In de normale werking van de bidirectionele boost converter zijn er twee modes te onderscheiden: 1) Boostmode: Deze fase wordt gekenmerkt door een energiestroom van de bus naar de condensatorbank. 2) Buckmode: In deze fase wordt er energie van de condensatorbank terug naar de bus gevoerd omdat de voeding van de bus om een of andere reden niet genoeg in energie kan voorzien. De vraag die nu nog gesteld moet worden is wat de inhoud is van het blokje dat in figuur 3 als bidirectionele boost converter is omschreven. Het antwoord op die vraag wordt hieronder stap voor stap uitgewerkt.
Dries Vromman Dries Rollez
4
2. Converter configuratie 2.1 Configuratie 1 2.1.1 Opbouw In zijn eenvoudigste vorm zou een bidirectionele boost converter opgebouwd kunnen worden zoals weergegeven in figuur 4 [1-4]. Deze configuratie lijkt bijzonder goed op de configuratie van een traditionele boost converter. Het enige verschil is dat er een tweede MOSFET (FET2) gebruikt wordt in plaats van een diode. Dit is nodig om de energie van uit de condensatorbank terug te kunnen sturen naar de bus in de buckmode. Bus met belasting
Bidirectionele Boost Converter Configuratie 1
Condensatorbank
Figuur 4: Configuratie 1 bidirectionele boost converter
Om de werking te beschrijven van de configuratie die weergegeven is in figuur 4 wordt er zoals eerder gezegd een onderscheid gemaakt tussen boostmode en buckmode. Voor de werking die hieronder volgt, wordt uitgegaan van ideale componenten en van het feit dat de spanningen (VBUS en vC) tijdens een bepaalde schakelperiode ongeveer constant zijn.
Dries Vromman Dries Rollez
5
2.1.2 Werking – boostmode De boostmode valt uiteen in twee fases. De eerste fase doet zich voor gedurende een tijd T ON. De tweede fase volgt onmiddellijk na de eerste fase en duurt een tijd TOFF. De som van de twee tijden wordt gedefinieerd als een schakelperiode T. De verhouding van TON en de schakelperiode T wordt de duty cycle D genoemd. (2)
𝑇 = 𝑇𝑂𝑁 + 𝑇𝑂𝐹𝐹 𝐷=
𝑇𝑂𝑁 𝑇
(3)
Tijdens de eerste fase is FET1 een gesloten en FET2 een open schakelaar. Deze situatie is schematisch weergegeven in figuur 5 en duurt zoals eerder gezegd een zekere tijd TON. Over de spoel staat nu de volledige busspanning VBUS. 𝑣𝐿 = 𝐿 ∙
𝑑𝑖𝐿 𝑑𝑡
(4)
Volgens bovenstaande vergelijking zal de stroom door de spoel nu lineair stijgen met helling: 𝑑𝑖𝐿 𝑉𝐵𝑈𝑆 = 𝑑𝑡 𝐿
vL iL
Vbus
vL
vC
Figuur 5: Boostmode configuratie 1 - Fase 1
iL
Vbus
vC
Figuur 6: Boostmode configuratie 1 - Fase 2
Tijdens de tweede fase zijn FET1 en FET2 open schakelaars, de inwendige diode van FET2 komt in geleiding. Over FET1 en FET2 is een extra ultra-fast diode geplaatst. Deze wordt nu, voor de eenvoud, nog even buiten beschouwing gelaten. De situatie gedurende de tijd TOFF is schematisch weergegeven in figuur 6. De spanning die nu over de spoel komt te staan is te schrijven als: 𝑣𝐿 = 𝑉𝐵𝑈𝑆 − 𝑣𝐶 Dit wil zeggen dat de helling van de stroom nu als volgt te schrijven is: 𝑑𝑖𝐿 𝑉𝐵𝑈𝑆 − 𝑣𝐶 = 𝑑𝑡 𝐿
Dries Vromman Dries Rollez
6
Met bovenstaande formule zijn er nu drie mogelijkheden: 𝑉𝐵𝑈𝑆 > 𝑣𝐶 : De condensatorbank is nog niet opgeladen tot boven de busspanning. De spoelstroom zal, zelfs in de tweede fase, blijven stijgen omdat het verschil tussen de busspanning en de condensatorspanning positief is. Er moet opgemerkt worden dat deze stijgende helling van de spoelstroom kleiner zal zijn dan de stijgende helling van de stroom tijdens de periode TON. Dit omdat het verschil 𝑉𝐵𝑈𝑆 − 𝑣𝐶 steeds kleiner is dan 𝑉𝐵𝑈𝑆 . 𝑉𝐵𝑈𝑆 = 𝑣𝐶 : De condensatorbank is opgeladen tot de busspanning. Dit is eigenlijk een puur hypothetisch geval omdat de kans dat dit geval exact optreedt uiterst klein is. Mocht het toch voorkomen dat beide spanningen even groot zijn, dan zal de spoelstroom constant blijven. 𝑉𝐵𝑈𝑆 < 𝑣𝐶 : De condensatorbank is opgeladen tot boven de busspanning. De spoelstroom zal dalen omdat het verschil tussen de busspanning en de condensatorspanning negatief is. In onderstaande figuur zijn bovenstaande mogelijkheden voor de spoelstroom in een algemeen geval getekend bij een constante duty cycle. De helling van de stijgende spoelstroom is steeds constant, de dalende helling is afhankelijk van de spanning over de condensatorbank (𝑣𝐶 ).
Figuur 7: Samenvatting spoelstroom tijdens boostmode (configuratie 1)
Door de duty cycle te wijzigen is het mogelijk om de stroom op een bepaald niveau te dwingen. Dit is dan eigenlijk niets anders dan het regelen van de spoelstroom. Dit wordt verder in de tekst meer uitgewerkt. Tot slot moet er opgemerkt worden dat het ten allen tijde vermeden moet worden dat beide FET’s op hetzelfde moment gesloten zijn. Dit zou er immers voor zorgen dat de condensator(-bank) kortgesloten wordt. Dit fenomeen wordt ook wel shoot-through genoemd.
Dries Vromman Dries Rollez
7
2.1.3 Werking – buckmode In de buckmode wordt er energie van de condensatorbank terug naar de bus gevoerd omdat de voeding van de bus om een of andere reden niet genoeg in energie kan voorzien. Opnieuw kan de buckmode opgesplitst worden in twee fases.
vL
iL
Vbus
Figuur 8: Buckmode configuratie 1 - Fase 1
vL iL
vC Vbus
vC
Figuur 9: Buckmode configuratie 1 - Fase 2
Tijdens de eerste fase is FET1 een open schakelaar en FET2 een gesloten schakelaar. Deze situatie is schematisch weergegeven in figuur 8 en duurt een zekere tijd TON. De spanning die nu over de spoel komt te staan is te schrijven als: 𝑣𝐿 = 𝑣𝐶 − 𝑉𝐵𝑈𝑆 De helling van de spoelstroom is volgens vergelijking 4 te schrijven als: 𝑑𝑖𝐿 𝑣𝐶 − 𝑉𝐵𝑈𝑆 = 𝑑𝑡 𝐿 Aan de hand van bovenstaande formule zijn er nu drie mogelijkheden af te leiden: 𝑉𝐵𝑈𝑆 > 𝑣𝐶 : De busspanning is groter dan de spanning over de condensatorbank. De spoelstroom zal dalen omdat het verschil tussen de condensatorspanning en de busspanning negatief is. Er moet opgemerkt worden dat dit geval in de praktijk niet zal voorkomen. Er zal steeds gezorgd worden dat de condensatorbank voldoende opgeladen is. 𝑉𝐵𝑈𝑆 = 𝑣𝐶 : De condensatorbank is opgeladen tot de busspanning. Dit is opnieuw een puur hypothetisch geval omdat de kans dat dit geval exact voorkomt uiterst klein is. Mocht het toch voorkomen dat beide spanningen even groot zijn, dan zal de spoelstroom constant blijven. 𝑉𝐵𝑈𝑆 < 𝑣𝐶 : De condensatorbank is opgeladen tot boven de busspanning. De spoelstroom zal stijgen omdat het verschil tussen de busspanning en de condensatorspanning positief is. Tijdens de tweede fase zijn FET1 en FET2 open schakelaars. De interne diode van FET1 komt nu in geleiding. Zoals eerder gezegd staat er over deze MOSFET nog een extra diode die in geleiding zal komen, maar voor de eenvoud wordt ze nog even buiten beschouwing gelaten. Deze situatie is schematisch weergegeven in figuur 9 en duurt een zekere tijd TOFF. Over de spoel staat nu minus de busspanning. Opnieuw is de helling van de spoelstroom volgens vergelijking 4 te schrijven als:
Dries Vromman Dries Rollez
8
𝑑𝑖𝐿 𝑉𝐵𝑈𝑆 =− 𝑑𝑡 𝐿 In onderstaande figuur is de spoelstroom in een algemeen geval getekend. De gevallen waarbij de spoelstroom constant blijft of zelf daalt, zijn niet opgenomen in de figuur omdat het niet de bedoeling is dat deze voorkomen tijdens de normale werking. De stijgende helling is afhankelijk van de spanning van de condensatorbank. De dalende helling is steeds constant, in de veronderstelling dat de busspanning constant is.
Figuur 10: Samenvatting spoelstroom tijdens buckmode (configuratie 1)
Opnieuw moet er opgemerkt worden dat het ten allen tijde vermeden moet worden dat beide FET’s op hetzelfde moment gesloten zijn. Dit zou er immers voor zorgen dat de totale capaciteit kortgesloten is. 2.1.4 Nadelen configuratie 1 Een belangrijk nadeel van deze configuratie is weergegeven in figuur 7. Tijdens de boostmode en als de condensatorbank nog onvoldoende is opgeladen (𝑉𝐵𝑈𝑆 > 𝑣𝐶 ), zal de spoelstroom blijven stijgen. Op deze manier kan de spoelstroom bij het opstarten zodanig ongecontroleerd oplopen dat er componenten beschadigd kunnen worden. Een ander probleem kan zich voordoen wanneer de bus en de converter om een of andere reden (bijvoorbeeld door een slechte kabel) plots van elkaar gescheiden worden als er nog een stroom door de spoel vloeide. De stroom vindt nu geen geleidingsweg meer en de spoel zal daardoor een zeer grote spanning over zijn klemmen generen waardoor er ernstige schade aangericht kan worden aan de componenten. Een derde probleem bij deze configuratie is dat er geen enkele ingreep kan gebeuren als de hoge spanningszijde, de kant van de condensatorbank, wordt kortgesloten. De inwendige diode van FET2 zal in geleiding komen en de volledige busspanning komt over de spoel te staan. De kortsluitstroom is niet te onderbreken, ook niet door alle FET’s uit te schakelen. Bovenstaande problemen zijn niet onmiddellijk op te lossen binnen deze configuratie zonder het toevoegen van extra functionaliteit. Hieronder zal in een tweede configuratie een oplossing gezocht worden voor bovenstaande problemen.
Dries Vromman Dries Rollez
9
2.2 Configuratie 2 2.2.1 Opbouw Om de beschreven nadelen van de eerste configuratie op te lossen, wordt er extra functionaliteit toegevoegd aan die eerste configuratie. Dit omvat een diode (D1) en een extra MOSFET (FET3). De nieuwe configuratie is hieronder weergegeven in figuur 11. Bus met belasting
Bidirectionele Boost Converter Configuratie 2
Condensatorbank
Figuur 11: Configuratie 2 bidirectionele boost converter
Om de werking te beschrijven van de verbeterde configuratie wordt er opnieuw een onderscheid gemaakt tussen boostmode en buckmode. In theorie is deze terminologie niet meer helemaal correct omdat er niet meer gewerkt wordt met een zuivere boost en buck converter. Toch worden deze termen verder gebruikt in deze tekst om de eenvoud en de begrijpbaarheid van de tekst te behouden. Voor de werking die hieronder volgt, wordt uitgegaan van ideale componenten en van het feit dat de spanningen (VBUS en vC) tijdens een bepaalde schakelperiode ongeveer constant blijven.
Dries Vromman Dries Rollez
10
2.2.2 Werking – boostmode De boostmode valt opnieuw uiteen in twee fases. Tijdens de eerste fase zijn FET1 en FET3 gesloten, FET2 is een open schakelaar. Deze situatie is schematisch weergegeven in figuur 12 en is geldig gedurende een zekere tijd TON. Over de spoel staat nu de volledige busspanning VBUS.
vL iL
Vbus
vL
vC
Figuur 12: Boostmode configuratie 2 - Fase 1
iL
Vbus
vC
Figuur 13: Boostmode configuratie 2 - Fase 2
Volgens vergelijking 4 zal de stroom door de spoel nu lineair stijgen met helling: 𝑑𝑖𝐿 𝑉𝐵𝑈𝑆 = 𝑑𝑡 𝐿 Gedurende de tweede fase komt de inwendige diode van FET2 en ook de extra diode die over deze MOSFET staat in geleiding, FET1 en FET3 zijn open schakelaars. Deze situatie is schematisch weergegeven in figuur 13 en duurt een zekere tijd TOFF. Over de spoel staat nu minus de spanning van de condensatorbank. De helling van de spoelstroom kan volgens vergelijking 4 geschreven worden als: 𝑑𝑖𝐿 −𝑣𝐶 = 𝑑𝑡 𝐿 Dit betekent concreet dat de spoelstroom gedurende deze fase zeker zal dalen. Hiermee is dus het eerste probleem dat in punt 2.1.4 besproken werd opgelost. Er moet wel opgemerkt worden dat de spoelstroom constant blijft indien de spanning van de condensatorbank 0V bedraagt. Dit geval zal in de normale werking nooit exact voorkomen. Hieronder is een algemeen geval weergegeven van het verloop van de spoelstroom. Het geval waarbij de spoelstroom constant blijft is niet opgenomen in dit beeld. Onderstaande grafiek is opgesteld met een vaste duty cycle. De stijgende spoelstroom is steeds constant terwijl de dalende helling afhankelijk is van de grootte van de spanning over de condensatorbank. Naarmate deze spanning groter wordt zal de dalende helling groter worden.
Dries Vromman Dries Rollez
11
Figuur 14: Samenvatting spoelstroom tijdens boostmode (configuratie 2)
Door de grootte van de duty cycle te regelen kan de stroom op een bepaald niveau gedwongen worden. Op die manier kan de condensatorbank opgeladen worden met een constante stroom. Meer hierover staat verder in de tekst.
Dries Vromman Dries Rollez
12
2.2.3 Werking – buckmode In de eerste fase van de buckmode, afgebeeld in figuur 15, zijn FET2 en FET3 gesloten. FET1 is een open schakelaar. De eerste fase duurt een zekere tijd TON en de spoelspanning gedurende deze periode is gelijk aan 𝑣𝐶 − 𝑉𝐵𝑈𝑆 . Hiermee kan de helling van de spoelstroom berekend worden. 𝑑𝑖𝐿 𝑣𝐶 − 𝑉𝐵𝑈𝑆 = 𝑑𝑡 𝐿 De spanning van de condensatorbank zal steeds hoger gehouden worden dan de spanning van de bus. Uit bovenstaande formule kan geconcludeerd worden dat de spoelstroom steeds stijgt.
vL iL
Vbus
Figuur 15: Buckmode configuratie 2 - Fase 1
vL iL
vC Vbus
vC
Figuur 16: Buckmode configuratie 2 - Fase 2
In de tweede fase, die een tijd TOFF duurt, zijn FET1 en FET2 open schakelaars en is FET3 gesloten. De inwendige diode van FET1 komt in geleiding. Deze situatie is weergegeven in figuur 16. De spoelspanning is makkelijk uit de figuur af te leiden als minus de busspanning. Hiermee kan de helling van de spoelstroom geschreven worden als: 𝑑𝑖𝐿 −𝑉𝐵𝑈𝑆 = 𝑑𝑡 𝐿 De spoelstroom zal nu dus dalen aangezien de waarde VBUS steeds groter dan 0V beschouwd wordt. Het verloop van de spoelstroom wordt hieronder in een samenvattende figuur weergegeven bij een constante duty cycle. De dalende helling wordt als constant beschouwd (VBUS = constante), de stijgende helling is afhankelijk van de spanning van de condensatorbank. Hoe meer die ontladen wordt tijdens de buckmode, hoe lager de spanning wordt, hoe kleiner de dalende helling.
Figuur 17: Samenvatting spoelstroom tijdens buckmode (configuratie 2)
Dries Vromman Dries Rollez
13
Tot slot moet nog vermeld worden dat ook het tweede probleem, dat in punt 2.1.4 besproken werd, opgelost is met deze configuratie. Zowel in boost- als in buckmode kan de spoelstroom een geleidingsweg vinden als de condensatorbank om een of andere reden losgekoppeld wordt. Het derde probleem waarbij er niet kan opgetreden worden bij een kortsluiting aan de hoge spanningszijde is ook opgelost. Indien een te hoge spoelstroom gedetecteerd wordt, kan FET3 geopend worden waardoor het kortsluitpad onderbroken is. 2.2.4 Besluit Deze verbeterde configuratie biedt dus wel degelijk een oplossing voor de genoemde nadelen in punt 2.1.4. Daarom zal deze configuratie gebruikt worden om de bidirectionele boost converter in de praktijk te realiseren.
3. Opstelling In de onderstaande figuur is de praktische opstelling te zien. 6
5
3
4
7
1
2
Figuur 18: Praktische opstelling
In bovenstaande opstelling zijn de grootste blokken van de opstelling aangeduid. Om te beginnen is er op de bus (2) een bron (1) aangesloten die een bepaalde busspanning VBUS levert. Hier zal er gewerkt worden met een busspanning van 24V. Ten tweede is er op de bus een belasting (7) aangesloten. Deze belasting wordt hier voorgesteld als een lamp (24V/40W). Vervolgens is de ingang van de bidirectionele boost converter (3) via een tweedraadsverbinding ook aangesloten op deze bus. De uitgang van deze vermogenprint (3) is verbonden met de condensatorbank (4) waarin zich de nodige gebufferde energie bevindt. De vermogenprint wordt volledig aangestuurd door een dsPIC30F2020. Om deze te programmeren of te debuggen is gebruik gemaakt van de MPLAB® ICD2 module van Microchip (5). Deze module wordt op zijn beurt aangesloten aan een computer waarop de assembler code geschreven is.
Dries Vromman Dries Rollez
14
Hoofdstuk 2: HARDWARE 1. Inleiding Het eerste deel van de masterproef bestond erin de nodigde hardware te ontwerpen voor de bidirectionele boost converter die besproken werd in hoofdstuk 1. Uit praktische overwegingen is het gehele project opgedeeld in aparte (kleinere) stukken. Hieronder worden deze delen opgesomd:
Vermogenprint
FET driver
Condensatorbank
Bovengenoemde onderdelen worden hieronder uitgewerkt. De schema’s zijn opgenomen als bijlage.
2. Vermogenprint 2.1 Inleiding De kerntaak van deze masterproef is de bouw van een bidirectionele boost converter. Het principe van de schakeling is hierboven al uitgelegd. Nu wordt meer benadrukt hoe de converter in de praktijk is opgebouwd op de PCB. De converter is opgebouwd rond een microcontroller van Microchip.
2.2 Bidirectionele boost converter 2.2.1
Elektrisch schema
Voeding De dsPIC30F2020 heeft een voedingsspanning nodig van +5V. Daarnaast is er ook voor gezorgd dat alle andere componenten (FET-driver, current monitors…) van de vermogenprint die een voeding nodig hebben kunnen werken op +5V. Om die voedingsspanning te realiseren is gebruik gemaakt van een transformator die de netspanning omzet naar een lagere spanning, een gelijkrichter die de omlaag getransformeerde spanning gelijkricht, een afvlakcondensator om de gelijkgerichte spanning af te vlakken en een stabilisator om een gestabiliseerd 5V signaal af te leveren. De voeding is voorzien van een LED om de goede werking van de voeding te visualiseren. De microcontroller voorziet twee pinnen (AVDD en AVSS) om een referentiespanning aan te sluiten. Deze referentie wordt gebruikt door de ADC’s die aanwezig zijn. Het is ook mogelijk om deze pinnen gewoon te verbinden met de voedingsspanning. Echter zal de digitalisering dan minder nauwkeurig verlopen. Daarom is er hier geopteerd om een referentiespanning aan te sluiten op deze pinnen. Het referentiesignaal wordt aangemaakt door een REF02BP +5V precision voltage reference van Texas Instruments. Naast de voeding voor de componenten op de vermogenprint is nog een ingangsconnector voorzien om de vermogenvoeding aan te sluiten. Deze vermogenvoeding is eigenlijk de busspanning waarvan sprake is in figuur 3.
Dries Vromman Dries Rollez
15
dsPIC® De volledige print wordt aangestuurd door middel van een dsPIC30F2020. Deze is ontkoppeld door middel van keramische condensatoren. Ten tweede is er bij de microcontroller een resetcircuit voorzien. Het is mogelijk om te resetten door de resetknop te bedienen of door de microcontroller te verbinden met de MPLAB® ICD2 (In Circuit Debugger). Indien de drukknop bediend wordt, komt de MCLR (Master CLeaR) pin van de microcontroller laag te staan waardoor deze gereset wordt. De microcontroller wordt geprogrammeerd door middel van de MPLAB® ICD2. Deze maakt het mogelijk serieel te programmeren zonder de microcontroller uit de schakeling te moeten halen. Om de debugger aan te kunnen sluiten op de vermogenprint is een RJ-11 voorzien (zie figuur 19). Hierbij zijn drie signalen van deze connector met de microcontroller verbonden. Deze zijn:
PGD: Programming Data
PGC: Programming Clock
MCLR: Master Clear
Verder zijn de PWM kanalen verbonden met de FET-drivers. Meer over deze drivers volgt verder in de tekst. Vervolgens zijn er vier ADC ingangen van de dsPIC® gebruikt om de ingangsspanning, de uitgangsspanning en de stroom tijdens de buck- en boostmode op te meten. De spanningen worden opgemeten door middel van spanningsdelingen, de stromen worden opgemeten door middel van een sense-weerstand en een current monitor. Meer over deze laatste volgt verder in de tekst. De gedigitaliseerde waarden worden gebruikt in de regelkringen en ter beveiliging. Naast de hierboven genoemde ADC ingangen is er ook nog een ADC ingang verbonden met een regelbare weerstand. In het definitieve programma zal de spanning van de condensatorbank door middel van deze weerstand ingesteld kunnen worden. Om de veiligheid te garanderen is er een veiligheidsmechanisme ingebouwd bij de condensatorbank (zie pagina 48: veiligheid). Naast de hardwarebeveiliging (normaal gesloten contact relais) is er ook een softwarebeveiliging. Om de microcontroller duidelijk te maken dat de condensatorbank verbonden is, wordt de controlelus ingelezen door middel van een I/O-pin (Input/Output-pin). Om de microcontroller nu ook gepast te laten reageren, stuurt hij via een andere I/O-pin het relais aan op de condensatorbank. Tot slot is er ook nog een I/O-pin verbonden met een jumper. Met deze jumper kan er gekozen worden om een indicatie LED of een externe indicatie (vb. zoemer) aan te sturen. Deze indicatie is gebruikt om het programma tijdens de ontwikkelfase te testen en wordt in het definitieve programma gebruikt om aan te duiden dat er een te hoge spanning of stroom is opgetreden.
Dries Vromman Dries Rollez
16
Vermogengedeelte Om te beginnen is aan de ingang en aan de uitgang van de converter een spanningsdeling voorzien. Deze deling is noodzakelijk om de ingangs- en uitgangsspanning te kunnen inlezen in de dsPIC®. De spanning aan de ingangsklemmen van de microcontroller mag immers niet groter zijn dan de voedingspanning van +5V. Aan de ingang is een capaciteit voorzien die tijdens de buckmode dienst doet als afvlakcondensator voor de belasting. Aan de uitgang van de boost converter is één van de vijftien condensatoren geplaatst. Voor elke MOSFET zijn er twee connectoren voorzien om de FET-driver in vast te klikken. Meer over de specificaties van de MOSFET’s volgt hieronder. In serie met de spoel is een sense-weerstand geplaatst die nodig is om de stroom te kunnen opmeten met de current monitors. Door middel van een connector wordt de uitgang van de converter verbonden met de condensatorbank. Deze connector is bestand tegen een voldoende grote stroom. Er is een potentiometer voorzien waarmee de wenswaarde voor de spanning van de condensatorbank kan ingesteld worden. Het volledige schema is opgenomen als bijlage. 2.2.2 Printontwerp Bij het ontwerpen van de PCB van de vermogenprint zijn een aantal regels in acht genomen. Deze zijn hieronder kort samengevat:
Bij de transformator van de voeding is er op gelet dat de primaire en de secondaire zo veel mogelijk gescheiden worden van elkaar.
Bij de dsPIC30F2020 en de andere IC’s is ervoor gezorgd dat de ontkoppelcondensatoren zo dicht mogelijk bij de voedingspinnen geplaatst zijn.
De afstand tussen de uitgang van de FET-driver en de gate van de FET is zo kort mogelijk gehouden. Dit om ervoor te zorgen dat printsporen zich niet al te inductief gaan gedragen.
De current monitors zijn zo dicht mogelijk bij de sense-weerstand geplaatst. Ook de afstand tussen de uitgang van de current monitor en de ingang van de microcontroller is beperkt gehouden.
De verbindingen tussen de MOSFET’s, de diodes, de spoel, de sense-weerstand en alle andere componenten in de vermogenkring zijn zo kort mogelijk gehouden om parasitaire inducties te beperken.
De sporen van de vermogenkring zijn voldoende dik ontworpen om een voldoende grote stroom te kunnen geleiden.
Er zijn meetpinnen voorzien om de voedingsspanning te controleren en om de stromen op te meten.
De massa van de stuurkring en de vermogenkring komen samen in één massapunt, gelegen aan de source van FET1 (zie figuur 11).
Dries Vromman Dries Rollez
17
Hieronder is een foto weergegeven van de vermogenprint.
Uitgangsconnector naar condensatorbank
Connector busspanning
FET-drivers RJ11-connector
Figuur 19: Vermogenprint
2.2.3 Stuklijst De gebruikte componenten zijn hieronder in een lijst weergegeven. Tabel 1: Stuklijst vermogenprint
stukkenlijst
waarde
beschrijving
aantal
B1 C1 C2 C3, C5, C7, C10-C12, C18-C20 C4 C6 C8 C9 C13-C17 D1 D2-D4 F1 F1 F1 IC1 IC2 IC3, IC5 IC7 IC7 J1, J2
2KBP 4,7mF 330nF 100nF 470µF 330µF 100nF 2,2mF 10nF 1N4004 BYV42E-150 SH22,4A
gelijkrichter condensator condensator condensator condensator condensator condensator SMD condensator condensator diode ultra fast diode zekering zekeringhouder zekeringkap spanningsstabilisator 5V voltage reference current sense monitor microcontroller IC-voet printkroonsteen
1 1 1 9 1 1 1 1 5 1 3 1 1 1 1 1 2 1 1 2
Dries Vromman Dries Rollez
78S05 REF02 INA194 DSPIC30F2020 DIP28 L105202
18
J3 JP1-JP6 JP7 KK1-KK7 L1 LED1 LED2 PL1 Q1-Q3 R1 R2, R21, R16, R17 R3 R4, R5, R11 R6, R7, R10 R8 R9 R12, R14 R13, R15 R18 R19 R20, R22 RESET T1 TRANSFO
1X3
77µH groen rood Molex - 5569-6 FDP2532 2,2Ω 470Ω 15mΩ 3,3k 15Ω 200k 22M 20k 330k 4,7k 0-25k 11k BC547 FL24-9
RJ11 connector jumper koelplaat spoel led led connector MOSFET weerstand weerstand shuntweerstand weerstand weerstand weerstand weerstand weerstand weerstand weerstand regelbare weerstand weerstand drukknop transistor transformator
1 6 1 7 1 1 1 1 3 1 4 1 3 3 1 1 2 2 1 1 2 1 1 1
2.2.4 Rendement converter Algemeen kan het rendement uitgedrukt worden als de nuttig gebruikte energie gedeeld door de toegevoerde energie. Dit wordt nu even toegepast om het rendement van de converter te berekenen. Boostconverter Indien de converter in boostmode werkt, wordt er energie van de bus naar de condensatorbank gebracht. De condensatorbank wordt dus opgeladen. Het rendement van de converter in boostmode is bepaald door de hoge spanningszijde te belasten en deze af te regelen op een constante spanning bij een busspanning van 24V. Hierbij zijn de ingangs- en uitgangsstroom gemeten om het toegevoerde en het nuttige vermogen te bepalen. 𝜂𝑏𝑜𝑜𝑠𝑡 =
𝑃𝑛𝑢𝑡𝑡𝑖𝑔 𝑃𝑡𝑜𝑒𝑔𝑒𝑣𝑜𝑒𝑟𝑑
=
𝑉𝑐 ∙ 𝐼𝑜𝑢𝑡 𝑉𝑏𝑢𝑠 ∙ 𝐼𝑖𝑛
(5)
Volgens vergelijking 5 wordt het rendement van de boost converter 83%. 𝜂𝑏𝑜𝑜𝑠𝑡 =
92,3𝑉 ∙ 0,53𝐴 48,91𝑊 = = 83,18% 24𝑉 ∙ 2,45𝐴 58,8𝑊
Dries Vromman Dries Rollez
19
Buckconverter Als de converter in buckmode werkt, wordt er energie van de condensatorbank naar de bus gebracht. De toegevoerde energie is dus de energie die van de condensatorbank afkomstig is. De energie die nuttig gebruikt wordt is de energie die in de belasting wordt omgezet. Hier is de belasting een lamp van 40W. Deze kan 3,5 seconden blijven werken indien de condensatorbank (33mF) van 100V tot 30V wordt ontladen. 𝜂𝑏𝑢𝑐𝑘 =
𝐸𝑛𝑢𝑡𝑡𝑖𝑔 𝐸𝑡𝑜𝑒𝑔𝑒𝑣𝑜𝑒𝑟𝑑
=
𝑃𝑙𝑎𝑚𝑝 ∙ ∆𝑡 1 𝐶 𝑉12 − 𝑉22 2
(6)
Volgens vergelijking 6 wordt het rendement voor de buckmode dan 93%. 𝜂𝑏𝑢𝑐𝑘 =
40𝑊 ∙ 3,5𝑠 140𝐽 = = 93,24% 1 150,15𝐽 ∙ 33𝑚𝐹 ∙ 100𝑉 2 − 30𝑉 2 2
2.3 dsPIC® 2.3.1 Wat is een dsPIC® De gehele vermogenschakeling wordt in deze masterproef aangestuurd door middel van een dsPIC®. Maar wat is een dsPIC® nu eigenlijk? Een dsPIC® is niets anders dan een microcontroller met een DSP-core (Digital Signal Processor) aan boord. Een DSP is een processor die een geoptimaliseerde architectuur heeft voor het verwerken van digitale signalen. Zo wordt iedere DSP-instructie in één tijdscyclus uitgevoerd. Naast deze DSP-core heeft de dsPIC®-familie ook nog enkele andere modules aan boord om gegevens makkelijker in te lezen en uit te sturen. De belangrijkste die voor deze masterproef van toepassing zijn:
ADC-modules output compare modules PWM-modules I/O-modules
Deze modules worden verder in de tekst dieper uitgewerkt.
Dries Vromman Dries Rollez
20
2.3.2 dsPIC30F2020 In het assortiment dsPIC® is er heel wat keuze. Zo heeft chipfabrikant Microchip 2 families dsPIC®, namelijk dsPIC30F en dsPIC33F. Het grootste verschil tussen beide is snelheid. De microcontrollers die voor deze masterproef in aanmerking komen zijn de dsPIC30F2020 en de dsPIC33FJ16GS502. In tabel 2 zijn de belangrijkste verschillen tussen beide weergegeven. Tabel 2: Verschil tussen dsPIC30F2020 en dsPIC33FJ16GS502
dsPIC30F2020
dsPIC33FJ16GS502
Werkspanning
3V – 5.5V
3V – 3.6V
Data SRAM
512 bytes
2048 bytes
Program memory
12 Kbytes
16 Kbytes
4
4
2.5V
1.65V
Geen externe PIN
Wel een externe PIN
CPU snelheid
30 MIPS
40 MIPS
ADC snelheid
2 Msps
4 Msps
1.1ns 4.2ns 4.2ns 8.4ns
1.04ns 1.04ns 1.04ns 1.04ns
Aantal comparators Maximum ingangsspanning comparator SMPS DAC-spanning
PWM resolutie - Duty cycle - Dead-time - Phase-shift - Frequency
Uit bovenstaande tabel kan dus besloten worden dat de specificaties van de dsPIC33FJ16GS502 beter zijn dan die van de dsPIC30F2020. Jammer genoeg was deze dsPIC® niet beschikbaar en moest de toepassing gebruik maken van de dsPIC30F2020. 2.3.3 Software Om de dsPIC® bepaalde taken te laten uitvoeren moet een programma geschreven worden dat door de microcontroller uitgevoerd kan worden. Dit programma kan in heel wat talen geschreven worden. De voornaamste talen zijn assembler en C-taal. Assembler is een lager gelegen programmeerniveau die dichter bij de hardware staat dan de C-taal. Dit heeft als voordeel dat er geen overbodige code gegenereerd wordt en dat de gegevens zo sneller kunnen worden verwerkt. De C-taal heeft op zijn beurt het voordeel dat er gemakkelijker complexe programma’s gemaakt kunnen worden. In deze masterproef wordt de microcontroller geprogrammeerd in assembler met de reden dat er zo dichter bij de hardware geprogrammeerd kan worden. Hiervoor wordt het programma MPLAB® IDE van Microchip gebruikt. Dit programma zet de geschreven code om naar objectcode. Naast de assemblercode zijn er ook nog de library’s van de dsPIC® zelf. Deze zijn nodig om de verwijzingen in de assemblercode uitvoerbaar te maken in de microcontroller. Een laatste component die nodig is om software in de dsPIC® te programmeren is de MPLAB® ICD 2. Dit is een In-Circuit Debugger en programmer die ervoor zorgt dat de geschreven software, die omgezet is naar objectcode, in de microcontroller geprogrammeerd kan worden.
Dries Vromman Dries Rollez
21
Figuur 20: MPLAB IDE project manager
2.3.4 Gebruikte modules De dsPIC30F2020 is een 16-bit microcontroller die een 16-bit brede geheugen- en databus heeft en een 24-bit brede instructiebus.[5, 6] Verder bevat de dsPIC30F2020 verschillende modules die gebruikt kunnen worden. Het volledige blokschema van deze microcontroller is terug te vinden in bijlage 7. Hieronder worden de modules die gebruikt zijn in het kader van deze masterproef besproken. DSP Een eerste opvallend gegeven bij een dsPIC30F is dat het RAM-geheugen opgesplitst is in twee delen. Dit is nodig voor het gebruik van de DSP-module in de microcontroller. Deze module is belangrijk om snelle berekeningen uit te voeren. Zo duurt iedere DSP-instructie slechts één cyclus terwijl een gewone microcontroller instructie meerdere cycli kan duren.[7] Door gebruik te maken van die DSPmodule kan een vermenigvuldiging van twee 17-bit getallen merkelijk sneller uitgevoerd worden. In figuur 21 (met gewone instructies) en figuur 22 (met DSP-instructies) is de verwerkingstijd te zien van het buck-algoritme (zie hoofdstuk 3). Het buck-algoritme berekend de duty cycle voor de volgende periode. Het gele signaal is de PWM-uitsturing en het groene signaal de tijd die het algoritme nodig heeft om tot een resultaat te komen.
5µs
+5V
Berekeningstijd 0V +5V PWM-uitsturing 0V Figuur 21: Verwerkingstijd buck-algoritme met gewone instructies
Dries Vromman Dries Rollez
22
Inschakelen MOSFET’s 1,5µs
+5V
Berekeningstijd 0V +5V PWM-uitsturing 0V Figuur 22: Verwerkingstijd buck-algoritme met DSP-instructies
Uit bovenstaande beelden kan onmiddellijk besloten worden dat de microcontroller hetzelfde algoritme sneller kan verwerken indien er DSP-instructies gebruikt worden. Met DSP-instructies is de verwerkingstijd iets meer dan drie keer sneller. Op bovenstaand scoopbeeld is ook een spike te zien. Deze is afkomstig van het inschakelen van de MOSFET’s. ADC Een volgende belangrijke module die nodig is voor deze masterproef, is de Analog-to-Digital-module (ADC-module). Deze zorgt ervoor dat een analoge spanning omgevormd wordt naar een digitale waarde. Het resultaat van deze digitalisering is een 10-bit woord dat in de microcontroller kan gebruikt worden in bijvoorbeeld de berekeningen. In figuur 23 is het blokschema weergegeven van de ADC-module in de dsPIC30F2020. In dit blokschema is te zien dat ADC-ingangspinnen AN0, AN2, AN4 en AN6 een eigen sample en hold circuit hebben. Dit wil zeggen dat deze ingangspinnen simultaan gesampled kunnen worden. Verder zijn er ook nog gedeelde ingangspinnen (AN8, AN10, en de pinnen met oneven nummers) die maar over één sample en hold circuit beschikken. Deze moeten dan om beurt afgelopen worden. Het digitaliseren van een analoog signaal gebeurd door middel van een Successive Approximation Register of kortweg SAR-register. Als de conversie begint wordt er in het SAR-register de waarde 200hex geplaatst. Deze digitale waarde wordt, rekening houdend met de referentiespanning AVDD, analoog gemaakt door de DAC. Als deze conversie voltooid is, wordt deze vergelijkingsspanning vergeleken met de gesamplede waarde. Op basis van het resultaat van deze vergelijking wordt de waarde in het SAR-register aangepast en opnieuw een vergelijkingsspanning bekomen die men terug vergelijkt. Dit blijft duren tot alle bits doorlopen zijn. Eenmaal dit gebeurd is, wordt de digitale waarde in het juiste dataformaat omgezet en geplaatst in het 16-bit register van deze ADC.[8]
Dries Vromman Dries Rollez
23
Figuur 23: Blokschema ADC-module
Wanneer er nu een conversie moet gebeuren is afhankelijk van de ingestelde triggering. Zo kan er getriggerd worden op een tijd die synchroon loopt met de PWM-kanalen, op een timer of op een moment dat zelf bepaald is. Er moet opgemerkt worden dat de microcontroller per paar getriggerd wordt. Dus als er een triggering gebeurt, dan wordt een even en een oneven ingangspin gesampled en gedigitaliseerd.
Figuur 24: Trigger-event op ½ Ton
In deze masterproef is het de bedoeling om de condensatorbank met een constante spoelstroom op te laden. Hiervoor zal de gemiddelde spoelstroom dus gecontroleerd moeten worden. Bij analoge controle methodes wordt de spoelstroom door middel van filters uitgemiddeld.[9] Hier wordt de stroom elke schakelperiode één keer gesampled. Door nu dat samplemoment juist te kiezen kan
Dries Vromman Dries Rollez
24
telkens de gemiddelde spoelstroom ingelezen worden.[10] In bovenstaande figuur is het duidelijk dat de gemiddelde spoelstroom gesampled kan worden na ½ TON. PWM In de dsPIC30F2020 zitten vier PWM generatoren. Dit betekent dat er vier verschillende PWMsignalen op een verschillende frequentie opgewekt kunnen worden. Er is ook de mogelijkheid om de vier PWM generatoren synchroon te laten werken. Dit laatste zal hier gebruikt worden. Vervolgens bestaan er verschillende modes om de PWM-kanalen aan te sturen. Deze zijn terug te vinden in de datasheet van de microcontroller.[5] Omdat er in deze masterproef maar gewerkt wordt met één vaste frequentie van 50kHz wordt de ‘Standard Edge-Aligned PWM’ mode gebruikt.
Figuur 25: Edge-Aligned PWM en blokschema primaire time base
De werking van de PWM modules wordt uitgelegd aan de hand van bovenstaande figuren. Bij iedere klokpuls wordt de counter (PTMR) verhoogd en vergeleken (Equality Comparator) met de ingestelde periode en de ingestelde duty cycle. Bij een nieuwe periode wordt het PWMH-kanaal hoog geplaatst. Als de teller de ingestelde waarde van de duty cycle bereikt, wordt het kanaal laag gezet. Indien de teller de ingestelde waarde van de periode bereikt, wordt er een signaal gegeven dat de periode eindigt. De teller wordt nu gereset en het PWMH-kanaal wordt opnieuw hoog geplaatst. Output compare Een volgende module die in deze masterproef gebruikt wordt is de output compare. Deze dient om de uitgangsspanning continu te controleren zodat deze niet boven een maximale spanning kan komen. De werking van deze module is opnieuw gebaseerd op een comparator die het ingangssignaal vergelijkt met een ingestelde compare-spanning (CMREF). Eenmaal het ingelezen signaal de ingestelde waarde bereikt, wordt er een signaal afgevuurd dat gebruikt wordt om de PWM-modules uit te schakelen. Het glitch filter die in het blokschema van de comparator hieronder te zien is, dient om signalen weg te filteren die minder dan 66ns duren.
Dries Vromman Dries Rollez
25
Figuur 26: Blokschema comparator
Input/Output Een laatste module die gebruikt wordt is de I/O-module. Met deze module is het mogelijk pinnen van de microcontroller hoog of laag te plaatsen. Daarnaast is het ook mogelijk om te detecteren of een pin hoog of laag geplaatst is. Een pin wordt als hoog beschouwd als de spanning aan de pin hoger is dan voedingsspanning minus 0,7V. Een pin wordt als laag beschouwd al de spanning lager is dan 0,6V. Deze module wordt binnen het kader van deze masterproef gebruikt voor de volgende toepassingen:
het aansturen van de error-led
het aansturen van het relais op de condensatorbank
de controle of de condensatorbank is aangesloten
Dries Vromman Dries Rollez
26
2.4 MOSFET’s 2.4.1 Inleiding Zoals hierboven gezegd, wordt voor de drie schakelende elementen gebruik gemaakt van MOSFET’s. Bij het kiezen van de MOSFET’s moet er rekening gehouden worden met een aantal parameters. Deze parameters worden hieronder kort aangehaald en tenslotte wordt uitgelegd hoe de keuze van de MOSFET’s is verlopen. De bespreking van de parameters is gebaseerd op een FDP2532 MOSFET geproduceerd door Fairchild Semiconductor.[11]
D Drain G Gate S Source
Figuur 27: Symbool MOSFET
2.4.2 VDSS Een eerste parameter waarmee rekening moet gehouden worden tijdens de keuze van de MOSFET’s is de maximaal toelaatbare spanning tussen drain en source. Voor de applicatie die hier gebouwd wordt, wordt er rekening gehouden met een VDSS van 150V. Deze spanning kan bereikt worden als de condensatoren voldoende opgeladen worden. Deze parameter wordt veelal opgegeven bij een temperatuur van 25°C. 2.4.3 RDS,ON Vervolgens worden de MOSFET’s in deze toepassing gebruikt als schakelaars. Ideaal gezien heeft een open schakelaar een oneindige weerstand en een gesloten schakelaar geen weerstand. Een MOSFET heeft echter een zekere weerstand tussen drain en source (RDS,ON) wanneer hij volledig ingeschakeld is. Om zo weinig mogelijk verlies te hebben moet deze weerstand zo klein mogelijk zijn. Voor een FDP2532 MOSFET is RDS,ON gelijk aan 14mΩ. Er moet wel opgemerkt worden dat deze waarde opgegeven is bij specifieke omstandigheden. Deze zijn:
TC
= temperatuur case
= 25°C
ID
= drainstroom
= 33A
VGS = gate-source spanning = 10V
Tot slot moet nog opgemerkt worden dat de waarde van RDS,ON sterk temperatuursafhankelijk is (figuur 28). Bij een junctie temperatuur van 120°C is RDS,ON dubbel zo groot als van RDS,ON bij 25°C.
Dries Vromman Dries Rollez
27
Figuur 28: RDS,ON in functie van de junctietemperatuur TC
2.4.4 Total Gate Charge QTG Normaal heeft een ideale schakelaar geen enkel stuurvermogen nodig, er is enkel een zekere stuurspanning nodig. Bij een MOSFET, een niet ideale schakelaar dus, gaat die regel niet helemaal op. De ingang (gate) van een MOSFET gedraagt zich als een capaciteit. Om de MOSFET volledig in te schakelen moet die capaciteit, tussen gate en source, opgeladen worden (VGS=10V). De lading die nodig is om de ingangscapaciteit van een MOSFET op te laden tot 10V, en dus ook de lading nodig om de MOSFET volledig in te schakelen, wordt als de total gate charge (QTG) gedefinieerd.
Figuur 29: Gate charge van een FDP2532
Indien de MOSFET op een hoge schakelfrequentie werkt, dan zal het stuurvermogen lineair evenredig zijn met de schakelfrequentie. 𝑃 = 𝑓 ∙ 𝑉𝐺𝑆 ∙ 𝑄𝑇𝐺
(7)
De aansturing van de MOSFET’s gebeurt door speciaal ontworpen drivers die hieronder in punt 3 uitgewerkt worden.
Dries Vromman Dries Rollez
28
2.4.5 Figure Of Merit (FOM) Voor een gegeven technologie zijn de parameters RDS,ON en QTG omgekeerd evenredig met elkaar. Zo heeft een MOSFET met een lage RDS,ON een hoge QTG en omgekeerd. Om nu verschillende MOSFET’s met elkaar te vergelijken, moeten beide parameters in rekening gebracht worden. Daarom wordt voor de verschillende MOSFET’s het product van RDS,ON en QTG berekend. Dit product wordt ook wel de Figure Of Merit (FOM) genoemd. [12] 𝐹𝑂𝑀 = 𝑅𝐷𝑆,𝑂𝑁 ∙ 𝑄𝑇𝐺
(8)
In tabel 3 is voor een aantal verschillende MOSFET’s de FOM uitgerekend. Als op basis van deze tabel een keuze moet gemaakt worden, dan is het duidelijk dat de MOSFET met als typenummer FDP2532 de bovenhand haalt. Deze heeft immers de laagste FOM. Tabel 3: FOM voor een aantal MOSFET’s met een VDS van 150V
Fabrikant
Typenummer
Rdson (Ω)
Gate charge (nC)
FOM
IDS (A)
Fairchild Semiconductor
FDP2532
0,016
82
1,312
79
Fuji Electric
2SK3590-01
0,031
52
1,612
57
International Rectifier
IRF3315PBF
0,07
95
6,65
27
International Rectifier
IRF3415PBF
0,042
200
8,4
43
2.5 Diodes In het principeschema van de gebruikte configuratie (figuur 11) is er één diode D1 te zien. Daarnaast is er over FET1 en FET2 een extra diode geplaatst bovenop de inwendige diode van de MOSFET. Deze diodes zijn hieronder in figuur 30 weergegeven als D2 en D3. Bij de keuze van de diodes is er ten eerste vooral gelet op de reverse recovery time (tRR) van de diodes. Deze is het best zo klein mogelijk zodat de diode snel kan overgaan van geleiden naar sperren. Ten tweede is er op gelet dat de diode een voldoende grote inverse spanning (reverse voltage) aankan. Hier is de keuze gevallen op de BYV42E-150 diodes, deze hebben een ultra-fast recovery time van 26ns en kunnen een inverse spanning tot 150V aan.
Figuur 30: Configuratie 2 met extra diodes
Dries Vromman Dries Rollez
29
2.6 Spoel In de vermogenkring is de spoel opgenomen als energieoverdrager. Hier is een spoel gebruikt uit de DMT serie van Coilcraft® die specifiek ontworpen is om gebruikt te worden in geschakelde voedingen. De gekozen spoel heeft een inductie van 77µH.
2.7 Current monitor 2.7.1 Inleiding De stroom die door de spoel vloeit heeft een typische vorm zoals afgebeeld in figuur 17. Door het bidirectionele karakter van de boost converter kan de stroom door de spoel in twee richtingen vloeien. Dit is nodig om zowel energie van de lage spanningskant naar de hoge spanningskant en omgekeerd te verplaatsen. Het opmeten van de stroom kan op een aantal manieren gebeuren. In deze masterproef is geopteerd om gebruik te maken van één current monitor voor elke mode (boost- en buckmode). Eerst wordt het meetprincipe uitgelegd. Vervolgens wordt de principiële werking kort verklaard en wordt uitgelegd hoe de meting praktisch is aangepakt. Tot slot worden de specificaties die de keuze van de current monitor beïnvloed hebben toegelicht. 2.7.2 Principe In serie met de spoel wordt een sense-weerstand RS geplaatst. Deze weerstand zet de te meten spoelstroom IS om in een evenredige spanning VS. De spanning over de sense-weerstand wordt door een current monitor ingelezen en beïnvloedt daarbij de vermogenschakeling zo weinig mogelijk. Het uitgangssignaal is evenredig met de ingelezen verschilspanning. Het principe is weergegeven in figuur 31 en figuur 32.[13]
Figuur 31: Principe INA194
Dries Vromman Dries Rollez
30
2.7.3 Werking De klemmen VIN- en VIN+ worden door middel van zo kort mogelijke verbindingen met de senseweerstand RS verbonden. De voeding van de INA194 (V+) mag kleiner zijn dan de common mode spanning aan de klemmen VIN- en VIN+. Hier bedraagt de voedingsspanning +5V. Intern werkt de INA194 met twee opamps om een goeie werking te garanderen bij het volledige bereik van de common mode spanning. Wanneer de common mode spanning positief is, is opamp A2 actief. De spanningsval wordt omgezet in een evenredige stroom. Door middel van een weerstand RL wordt deze stroom opnieuw omgezet in een spanning. Als de common mode spanning negatief is, is opamp A1 actief. De spanningsval over de sense-weerstand wordt opnieuw omgezet in een evenredige stroom. Door middel van een stroomspiegel wordt deze stroom gedupliceerd en door middel van weerstand RL terug omgezet in een spanning. In het overgangsgebied, wanneer A1 en A2 actief zijn, garandeert de fabrikant een goede werking door een architectuur die gepatenteerd is en dus niet wordt vrijgegeven. De gebruikte current monitor heeft een versterking van 50V/V. Dit betekent dat de uitgangsspanning van de current monitor aan volgend verband voldoet indien de sense-weerstand een waarde van 15mΩ heeft. 𝑣𝑖𝐿 = 𝑖𝐿 ∙ 𝑅𝑆 ∙ 50
(9)
2.7.4 Praktisch Omdat de stroom in twee richtingen kan vloeien, kan de spanning over de sense-weerstand RS positief of negatief zijn. De current monitor zal hier dus moeten op voorzien zijn. Een eerste mogelijkheid zou kunnen zijn om gebruik te maken van één bidirectionele current monitor. Deze oplossing heeft als voordeel dat alles kan opgemeten worden met slechts één IC. Dit heeft echter als consequentie dat de meetnauwkeurigheid kleiner zal zijn omdat het volledige stroombereik (-8A tot +8A) ingelezen moet worden door één ADC. Daarenboven moet gewerkt worden met een offset om 0A voor te stellen. Een tweede mogelijkheid is om de positieve spoelstroom en de negatieve spoelstroom elk apart op te meten met een eigen current monitor. Deze oplossing heeft de omgekeerde voor- en nadelen als de eerste methode. Hier is het nadeel dat er twee monitors gebruikt moeten worden. Aan de andere kant zal de meetnauwkeurigheid groter zijn gezien het stroombereik in twee delen wordt opgesplitst. Het negatieve stroombereik (-8A tot 0A) en het positieve stroombereik (0A tot +8A) wordt apart opgemeten door 2 ADC’s. In dit project is er voor deze methode geopteerd omdat het gebruik van twee current monitors geen belemmering is. De gekozen INA194 is geleverd in een SOT23-5 behuizing.
Dries Vromman Dries Rollez
31
2.7.5 Belangrijke specificaties Bij de keuze van de current monitor is gelet op een aantal specificaties. Om te beginnen moest de current monitor een voldoende grote bandbreedte hebben. De INA194 die hier gekozen werd heeft een bandbreedte van 500kHz. Een tweede eigenschap waarmee rekening gehouden is bij de keuze is de grootte van de common mode spanning, de zogenaamde common mode input voltage range. De common mode spanning is hier bij benadering gelijk aan de spanning VIN+ omdat de spanningsval over de sense-weerstand toch voldoende klein is. In boostmode varieert VIN+ tussen -0,7V en +24V (zie figuur 12 en figuur 13) en in buckmode blijft deze spanning constant op +24V (zie figuur 15 en figuur 16). De gekozen current monitor is bestemd voor common mode spanningen tussen -16V en +80V. Nu is het de bedoeling dat de current monitor het verschilsignaal of het differentieel signaal versterkt en niet het common mode signaal. Ideaal gezien zou het common mode signaal niet mogen versterkt worden. Praktisch is dit echter niet mogelijk. De specificatie die weergeeft in welke mate het differentieel signaal versterkt wordt en het common mode signaal onderdrukt, is de Common Mode Rejection Ratio (CMRR). De CMRR wordt meestal uitgedrukt in dB door middel van vergelijking 10. Hierbij is ADM de versterking van het differentiële signaal en ACM de versterking van het common mode signaal. Hier bedraagt de CMRR 120dB. Tot slot moet er nog opgemerkt worden dat de CMRR frequentieafhankelijk is. 𝐶𝑀𝑅𝑅𝑑𝐵 = 20 ∙ 𝑙𝑜𝑔
𝐴𝐷𝑀 𝐴𝐶𝑀
(10)
Een andere eigenschap die nauw samenhangt met de CMRR is de Power Supply Rejection Ratio (PSRR). Deze laatste geeft weer hoe groot de verandering van de uitgangsspanning is bij een verandering van de voedingsspanning. Met andere woorden hoe sterk de rimpel van de voedingsspanning onderdrukt wordt in het uitgangssignaal. Ideaal gezien zou er geen enkele invloed mogen zijn, maar praktisch is dit echter niet zo. Hier is de PSRR 105dB. Tot slot is er ook nog de versterking. In de INA193-198 familie zijn er een aantal versterkingen mogelijk (20V/V, 50V/V en 100V/V). De gekozen current monitor heeft een versterking van 50V/V. De keuze is zo gemaakt dat het maximale uitgangsignaal zo dicht mogelijk bij de maximaal in te lezen spanning van de ADC (+5V) aanligt maar ook niet erover.
Dries Vromman Dries Rollez
32
2.7.6 Probleem Tijdens de eerste testfases werd al snel een probleem opgemerkt met de gebruikte current monitors. Het probleem wordt hieronder uitgelegd tijdens de buckmode, maar hetzelfde probleem doet zich ook voor tijdens de boostmode. Veronderstel de opstelling die weergegeven is in figuur 32. Dit is de situatie die zich voordoet tijdens de buckmode. Hierbij is FET3 continu gesloten, schakelt FET2 en is FET1 continu open. Diode D2 komt afhankelijk van de schakeltoestand in geleiding. Diode D1 komt in deze situatie normaal niet in geleiding. Bij onderstaande simulaties is voor de FET’s rekening gehouden met hun RDS,ON van 16mΩ. De spanning langs de hoge spanningszijde, waar normaal de condensatorbank aangesloten is, wordt hier gevoed door een constante spanningsbron Vc van 60V. De schakelfrequentie bedraagt 50kHz en de duty cycle is op een vaste waarde van 40% ingesteld zodat de busspanning VBUS na het uitsterven van de overgangsverschijnselen 24V bedraagt.
GND
INA194 R1 9,1k
ViL
Ron_FET3 16m
V+
Vin-
Vin+
V5 FET2 Ron 16m
Rs 15m
L 77u
+
+
Out
V_duty_cycle -
iL
Rload 14,4
Cload 330u
Vbus
Vc 60 D1
D2
Figuur 32: Opstelling buckmode met current monitor resistief belast
Om de current monitor te simuleren is gebruik gemaakt van het Spice model dat door Texas Instruments ter beschikking gesteld wordt. Bovenstaande opstelling zal bij verschillende belastingen aan de uitgang gesimuleerd worden, maar wordt ook opgemeten in de praktijk. Hierbij worden volgende signalen opgemeten:
De uitsturing, dit is het PWM-kanaal van de microcontroller
De spoelstroom iL, deze is opgemeten met een Tektronix stroomprobe
Het signaal ViL na de current monitor
Dries Vromman Dries Rollez
33
Eerst wordt bovenstaande situatie gesimuleerd. Onderstaand resultaat wordt bekomen: T
5.00
V_duty_cycle 4.00
+3,6A iL
3.00
Output
2,65V ViL
2.00
1.00
0V
0.00 1.00m
1.02m
1.05m Time (s)
1.07m
1.10m
Figuur 33: Simulatie current monitor - belast met weerstand 9K1
In bovenstaande simulatie is te zien dat de current monitor het stroomverloop goed volgt. Er treedt bijna geen faseverschuiving op, de vorm is met een zeer goede benadering gelijk en de theoretische versterking van de current monitor wordt door middel van onderstaande berekening aangetoond. Veronderstel dat de controle wordt uitgevoerd wanneer de spoelstroom zijn maximum bereikt. Dan vloeit er een stroom van 3,6A door de sense-weerstand. De spanning over die weerstand wordt nu door de current monitor versterkt met een factor 50. 𝑣𝑖𝐿 = 𝑖𝐿 ∙ 𝑅𝑆 ∙ 50 = 3,6𝐴 ∙ 15𝑚Ω ∙ 50 = 2,7V De berekende waarde van 2,7V komt goed overeen met de gesimuleerde waarde van 2,65V. Indien een analoge situatie in de praktijk opgemeten wordt, dan worden de volgende signalen opgemeten. +2,3V VIL +0,5V 2A IL
1A 0A +5V
Uitsturing 0V Figuur 34: Meting current monitor - belast met weerstand 9K1
Dries Vromman Dries Rollez
34
In bovenstaande scoopbeeld is het paarse signaal de uitgang van de current monitor (VIL), het groene signaal de stroom opgemeten met de stroomprobe en het gele signaal de uitsturing van FET2 gemeten aan de microcontroller. Voor het groene signaal komt één divisie overeen met 1A. Uit de praktisch opgemeten signalen blijkt dat de vorm van het signaal van de current monitor niet in fase verschoven is. De vorm van het uitgangssignaal van de current monitor komt absoluut niet overeen met het werkelijke stroomverloop. Het verschil in vorm is te verklaren door de beperkte bandbreedte van de current monitor. Deze bandbreedte bedraagt zoals eerder gezegd 500kHz. Daarnaast is ook de grootte van het uitgestuurde signaal van de current monitor niet correct. Veronderstel dat opnieuw een controle wordt uitgevoerd bij de maximum spoelstroom (2A): 𝑣𝑖𝐿 = 𝑖𝐿 ∙ 𝑅𝑆 ∙ 50 = 2𝐴 ∙ 15𝑚Ω ∙ 50 = 1,5V Deze berekende waarde komt absoluut niet overeen met de praktisch opgemeten waarde van 2,3V. Tot slot zijn in bovenstaande scoopbeeld spanningspieken te zien op het signaal dat uitgestuurd wordt door de current monitor. Deze spanningspieken zijn het gevolg van het inschakelen van FET2. Deze pieken zijn ook overal terug te vinden in de scoopbeelden die opgenomen zijn in dit verslag. Vervolgens is een tweede opstelling gemaakt waarbij de current monitor enkel belast wordt door de ingang van de microcontroller. Deze pin heeft een hoge impedantie gezien het de ingang van de ADC betreft. De resultaten van deze meting zijn hieronder weergegeven in figuur 35. +2,2V VIL +0,6V 2A IL
1A 0A +5V
Uitsturing 0V Figuur 35: Meting current monitor - hoog impedant belast met ingang ADC
Bovenstaande signalen zijn praktisch identiek aan de signalen die opgemeten zijn met een zuiver ohmse belasting van 9K1 (zie figuur 34). Er treedt geen faseverschuiving op, maar de vorm lijkt nog niet helemaal te kloppen.
Dries Vromman Dries Rollez
35
Om nu nog uit te sluiten dat de current monitor niet in de war wordt gestuurd door de ADC is een vierde opstelling gemaakt waarbij de uitgang van de current monitor gewoon opengelaten is. Dit is hieronder weergegeven: +2,2V VIL +0,7V 2A IL
1A 0A +5V
Uitsturing 0V Figuur 36: Meting current monitor - uitgang niet belast
De uitgang openlaten blijkt opnieuw geen succes te zijn. Er is geen faseverschuiving, maar de vorm van het signaal blijkt nog steeds verre van optimaal. De grootte van het signaal blijkt dan weer wel te kloppen. Ditmaal wordt de minimale (1A) stroom even gecontroleerd: 𝑣𝑖𝐿 = 𝑖𝐿 ∙ 𝑅𝑆 ∙ 50 = 1𝐴 ∙ 15𝑚Ω ∙ 50 = 0,75V Deze berekende waarde komt goed overeen met wat is opgemeten. Tot slot is er nog een vijfde opstelling gemaakt waarbij de uitgang van de current monitor meer belast wordt. In onderstaande meting is de current monitor belast met een weerstand van 200Ω.
+2V
VIL
+0,6V 2A IL
1A 0A +5V
Uitsturing 0V
Figuur 37: Meting current monitor - uitgang belast met 200Ω
Dries Vromman Dries Rollez
36
In bovenstaand beeld is te zien dat het signaal na de current monitor er goed uit ziet wat de vorm betreft. Er is geen faseverschuiving. De grootte van het signaal blijkt wel niet te kloppen. 𝑣𝑖𝐿 = 𝑖𝐿 ∙ 𝑅𝑆 ∙ 50 = 2𝐴 ∙ 15𝑚Ω ∙ 50 = 1,5V Uit verdere testen is ook gebleken dat het uitgangssignaal van de current monitor satureert bij een belasting van 200Ω. Een verklaring hiervoor kan gevonden worden in het feit dat de uitgangsstroom van de monitor begrensd is. Uiteindelijk is besloten om de current monitor te belasten met een weerstand van 470Ω. Immers werden de beste resultaten verkregen met een relatief lage weerstand. Met een dergelijke belasting is er ook geen saturatie vastgesteld.
Dries Vromman Dries Rollez
37
3. FET Driver 3.1 Probleem De FET’s kunnen onmogelijk rechtstreeks aangestuurd worden door de dsPIC. De piekstroom die een uitgang kan leveren en de uitgangsspanning zijn onvoldoende hoog om een FET uit te sturen. Dit is dus een eerste reden waarom een driver zal gebruikt worden. Een tweede probleem dat zich voordoet is het high side probleem. Veronderstel het principeschema van het vermogengedeelte in figuur 38. Wanneer FET1 is ingeschakeld en FET2 uitgeschakeld, dan staat de drain van FET1 en dus ook de source van FET2 op 0V. Wanneer FET2 is ingeschakeld en FET1 is uitgeschakeld, staat de drain van FET1 en dus ook de source van FET2 op VC.
Figuur 38: High side probleem
Het high side probleem zou kunnen opgelost worden door gebruik te maken van een high side FET driver. Een dergelijke driver is echter niet toe te passen op de derde FET die mogelijk laagfrequent schakelt. Daarom is uiteindelijk besloten om zelf een driver te bouwen die gebruikt wordt om de drie FET’s aan te sturen. De drivers kunnen op de moederprint geplugd worden. Indien nodig kunnen de drivers later nog in andere projecten gebruikt worden. Hieronder wordt de driver verder uitgewerkt.
3.2 Elektrisch schema Het schema dat gebruikt wordt voor de drivers is ontworpen door ir. Marc Windels en is al gebruikt in eerdere masterproeven. Het volledige schema van de driver is in bijlage 2 te vinden. Er zijn echter een aantal wijzigingen aangebracht ten opzichte van het oorspronkelijke schema. Er is onder meer geopteerd om alles te voeden op +5V. Daarnaast is het vermogen van de DC-DC converter anders gedimensioneerd. Er is gekozen voor een converter met een vermogen van 2 Watt.
Dries Vromman Dries Rollez
38
Deze keuze heeft zo zijn voordelen. Zo heeft de converter nu kleinere afmetingen en is de kostprijs lager. Het is ook de bedoeling dat deze drivers later gebruikt zullen worden in het labo vermogenelektronica. Op het schema zijn twee connectoren voorzien:
Een ingangsconnector waarop de massa, de voedingsspanning (+5V) en het stuursignaal afkomstig van de dsPIC aangesloten worden.
De uitgangsconnector voor het gate- en het sourcesignaal.
Merk ook op dat de afstand tussen de twee connectoren gelijk is aan 1300 mil zoals hieronder weergegeven in figuur 39. Door de mechanische eigenschappen van de connectoren is het niet mogelijk om de printjes verkeerd in te pluggen op de moederprint.
Figuur 39: Afstand tussen de twee connectoren
Door middel van een DC-DC converter wordt uit de voedingsspanning een spanning van +15V gemaakt. Deze spanning is nu gescheiden van de +5V die aangeboden wordt van de moederprint. Een zenerdiode na de converter zorgt voor een spanning van +5V die gebruikt zal worden voor de aansturing van de optocoupler HCPL7721. Op de spanning van +5V is er ook een LED voorzien die weergeeft of er spanning aanwezig is. Een andere zenerdiode zorgt voor een spanning van +3,3V. Deze spanning wordt verbonden met de source van de FET. Zodoende ligt de spanning van de gate 3,3V lager dan de source en is de FET zeker niet in geleiding. Wanneer de FET nu ingeschakeld wordt, dan wordt er een spanning van +15V aangeboden aan de gate van de FET. De gate van de FET staat nu ongeveer +12V hoger dan de source.
Dries Vromman Dries Rollez
39
3.3 Printontwerp Voor het PCB ontwerp is ervoor gekozen om gebruik te maken van SMD componenten. De gebruikte behuizing is 1206. Dit zorgt ervoor dat de print klein kan gehouden worden zodat ze later makkelijk op de moederprint kan geplugd worden. Hieronder is een foto weergegeven van de FET driver.
Ingangsconnector
Uitgangsconnector
Figuur 40: FET driver
3.4 Stuklijst De lijst met gebruikte componenten is hieronder weergegeven. Tabel 4: Stuklijst FET driver
Dries Vromman Dries Rollez
stukkenlijst waarde
beschrijving
aantal
C1-C5
100nF
condensator
5
C6
220nF
condensator
1
CP1
10µF
condensator
1
IC1
TMH0515S
DC/DC-converter
1
IC2
HCPL7721
optocoupler
1
IC3
TC4422
fet-driver
1
IC3
DIL8
Socket IC
1
JP1, JP2
1X3
connector
2
LED1
rood
LED
1
R1, R3, R4
1KΩ
weerstand
3
R2
470Ω
weerstand
1
Z1
5V1
zenerdiode
1
Z2
3V3
zenerdiode
1
40
3.5 Meting In eerste instantie is de driver apart getest van het vermogenbord. Om de driver toch te belasten is gebruik gemaakt van een capaciteit. Uit de datasheet van de MOSFET’s kan de total gate charge QTG afgeleid worden. Stel QTG gelijk aan 100nC, dan volgt uit onderstaande formule de equivalente gate capaciteit C: 𝐶=
𝑄𝑇𝐺 100𝑛𝐶 = = 10𝑛𝐹 𝑉𝐺𝑆 10𝑉
Voor de rest van de metingen is uitgegaan van een capacitieve belasting van 10nF. Hieronder is een scoopbeeld te zien van de uitgang (groen) en de ingang (geel) van de FET driver bij een duty cycle van 50% en een schakelfrequentie van 50kHz. De uitgang varieert tussen -3V en +12V. +5V Ingangssignaal 0V +12V Uitgangssignaal 0V -3V Figuur 41: Uitgang FET driver bij een duty cycle van 50%
De optocoupler en de driver bezitten elk een eigen vertraging die samen ongeveer 90ns bedraagt. Deze vertraging is duidelijk waar te nemen in figuur 42. Het gele signaal is het ingangssignaal en het groene signaal de uitgang. +5V Ingangssignaal 0V +12V Uitgangssignaal 0V -3V Figuur 42: Delay FET driver
Dries Vromman Dries Rollez
41
3.6 Vermogen in functie van de schakelfrequentie Tot slot is er ook eens bekeken hoe de voedingsstroom van de driver varieert in functie van de frequentie van het ingangssignaal. Dit vertelt immers wat het vermogen is van de driver bij een bepaalde frequentie. Hieronder volgt eerst de meting die in de praktijk gebeurd is, daarna wordt ook theoretisch het verband gecontroleerd. Onderstaande grafiek toont de praktisch opgemeten waarden. Merk op dat de stroom is uitgezet in mA en de frequentie in kHz.
Stroom Iin in functie van de frequentie f 350 Iin= 0,6599∙f + 166,6 R² = 0,9996
300
Stroom I(mA)
250 200 I = f(f)
150
Lineair (I = f(f)) 100 50 0 0
50
100
150
200
250
Frequente f (in kHz)
Figuur 43: Stroom I in functie van de frequentie (praktisch)
Er is een lineair verband waar te nemen tussen de voedingsstroom en de frequentie f. De best passende rechte en de vergelijking van die rechte zijn weergegeven in figuur 43. Nu zal dit verband theoretisch verklaard worden. De theoretische afleiding gebeurt op basis van een vermogenbalans. Onderstaande figuur geeft het blokschema weer waarop geredeneerd is voor het opstellen van de vermogenbalans. +5V
Pin
Pout
Pgate VGate
Iin 0V
PStuurschakeling
Vin
DC/DC Rendement = η
Vout
Stuurschakeling
VSource Ingangsconnector
Uitgangsconnector
VPMW(f) Figuur 44: Blokschema FET driver
Dries Vromman Dries Rollez
42
Het ingaande vermogen is gelijk aan: 𝑃𝑖𝑛 = 𝑉𝑖𝑛 ∙ 𝐼𝑖𝑛
(11)
Het uitgaande vermogen bestaat uit het vermogen om de gatecapaciteit van de FET op te laden en het vermogen verbruikt in de stuurschakeling. Het vermogen van de stuurschakeling bestaat hoofdzakelijk uit het vermogen verbruikt in de weerstanden en de zenerdiodes om 3,3V en 5,1V te maken. Dit wordt verondersteld een constante waarde te zijn. 𝑃𝑜𝑢𝑡 = 𝑃𝑔𝑎𝑡𝑒 + 𝑃𝑠𝑡𝑢𝑢𝑟𝑠𝑐 𝑎𝑘𝑒𝑙𝑖𝑛𝑔
(12)
2 𝑃𝑜𝑢𝑡 = 𝑓 ∙ 𝐶 ∙ 𝑉𝑜𝑢𝑡 + 𝑉𝑜𝑢𝑡 ∙ 𝐼𝑠𝑡𝑢𝑢𝑟𝑠𝑐 𝑎𝑘𝑒𝑙𝑖𝑛𝑔
(13)
De stroom die de stuurschakeling onttrekt aan de converter wordt geschat op 40mA. De gatecapaciteit is hierboven in 3.5 al berekend als 10nF. De verhouding tussen het uitgaande vermogen en het ingaande vermogen is het rendement van de converter. 𝜂=
2 + 𝑉𝑜𝑢𝑡 ∙ 𝐼𝑠𝑡𝑢𝑢𝑟𝑠𝑐 𝑎𝑘𝑒𝑙𝑖𝑛𝑔 𝑃𝑜𝑢𝑡 𝑓 ∙ 𝐶 ∙ 𝑉𝑜𝑢𝑡 = 𝑃𝑖𝑛 𝑉𝑖𝑛 ∙ 𝐼𝑖𝑛
(14)
Bovenstaande vergelijking wordt nu herschikt tot: 𝐼𝑖𝑛 =
2 𝑓 ∙ 𝐶 ∙ 𝑉𝑜𝑢𝑡 + 𝑉𝑜𝑢𝑡 ∙ 𝐼𝑠𝑡𝑢𝑢𝑟𝑠𝑐 𝑎𝑘𝑒𝑙𝑖𝑛𝑔 𝑉𝑖𝑛 ∙ 𝜂
𝐼𝑖𝑛 =
2 𝑉𝑜𝑢𝑡 ∙ 𝐼𝑠𝑡𝑢𝑢𝑟𝑠𝑐 𝑎𝑘𝑒𝑙𝑖𝑛𝑔 𝐶 ∙ 𝑉𝑜𝑢𝑡 ∙𝑓+ 𝑉𝑖𝑛 ∙ 𝜂 𝑉𝑖𝑛 ∙ 𝜂
Het rendement van de converter is volgens de datasheet gelijk aan 80%: 𝐼𝑖𝑛 =
10𝑛𝐹 ∙ (15𝑉)² 15𝑉 ∙ 40𝑚𝐴 ∙𝑓+ 5𝑉 ∙ 0,8 5𝑉 ∙ 0,8
𝐼𝑖𝑛 = 562,5 ∙ 10−9 ∙ 𝑓 + 0,150 Als bovenstaande geplot wordt in dezelfde grafiek met de meetpunten (zie figuur 45), dan komen beide grafieken niet echt overeen. Het rendement van de converter is duidelijk te hoog ingeschat. Indien bovenstaande vergelijking nogmaals wordt uitgerekend met een rendement van 70%, dan blijken de twee grafieken beter overeen te komen. 𝐼𝑖𝑛 =
10𝑛𝐹 ∙ (15𝑉)² 15𝑉 ∙ 40𝑚𝐴 ∙𝑓+ 5𝑉 ∙ 0,7 5𝑉 ∙ 0,7
𝐼𝑖𝑛 = 642,9 ∙ 10−9 ∙ 𝑓 + 171,43 Merk op dat de frequentie f in bovenstaande formules in Hertz is uitgedrukt, de stroom in mA. De frequentie in de grafieken is daarentegen uitgedrukt in kHz en de stroom eveneens in mA.
Dries Vromman Dries Rollez
43
Stroom I in functie van de frequentie f 350 300
Stroom I(mA)
250 200 150 100 50 0 0
50
100
150
Frequente f (in kHz) I gemeten(mA) Iberekend(mA) - η=0,80 Iberekend(mA) - η=0,70 Lineair (I gemeten(mA)) Lineair (Iberekend(mA) - η=0,80) Lineair (Iberekend(mA) - η=0,70)
200
250
y = 0,6599∙f + 166,6 R² = 0,9996
y = 0,6429∙f + 171,43 y = 0,5625∙f + 150
Figuur 45: Stroom I in functie van de frequentie (theoretisch)
Dries Vromman Dries Rollez
44
4. Condensatorbank 4.1 Inleiding Langs de hoge spanningskant wordt de energie opgeslagen in een condensator. De energie in een condensator C, opgeladen tot een spanning V, kan als volgt geschreven worden: 1 𝐸𝐶 = 𝐶𝑉 2 2
(15)
Uit bovenstaande formule blijkt dat de energie in een condensator:
Kwadratisch evenredig is met de spanning V over de condensator
Recht evenredig is met de capaciteit C van de condensator
Om er nu voor te zorgen dat er voldoende energie kan opgeslagen worden aan de hoge spanningskant worden een aantal condensatoren met een voldoende grote werkspanning parallel geplaatst. Immers is de totale capaciteit CT van n identieke parallel geschakelde condensatoren met elk een capaciteit C te schrijven als: (16)
𝐶𝑇 = 𝑛 ∙ 𝐶
In deze masterproef zijn er 15 condensatoren met elk een capaciteit van 2200µF parallel geplaatst. Er is een aparte PCB ontwikkeld waarop deze condensatoren geplaatst zijn. Er is echter ook een condensator dicht bij de MOSFET’s geplaatst op de vermogenprint. Door het toepassen van formule 16 kan de totale capaciteit van 33mF berekend worden. De totale energie die in al deze condensatoren kan opgeslagen worden indien ze opgeladen zijn tot 150V is volgens formule 15 gelijk aan 371 Joule. Ter vergelijking, een lamp van 40 Watt (24V) moet ongeveer 9 seconden branden om deze energie te consumeren.
Figuur 46: Condensatorbank
Dries Vromman Dries Rollez
45
4.2 Elektrisch schema Het elektrisch schema bevat naast de 15 elektrolytische condensatoren voor de energieopslag ook nog een aantal andere componenten:
Relais om de condensatorbank te ontladen, zie veiligheid hieronder
Zekering als veiligheid voor te hoge op- of ontlaadstromen
Sense-weerstanden om spanning over de condensatoren en de op- en ontlaadstroom op te meten
Analoge stroom- en spanningsmeter
Connector om de condensatorbank te kunnen loskoppelen zodat hij later ook nog kan gebruikt worden voor andere opstellingen. De connector betreft een Mini-Fit Jr.™ geproduceerd door Molex®.
Het volledige elektrische schema is opgenomen in bijlage 3. Zoals op de foto hierboven te zien is, is de condensatorbank ingebouwd in een plexiglazen kast. Op die manier is er meteen een zekere aanraakbeveiliging ingebouwd.
4.3 Stuklijst De gebruikte componenten voor de condensatorbank zijn hieronder opgenomen in een tabel. Tabel 5: Stuklijst condensatorbank
Dries Vromman Dries Rollez
stukkenlijst
waarde
beschrijving
aantal
C1-C16 PL1 F1 K1 R1 R2 R3 VIA1, VIA2 VIA3, VIA4
2200µF Molex - 5569-6 SH32 - 7A Tyco - T9AS5D22-5 30mΩ 1,5MΩ 33Ω 50-0-50µA 0-100µA
condensator connector zekering relais weerstand weerstand weerstand paneelmeter paneelmeter
16 1 1 1 1 1 1 1 1
46
4.4 Printontwerp De 14 condensatoren op de condensatorbank staan allemaal parallel met elkaar. Nu kunnen deze fysiek op verschillende manieren parallel geschakeld worden. Zo kunnen de condensatoren allemaal na elkaar tussen twee lange spanningsdraden geschakeld worden zoals weergegeven in figuur 47. Echter heeft dit ontwerp het nadeel dat de condensator helemaal achteraan de rij (C14) een grotere weerstand ziet ten opzichte van de ingang dan de condensator die het dichtste bij de ingang zit (C1). De laatste condensator zal dan ook nooit optimaal gebruikt worden.
Ingang
Figuur 47: Condensatoren parallel
Om bovenstaande op te lossen is ervoor gezorgd dat de condensatoren allen ongeveer even ver staan van de ingang. Dit is gebeurd door de condensatoren te rangschikken zoals in figuur 48. Nu zit de ingangsconnector voor iedere condensator ongeveer even ver.
Ingang
Figuur 48: Condensatoren parallel met gelijke afstand tot ingang
Daarnaast zijn de onderlinge verbindingen tussen de condensatoren en de verbinding tussen de vermogenprint en de condensatorbank zo kort mogelijk gehouden om parasitaire inducties tegen te gaan.
Dries Vromman Dries Rollez
47
4.5 Veiligheid 4.5.1 Inleiding Indien de condensatorbank volledig opgeladen is tot zijn maximale werkspanning dan vormt die condensatorbank een zeker veiligheidsrisico. Zeker als een opgeladen condensatorbank onbeheerd achter gelaten wordt. Een onwetend persoon zou immers onterecht kunnen veronderstellen dat de bank ontladen is terwijl hij nog steeds opgeladen is. Om dergelijke situaties te voorkomen en ook om te kunnen ingrijpen mocht er tijdens de testfase iets fout lopen, is er een mechanisme ingebouwd dat de condensatorbank kan ontladen in maximum 5 seconden. Dit mechanisme is opgebouwd rond het normaal gesloten contact van een relais (figuur 49). Dit relais wordt aangestuurd door de microcontroller. Veronderstel dat een opgeladen condensatorbank losgekoppeld wordt van de vermogenprint. De microcontroller zal via de controlelus te weten komen dat de bank ontkoppeld is en kan zo gepast de vermogenkring aansturen. Door het loskoppelen van de bank wordt het relais niet meer aangestuurd en sluit het normaal gesloten contact. De condensatorbank ontlaadt nu over de weerstand R.
Figuur 49: Principeschema condensatorbank
Indien er een fout (overspanning condensatorbank, ongecontroleerde op-/ontlaadstroom…) optreedt terwijl de condensatorbank nog verbonden is met de vermogenprint, dan kan de microcontroller ook nog beslissen het opladen te staken en de bank te ontladen. Het probleem dat zich hier nu stelt is de vraag wat het vermogen moet zijn van de ontlaadweerstand. Om nu op een gegronde manier dit vermogen te bepalen is een thermisch model van de weerstand opgesteld. Dit onderzoek zal in twee stappen gebeuren. In een eerste stap wordt het ogenblikkelijk vermogen bepaald en vervolgens wordt in een tweede stap het thermisch model opgesteld en geëvalueerd voor het bepaalde vermogen.
Dries Vromman Dries Rollez
48
4.5.2 Ogenblikkelijk vermogen Eerst wordt het ogenblikkelijk vermogen bepaald dat door de weerstand gedissipeerd zal moeten worden. De uitwerking die hieronder volgt is een worst-case situatie waarbij de totale capaciteit ontladen wordt in 5 seconden. In het slechtste geval moeten 15 condensatoren van 2200µF, opgeladen tot 150V, ontladen worden over een weerstand R. Onderstaande figuur geeft het RC netwerk weer waarop verder geredeneerd is.
Figuur 50: Ontladen condensatorbank
We weten dat een condensator na 5τ volledig ontladen is. Hieruit kan de grootte van de weerstand berekend worden: 𝜏 = 𝑅𝐶𝑇 = 𝑅𝑛𝐶 ∆𝑡 = 5𝜏 = 5𝑅𝐶𝑇 = 5𝑅𝑛𝐶 = 5𝑠 →𝑅=
∆𝑡 5𝑠 = = 30,3Ω 5𝑛𝐶 5 ∙ 15 ∙ 2200µ𝐹
→ 𝑅 = 33Ω De ogenblikkelijke stroom i(t) die door de weerstand vloeit is te schrijven als: 𝑡
𝑖 𝑡 = 𝑖(0) ∙ 𝑒 − 𝜏 𝑣𝐶 (0) −𝑡 𝑖 𝑡 = 𝑇 ∙𝑒 𝑅
(17) 𝜏
=
150𝑉 −𝑡 ∙𝑒 33Ω
1,089
𝑡
= 4,545 ∙ 𝑒 −
1,089
Met bovenstaande betrekking kan gemakkelijk het ogenblikkelijke vermogen dat in de weerstand R gedissipeerd wordt berekend worden. 𝑣𝐶𝑇 (0) 𝑝 𝑡 = 𝑅𝑖(𝑡) = 𝑅 ∙ 𝑅 2
2
2𝑡
∙ 𝑒−
𝜏
= 33Ω ∙
150𝑉 33Ω
2
2𝑡
∙ 𝑒−
1,089
2𝑡
= 682𝑊 ∙ 𝑒 −
1,089
Het ogenblikkelijk vermogen in functie van de tijd is hieronder uitgezet in figuur 51. Op deze figuur is te zien dat de eerste seconde de meest kritische zal zijn omdat het vermogen daar het grootst is. In de daarop volgende tijd is het vermogen merkelijk kleiner.
Dries Vromman Dries Rollez
49
Ogenblikkelijk vermogen p(t) Ogenblikkelijk vermogen p(t) in Watt
700 600 500 400 300
p(t)
200 100 0 0
1
2
3
4
5
Tijd t in seconden
Figuur 51: Ogenblikkelijk vermogen p(t) gedissipeerd in weerstand van de condensatorbank
4.5.3 Thermisch model Om nu te bepalen wat het vermogen moet zijn van de ontlaadweerstand is een thermisch model [14] opgesteld van een weerstand. De studie is gebaseerd op een weerstandenreeks (zie figuur 52) die gefabriceerd wordt door ARCOL.
Figuur 52: De Wirewound heatsink mounted serie van ARCOL
In het model dat hier gebruikt wordt, wordt een weerstand in zijn eenvoudigste vorm voorgesteld (figuur 53) als een aantal wikkelingen die omgeven zijn door een behuizing. Als er een grote stroom vloeit door de wikkelingen dan zal er in die wikkelingen warmte ontwikkeld worden. Het materiaal waaruit de wikkelingen zijn opgebouwd heeft een zekere specifieke warmte c. Om een bepaalde
Dries Vromman Dries Rollez
50
massa van die windingen 1°C te laten stijgen in temperatuur zal er een warmte van m∙c nodig zijn. Deze grootheid wordt de thermische capaciteit C genoemd van die bepaalde massa. (18)
𝐶 =𝑚∙𝑐
Met m = de massa van een bepaalde materiaal in gram Met c = de specifieke warmte van een bepaald materiaal in Joule per gram per graad Celsius Met C = de thermische capaciteit van een bepaald materiaal in Joule per graad Celcius TO
Omgeving
TC Windingen
TW
Case Figuur 53: Voorstelling weerstand voor thermisch model
Naarmate de temperatuur van de windingen meer stijgt zal er een warmtetransport ontstaan van de windingen naar de behuizing. Immers zal er tussen twee punten op een verschillende temperatuur een warmtetransport zijn die evenredig is met het temperatuursverschil en omgekeerd evenredig met de thermische weerstand. Deze thermische weerstand is afhankelijk van de afstand tussen de twee punten en de aard van de geleidingsweg. Thermische weerstand wordt uitgedrukt in graden Celsius per Watt. Thermische capaciteit 𝐶𝑡 en thermische weerstand 𝑅𝑡 hebben elk hun elektrisch equivalent. Dit equivalent maakt het makkelijk om thermische modellen te simuleren in elektrische simulatiepakketten. Een thermische capaciteit komt overeen met een elektrische capaciteit en een thermische weerstand komt overeen met een elektrische weerstand. Onderstaande tabel geeft het verband weer. Hierbij stelt p de warmtestroom voor in Joule per seconde. Tabel 6: Verband thermische en elektrische capaciteit
Weerstand Condensator
Thermisch ∆𝑇 𝑝= 𝑅𝑡 𝑑𝑇 𝑝 = 𝐶𝑡 𝑑𝑡
Elektrisch ∆𝑉 𝐼= 𝑅 𝑑𝑉 𝐼=𝐶 𝑑𝑡
Het vraagstuk is uitgewerkt aan de hand van gegevens die opgevraagd zijn bij de technische dienst van ARCOL. Uit de specifieke warmte van de gebruikte materialen (tabel 7) kunnen de thermische capaciteiten berekend worden. In onderstaande tabel zijn de gebruikte gegevens weergegeven van
Dries Vromman Dries Rollez
51
een weerstand van 33Ω en een vermogen van 100Watt. De waarden voor de thermische weerstanden (tabel 8) zijn terug te vinden in de datasheet van de desbetreffende weerstand . Tabel 7: Specifieke warmtes voor thermisch model weerstand
HS100 33R Gewicht m (g)
Specifieke Warmte c 𝐽 𝑔 ∙ °𝐶
Windingen
1,2
0,395
Case
58
0,9
Aan de hand van de gegevens in tabel 7 zijn de thermische capaciteiten te berekenen. 𝐶𝑊 = 𝑚𝑊 ∙ 𝑐𝑊 = 1,2𝑔 ∙ 0,395 𝐽 𝑔 ∙ °𝐶 = 0,474 𝐽 °𝐶 𝐶𝐶 = 𝑚𝐶 ∙ 𝑐𝐶 = 58𝑔 ∙ 0,9 𝐽 𝑔 ∙ °𝐶 = 52,2 𝐽 °𝐶 Tabel 8: Thermische weerstanden voor thermisch model weerstand
HS100 33R Windingen – Case
RWC
Case - Omgeving
RCO
1,03 °𝐶 𝑊 0,070 °𝐶 𝑊
Nu het volledige thermische model bepaald is, kan het geëvalueerd worden. Dit gebeurt aan de hand van het equivalent thermisch model dat weergegeven wordt in figuur 54. In dit schema wordt de omgevingstemperatuur Vo als constant (25°C) beschouwd. De ogenblikkelijke warmtestroom p(t) is de exponentiële curve die afgebeeld wordt in figuur 51. Tc
Tw
Rco 70m
Cc 52,2
p(t)
Cw 474m
Rw c 1,03
Vo 25
Figuur 54: Equivalent thermisch model weerstand
Het resultaat van de simulatie is hieronder weergegeven in figuur 55. Het valt onmiddellijk op dat de windingen het het zwaarst te verduren krijgen. Na een halve seconde heeft de temperatuur van de windingen zijn maximum van 300°C bereikt. Daarna daalt de temperatuur terug omdat de warmtestroom verder sterk afneemt. Volgens de gegevens van de fabrikant mag de temperatuur van de windingen maximaal 450°C bedragen. Door te kiezen voor een weerstand van 100 Watt is er nog een zekere veiligheidsmarge ingebouwd.
Dries Vromman Dries Rollez
52
T
30.00
Tc
25.00 300.00
Tw
0.00 700.00
p(t)
0.00 0.00
10.00
20.00
30.00
Time (s)
Figuur 55: Simulatie van het equivalent thermisch model
4.5.4 Condensatorbank praktisch ontladen Formule 17 geeft de ogenblikkelijke stroom i(t) die door de weerstand vloeit als de condensatorbank ontlaadt over de ontlaadweerstand. Het exponentiële verloop van de ogenblikkelijke spanning over de condensator en over de ontlaadweerstand kan geschreven worden als: 𝑡
𝑣𝐶𝑇 𝑡 = 𝑣𝐶𝑇 (0) ∙ 𝑒 −
(19)
𝜏
In onderstaande scoopbeeld is het verloop te zien van de spanning over de condensatorbank (paars) bij het ontladen vanaf een spanning van 90V. Het gele signaal is het stuursignaal voor het relais en is enkel opgenomen om een goede triggering te voorzien. +90V
0V
+5V 0V Figuur 56: Praktisch ontladen condensatorbank
Dries Vromman Dries Rollez
53
Hoofdstuk 3: DIGITALE REGELKRING 1. Inleiding Vroeger werden in power converters veelal analoge controlemethoden gebruikt. Dit had zo zijn redenen. Een eerste reden is de kostprijs. Componenten zoals microcontrollers, analoog naar digitaal converters (ADC’s), digitaal naar analoog converters (DAC’s) die nodig zijn voor een digitale implementatie waren vrij duur. [15] Een andere reden waarom digitale controle methoden minder populair waren, was performantie. Tegenwoordig is de situatie helemaal veranderd. De hedendaagse technologie levert digitale signaal processors (DSP’s), ADC’s en DAC’s tegen een lagere prijs en met verbeterde eigenschappen zoals snelheid en functionaliteit. [15] Het gebruik van een digitale controller heeft een aantal voordelen maar ook een aantal consequenties: Voordelen [16, 17]: -
Flexibiliteit: aangezien er met een microcontroller gewerkt wordt, is deze programmeerbaar en dus ook aanpasbaar. Storingsongevoeliger: geen componentenwaarden die veranderen ten gevolge van omgevingsvariaties. Korte time-to-market (TTM). Makkelijker om te communiceren met andere digitale systemen.
Consequenties: -
Bij hoge schakelsnelheden is er minder tijd om veel te sampelen. ADC’s moeten voldoende snel zijn zodat de digitale waarde snel beschikbaar is.
Het is dan ook meer dan normaal dat er tegenwoordig meer en meer onderzoek gedaan wordt naar digitale controle van schakelende voedingen. [15-21]
2. Slope compensation 2.1 Inleiding Bij de aanvang van dit project was één van de problemen die op tafel werd gelegd de slope compensation. Daarom werd er in het eerste semester een onderzoek gedaan naar mogelijke oplossingen voor dit probleem. Door nieuwe inzichten tijdens de ontwikkeling van de software bleek een dergelijke compensatie niet meer nodig te zijn. De theoretische studie omtrent dit probleem is hieronder opgenomen omdat de studie toch heel wat tijd in beslag genomen heeft en omdat ze nuttig kan zijn voor toekomstige projecten binnen dit vakdomein.
Dries Vromman Dries Rollez
54
2.2 Probleem: Subharmonische oscillaties 2.2.1 Peak Current Mode Control Het fenomeen van subharmonische oscillaties (ook wel chaos genoemd) is welbekend voor converters met een stroomcontrole die werken met een vaste schakelfrequentie en een duty cycle groter dan 50%.[20] Veronderstel onderstaande figuur van een boost converter om de problematiek te schetsen.
Figuur 57: Principefiguur subharmonische oscillaties
Om te beginnen is in bovenstaande figuur een boost converter te zien waarvan het schakelende element (bijvoorbeeld een MOSFET) aangestuurd wordt door een simpele regelkring bestaande uit een flip-flop en een comparator. De klok zorgt ervoor dat de flip-flop op regelmatige tijdstippen geset wordt waardoor de MOSFET inschakelt. Deze klok stelt dus de schakelfrequentie (fs) in. Als de schakelaar dicht is staat de volledige bronspanning over de spoel. Volgens vergelijking 4 zal de stroom door de spoel nu lineair stijgen. Deze stijgende spoelstroom wordt door de comparator vergeleken met een ingestelde referentiestroom (IREF). Als de werkelijke spoelstroom (iL) groter wordt dan de ingestelde referentiestroom zal de comparator de flip-flop resetten. Door het resetten van de flip-flop wordt de MOSFET uitgeschakeld en begint de stroom door de spoel te dalen aangezien deze nu een negatieve spanning over haar klemmen heeft staan. Het hierboven beschreven stroomverloop is weergegeven in figuur 57. Er moet opgemerkt worden dat dit stroomverloop afhankelijk zal zijn van de grootte van de duty cycle zoals in de figuur te zien is. Hieronder wordt het probleem verder uitgewerkt en er wordt verklaard waarom er een verschil is tussen een grote en een kleine duty cycle. Een dergelijke methode om de stroom in een DC-DC converter te controleren wordt ook wel Peak Current Mode Control (PCMC) genoemd. 2.2.2 Subharmonische oscillaties Voor het bovenstaande geval kan aangetoond worden dat het systeem stabiel is voor een duty cycle kleiner dan 50%. Dit wordt nu eerst even onderzocht aan de hand van onderstaande figuur. Er is een
Dries Vromman Dries Rollez
55
periode van de spoelstroom getekend in regime (blauw) en een periode waarbij een initiële uitwijking ∆𝑖0 wordt gegeven (rood) aan de spoelstroom.
Figuur 58: Spoelstroom zonder slope compensatie
Uit bovenstaande figuur kunnen onderstaande vergelijkingen makkelijk afgeleid worden voor de stijgende en dalende spoelstroom. ∆𝑖0 + 𝑚1 𝐷 − 𝑑 𝑇 = 𝑚1 𝐷𝑇 −𝑚2 𝐷 + 𝑑 𝑇 = −𝑚2 𝐷𝑇 − ∆𝑖1 Bovenstaande vergelijkingen kunnen herleid worden tot: → ∆𝑖0 = 𝑚1 𝑑𝑇 → ∆𝑖1 = 𝑚2 𝑑𝑇 Nu verhouden beide vergelijkingen zich tot elkaar als: ∆𝑖1 𝑚2 𝑑𝑇 𝑚2 =− =− ∆𝑖0 𝑚1 𝑑𝑇 𝑚1 Merk op dat het minteken in bovenstaande vergelijking wijst op het feit dat de uitwijking van de nde periode een andere zin heeft dan de uitwijking van de periode n+1. Algemeen kan nu voor de uitwijking van de nde periode geschreven worden: ∆𝑖𝑛 = −
𝑚2 𝑚1
𝑛
∆𝑖0
Indien de spoelstroom zich stabiliseert, zal de limiet voor n gaande naar oneindig gelijk worden aan 0. lim ∆𝑖𝑛 = lim −
𝑛→∞
𝑛→∞
𝑚2 𝑚1
𝑛
∆𝑖0 = 0
Om aan bovenstaande te voldoen moet de verhouding van de dalende helling (m 2) op de stijgende helling (m1) voldoen aan onderstaande betrekking.
Dries Vromman Dries Rollez
56
−
𝑚2 <1 𝑚1
Uit het regimegeval kan afgeleid worden dat de stijging van de spoelstroom gelijk is aan de daling van de spoelstroom. 𝐷𝑚1 𝑇 = 1 − 𝐷 𝑚2 𝑇 →
𝑚2 𝐷 = 𝑚1 1 − 𝐷
Zo wordt de voorwaarde gevonden voor een stabiele spoelstroom zonder slope compensatie. 𝐷 <1 1−𝐷 𝐷 < 0,5 Bovenstaande voorwaarde wordt ook gevonden in [20, 21]. Indien de duty cycle toch groter wordt dan 50%, zal het stroomverloop chaotisch zijn. Er wordt gezegd dat er subharmonische oscillaties optreden.
Figuur 59: Subharmonische oscillaties
In figuur 59 is de spoelstroom weergegeven tijdens een subharmonische oscillatie. Subharmonische oscillaties resulteren in instabiliteit en zorgen voor een grotere rimpel op de uitgangsspanning en de spoelstroom [19]. Om ervoor te zorgen dat de oscillaties niet voorkomen, kan de duty cycle kleiner dan 50% gehouden worden. Het werkingsgebied van de converter is dan wel zeer beperkt. Een oplossing om dergelijke oscillaties te vermijden bij grotere waarden van de duty cycle dringt zich dus op. 2.2.3 Slope compensation Om de subharmonische oscillaties tegen te gaan bestaat er een (analoge) techniek: slope compensation. De techniek brengt een supplementaire helling (mc) in rekening. Er zijn twee mogelijkheden.
Dries Vromman Dries Rollez
57
De eerste mogelijkheid is om de ramp op te tellen bij de spoelstroom en deze te vergelijken met een referentie. Bij de tweede mogelijkheid wordt de helling afgetrokken van de regelspanning. In figuur 60 wordt de situatie weergegeven indien de helling afgetrokken wordt van de wenswaarde. [18, 20]
Figuur 60: Slope compensation
Eerst wordt de principiële werking van peak current mode control met slope compensation toegelicht aan de hand van figuur 60. In het begin van iedere periode stijgt de spoelstroom. De spoelstroom stijgt tot hij de rampwaarde bereikt heeft en begint daarna te dalen. Vervolgens wordt grafisch bekeken of de stabiliteit inderdaad verbeterd is met een dergelijke compensatie. Om dit te controleren wordt aan de spoelstroom een uitwijking ∆𝐼0 gegeven en moet bekeken worden hoe deze uitwijking zich verder propageert. Uit figuur 60 blijkt dat de uitwijking na een aantal perioden inderdaad verdwenen is. Tenslotte wordt ook analytisch even bekeken of de spoelstroom stabiliseert. Volgens [18, 20, 21] geldt de volgende betrekking: ∆𝑖1 𝑚2 − 𝑚𝑐 =− ∆𝑖0 𝑚1 + 𝑚𝑐 Merk op dat het minteken voor de breukstreep er opnieuw op wijst dat de zin van de opeenvolgende uitwijkingen tegenovergesteld is. Indien de helling van de slope (mc) gelijk gesteld wordt aan nul (geen slope compensation) dan wordt inderdaad de betrekking gevonden die afgeleid werd in 2.2.2. Uit het bovenstaande volgt dan ook de voorwaarde voor stabiliteit: 𝑚𝑐 > 1 −
1 𝑚2 2𝐷
Om volledige stabiliteit te garanderen bij alle duty cycles is de voorwaarde: 𝑚𝑐 >
𝑚2 2
De helling van de slope wordt het best groter genomen dan de minimum opgelegde waarde. Immers zou de kleinste parameterverandering voor instabiliteit kunnen zorgen.
Dries Vromman Dries Rollez
58
Vervolgens moet ook opgemerkt worden dat de uitwijking in één periode weggewerkt zal worden indien mc gelijk wordt gekozen aan m2. Een belangrijk nadeel hiervan is dat de gemiddelde geregelde stroom meer zal afwijken van de gewenste stroom (IREF). Voor de volledige uitwerking van bovenstaande formules wordt verwezen naar bijlage 4.
2.3 Digitale slope compensatie Omdat in dit eindwerk het geheel aangestuurd wordt door middel van een microcontroller is er een onderzoek gebeurd om de eerder beschreven slope compensatie in een digitale vorm te gieten. Hieronder worden eerst een aantal mogelijkheden opgesomd, daarna wordt een digitale slope compensatie dieper uitgespit. In [16] is een techniek ontwikkeld voor converters die met een variabele frequentie werken op basis van Peak Current Mode Control (PCMC). De spoelstroom en de uitgangsspanning worden er vergeleken met twee analoge waarden die door middel van twee DAC’s worden aangemaakt. Het gehele algoritme is ontwikkeld in VHDL en wordt gebruikt om een multiphase converter aan te sturen. Vervolgens wordt in [17, 19] een algoritme ontwikkeld voor converters die werken in average current mode (ACMC). Het ontwikkelde algoritme is vrij complex en veronderstelt dat de hellingen van de spoelstroom gekend zijn. Deze hellingen kunnen als constanten worden beschouwd of telkens opnieuw worden berekend. Het eerste voorstel is nadelig voor de flexibiliteit, het tweede idee zal dan weer meer rekenkracht vragen. Ten slotte is er in [15] een techniek ontwikkeld om de spoelstroom te controleren met een algoritme dat zeer weinig rekenkracht vergt. Bovendien wordt de spoelstroom maar één keer per periode gesampled. Met deze techniek kan de stroom geregeld worden met PCMC of met ACMC. Een nadeel van deze techniek is dat de current controller een vertraging met zich mee brengt van één periode. Er is geopteerd om gebruik te maken van de techniek die omschreven is in [15]. Deze techniek biedt zoals eerder gezegd het voordeel dat ze weinig belastend is voor controller.
Dries Vromman Dries Rollez
59
2.3.1 Digitale current controller Zoals hierboven gezegd moet er een compensatie gebeuren op de gewenste referentiestroom door middel van een helling. Die compensatie wordt geïmplementeerd in de digitale current controller.
Figuur 61: Digitale Current Controller
Het algemene blokschema van een digitale current controller is weergegeven in figuur 61. Een essentieel onderdeel hiervan is een teller (count up) en een comparator. De teller telt op het ritme van de aangelegde klok met een periode TS en is verbonden met de comparator. De andere ingang van de comparator is verbonden met een register dat de waarde 1 − 𝑑[𝑛] bevat. Telkens als de teller volgelopen is, dus na één periode, wordt een interrupt gegenereerd. Bij een dergelijke interrupt wordt de uitgang laag gezet en het register geladen met de volgende waarde. 2.3.2 Discreet regelalgoritme In [15] staat beschreven hoe digitale slope compensation wordt toegepast voor average current mode control. Hetzelfde principe kan ook toegepast worden voor peak current mode control en wordt hieronder uitgewerkt. Eerst en vooral moet gedefinieerd worden wat een controle cyclus is. Een controle cyclus duurt even lang als een schakelperiode en start met het dalen van de spoelstroom. De spoelstroom daalt gedurende 1 − 𝑑 𝑇. Na deze tijd stijgt de spoelstroom tot het einde van de controle cyclus en dus ook tot het eind van de periode. De spoelstroom wordt maar één keer per periode gesampled. Er wordt een sample genomen als de spoelstroom zijn maximum bereikt. Aan de hand van deze sample wordt de duty cycle berekend voor de volgende periode.
Dries Vromman Dries Rollez
60
Figuur 62: Digitale slope compensation
De gesamplede waarde van de nde periode kan geschreven worden als: 𝑖𝐿𝑆 = 𝐼𝑅𝐸𝐹 − 𝑚𝑐 𝑑𝑇 De duty cycle kan nu geschreven worden als: 𝑑=
𝐼𝑅𝐸𝐹 − 𝑖𝐿𝑆 𝑚𝑐 𝑇
De discrete duty cycle voor de periode n-1 kan geschreven worden als: 𝑥[𝑛 − 1] =
𝐼𝑅𝐸𝐹 − 𝑖𝐿𝑆 [𝑛 − 1] 𝑚𝑐 𝑇
In bovenstaande formule wordt de spoelstroom gesampled op het einde van de vorige controle cyclus. De controller berekent de uitkomst van de vergelijking als 𝑥 𝑛 − 1 . Deze berekening zal een zekere (eindige) tijd innemen die mogelijk meer kan zijn dan 1 − 𝑥 𝑛 − 1 ∙ 𝑇. Hierdoor kan er mogelijks een niet correcte waarde gebruikt worden voor de periode n-1. Om geen risico te lopen zal de berekende duty cycle 𝑥 𝑛 − 1 maar in de volgende controle cyclus gebruikt worden als duty cycle 𝑑𝑛. 𝑑[𝑛] =
𝐼𝑅𝐸𝐹 − 𝑖𝐿𝑆 [𝑛 − 1] 𝑚𝑐 𝑇
Door het algoritme zo toe te passen, wordt een zekere delay ingevoerd waardoor er wat meer instabiliteit zal worden geïntroduceerd.
Dries Vromman Dries Rollez
61
2.3.3 Stabiliteitscontrole Vervolgens wordt bekeken of het systeem wel degelijk stabiel is en aan welke vereisten de helling moet voldoen. In figuur 63 is het verloop van de spoelstroom weergegeven. De eerste twee perioden geven het steady state regime weer. Vervolgens is er een uitwijking ∆𝐼1 gegeven aan de spoelstroom en wordt er bekeken hoe deze uitwijking zich voortplant gedurende de volgende periodes.
1
2
3
4
5
6
Figuur 63: Slope compensation grafisch
Toestand in regime: Eerst wordt de toestand bekeken in steady state. 𝐼𝐿𝑆 = 𝐼𝑅𝐸𝐹 − 𝑚𝑐 𝑑𝑇 In regime is de stijging van de spoelstroom gelijk aan de daling van de spoelstroom. 𝑚1 𝑑𝑇 = 𝑚2 1 − 𝑑 𝑇 → 𝑚1 = 𝑚2
1−𝑑 𝑑
→ 𝑚2 = 𝑚1 + 𝑚2 𝑑 Toestand eerste cyclus: Na de eerste cyclus is de uitwijking nog steeds even groot aan zijn oorspronkelijke uitwijking ∆𝐼1 . Dit komt omdat er in de eerste controlecyclus nog steeds gewerkt wordt met de duty cycle van de vorige controlecyclus. Dit is de duty cycle in regime. Het is pas in de tweede controlecyclus dat de duty cycle zich aanpast. ∆𝐼1 =1 ∆𝐼1 Toestand tweede cyclus: De sample genomen in het begin van de eerste controlecyclus kan geschreven worden als: 𝐼𝐿𝑆1 = 𝐼𝐿𝑆 + ∆𝐼1 𝐼𝐿𝑆1 = 𝐼𝑅𝐸𝐹 − 𝑚𝑐 𝑑1 𝑇
Dries Vromman Dries Rollez
62
Uit de analyse van de toestand in regime is geweten dat: 𝐼𝐿𝑆 = 𝐼𝑅𝐸𝐹 − 𝑚𝑐 𝑑𝑇 Daaruit volgt: ∆𝐼1 = 𝐼𝐿𝑆1 − 𝐼𝐿𝑆 = 𝑚𝑐 𝑑 − 𝑑1 𝑇 ∆𝐼1 𝑚𝑐 𝑇
→ 𝑑 − 𝑑1 =
Vervolgens is de uitwijking op het einde van de tweede controlecyclus te schrijven als: ∆𝐼2 = ∆𝐼1 − 𝑚2 1 − 𝑑1 𝑇 + 𝑚1 𝑑1 𝑇 ∆𝐼2 1 = 1 − 𝑚2 1 − 𝑑1 𝑇 − 𝑚1 𝑑1 𝑇 ∙ ∆𝐼1 ∆𝐼1 Hierboven werd al uitgerekend dat 𝑚1 = 𝑚2
1−𝑑 𝑑
∆𝐼2 1 − 𝑑1 1−𝑑 1 = 1 − 𝑚2 𝑑 𝑇 − 𝑚2 𝑑1 𝑇 ∙ ∆𝐼1 𝑑 𝑑 ∆𝐼1 ∆𝐼2 𝑚2 𝑑𝑇 − 𝑚2 𝑑𝑑1 𝑇 − 𝑚2 𝑑1 𝑇 + 𝑚2 𝑑𝑑1 𝑇 1 =1− ∙ ∆𝐼1 𝑑 ∆𝐼1 ∆𝐼2 𝑚2 𝑑𝑇 − 𝑚2 𝑑1 𝑇 =1− ∆𝐼1 𝑑 ∙ ∆𝐼1 ∆𝐼2 𝑚2 𝑑 − 𝑑1 𝑇 =1− ∆𝐼1 𝑑 ∙ ∆𝐼1 Nu is
𝑑−𝑑 1 𝑇 ∆𝐼1
=
1 𝑚𝑐
∆𝐼2 𝑚2 =1− ∆𝐼1 𝑚𝑐 𝑑 Hierbij is
𝑚2 𝑑
= 𝑚1 + 𝑚2 waardoor het volgende verkregen wordt:
∆𝐼2 𝑚1 + 𝑚2 =1− ∆𝐼1 𝑚𝑐 Deze verhouding wordt omgevormd tot een meer algemene vorm zodat het makkelijker wordt om een verband te zien tussen de verschillende termen. ∆𝐼2 ∆𝐼1 𝑚1 + 𝑚2 ∆𝐼0 = − ∙ ∆𝐼1 ∆𝐼1 𝑚𝑐 ∆𝐼1 Waarbij ∆𝐼0 = ∆𝐼1 , want de gegeven uitwijking wordt niet onmiddellijk verbeterd in de eerste controlecyclus.
Dries Vromman Dries Rollez
63
Toestand derde cyclus: De sample genomen in het begin van de tweede controlecyclus kan geschreven worden als: 𝐼𝐿𝑆1 = 𝐼𝐿𝑆 + ∆𝐼1 𝐼𝐿𝑆1 = 𝐼𝑅𝐸𝐹 − 𝑚𝑐 𝑑1 𝑇 Uit de analyse van de toestand in regime is geweten dat: 𝐼𝐿𝑆 = 𝐼𝑅𝐸𝐹 − 𝑚𝑐 𝑑𝑇 Daaruit volgt: ∆𝐼1 = 𝑚𝑐 𝑑 − 𝑑1 𝑇 => 𝑑 − 𝑑1 =
∆𝐼1 𝑚𝑐 𝑇
Vervolgens is de uitwijking op het einde van de derde controlecyclus te schrijven als: ∆𝐼3 = ∆𝐼2 − 𝑚2 1 − 𝑑1 𝑇 + 𝑚1 𝑑1 𝑇 Met 𝑚1 = 𝑚2
1−𝑑 𝑑
∆𝐼3 = ∆𝐼2 − 𝑚2 𝑑
1 − 𝑑1 1−𝑑 𝑇 − 𝑚2 𝑑1 𝑇 𝑑 𝑑
∆𝐼3 = ∆𝐼2 −
𝑚2 𝑑𝑇 − 𝑚2 𝑑𝑑1 𝑇 − 𝑚2 𝑑1 𝑇 + 𝑚2 𝑑𝑑1 𝑇 𝑑
∆𝐼3 = ∆𝐼2 −
𝑚2 (𝑑 − 𝑑1 )𝑇 𝑑
Met 𝑑 − 𝑑1 = ∆𝐼3 = ∆𝐼2 −
∆𝐼1 𝑚𝑐𝑇
𝑚2 𝑇 ∙ ∆𝐼1 𝑚𝑐 𝑑𝑇
∆𝐼3 ∆𝐼2 𝑚2 = − ∆𝐼1 ∆𝐼1 𝑚𝑐 𝑑 Nu is
𝑚2 𝑑
= 𝑚1 + 𝑚2
∆𝐼3 ∆𝐼2 𝑚1 + 𝑚2 = − ∆𝐼1 ∆𝐼1 𝑚𝑐 Bovenstaande formule wordt in een meer algemene vorm geschreven zodat straks sneller het verband kan gevonden worden. ∆𝐼3 ∆𝐼2 𝑚1 + 𝑚2 ∆𝐼1 = − ∙ ∆𝐼1 ∆𝐼1 𝑚𝑐 ∆𝐼1
Dries Vromman Dries Rollez
64
Toestand vierde cyclus: De sample genomen in het begin van de derde controlecyclus kan geschreven worden als: 𝐼𝐿𝑆2 = 𝐼𝐿𝑆 + ∆𝐼2 𝐼𝐿𝑆2 = 𝐼𝑅𝐸𝐹 − 𝑚𝑐 𝑑2 𝑇 Uit de analyse van de toestand in regime is geweten dat: 𝐼𝐿𝑆 = 𝐼𝑅𝐸𝐹 − 𝑚𝑐 𝑑𝑇 Hieruit volgt: ∆𝐼2 = 𝑚𝑐 (𝑑 − 𝑑2 )𝑇 → 𝑑 − 𝑑2 =
∆𝐼2 𝑚𝑐 𝑇
De uitwijking op het einde van de vierde cyclus kan geschreven worden als: ∆𝐼4 = ∆𝐼3 − 𝑚2 1 − 𝑑2 𝑇 + 𝑚1 𝑑2 𝑇 Met 𝑚1 = 𝑚2
1−𝑑 𝑑
∆𝐼4 = ∆𝐼3 − 𝑚2 𝑑
1 − 𝑑2 1−𝑑 𝑇 − 𝑚2 𝑑2 𝑇 𝑑 𝑑
∆𝐼4 = ∆𝐼3 −
𝑚2 𝑑𝑇 − 𝑚2 𝑑𝑑2 𝑇 − 𝑚2 𝑑2 𝑇 + 𝑚2 𝑑𝑑2 𝑇 𝑑
∆𝐼4 = ∆𝐼3 −
𝑚2 (𝑑 − 𝑑2 )𝑇 𝑑
Met 𝑑 − 𝑑2 = ∆𝐼4 = ∆𝐼3 − Nu is
𝑚2 𝑑
∆𝐼2 𝑚𝑐𝑇
𝑚2 𝑇 ∙ ∆𝐼2 𝑚𝑐 𝑑𝑇
= 𝑚1 + 𝑚2
∆𝐼4 = ∆𝐼3 −
(𝑚1 + 𝑚2 ) ∙ ∆𝐼2 𝑚𝑐
Algemeen kan opnieuw geschreven worden: ∆𝐼4 ∆𝐼3 𝑚1 + 𝑚2 ∆𝐼2 = − ∙ ∆𝐼1 ∆𝐼1 𝑚𝑐 ∆𝐼1
Dries Vromman Dries Rollez
65
Algemene recursievergelijking: Aan de hand van de betrekkingen die hierboven afgeleid zijn voor de verschillende cycli kan nu de algemene formule afgeleid worden voor de nde cycli. Controlecyclus 1:
∆𝐼1 ∆𝐼1
= ∆𝐼0 −
∆𝐼
𝑚 1 +𝑚 2 𝑚𝑐
∙
Controlecyclus 2:
∆𝐼2 ∆𝐼1
= ∆𝐼1 −
∆𝐼
𝑚 1 +𝑚 2 𝑚𝑐
∙ ∆𝐼0
Controlecyclus 3:
∆𝐼3 ∆𝐼1
= ∆𝐼2 −
∆𝐼
𝑚 1 +𝑚 2 𝑚𝑐
∙ ∆𝐼1
Controlecyclus 4:
∆𝐼4 ∆𝐼1
= ∆𝐼3 −
∆𝐼
𝑚 1 +𝑚 2 𝑚𝑐
∙ ∆𝐼2
Controlecyclus n:
∆𝐼𝑛 ∆𝐼1
=
1
1
1
1
∆𝐼𝑛 −1 ∆𝐼1
−
∆𝐼−1 ∆𝐼1
met ∆𝐼−1 = 0
∆𝐼
met ∆𝐼0 = ∆𝐼1 = 𝑜𝑟𝑖𝑔𝑖𝑛𝑒𝑙𝑒 𝑢𝑖𝑡𝑤𝑖𝑗𝑘𝑖𝑛𝑔
1
∆𝐼
1
∆𝐼
1
𝑚 1 +𝑚 2 𝑚𝑐
∙
∆𝐼𝑛 −2 ∆𝐼1
In de bekomen recursieformule wordt 𝑅 =
voor 𝑛 ≥ 1
𝑚 1 +𝑚 2 𝑚𝑐
gedefinieerd. Dan is:
∆𝐼𝑛 = ∆𝐼𝑛−1 − 𝑅 ∙ ∆𝐼𝑛−2 Om de convergentie van deze reeks grafisch te controleren is er in MATLAB een script geschreven. Het script is bijgevoegd in bijlage 5. Na enkele tests blijkt dat de reeks convergeert voor R<1. In figuur 64 en figuur 65 is de output te zien van het script met R respectievelijk gelijk aan 0,7 en 1,1.
In/ I1 in functie van het aantal Cycli n 1 0.8 0.6 0.4 0.2
In/ I1
0
-0.2 -0.4 -0.6 -0.8 -1
0
10
20
30
40 50 60 Aantal Cycli n
70
80
90
100
Figuur 64: Controle van de stabiliteit voor R=0,7
Dries Vromman Dries Rollez
66
In/ I1 in functie van het aantal Cycli n
100
50
In/ I1
0
-50
-100
0
10
20
30
40 50 60 Aantal Cycli n
70
80
90
100
Figuur 65: Controle van de stabiliteit voor R=1,1
De convergentie van deze reeks kan ook analytisch aangetoond worden. Hiertoe wordt de recursieformule opgelost door middel van een techniek die men in de wiskunde differentievergelijkingen noemt. De volledige uitwerking hiervan is te zien in bijlage 6. Ook bij de wiskundige afleiding is de uitkomst dat de reeks slechts convergeert voor R kleiner dan 1.
Dries Vromman Dries Rollez
67
3. Software 3.1 Toestanden Om de software te ontwikkelen is uitgegaan van de verschillende toestanden waarin de converter zich kan bevinden. Deze toestanden zijn in figuur 66 weergegeven in een toestandsdiagram. In de bijhorende tabel zijn de voorwaarden gegeven waarbij de converter van de ene toestand naar de andere toestand kan overgaan. Het voordeel van een dergelijke manier van werken is dat alle toestanden grafisch kunnen weergegeven worden wat de overzichtelijkheid ten goed komt. Daarnaast is het systeem makkelijk uit te breiden met extra toestanden mocht dat later nodig blijken. Een machine die zich in verschillende toestanden kan bevinden noemt men ook wel een state machine. In de code wordt de toestand bijgehouden door middel van een 16-bit getal. In de code die hieronder volgt zijn de subroutines te zien die gebruikt worden om te wisselen tussen de verschillende toestanden of modes.
MODE1: Boostmode wordt voorgesteld door 0x0000h
MODE2: Buckmode wordt voorgesteld door 0x0001h
MODE3: Sleepmode wordt voorgesteld door 0x0002h
WIJZIG_MODE_NAAR_MODE1: mov #0x0000, mov w0, bra ADC_EXIT WIJZIG_MODE_NAAR_MODE2: mov #0x0001, mov w0, bra ADC_EXIT WIJZIG_MODE_NAAR_MODE3: mov #0x0002, mov w0, bra ADC_EXIT
;wijzig de mode naar de boostmode
w0 MODE_SELECTED ;wijzig de mode naar de buckmode
w0 MODE_SELECTED ;wijzig de mode naar de sleepmode
w0 MODE_SELECTED
Het gebruik van modebits heeft ook een nadeel. Hier worden de verschillende modes bijgehouden door middel van een 16-bit getal. Veronderstel nu dat er tijdens de uitvoering van het programma één van die bits wijzigt waardoor de microcontroller in een ongekende mode terechtkomt. De microcontroller weet nu niet meer welke mode hij moet uitvoeren. Deze fout kan leiden tot ernstige schade aan bijvoorbeeld de hardware. Daarom moet de state machine fault-tolerant gemaakt worden. Dit wil zeggen dat de machine automatisch terug in een gekende toestand moet kunnen komen. Hier komt de mode automatisch in de sleepmode bij het optreden van een fout in de mode bits. Als er in onderstaande tabel meerdere voorwaarden opgesomd zijn bij een overgang, betekent dit dat deze allen moeten gelden (= AND-functie). Indien er expliciet een ‘of’ vermeld wordt tussen de voorwaarden betekent dit dat het voldoende is dat aan één van de voorwaarden voldaan is om over te gaan naar de volgende toestand (= OF-functie). Hieronder zullen deze voorwaarden kort worden toegelicht.
Dries Vromman Dries Rollez
68
Bij de start van het programma wordt er gecontroleerd of de condensatorbank aangesloten is (1). Indien hij aangesloten is, gaat de converter in de toestand boostmode. Indien de condensatorbank niet aangesloten is, wordt het programma beëindigd (9) doordat de converter in de toestand fout gaat. Hierbij worden alle PWM kanalen onmiddellijk uitgeschakeld. De toestand fout wordt visueel kenbaar gemaakt door een rode LED te laten oplichten. Tot slot wordt er bij de start ook nog gecontroleerd of de spanning van de condensatorbank niet groter is dan de maximum toegelaten spanning (9). In principe is deze laatste controle gedurende de hele uitvoering van het programma aanwezig. Indien de comparator een te hoge condensatorspanning detecteert, gaat het programma onmiddellijk naar de toestand fout. De PWM kanalen worden onmiddellijk uitgeschakeld en de condensatorbank ontlaadt door de voorziene ontlaadweerstand. Dit om te vermijden dat de condensatoren tot een te hoge spanning worden opgeladen. Als de converter in de toestand boostmode komt, wordt de condensatorbank opgeladen met een constante spoelstroom. Indien de gesamplede spoelstroom IL,BOOST niet groter wordt dan de maximaal ingestelde spoelstroom en de gesamplede condensatorspanning vc onder de gewenste spanning blijft, wordt de toestand boostmode behouden (2). Als de condensatorbank echter volgeladen is en de spoelstroom ligt lager dan de maximaal ingestelde spoelstroom, dan gaat de converter naar de toestand sleep (3). Als tijdens het laden van de condensatorbank de stroom te hoog zou oplopen of de spanning van de condensatorbank hoger zou worden dan de maximale condensatorspanning (10), gaat de converter naar de toestand fout. De converter komt in de toestand sleep als hij niet in boost- of in buckmode staat. De converter blijft in de mode sleep als de busspanning op pijl blijft en als de gesamplede condensatorspanning binnen de range blijft van de gewenste condensatorspanning ± 3V. De gewenste condensatorspanning kan door middel van een potentiometer ingesteld worden. Indien deze wenswaarde kleiner wordt dan de gesamplede waarde of de busspanning onder de minimum tolereerbare busspanning daalt(5), dan gaat de converter over naar de buckmode zodat de spanning van de condensatorbank daalt tot de gewenste spanning. Op deze manier wordt de busspanning terug op peil gebracht. Mocht de converter zich lang in de mode sleep bevinden, is het mogelijk dat de condensatorbank ontlaadt door de spanningsdeling aan de uitgang en door parasitaire weerstand. Om de condensatorspanning toch op peil te houden tijdens dergelijke momenten gaat de converter opnieuw naar de boostmode als de condensatorspanning lager wordt dan de gewenste spanning – 3V (8). Ook hier worden alle PWM kanalen uitgeschakeld en de condensatorbank ontladen indien de comparator een te hoge spanning detecteert (11). Tot slot is er ook nog een toestand buckmode. Tijdens deze mode wordt er energie van de condensatorbank naar de bus gebracht. Hierbij wordt door middel van een regelkring de spanning op de bus constant gehouden. Tijdens de normale werking blijft de converter in deze toestand indien de spoelstroom IL,BUCK niet te hoog oploopt, de busspanning niet groter wordt dan de maximaal toelaatbare busspanning (begrenzing) en de condensatorbank nog voldoende opgeladen is (6). Indien de busspanning niet meer kan opgehaald worden omdat de condensatorbank niet meer voldoende is opgeladen gaat de converter terug naar de sleepmode waar hij wacht om de condensatorbank terug op te laden (7). Indien er tijdens de buckmode een fout optreedt, wordt het programma beëindigd. Zo kan de spoelstroom IL,BUCK te hoog oplopen, de busspanning groter worden dan maximaal
Dries Vromman Dries Rollez
69
toelaatbaar of de comparator kan een condensatorspanning detecteren die groter is dan de maximaal toelaatbare waarde (12).
Figuur 66: Toestandsdiagram Tabel 9: Voorwaarden bij toestandsdiagram
Toestandsdiagram nr. Voorwaarden 1) - condensatorbank aangesloten 2)
- gesamplede IL,BOOST < maximale IL - gesamplede VC < gewenste VC
3)
- gesamplede IL,BOOST < maximale IL - gesamplede VC ≥ gewenste VC
4)
- gesamplede VBUS ≥ minimale VBUS - gesamplede VC ≤ gewenste VC + 3V - gesamplede VC ≥ gewenste VC – 3V
5)
6)
- gesamplede VBUS < minimale VBUS of - gesamplede VC > gewenste VC + 3V - gesamplede IL,BUCK < maximale IL - gesamplede VBUS < maximale VBUS - gesamplede VC ≥ minimale VC
Dries Vromman Dries Rollez
nr. 7)
8) 9)
Voorwaarden - gesamplede IL,BUCK < maximale IL - gesamplede VBUS < maximale VBUS - gesamplede VC < minimale VC - gesamplede VC < gewenste VC – 3V - gecompareerde VC ≥ maximale VC of - condensatorbank niet aangesloten
10) - gecompareerde VC ≥ maximale VC of - gesamplede IL,BOOST ≥ maximale IL 11) - gecompareerde VC ≥ maximale VC 12) - gecompareerde VC ≥ maximale VC of - gesamplede IL,BUCK ≥ maximale IL of - gesamplede VBUS ≥ maximale VBUS
70
3.2 Boostmode Hierboven werd gesproken over de verschillende modes waarin de converter zich kan bevinden. Één van die modes is de boostmode. Tijdens de boostmode wordt de condensatorbank geladen met een constante gemiddelde spoelstroom. Om dit mogelijk te maken wordt gebruik gemaakt van een digitale regelkring. In wetenschappelijke kringen wordt dit Average Current Mode Control (ACMC) genoemd. De microcontroller neemt iedere periode een sample van de spoelstroom. In figuur 24 is uitgelegd dat het mogelijk is om de gemiddelde spoelstroom in te lezen door het samplemoment juist te kiezen. Met de genomen sample wordt dan in de microcontroller een fout e[n] berekend. 𝑒 𝑛 = 𝐼𝑅𝐸𝐹 − 𝐼𝐿,𝐵𝑂𝑂𝑆𝑇 𝑛
(20)
Figuur 67: Principeschema regelkring boostmode ACMC
Dries Vromman Dries Rollez
71
De spoelstroom wordt constant gehouden door middel van een digitale PID-regelaar. Volgens [22] is de transferfunctie van een digitale PID-regelaar van de vorm: 𝑑 𝐶1 ∙ 𝑧 2 + 𝐶2 ∙ 𝑧 + 𝐶3 𝐺𝑃𝐼𝐷 (𝑧) = = 𝑒 𝑧2 − 𝑧
(21)
Indien deze regelaar omgevormd wordt naar een bruikbaar algoritme dat door de microcontroller uitgevoerd kan worden, wordt onderstaande bekomen [22-25]: 𝑑 𝑛 = 𝑑 𝑛 − 1 + 𝐴1 ∙ 𝑒 𝑛 + 𝐵1 ∙ 𝑒 𝑛 − 1 + 𝐶1 ∙ 𝑒 𝑛 − 2
(22)
Dit algoritme wordt ook blokschematisch weergegeven figuur 67. Hierbij is de waarde e[n] berekend zoals weergegeven in vergelijking 20. De werking van bovenstaande formule is intuïtief makkelijk aan te voelen. Veronderstel de eerste klokcycli in het begin van de boostmode. De duty cycle wordt initieel ingesteld op 5% (=d[n]). De volgende klokcyclus wordt d[n] doorgeschoven naar d[n-1] en wordt e[n] berekend zoals aangegeven in vergelijking 20. In het begin zal de gesamplede spoelstroom IL[n] merkelijk kleiner zijn dan IREF. De berekende fout e[n] zal dus een relatief grote en positieve waarde zijn. Dit wil dus zeggen dat de duty cycle zal toenemen omdat er telkens een positieve waarde bij de oorspronkelijke duty cycle wordt geteld. Indien de duty cycle al een tijdje is toegenomen, zal de spoelstroom gelijk en/of groter worden dan de ingestelde referentiestroom. Veronderstel dat de spoelstroom groter is dan de referentiestroom. De fout e[n] komt nu negatief. Hierdoor zal de duty cycle opnieuw beginnen dalen omdat er een negatieve waarde wordt opgeteld bij de oorspronkelijke duty cycle. Op deze manier wordt de duty cycle op een dusdanige manier berekend dat de gemiddelde spoelstroom de referentiestroom benadert. Na de berekening van de duty cycle d[n] is er nog een begrenzing voorzien. Deze zorgt ervoor dat de berekende duty cycles tussen een onder- en bovengrens liggen. Op het einde van de boostmode treedt er nog een ander verschijnsel op. Dan is de condensatorbank al tot op een bepaald niveau opgeladen dat merkelijk hoger is dan de busspanning. Volgens vergelijking 4 kan de helling van de dalende en stijgende spoelstroom berekend worden aan de hand van de busspanning en de condensatorspanning. Als de condensatorspanning voldoende opgeladen is, zal de dalende helling vrij groot zijn. Om nu in regime te blijven, dit wil zeggen dat de spoelstroom even veel stijgt als daalt, zal de duty cycle moeten toenemen. Echter is de duty cycle begrensd op 80%. Hierdoor kan het voorkomen dat op het einde van de boostmode de gemiddelde spoelstroom terug afneemt.
Dries Vromman Dries Rollez
72
3.3 Buckmode Tijdens de buckmode wordt er energie uit de condensatorbank naar de bus gestuurd. Hierbij wordt de spanning op de bus constant gehouden door middel van een digitale regelkring. Dit wordt ook wel Voltage Mode Control (VMC) genoemd. De microcontroller neemt iedere periode een sample van de busspanning. Met de genomen sample wordt dan in de microcontroller een fout e[n] berekend zoals hieronder weergegeven in de vergelijking. (23)
𝑒 𝑛 = 𝑉𝑅𝐸𝐹 − 𝑉𝐵𝑈𝑆 𝑛
Figuur 68: Principeschema regelkring VMC buckmode
Dries Vromman Dries Rollez
73
De busspanning wordt constant gehouden door middel van een digitale PID-regelaar. De transferfunctie van deze regelaar is weergegeven in vergelijking 21. Indien deze regelaar omgevormd wordt naar een bruikbaar algoritme dat door de microcontroller uitgevoerd kan worden, wordt onderstaande bekomen [22-25]: 𝑑 𝑛 = 𝑑 𝑛 − 1 + 𝐴2 ∙ 𝑒 𝑛 + 𝐵2 ∙ 𝑒 𝑛 − 1 + 𝐶2 ∙ 𝑒 𝑛 − 2
(24)
Dit algoritme wordt ook blokschematisch weergegeven figuur 68. Hierbij is de waarde e[n] berekend zoals weergegeven in vergelijking 23. Er moet wel opgemerkt worden dat de coëfficiënten A, B en C verschillend zijn van deze die weergegeven worden in vergelijking 22. De werking van bovenstaande formule is opnieuw intuïtief makkelijk aan te voelen. Veronderstel de eerste klokcycli in het begin van de buckmode. De busspanning is dan al een aantal Volt onder de referentiespanning gedaald. De duty cycle wordt initieel ingesteld op 25% (=d[n]). De volgende klokcyclus wordt d[n] doorgeschoven naar d[n-1] en wordt e[n] berekend zoals aangegeven in vergelijking 23. In het begin zal de gesamplede busspanning VBUS[n] kleiner zijn dan VREF. De berekende fout e[n] zal dus een positieve waarde zijn. Dit wil dus zeggen dat de duty cycle zal toenemen omdat er telkens een positieve waarde bij de oorspronkelijke duty cycle wordt geteld. Indien de duty cycle al een tijdje is toegenomen, zal de busspanning stijgen, gelijk en groter worden dan de ingestelde referentiespanning. Veronderstel dat de busspanning groter geworden is dan de referentiespanning. De fout e[n] komt nu negatief. Hierdoor zal de duty cycle opnieuw beginnen dalen omdat er een negatieve waarde wordt opgeteld bij de oorspronkelijke duty cycle. Doordat de duty cycle daalt, zal de busspanning ook dalen. Op deze manier wordt de duty cycle op een dusdanige manier berekend dat de busspanning de referentiespanning benadert. Na de berekening van de duty cycle d[n] is er nog een begrenzing voorzien. Deze zorgt ervoor dat de berekende duty cycles tussen een onder- en bovengrens liggen.
3.4 Sleepmode Tot slot is er nog een derde mode of toestand waarin de converter zich kan bevinden: de sleepmode. In deze mode staat de converter eigenlijk te wachten op een signaal dat aangeeft dat hij naar de boost- of buckmode mag. De voorwaarden voor deze wijziging van mode werden hierboven al besproken.
Dries Vromman Dries Rollez
74
4. Code 4.1 Hoofdprogramma Het blokschema van het hoofdprogramma is te zien in figuur 69. Het hoofdprogramma wordt gestart wanneer de microcontroller gevoed wordt met +5V of wanneer de microcontroller gereset is na een druk op de MCLR. Eenmaal gevoed en de oscillator stabiel is, kan de initialisatie beginnen (zie 4.2 hieronder). In deze initialisatie worden de CPU, DSP en alle andere modules (ADC, PWM, CMP, I/O) ingesteld voor het hoofdprogramma. Daarna kan het werkelijke programma beginnen. Hierbij wordt telkens eerst gecontroleerd of de condensatorbank aangesloten is. Als dit niet het geval is, wordt het programma beëindigd. Alle PWM worden gestopt en er gaat een indicatie LED branden zodat het visueel zichtbaar is dat er een fout opgetreden is.
Figuur 69: Blokschema hoofdprogramma
Als de condensatorbank wel aangesloten is, wordt de boostmode ingesteld. Deze mode wordt bij de opstart van het programma steeds uitgevoerd omdat de condensatorbank eerst moet opgeladen zijn vooraleer een buckactie gestart kan worden. Zoals eerder gezegd zijn de PWM kanalen tijdens de boostmode zo ingesteld dat er 2 FET’s (FET1 en FET3) schakelen en dat er 1 FET (FET2) constant open is. Initieel wordt de waarde van de duty cycle op het minimum ingesteld (5%) en worden de
Dries Vromman Dries Rollez
75
foutwaardes (e[n], e[n-1] en e[n-2]) voor het regelalgoritme op nul gezet. Hierna kan de code bestemd voor boostmode effectief uitgevoerd worden. Het programma loopt nu continu in een lus. In deze lus wordt er onder andere ook telkens gecontroleerd of de mode niet veranderd is door een eventuele ADC-interrupt. Mocht dit het geval zijn, dan springt het programma uit deze lus en wordt de sleepmode ingesteld. Hierbij worden alle FET’s open schakelaars. Als het programma in de sleepmode is ingesteld, loopt het programma terug in een lus. In deze lus wordt er opnieuw gecontroleerd of de mode gewijzigd is. Deze wijziging kan het gevolg zijn van een ADC-interrupt. Afhankelijk van de opgemeten spanningen en stromen kan de sleepmode opgevolgd worden door zowel de boost- als de buckmode. Veronderstel dat de volgende mode de buckmode is, dan worden de PWM kanalen ingesteld voor de buckmode. Dit betekent dat FET2 schakelt, FET3 constant dicht is en FET1 een open schakelaar is. Vooraleer het regelalgoritme begint, wordt de waarde van de duty cycle minimaal gezet (25%) en worden alle foutwaardes (e[n], e[n-1] en e[n-2]) voor het regelalgoritme gereset. Daarna komt het programma terug in een lus. In deze lus wordt er onder andere gecontroleerd of de mode niet gewijzigd is. Als dit het geval is, dan worden de PWM kanalen terug ingesteld voor sleepmode. Het kan dus nooit voorkomen dat de mode wijzigt van buckmode naar boostmode of omgekeerd. Dit om te voorkomen dat de buckstroom (IL,BUCK) of booststroom (IL,BOOST) nog vloeit als er overgeschakeld wordt.
4.2 Initialisatie Zoals hierboven gezegd, wordt alles eerst geïnitialiseerd wanneer het programma gestart wordt. Het volledige blokschema van de initialisatie is hieronder terug te vinden in figuur 70. Eerst wordt de stackpointer ingesteld. Dit is niets anders dan het begin en het einde van de stack toewijzen. Hierna wordt de DSP module ingesteld. Deze module wordt gebruikt bij het uitrekenen van het boost- en buckalgoritme. Zo moet er vastgelegd worden dat er met integers wordt gewerkt. Vervolgens wordt het volledig toegewezen RAM-geheugen gecleard zodat er zich geen oude waarden meer bevinden in dit geheugen. De volgende stappen zijn het initialiseren van de verschillende modules. Eerst komt de ADC module aan bod. Hierbij wordt het basisadres ingesteld waarnaar het programma moet gaan wanneer er een ADC-interrupt voorkomt. Ook worden de ingangspinnen van de ADC’s analoog gemaakt zodat deze uitgelezen kunnen worden. Vervolgens wordt er ingesteld wanneer de ADC moet beginnen samplen en dat er een interrupt aanvraag kan gebeuren. Het moment wanneer de ADC moet sampelen wordt ingesteld door middel van een event dat afkomstig is van de PWM module. Tenslotte worden alle wachtende ADC interrupts gecleard en kan de ADC geactiveerd worden. Momenteel kan er nog niet gesampled worden omdat de PWM module nog niet geïnitialiseerd is. De ADC module moet immers events krijgen van de PWM module. Daarom wordt na de ADC de PWM module geïnitialiseerd. Hierbij wordt de periode, de duty cycle en het event waarbij er gesampled moet worden ingesteld. Er moet opgemerkt worden dat er twee soorten duty cycles zijn. Een master duty cycle die voor alle PWM kanalen geldt en een individuele duty cycle per PWM kanaal. Bij deze
Dries Vromman Dries Rollez
76
laatste mogelijkheid moet er dan per PWM kanaal ingesteld worden wat de duty cycle moet zijn. In deze masterproef wordt de individuele duty cycle zo ingesteld dat de FET ofwel een continu open schakelaar of een continu gesloten schakelaar is. De master duty cycle wordt dan gebruikt voor de FET(‘s) die moet(en) schakelen. Als laatste PWM configuratie wordt vastgelegd of de uitgangen actief hoog of actief laag moeten zijn. Ten slotte wordt de PWM module geactiveerd. De laatste module die moet worden geïnitialiseerd is de output compare. Zoals eerder gezegd dient deze comparator ervoor om te zorgen dat de condensatorspanning niet te hoog oploopt. Daarom moet bij deze module de maximum te vergelijken spanning geprogrammeerd worden. Om deze in te stellen moet er ook nog een referentiespanning vastgelegd worden die de range teruggeeft waarin de DAC werkt. De DAC maakt de digitaal ingestelde waarde analoog. Het is die analoge spanning die vergeleken wordt met het ingangssignaal aan de pin van de output compare. Vervolgens wordt de interrupt aanvraag geactiveerd en wordt de interrupt vlag gecleard. Ten slotte wordt ook de output compare ingeschakeld. Een laatste onderdeel bij het initialiseren van het programma zijn de overige instellingen. Dit zijn alle parameters en coëfficiënten die kunnen worden ingesteld. Zo is het volgende mogelijk:
de periode
de minimale en maximale duty cycle
de coëfficiënten voor het boost- en buckalgoritme
de gemiddelde spoelstroom (IL,BOOST) in boostmode
de gemiddelde busspanning (VBUS) in buckmode
de minimale en maximale condensatorspanning (vc)
de minimum busspanning om over te schakelen naar buckmode
Figuur 70: Blokschema initialisatie
Eens de volledig initialisatie gebeurd is, kan het boost-buck-sleep-programma beginnen.
4.3 Interrupt ADC Van zodra de ADC ingesteld en geactiveerd is kan er een interrupt optreden. De algemene ADCinterrupt afhandeling is terug te vinden in figuur 71. Er treedt een ADC-interrupt op wanneer een analoge waarde gedigitaliseerd is. Deze gedigitaliseerde waarde zit dan in een ADC-buffer die uitgelezen kan worden. Als er een ADC-interrupt optreedt, wordt de program counter verplaatst, zodat de ADC-interrupt code uitgevoerd kan worden. Bij een dergelijke interrupt moeten de huidige registerwaarden en de waarde van de program counter behouden blijven. Daarom worden alle waarden eerst in de stack geplaatst (push on stack). Vervolgens wordt de interrupt gecleard zodat dezelfde interrupt niet
Dries Vromman Dries Rollez
77
onmiddellijk terug wordt opgeroepen na het afronden van de interruptroutine. Vervolgens wordt bekeken welke waarde gedigitaliseerd is. Het digitaliseren van waarden gebeurt telkens per twee. Zo is ADC PAIR0 de eerste (AN0) en de tweede (AN1) ingangspin van de ADC. Vervolgens wordt er verdergegaan met het pair dat de ADC-interrupt afvuurde (zie punt 4.3.1, 4.3.2, 4.3.3 en 4.3.4). Hierbij wordt de gedigitaliseerde waarde uitgelezen en kan deze waarde gebruikt worden in berekeningen. Als de interrupt afgerond is, moet ervoor gezorgd worden dat eerst alle huidige registers teruggeplaatst worden (pop of stack). Daarna kan er opnieuw verdergegaan worden met het oorspronkelijke programma.
Figuur 71: Algemeen blokschema van een ADC-interrupt
Dries Vromman Dries Rollez
78
4.3.1 ADC-PAIR0 Zoals hierboven uitgelegd gebeurt het digitaliseren van de analoge waarden per pair. Nu zal er per pair gekeken worden hoe de interruptafhandeling gebeurd. Bij het eerste ADC-PAIR wordt enkel de eerste ADC-pin gebruikt. Dit omdat de tweede pin gedeeld wordt met andere ADC-PAIRS. De eerste ADC-pin digitaliseert de buckstroom (IL,BUCK). Deze stroom wordt opgemeten via de current monitor. De gedigitaliseerde waarde wordt gebruikt om de stroom te controleren tijdens de buckmode, wanneer er gewerkt wordt in VMC. Indien er een te hoge stroom optreedt, wordt het programma beëindigd zodat er geen componenten beschadigd kunnen worden. In deze interrupt wordt er eerst gecontroleerd of de modebits wel degelijk in buckmode staan. Als dit niet het geval is, wordt de interrupt beëindigd. Wordt er toch in de buckmode gewerkt, dan moet er gecontroleerd worden of de stroom (IL,BUCK) niet hoger komt dan de maximum toegelaten stroom. In normale werking komt deze stroom niet hoger, maar mocht dit toch het geval zijn, dan moet er gestopt worden. Dit betekent dat alle PWM kanalen uitgeschakeld worden en dat de LED die fouten indiceert aangestuurd wordt. Figuur 72: Blokschema PAIR0
Dries Vromman Dries Rollez
79
4.3.2
ADC-PAIR1
Figuur 73: Blokschema PAIR1
Bij het volgende ADC-PAIR wordt opnieuw maar één ADC-pin gebruikt. Deze wordt gebruikt om de booststroom (IL,BOOST) in te lezen. Het is dan ook logisch dat bij een interrupt van dit ADC-pair eerst gecontroleerd wordt of de modebits in de boostmode staan. Als dit niet het geval is, dan mag deze interrupt onmiddellijk gestopt worden. Als er toch in de boostmode gewerkt wordt dan moeten er nog enkele andere voorwaarde gelden voordat het boostalgoritme gebruikt kan worden. Een eerste belangrijke voorwaarde is dat de gedigitaliseerde booststroom (IL,BOOST) niet te hoog oploopt. In de normale werking is dit niet het geval omdat de stroom geregeld wordt via het boostalgoritme, maar mocht dit toch voorkomen, worden alle PWM kanalen uitgeschakeld en brandt er een LED. Als de stroom niet te hoog is, wordt de condensatorspanning gecontroleerd. De waarde wordt vergeleken met de gewenste condensatorspanning. Als de condensatorspanning al de gewenste spanning bereikt heeft, wordt er overgeschakeld naar de sleepmode. Als de condensatorspanning nog niet bereikt is, wordt de busspanning gecontroleerd. Is deze lager dan +5V dan moet er geen boostalgoritme uitgevoerd worden en wordt er ook overgeschakeld naar sleepmode. Als de busspanning gelijk is of hoger dan +5V dan wordt het boostalgoritme uitgerekend zodat er een nieuwe duty cycle verkregen wordt voor de volgende periode.
Dries Vromman Dries Rollez
80
4.3.3
ADC-PAIR2
Figuur 74: Blokschema PAIR2
Een derde ADC-PAIR meet de busspanning. Deze spanning moet in normale werking continu op +24V gehouden worden. Als de condensatorbank opgeladen is, wordt er geschakeld van boostmode naar sleepmode. Nu zijn er twee mogelijkheden:
Ofwel daalt de busspanning tot onder de minimum busspanning, zodoende moet er overgeschakeld worden naar de buckmode om energie te leveren aan de bus.
Ofwel daalt de condensatorspanning tot onder vC – 3V, zodoende moet er overgeschakeld worden naar de boostmode. Op deze manier wordt de condensatorspanning op pijl gehouden.
Bij een interrupt van ADC-PAIR2 wordt er eerst gecontroleerd of de modebits zijn ingesteld voor sleepmode. Als de converter zich in de sleepmode bevindt en de busspanning kleiner is dan de minimum gewenste busspanning, wordt er overgeschakeld van sleepmode naar buckmode. De converter zal nu energie terugvoeren naar de bus. Als de busspanning echter toch hoog genoeg is en de converter in sleepmode staat, dan mag deze interrupt zonder meer afgerond worden. Als de converter zich niet in de sleepmode bevindt, wordt er gecontroleerd of er in de buckmode gewerkt wordt. Vervolgens wordt de gesamplede busspanning gecontroleerd. Deze controle is een
Dries Vromman Dries Rollez
81
veiligheid die ervoor zorgt dat de busspanning niet te hoog oploopt. Mocht de busspanning, ondanks de regelkring, toch te veel oplopen, worden alle PWM kanalen uitgeschakeld en brandt er een LED. Indien de busspanning niet te hoog is, wordt er gecontroleerd of de minimale condensatorspanning door het ontladen tijdens de buckmode nog niet bereikt is. Mocht de minimale waarde bereikt zijn, moet er overgeschakeld worden naar de sleepmode. Het is namelijk niet gewenst dat de buck converter blijft werken als de condensatorspanning lager is dan de gewenste busspanning. Als de condensatorspanning (vC) de minimale vC nog niet bereikt heeft, mag de buckmode behouden blijven. Hierbij wordt dan het buckalgoritme berekend. Op die manier zorgt de regelkring er voor dat de juiste duty cycle berekend wordt om de busspanning op +24V te houden. 4.3.4 ADC-PAIR3 Een laatste ADC-PAIR die gebruikt wordt is ADC-PAIR3. Dit paar digitaliseert twee analoge waarden, namelijk de condensatorspanning (vC) en de maximum gewenste condensatorspanning (VREF) die ingesteld kan worden door middel van de regelbare weerstand. Wanneer deze interrupt wordt uitgevoerd, wordt VREF gecontroleerd. Indien een gebruiker de gewenste condensatorspanning te laag of te hoog wilt leggen, dan wordt deze begrensd op een minimum waarde van 45V of een maximum waarde die softwarematig ingesteld kan worden. Eenmaal VREF correct ingesteld is, wordt er gecontroleerd of de sleepmode actief is. Indien dit zo is, moet er gecontroleerd worden of er moet overgeschakeld worden naar boost- of buckmode. Deze beslissing wordt genomen aan de hand van de gesamplede condensatorspanning en de gewenste condensatorspanning. Indien de condensatorspanning hoger ligt dan VREF +3V dan wordt de mode gewijzigd naar de buckmode. De condensatorbank is op dat moment meer geladen dan gewenst dus moet de bank ontladen worden. Dit geval komt voor wanneer iemand een gewenste condensatorspanning instelt (VREF) die kleiner is dan huidige condensatorspanning (vC). Indien de condensatorspanning lager is dan VREF –3V dan wordt er overgeschakeld naar de boostmode om de condensatorbank bij te laden of om op spanning te houden. Als de spanning vC zich tussen VREF +3V en VREF –3V bevindt, dan gebeurt er niets en blijft het programma in sleepmode werken. Figuur 75: Blokschema PAIR3
Dries Vromman Dries Rollez
82
4.4 Interrupt Compare Tijdens de uitvoer van het programma kan er ook een interrupt optreden van de comparator die de condensatorspanning bewaakt. Deze interrupt heeft een hogere prioriteit dan interrupts die veroorzaakt worden door de ADC’s. Deze hogere prioriteit zorgt ervoor dat een interrupt die veroorzaakt wordt door een te hoge condensatorspanning onmiddellijk verwerkt wordt. Een compare interrupt plaatst, zoals alle andere interrupts, alle huidige waarden van de registers in de stack (push on stack) en cleart de interrupt vlag die gezet werd. Vervolgens wordt de LED aangestuurd, worden alle PWM kanalen uitgeschakeld en wordt ervoor gezorgd dat het relais niet meer aangestuurd wordt. Doordat het relais niet meer aangestuurd wordt, ontlaadt de condensatorbank over de voorziene ontlaadweerstand. Tenslotte worden de vorige registerwaarden teruggeplaatst (pop of stack) en wordt de interrupt beëindigd.
Figuur 76: Blokschema compare interrupt
Dries Vromman Dries Rollez
83
4.5 Boost- en buckalgoritme in DSP Een laatste blokschema dat besproken kan worden is het boost- en buckalgoritme. Als alle voorwaarden die hierboven al beschreven werden voldaan zijn en één van deze algoritmes uitgevoerd wordt, dan pas wordt dit blokschema doorlopen. Voor het boostalgoritme moet het programma zich in de boostmode bevinden en moet er een ADC-PAIR1 interrupt zijn die de booststroom (IL,BOOST) digitaliseert. Het boostalgoritme wordt in deze interrupt verwerkt omdat de booststroom nodig is voor de berekening ervan. Voor het buckalgoritme moet het programma zich in de buckmode bevinden en moet er een ADC-PAIR2 interrupt zijn die de busspanning (VBUS) digitaliseert. Dit algoritme bevindt zich in deze interrupt omdat de busspanning nodig is voor de berekening ervan. Zowel het boost- als het buckalgoritme maken gebruik van DSP-instructies. Dit omdat het algoritme op deze manier zeer snel verwerkt wordt. Het resultaat van het algoritme is een berekende duty cycle. Deze berekende duty cycle wordt dan gecontroleerd:
Als de berekende waarde te hoog is, wordt de duty cycle begrensd op 80%.
Als de berekende waarde te klein is, wordt de duty cycle begrensd op 5%
Figuur 77: Blokschema algoritme Ligt de berekende waarde tussen de 5% en 80%, dan wordt de berekende duty cycle gebruikt. Deze nieuwe duty cycle wordt dan opnieuw ingesteld in de PWM module zodat er in de volgende periode met de nieuwe duty cycle gewerkt wordt.
Als laatste wordt de waarde van de duty cycle nog gedeeld door twee. Het resultaat van deze deling bepaalt dan wanneer het nieuwe event plaatsvindt van de ADC. Dit om ervoor te zorgen dat de gemiddelde waarde van de spoelstroom gesampled wordt in de volgende periode (zie figuur 24).
Dries Vromman Dries Rollez
84
Besluit Deze masterproef had als doelstelling een bidirectionele boost converter realiseren en die dan te koppelen aan een energievat. Op die manier ontstond een systeem dat spanningsdips kan opvangen en kan voldoen aan extra stroomvraag van de belasting.
De vermogenprint Om deze opdracht te realiseren is een bidirectionele boost converter gerealiseerd die het energievat kan opladen tot 100V bij een busspanning van 24V. De spanning van de bus is hier uit praktische overwegingen 24V gekozen. Het is echter ook mogelijk een andere busspanning te kiezen. De spanning aan de hoge spanningszijde wordt momenteel beperkt tot 100V omdat de MOSFET’s een maximale werkspanning van 150V hebben. In de toekomst kan dezelfde converter eventueel met MOSFET’s gebouwd worden die een hogere werkspanning hebben. Hierdoor zou er merkelijk meer energie kunnen opgeslagen worden in de condensatorbank. De gerealiseerde converter heeft een rendement van 83% tijdens de boostmode en 93% tijdens de buckmode. Op de vermogenprint wordt de spoelstroom gemeten door middel van sense-weerstand. De spanning over de sense-weerstand wordt dan versterkt door middel van een current monitor. Deze monitors waren een grote zorg binnen het project. Het uitgangssignaal van de current monitor was afhankelijk van de belasting van de uitgang. Proefondervindelijk is dan de beste uitgangsweerstand bepaald waarbij er geen saturatie waarneembaar was. Bij het ontwerp van de vermogenprint, waarop de converter gebouwd is, werd rekening gehouden met een aantal ontwerpregels. Zo werd er voldoende ontkoppeling voorzien, is de afstand tussen de FET-driver en de gate van de MOSFET zo kort mogelijk gehouden om parasitaire inducties te vermijden… Vervolgens is tijdens de test- en de ontwikkelingsfase van de software gebleken dat er enkele meetpinnen ontbraken om snel eenvoudige controles uit te voeren. Een les die hieruit kan getrokken worden is dat er voldoende meetpinnen moeten voorzien zijn bij het ontwerp van een dergelijk demobord. De voeding van de stuurkring wordt momenteel onttrokken aan het net. Een verbetering die in de toekomst geïmplementeerd kan worden is dat de energie voor de stuurkring onttrokken wordt aan het energievat of aan de bus. Dit zou kunnen via een DC/DC converter. Op die manier valt de externe netvoeding weg. Verder kan er in de toekomst ook een inverter gebouwd worden rond de huidige opstelling die de gelijkspanning omzet in een wisselspanning. Op die manier kan het geheel aan het net gekoppeld worden.
Dries Vromman Dries Rollez
85
Condensatorbank Naast de converter is er ook een energievat gebouwd. Dit energievat bestaat uit 14 elektrolytische condensatoren die parallel geschakeld zijn. Naast de 14 condensatoren op de condensatorbank, is er ook nog een condensator die op de vermogenprint geplaatst is dicht bij de converter. Alles samen heeft het energievat een capaciteit van 33mF. In de huidige opstelling wordt de condensatorbank opgeladen tot 100V en ontladen tot 30V. Op die manier kan het energievat voldoende energie voorzien om een lamp van 40W ongeveer 4 seconden te laten branden zonder enige tussenkomst van de bron. Bij het ontwerp van de condensatorbank is er uit veiligheidsoverwegingen een relais voorzien met een normaal gesloten contact en een ontlaadweerstand. Door dit mechanisme is de condensatorbank zeker uitgeschakeld als hij losgekoppeld is van de vermogenprint en kan de microcontroller de bank ook ontladen als hij een fout detecteert.
Software Tot slot is er ook software ontwikkeld voor de dsPIC30F2020 die de gehele vermogenprint aanstuurt. De volledige code in assembler is geschreven in MPLAB IDE van Microchip. Door middel van een ICD2 programmer is de microcontroller geprogrammeerd. Voor bepaalde specifieke instructies wordt hierbij gebruik gemaakt van de DSP instructies. Met deze instructie is een snelle uitvoering van het regelalgoritme mogelijk. De software is verder zodanig opgedeeld dat er drie modes ontstaan:
Boostmode: de condensatorbank wordt bijgeladen
Buckmode: de condensatorbank wordt ontladen en de bus wordt van energie voorzien
Sleepmode: de converter wacht tot er een toestandsverandering kan plaatsvinden
Voor de boostmode en de buckmode is een regelkring geïmplementeerd die zorgt voor een constante gemiddelde spoelstroom in het geval van boostmode en een constante busspanning in buckmode. Dit wil zeggen dat er in boostmode met Average Current Mode Control (ACMC) wordt gewerkt en in buckmode met Voltage Mode Control (VMC). Bij het ontwikkelen van de code voor de microcontroller is er ook rekening gehouden met de veiligheid. Zo worden de kritische signalen elke periode gesampled en wordt de uitvoer van het programma gestopt indien één van die signalen wijst op een fout.
Dries Vromman Dries Rollez
86
Literatuurlijst [1] [2]
[3] [4]
[5] [6] [7] [8] [9]
[10] [11] [12] [13] [14] [15]
[16]
[17]
[18]
[19]
[20]
[21] [22]
J. Picard, "High-Voltage Energy Storage: The Key to Efficient Holdup," in Power Supply Design Seminar, ed: Texas Instruments, 2008-2009. T. L. Cleveland, "Bi-directional power system for laptop computers," in Applied Power Electronics Conference and Exposition, 2005. APEC 2005. Twentieth Annual IEEE, 2005, pp. 199-203 Vol. 1. M. K. Kazimierczuk, Pulse-width Modulated DC-DC Power Converters: WILEY, 2008. A. M. McLandrich, "Sensorless Control of a Bidirectional Boost Converter for a Fuel Cell Energy Management System," Master of Engineering, Electrical and Computer Engineering, Faculty of the Virginia Polytechnic Institute and State University, Blacksburg, VA, 2003. M. T. Inc., "dsPIC30F1010/202X - Data Sheet," ed, 2006, p. 286. V. Peter, "Digital Power," Industriële wetenschappen en technologie, HOWEST, Kortrijk, 2007-2008. R. Fulchiero and M. T. Inc., "dsPIC30F/33F Programmer’s Reference Manual," M. T. Inc., Ed., ed: Microchip Technology Inc., 2005, p. 362. M. Windels. (2007-2008), Cursus digitale techniek. Bachelor in de industriële wetenschappen: Elektronica-ICT. W. Tang, et al., "Small-signal modeling of average current-mode control," in Applied Power Electronics Conference and Exposition, 1992. APEC '92. Conference Proceedings 1992., Seventh Annual, 1992, pp. 747-755. J.-W. Shin, et al. Digital Average Current Mode Control of Boost Converter Using Diode Current Sensing Technique. 3. Available: http://pearlx.snu.ac.kr/Publication/DC80.pdf "Datasheet FDP2532 - N-Channel PowerTrench® MOSFET," ed: Fairchild Semiconductor. J. Ejury. (2003), How to Compare the Figure Of Merit (FOM) of MOSFETs. 5. "Datasheet CURRENT SHUNT MONITOR - INA194," ed: Texas Instruments. M. Windels. (2008-2009), Cursus Vermogenelektronica 1. Bachelor in de industriële wetenschappen: Elektronica ICT-ELA. Chattopadhyay, et al., "A Digital Current-Mode Control Technique for DC–DC Converters," Power Electronics, IEEE Transactions on: Accepted for future publication, vol. 21, pp. 17181726, 2006. S. Saggini, et al., "An innovative digital control architecture for low-Voltage, high-current DCDC converters with tight voltage regulation," Power Electronics, IEEE Transactions on, vol. 19, pp. 210-218, 2004. G. Zhou and J. Xu, "Digital Average Current Controlled Switching DC-DC Converters With Single-Edge Modulation," Power Electronics, IEEE Transactions on: Accepted for future publication, vol. PP, pp. 1-1, 2009. I. Zafrany and S. Ben-Yaakov, "A chaos model of subharmonic oscillations in current mode PWM boost converters," in Electrical and Electronics Engineers in Israel, 1995., Eighteenth Convention of, 1995, pp. 5.4.5/1-5.4.5/5. G. Zhou, et al., "Elimination of Subharmonic Oscillation of Digital Average Current Controlled Switching DC-DC Converters," Industrial Electronics, IEEE Transaction on: Accepted for future publication, vol. PP, pp. 1-1, 2009. K. Wing-Hung, "Analysis of subharmonic oscillation of fixed-frequency current-programming switch mode power converters," Circuits and Systems I: Fundamental Theory and Applications, IEEE Transactions on, vol. 45, pp. 104-108, 1998. T. Grote, et al., "Adaptive Digital Slope Compensation for Peak Current Mode Control," Adaptive Digital Slope Compensation for Peak Current Mode Control, p. 7, 2009. K. F. Chong, et al. (2008), Digital Power Management Hardware Realization Using FPGA. 4.
Dries Vromman Dries Rollez
Literatuurlijst
I
[23]
[24] [25]
A. Prodid and D. Maksimovid, "Design of a Digital PID Regulator Based on Look-Up Tables for Control of High-Frequency DC-DC Converters," ed. Colorado: Colorado Power Electronics Center Department of Electrical and Computer Engineering University of Colorado at Boulder, p. 5. A. Syed, et al. (2004), Digital PWM Controller with Feed-Forward Compensation. Z. Zhao and A. Prodic. (2007), Continuous-Time Digital Controller for High-Frequency DC-DC Converters.
Dries Vromman Dries Rollez
Literatuurlijst
II
Bijlagen 1. Schema vermogenprint
Dries Vromman Dries Rollez
Bijlagen
I
Dries Vromman Dries Rollez
Bijlagen
II
Dries Vromman Dries Rollez
Bijlagen
III
Dries Vromman Dries Rollez
Bijlagen
IV
2. Schema FET-Driver
Dries Vromman Dries Rollez
Bijlagen
V
3. Schema condensatorbank
Dries Vromman Dries Rollez
Bijlagen
VI
4. Analytische analyse slope compensation
Eerst wordt ∆𝐼𝐿𝑆 bepaald: 𝐼𝐿𝑆 = 𝐼𝑅𝐸𝐹 − 𝑚𝑐 𝐷𝑇 𝐼𝐿𝑆0 = 𝐼𝑅𝐸𝐹 − 𝑚𝑐 𝐷 − 𝑑 𝑇 → ∆𝐼𝐿𝑆 = 𝐼𝐿𝑆0 − 𝐼𝐿𝑆 = 𝑚𝑐 𝑑𝑇 Uit bovenstaande figuur is makkelijk volgend verband af te leiden tijdens het stijgen van de spoelstroom: ∆𝑖0 + 𝑚1 𝐷 − 𝑑 𝑇 = 𝑚1 𝐷𝑇 + 𝑚𝑐 𝑑𝑇 → ∆𝑖0 = 𝑚1 + 𝑚𝑐 𝑑𝑇 Daarnaast kan een soortgelijke vergelijking opgesteld worden tijdens het dalen van de spoelstroom: 𝑚2 1 − 𝐷 + 𝑑 𝑇 = 𝑚2 1 − 𝐷 𝑇 + ∆𝑖1 + 𝑚𝑐 𝑑𝑇 → ∆𝑖1 = 𝑚2 − 𝑚𝑐 𝑑𝑇 Nu verhoudt ∆𝑖1 zich tot ∆𝑖0 als: ∆𝑖1 𝑚2 − 𝑚𝑐 =− ∆𝑖0 𝑚1 + 𝑚𝑐 Merk op dat het minteken voor de breukstreep er op wijst dat de zin tussen twee opeenvolgende uitwijkingen tegengesteld is. Algemeen kan voor de nde uitwijking geschreven worden: ∆𝑖𝑛 = −
𝑚2 − 𝑚𝑐 𝑚1 + 𝑚𝑐
𝑛
∆𝑖0
Om nu stabiliteit te garanderen moet de uitwijking naderen naar nul indien n naar oneindig gaat:
Dries Vromman Dries Rollez
Bijlagen
VII
lim ∆𝑖𝑛 = lim −
𝑛→∞
𝑛→∞
𝑚2 − 𝑚𝑐 𝑚1 + 𝑚𝑐
𝑛
∆𝑖0 = 0
Om aan bovenstaande te voldoen moet gelden: −
𝑚2 − 𝑚𝑐 <1 𝑚1 + 𝑚𝑐
→ 𝑚2 − 𝑚𝑐 < 𝑚1 + 𝑚𝑐 → 𝑚𝑐 >
𝑚2 − 𝑚1 2
In regimetoestand geldt: 𝑚1 = 𝑚2
1−𝐷 𝐷
Dan wordt de voorwaarde voor de helling van de slope: 𝑚𝑐 > 𝑚2 1 −
1 2𝐷
of 𝑚𝑐 >
𝑚2 2
Dit zijn ook de voorwaarden die afgeleid werden in [18, 20, 21].
Dries Vromman Dries Rollez
Bijlagen
VIII
5. MATLAB script stabiliteitscontrole function STABILITEIT_DIG_SLOPE_COMP(aantal_iteraties, R) close all; verhouding=zeros(1,aantal_iteraties+1); for n=1:1:aantal_iteraties+1 if n==1 verhouding(1,n)= 1; elseif n==2 verhouding(1,n)= 1-R; else verhouding(1,n)= verhouding(1,n-1)-R*verhouding(1,n-2); end end aslabel(1,1)= max(verhouding); aslabel(1,2)= abs(min(verhouding)); stem(verhouding,'LineWidth',1); title('\Delta I_n/ \Delta I_1 in functie van het aantal Cycli n'); xlabel('Aantal Cycli n'); ylabel('\Delta I_n/ \Delta I_1','Rotation',0); axis([0 aantal_iteraties -max(aslabel) +max(aslabel)]);
Dries Vromman Dries Rollez
Bijlagen
IX
6. Onderzoek convergentie recursieformule 𝑥𝑛 = 𝑥𝑛−1 − 𝑅𝑥𝑛−2 𝑥𝑛 − 𝑥𝑛−1 + 𝑅𝑥𝑛−2 = 0 De techniek om een dergelijke recursieformule op te lossen wordt in de wiskunde ook wel het oplossen van differentievergelijkingen genoemd. Hierbij wordt gesteld dat 𝑥𝑛 = 𝑟 𝑛 . 𝑟 𝑛 − 𝑟 𝑛−1 + 𝑅𝑟 𝑛−2 = 0 𝑟 𝑛−2 𝑟 2 − 𝑟 + 𝑅 = 0 → 𝑟 𝑛−2 = 0 → 𝑟2 − 𝑟 + 𝑅 = 0 → 𝑎𝑟 2 + 𝑏𝑟 + 𝑐 = 0 𝐷 = 𝑏 2 − 4𝑎𝑐 = 1 − 4𝑅 → 𝑅 ≤ 1 4 → 𝑟𝑒ë𝑙𝑒 𝑤𝑜𝑟𝑡𝑒𝑙𝑠 → 𝑅 > 1 4 → 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑒 𝑤𝑜𝑟𝑡𝑒𝑙𝑠 Reële wortels (𝑅 ≤ 1 4) 𝑟1,2 =
1 ± 1 − 4𝑅 2
1 + 1 − 4𝑅 𝑥𝑛 = 𝑐1 2
𝑛
1 − 1 − 4𝑅 + 𝑐2 2
𝑛
= 𝑐1 𝐴𝑛 + 𝑐2 𝐵𝑛
Onderstaande randvoorwaarden zijn geldig: 𝑥1 = 1 𝑥2 = 1 − 𝑅 1 = 𝑐1 𝐴 + 𝑐2 𝐵 1 − 𝑅 = 𝑐1 𝐴2 + 𝑐2 𝐵2 → 𝑐2 =
1 − 𝑐1 𝐴 𝐵
→ 𝑐1 =
1−𝑅−𝐵 𝐴² − 𝐴𝐵
Dries Vromman Dries Rollez
Bijlagen
X
𝑐1 =
1−𝑅− 1 + 1 − 4𝑅 2
2
−
1 − 1 − 4𝑅 2
1 + 1 − 4𝑅 1 − 1 − 4𝑅 2 2
Dit levert na uitwerking: 𝑐1 =
1 − 2𝑅 + 1 − 4𝑅 1 − 4𝑅 + 1 − 4𝑅 1−
𝑐2 =
1 − 2𝑅 + 1 − 4𝑅 1 + 1 − 4𝑅 2 1 − 4𝑅 + 1 − 4𝑅 1 − 1 − 4𝑅 2
Zo wordt het onderstaande bekomen: 𝑐2 =
−1 + 1 − 4𝑅 2 1 − 4𝑅
Nu kan de volledige betrekking geschreven worden als: 1 − 2𝑅 + 1 − 4𝑅 1 + 1 − 4𝑅 𝑥𝑛 = 2 1 − 4𝑅 + 1 − 4𝑅
𝑛
−1 + 1 − 4𝑅 1 − 1 − 4𝑅 + 2 2 1 − 4𝑅
𝑛
De vraag die nu moet gesteld worden is voor welke waarden van R de reeks convergeert naar 0. Hiertoe wordt de limiet naar oneindig berekend. 1 − 2𝑅 + 1 − 4𝑅 1 + 1 − 4𝑅 lim 𝑥𝑛 = lim 𝑛→∞ 𝑛→∞ 1 − 4𝑅 + 1 − 4𝑅 2
𝑛
−1 + 1 − 4𝑅 1 − 1 − 4𝑅 + lim 𝑛→∞ 2 2 1 − 4𝑅
→
1 + 1 − 4𝑅 < 1 → 1 + 1 − 4𝑅 < 2 → 1 − 4𝑅 < 1 → 𝑅 > 0 2
→
1 − 1 − 4𝑅 < 1 → 1 − 1 − 4𝑅 < 2 → 1 − 4𝑅 < 1 → 𝑅 > 0 2
𝑛
=0
⟹0<𝑅≤1 4
Dries Vromman Dries Rollez
Bijlagen
XI
Complexe wortels (𝑅 > 1 4) 𝑟1,2 =
1 ± 𝑗 4𝑅 − 1 2 𝑛
1 + 𝑗 4𝑅 − 1 𝑥𝑛 = 𝑐1 2
1 − 𝑗 4𝑅 − 1 + 𝑐2 2
𝑛
= 𝑐1 𝐴𝑛 + 𝑐2 𝐵𝑛
In bovenstaande formule zijn er nog twee onbekenden te zien. Deze onbekenden kunnen bepaald worden aan de hand van de randvoorwaarden. 𝑥1 = 1 𝑥2 = 1 − 𝑅 1 = 𝑐1 𝐴 + 𝑐2 𝐵 1 − 𝑅 = 𝑐1 𝐴2 + 𝑐2 𝐵2 → 𝑐2 =
1 − 𝑐1 𝐴 𝐵
→ 𝑐1 =
1−𝑅−𝐵 𝐴² − 𝐴𝐵
𝑐1 =
1−𝑅− 1 + 𝑗 4𝑅 − 1 2
2
−
1 − 𝑗 4𝑅 − 1 2
1 + 𝑗 4𝑅 − 1 1 − 𝑗 4𝑅 − 1 2 2
Dit levert na uitwerking: 𝑐1 =
1 − 2𝑅 + 𝑗 4𝑅 − 1 1 − 4𝑅 + 𝑗 4𝑅 − 1 1−
𝑐2 =
1 − 2𝑅 + 𝑗 4𝑅 − 1 1 + 𝑗 4𝑅 − 1 2 1 − 4𝑅 + 𝑗 4𝑅 − 1 1 − 𝑗 4𝑅 − 1 2
Zo wordt het onderstaande bekomen: 𝑐2 =
−1 + 𝑗 4𝑅 − 1 2𝑗 4𝑅 − 1
Nu kan de volledige betrekking geschreven worden als: 1 − 2𝑅 + 𝑗 4𝑅 − 1 1 + 𝑗 4𝑅 − 1 𝑥𝑛 = 2 1 − 4𝑅 + 𝑗 4𝑅 − 1
𝑛
−1 + 𝑗 4𝑅 − 1 1 − 𝑗 4𝑅 − 1 + 2 2𝑗 4𝑅 − 1
𝑛
De vraag die nu moet gesteld worden is voor welke waarden van R de reeks convergeert naar 0. Hiertoe wordt de limiet naar oneindig berekend.
Dries Vromman Dries Rollez
Bijlagen
XII
1 − 2𝑅 + 𝑗 4𝑅 − 1 1 + 𝑗 4𝑅 − 1 lim 𝑥𝑛 = lim 𝑛→∞ 𝑛→∞ 1 − 4𝑅 + 𝑗 4𝑅 − 1 2
𝑛
−1 + 𝑗 4𝑅 − 1 1 − 𝑗 4𝑅 − 1 + lim 𝑛→∞ 2 2𝑗 4𝑅 − 1
𝑛
=0 →
1 + 𝑗 4𝑅 − 1 < 1 → 1 + 4𝑅 − 1 < 2 2
→
1 − 𝑗 4𝑅 − 1 < 1 → 1 + 4𝑅 − 1 < 2 2
⟹1 4<𝑅<1 Algemeen kan dus besloten worden dat R kleiner dan één moet zijn om de reeks te doen convergeren.
Dries Vromman Dries Rollez
Bijlagen
XIII
7. Blokschema van de dsPIC30F2020
Dries Vromman Dries Rollez
Bijlagen
XIV
8. Software .global .global .global .global
__reset __ADCInterrupt __CMP2Interrupt __CMP3Interrupt
;************************************************************************ ;INITIALISATIE STACKPOINTER ;************************************************************************ .equiv STACK_BASE, 0x0950 ;stack begin .equiv STACK_LIM, 0x09FE ;stack einde ;************************************************************************ ;INITIALISATIE RAM-GEHEUGEN ;************************************************************************ .equiv XRAM_BEGIN, 0x0850 ;XRAM begin .equiv YRAM_BEGIN, 0x0900 ;YRAM begin .equiv YRAM_EINDE, 0x09FE ;YRAM einde ;************************************************************************ ;RAM-GEHEUGEN RESERVEREN VOOR WAARDEN ;************************************************************************ .section a,bss,address(XRAM_BEGIN) ;plaats maken in XRAM-geheugen voor waarden D_n_1: .space 2 E_n: .space 2 E_n_1: .space 2 E_n_2: .space 2 V_OUT_REF: .space 2 .section b,bss,address(YRAM_BEGIN) MODE_SELECTED: .space ADC_I_BOOST: .space ADC_I_BUCK: .space ADC_V_IN: .space ADC_V_OUT: .space ADC_V_OUT_REF: .space BOOST_COEF_n: .space BOOST_COEF_n_1: .space BOOST_COEF_n_2: .space BUCK_COEF_n: .space BUCK_COEF_n_1: .space BUCK_COEF_n_2: .space
;plaats maken in XRAM-geheugen voor waarden 2 2 2 2 2 2 2 2 2 2 2 2
.text ;************************************************************************ ;RESET, code starten ;************************************************************************ __reset: nop ;------------------------------------;Stackpointer instellen ;------------------------------------mov #STACK_BASE, mov #STACK_LIM, mov w0, nop ;------------------------------------;DSP instellen ;------------------------------------bset CORCON, bset CORCON,
Dries Vromman Dries Rollez
w15 w0 SPLIM
;start stackpointer instellen
#0 #4
;Integer multiplier mode select ;39-bit saturation accumulator
;limiet stackpointer instellen
Bijlagen
XV
;------------------------------------;RAM wissen + Accumulators ;------------------------------------mov #XRAM_BEGIN, w0 repeat(#YRAM_EINDE-#XRAM_BEGIN)/2 clr [w0++] clr ACCA clr ACCB ;------------------------------------;ADC Initialiseren ;------------------------------------mov #handle(ADC_TABLE),w1 mov w1, ADBASE
;herhalen voor de totale RAM: (FF + 1 keer)
;het basisadres wanneer er een ADC-interrupt is
mov mov
#0xFF00, w0,
w0 ADPCFG
mov mov mov
#0x8383, w0, w0,
w0 ADCPC0 ADCPC1
clr bclr bset
ADSTAT IFS0, IEC0,
#11 #11
bset bset bclr
IPC2, IPC2, IPC2,
#14 #13 #12
;ADC prioriteit
mov mov
#0x80A3, w0,
w0 ADCON
;ADC enable, interrupt na eerste conversie, shared ;S&H start bij 2de conversie, Fadc/10 = 24MHz
;------------------------------------;PWM Initialiseren ;------------------------------------.equiv MIN_TRG_VAL, 0x0008
;0-7 poorten zijn analoge inputs ;Interrupt aanvraag, PWM special event trigger
;geen conversies voltooid ;clear wachtende ADC IRQs ;enabled interrupt request
;minimum waarde wanneer er een event optreedt
mov mov
#PWM_PERIODE, w0,
mov call setm clr clr
#DC_MIN_BOOST, w0 START_DUTYCYCLE PDC1 PDC2 PDC3
mov mov
#MIN_TRG_VAL, w0,
clr clr clr
PHASE1 PHASE2 PHASE3
mov mov mov mov
#0x0080, w0, w0, w0,
w0 PWMCON1 PWMCON2 PWMCON3
;individuele DC, dead-time disabled
mov mov mov mov
#0x0003, w0, w0, w0,
w0 FCLCON1 FCLCON2 FCLCON3
;current-limit disabled ;fault current-limit disabled
mov mov mov mov
#0x8000, w0, w0, w0,
w0 IOCON1 IOCON2 IOCON3
;PWMH actief, PWMH hoog actief
Dries Vromman Dries Rollez
w0 PTPER
w0 SEVTCMP
;periode instellen ;dutycycle instellen ;individuele Dutycycles van de PWM instellen
;waarde wanneer event moet optreden ;fases van de individuele PWMs op nul plaatsen
Bijlagen
XVI
mov mov
#0x8800, w0,
;PWM enable, Special event interrupt enable
w0 PTCON
;------------------------------------;output compare Initialiseren ;------------------------------------.equiv COMPARE_REF_V3,0x0286
;Maximumspanning van 110Volt aan de condensators
mov mov
#COMPARE_REF_V3,w0 w0, CMPDAC3
mov mov
#0x8041, w0,
;enabled output compare, B-pin input ;High range (AVdd/2)
w0 CMPCON3
;clear interruptvlag status ;set interrupt enable control
bclr IFS1, #15 bset IEC1, #15 ;------------------------------------;overige instellingen ;------------------------------------;###starten met de boostmode### clr MODE_SELECTED
;MODE1(boost)=0x0000, MODE2(buck)=0x0001 ;MODE3(sleep)=0x0002
;###periode,minimum en maximum dutycycles### .equiv PWM_PERIODE, 0x30DC .equiv DC_MIN, #PWM_PERIODE/100*5 .equiv DC_MAX, #PWM_PERIODE/100*80 .equiv DC_MIN_BOOST, #PWM_PERIODE/100*5 .equiv DC_MIN_BUCK, #PWM_PERIODE/100*25
;Periode (0x30DC=50kHz) ;Minimum dutycycle voor regelalgoritme ;Maximale dutycycle voor regelalgoritme ;Minimale start dutycycle van boost ;Minimale start dutycycle van buck
;###Coefficient voor boostmode-algoritme### .equiv coefficientA, 0x0002 .equiv coefficientB, 0x0001 .equiv coefficientC, 0x0000
;coefficient maal 64 ;vb: 1/32 = 64/32 = 2 = 0x0002
;###Coefficienten voor buckmode-algoritme### .equiv coefficientA2, 0x0008 .equiv coefficientB2, 0x0004 .equiv coefficientC2, 0x0008
;coefficient maal 64 ;vb: 1/32 = 64/32 = 2 = 0x0002
;###referentiestroom of gemiddelde laadstroom voor boostmode### .equiv I_REF, 0x0099 ;0x0099 = 1A (max 0x03FF = 6.67A) ;###ingangsreferentiespanning### .equiv V_IN_REF, 0x0212
;0x0212 = 24V (max 0x03FF = 46V)
;###minimum ingangsspanning om over te schakelen naar buckmode### .equiv V_IN_MIN, 0x01E6 ;0x01E6 = 22V (max 0x03FF = 46V) ;###maximum spanning in de condensatorbank### .equiv V_OUT_MAX, 0x024B
;0x024B = 100V (max 0x03FF = 175V)
;###minimum spanning in de condensatorbank### .equiv V_OUT_MIN, 0x00B0
;0x00B0=30V (max 0x03FF = 175V)
;###plaatsen van mov mov mov mov mov mov mov mov mov mov mov mov
coefficienten in RAM-geheugen### #V_OUT_MAX, w0 w0, V_OUT_REF #coefficientA, w0 w0, BOOST_COEF_n #coefficientB, w0 w0, BOOST_COEF_n_1 #coefficientC, w0 w0, BOOST_COEF_n_2 #coefficientA2,w0 w0, BUCK_COEF_n #coefficientB2,w0 w0, BUCK_COEF_n_1
Dries Vromman Dries Rollez
Bijlagen
XVII
mov mov
#coefficientC2,w0 w0, BUCK_COEF_n_2
;------------------------------------;HOOFDPROGRAMMA ;------------------------------------bclr TRISA, bclr TRISE, bset TRISE, bset PORTE, nop btss bra
#9 #6 #7 #6
PORTE, #7 GEEN_CONDENSATORBANK
PTCON, #15 PWMCON1, #8 PWMCON2, #8 PWMCON3, #8 PDC3 #DC_MIN_BOOST, w0 START_DUTYCYCLE PTCON, #15 #0x0000, w0 MODE_SELECTED, w1 w0, w1 MODE1_loop MODE_WIJZIGEN
PTCON, #15 PWMCON1, #8 PWMCON2, #8 PWMCON3, #8 PDC1 PDC2 #DC_MIN_BUCK, w0 START_DUTYCYCLE PTCON, #15 #0x0001, w0 MODE_SELECTED, w1 w0, w1 MODE2_loop MODE_WIJZIGEN
MODE_WIJZIGEN: mov clr cpsne bra inc cpsne bra mov
;blijft in de loop als het buckmode is
;SLEEPMODE instellen
MODE3: bclr bclr bclr bclr clr clr clr bset MODE3_loop: mov mov cpsne bra bra
;blijft in de loop als het boostmode is
;BUCKMODE instellen
MODE2: bclr bclr bclr bset setm clr mov call bset MODE2_loop: mov mov cpsne bra bra
;controle of condensatorbank aangesloten is ;BOOSTMODE instellen
MODE1: bclr bset bset bclr clr mov call bset MODE1_loop: mov mov cpsne bra bra
;output-pin instellen voor error-lampje ;output-pin instellen voor relaisaansturing ;input voor C-bankherkenning ;relais aansturen
PTCON, PWMCON1, PWMCON2, PWMCON3, PDC1 PDC2 PDC3 PTCON,
#15 #8 #8 #8
#15
#0x0002, w0 MODE_SELECTED, w1 w0, w1 MODE3_loop MODE_WIJZIGEN
;blijft in de loop als het boostmode is
;Controleer welke mode het is MODE_SELECTED, w0 w1, MODE1 w0, w1, MODE2 #0x0002,
Dries Vromman Dries Rollez
w1 w0 w0 w0 w0
Bijlagen
XVIII
mov bra
w0, MODE3
MODE_SELECTED
;************************************************************************ ;CMP3 interrupt (OUTPUT-comparator) ;************************************************************************ __CMP3Interrupt: push.s bclr IFS1, #15 ;clear interruptvlag bset PORTA, #9 ;PWM uitschakelen en led laten branden bclr PTCON, #15 ;relais sluiten zodat bank ontlaadt bclr PORTE, #6 pop.s retfie ;************************************************************************ ;ADC interrupt ;************************************************************************ __ADCInterrupt: push.s bclr.b IFS0+1, mov ADBASE, goto w0 ADC_TABLE: bclr bra bclr bra bclr bra bclr bra bclr bra bclr bra
#3 w0
;clear interruptvlag ;ga naar ADC_TABLE
ADSTAT, #0 process_ADC_pair0 ADSTAT, #1 process_ADC_pair1 ADSTAT, #2 process_ADC_pair2 ADSTAT, #3 process_ADC_pair3 ADSTAT, #4 process_ADC_pair4 ADSTAT, #5 process_ADC_pair5
;------------------------------------;ADC interrupt AN0-AN1 (AN0=buckstroom [IL,BUCK]) ;------------------------------------process_ADC_pair0: nop mov ADCBUF0, w0 mov w0, ADC_I_BUCK ;plaats gesamplede buckstroom in RAM-geheugen mov mov cpseq bra
#0x0001, w1 MODE_SELECTED, w2 w1, w2 ADC_EXIT
mov cpsgt bra bra
#0x03FF, w1, STOP_PWM ADC_EXIT
w1 w0
;controleer op buckmode ;geen buckmode => einde ADC-afhandeling
;controleert op maximum buckstroom (begrenzer) ;maximum buckstroom bereikt => stop de PWM
;------------------------------------;ADC interrupt AN2-AN3 (AN2=booststroom [IL,BOOST]) ;------------------------------------process_ADC_pair1: nop mov ADCBUF2, w0 mov w0, ADC_I_BOOST ;plaats gesamplede booststroom in RAM-geheugen clr mov cpseq bra
w0 MODE_SELECTED, w1 w0, w1 ADC_EXIT
Dries Vromman Dries Rollez
;controleer op boostmode ;geen boostmode => einde ADC-afhandeling
Bijlagen
XIX
;controleert op maximum booststroom (begrenzer) ;maximum booststroom bereikt => stop de PWM
mov mov cpsgt bra
ADC_I_BOOST, #0x03FF, w1, STOP_PWM
w0 w1 w0
mov mov cpsgt bra
ADC_V_OUT, w0 V_OUT_REF, w1 w1, w0 WIJZIG_MODE_NAAR_MODE3
;controleert op condensatorspanning (Vc) ;Vc al de gewenste spanning => ga naar sleepmode
mov mov cpslt bra bra
ADC_V_IN, w0 #0x00AC, w1 w1, w0 WIJZIG_MODE_NAAR_MODE3 BOOST_ALGORITME
;controleert op ingangsspanning (Vbus) ;Vbus < 5V => ga naar sleepmode ;alle voorwaarden voldaan => doe boost algoritme
;------------------------------------;ADC interrupt AN4-AN5 (AN4=ingangsspanning [Vbus]) ;------------------------------------process_ADC_pair2: nop mov mov
ADCBUF4, w0,
w0 ADC_V_IN
mov mov cpsne bra
#0x0002, w0 MODE_SELECTED, w1 w0, w1 CONTROLE_VOOR_BUCK_MODE
;controleer op sleepmode ;sleepmode => controle om naar buckmode te gaan
mov mov cpseq bra
#0x0001, w0 MODE_SELECTED, w1 w0, w1 ADC_EXIT
;controleer op buckmode ;geen buckmode => einde ADC-afhandeling
mov mov cpsgt bra
ADC_V_IN, #0x03FF, w1, STOP_PWM
;controleer op maximum Vbus (begrenzer) ;maximum ingangsspanning bereikt => stop de PWM
mov mov cpslt bra bra
ADC_V_OUT, w0 #V_OUT_MIN, w1 w1, w0 WIJZIG_MODE_NAAR_MODE3 BUCK_ALGORITME
w0 w1 w0
CONTROLE_VOOR_BUCK_MODE: mov ADC_V_IN, w0 mov #V_IN_MIN, w1 cpsgt w1, w0 bra ADC_EXIT bra WIJZIG_MODE_NAAR_MODE2
;plaats gesamplede ingangsspanning in RAM-geheugen
;controleer op condensatorspanning (Vc) ;Vc minimumspanning bereikt => ga naar sleepmode ;alle voorwaarden voldaan => doe buck algoritme ;controleer op ingangsspanning (Vbus) ;Vbus minimumspanning bereikt => ga naar buckmode ;zo niet => einde ADC-afhandeling
;------------------------------------;ADC interrupt AN6-AN7 (AN6=condensatorspanning [Vc],AN7=regelbare weerstand [Vc,ref]) ;------------------------------------process_ADC_pair3: nop mov ADCBUF6, w0 mov w0, ADC_V_OUT ;plaats gesamplede Vc in RAM-geheugen mov ADCBUF7, w0 ;plaats gesamplede gewenste Vc in RAM-geheugen mov w0, ADC_V_OUT_REF mov repeat div.s mov add
#0x0002, #17 w0, #0x0108, w0, w1,
Dries Vromman Dries Rollez
w2
;herschaling om gewenste Vc in te stellen
w2 w1 w0
;minimum regelbare Vc is 45V (of 0x0108)
Bijlagen
XX
cpslt bra mov cpsgt bra mov bra
w1, w0 V_OUT_BEGRENZING #V_OUT_MAX, w1 w1, w0 V_OUT_BEGRENZING w0, V_OUT_REF SPANNINGSCONTROLE
;gesamplede gewenste Vc te klein => Vc = 45V ;gesamplede gewenste Vc te hoog => Vc = max Vc ;aan voorwaarden voldaan => Vc controle
V_OUT_BEGRENZING: mov w1, V_OUT_REF bra SPANNINGSCONTROLE SPANNINGSCONTROLE: mov #0x0002, w0 mov MODE_SELECTED, w1 cpseq w0, w1 bra ADC_EXIT mov mov add mov cpsgt bra bra
V_OUT_REF, w0 #0x0011, w1 w0, w1, w0 ADC_V_OUT, w1 w1, w0 SPANNINGSCONTROLE2 WIJZIG_MODE_NAAR_MODE2
SPANNINGSCONTROLE2: mov V_OUT_REF, w0 mov #0x0011, w1 sub w0, w1, w0 mov ADC_V_OUT, w1 cpslt w1, w0 bra ADC_EXIT bra WIJZIG_MODE_NAAR_MODE1
;controleer op sleepmode ;geen sleepmode => einde ADC-afhandeling
;bereken Vc,ref+3V
;controleer Vc met Vc,ref+3V ;Vc > Vc,ref+3V => ga naar buckmode
;bereken Vc,ref-3V
;controleer Vc met Vc,ref-3V ;Vc < Vc,ref-3V => ga naar boostmode ;zo niet => einde ADC-afhandeling
;------------------------------------;ADC interrupt AN8-AN9 ;------------------------------------process_ADC_pair4: nop bra ADC_EXIT ;------------------------------------;ADC interrupt AN10-AN11 ;------------------------------------process_ADC_pair5: nop bra ADC_EXIT ;************************************************************************ ;gebruikte subroutines ;************************************************************************ GEEN_CONDENSATORBANK: bset PORTA, #9 ;als geen bank is aangesloten, dan brand de LED bclr PTCON, #15 ;en schakelen we de PWM uit bra GEEN_CONDENSATORBANK START_DUTYCYCLE: mov w0, mov w0, clr E_n clr E_n_1 clr E_n_2 return WIJZIG_MODE_NAAR_MODE1: mov #0x0000, mov w0, bra ADC_EXIT
Dries Vromman Dries Rollez
MDC D_n_1
;bij een gestarte boost- of buckmode stellen we ;een minimale start dutycycle in. ;alle fouten worden verwijderd
;wijzig de mode naar de boostmode w0 MODE_SELECTED
Bijlagen
XXI
;wijzig de mode naar de buckmode
WIJZIG_MODE_NAAR_MODE2: mov #0x0001, mov w0, bra ADC_EXIT
w0 MODE_SELECTED
WIJZIG_MODE_NAAR_MODE3: mov #0x0002, mov w0, bra ADC_EXIT
w0 MODE_SELECTED
BOOST_ALGORITME: call WAARDES_VERSCHUIVEN mov ADC_I_BOOST, w0 mov #I_REF, w1 sub w1, w0, w0 mov w0, E_n mov mov mov clr mac mac mac sftac add mov btst bra mov bra
;fout- en dutycyclewaarden worden 1 periode ;doorgeschoven ;bereken gewenste IL,boost - gesamplede IL,boost ;resultaat is fout E_n
D_n_1, w0 ;bereken regelalgoritme #E_n, w8 #BOOST_COEF_n, w10 A, [w8]+=2, w6, [w10]+=2, w7 ;clear accumulator (=nul) w6*w7, A, [w8]+=2, w6, [w10]+=2, w7 ;+BOOST_COEF_n * E_n w6*w7, A, [w8]+=2, w6, [w10]+=2, w7 ;+BOOST_COEF_n_1 * E_n_1 w6*w7, A, [w8]+=2, w6, [w10]+=2, w7 ;+BOOST_COEF_n_2 * E_n_2 A,#-9 ;vermenigvuldigd met 1/64 w0, A ;+D_n_1 (vorige dutycycle) ACCAH, w0 ;Plaats de nieuwe dutycycle in w0 ACCAU, #7 ;controle op negatieve dutycycle z, Dn ;negatieve DC => DC = minimale DC #DC_MIN, w1 DC_GRENSWAARDE
BUCK_ALGORITME: call WAARDES_VERSCHUIVEN mov ADC_V_IN, w0 mov #V_IN_REF, w1 sub w1, w0, w0 mov w0, E_n mov mov mov clr mac msc mac sftac add mov btst bra mov bra
;wijzig de mode naar de sleepmode
;fout- en dutycyclewaarden worden 1 periode ;doorgeschoven ;bereken gewenste Vbus - gesamplede Vbus ;resultaat is fout E_n
D_n_1, w0 ;bereken regelalgoritme #E_n, w8 #BUCK_COEF_n, w10 A, [w8]+=2, w6, [w10]+=2, w7 ;clear accumulator (=nul) w6*w7, A, [w8]+=2, w6, [w10]+=2, w7 ;+BUCK_COEF_n * E_n w6*w7, A, [w8]+=2, w6, [w10]+=2, w7 ;-BUCK_COEF_n_1 * E_n_1 w6*w7, A, [w8]+=2, w6, [w10]+=2, w7 ;+BUCK_COEF_n_2 * E_n_2 A,#-9 ;vermenigvuldigen met 1/64 w0, A ;+D_n_1 (vorige dutycycle) ACCAH, w0 ;Plaats de nieuwe dutycycle in w0 ACCAU, #7 ;controle op negatieve dutycycle z, Dn ;negatieve DC => DC = minimale DC #DC_MIN, w1 DC_GRENSWAARDE
WAARDES_VERSCHUIVEN: mov MDC, mov w1, mov E_n_1, mov w1, mov E_n, mov w1, return
w1 D_n_1 w1 E_n_2 w1 E_n_1
;fout- en dutycyclewaarden worden 1 periode ;doorgeschoven
Dn: mov cpslt bra mov
#DC_MIN, w1 w1, w0 DC_GRENSWAARDE #DC_MAX, w1
Dries Vromman Dries Rollez
;controleer berekende dutycycle ;als Dn<5% => MDC=5%
Bijlagen
XXII
cpsgt bra mov mov repeat div.u mov bra
w1, DC_GRENSWAARDE w0, #0x0002, #17 w0, w0, ADC_EXIT
DC_GRENSWAARDE: mov w1, mov #0x0002, repeat #17 div.u w1, mov w0, clr E_n_2 clr E_n_1 clr E_n bra ADC_EXIT STOP_PWM: bclr bset bra
PTCON, PORTA, ADC_EXIT
ADC_EXIT: pop.s retfie
w0 MDC w2
;controleer berekende dutycycle ;als Dn>80% => MDC=80% ;dutycycle delen door 2 om gemiddelde waarde ;te bekomen
w2 SEVTCMP
MDC w2
;dutycycle delen door 2 om gemiddelde waarde ;te bekomen
w2 SEVTCMP ;clear alle fouten
#15 #9
;stop de PWM en laat de led branden
;return from interrupt
.end
Dries Vromman Dries Rollez
Bijlagen
XXIII