• Nem Talált Eredményt

TUDOMÁNYOS DIÁKKÖRI DOLGOZAT

N/A
N/A
Protected

Academic year: 2022

Ossza meg "TUDOMÁNYOS DIÁKKÖRI DOLGOZAT"

Copied!
52
0
0

Teljes szövegt

(1)

MISKOLCI EGYETEM

GÉPÉSZMÉRNÖKI ÉS INFORMATIKAI KAR

TUDOMÁNYOS DIÁKKÖRI DOLGOZAT

ÉRINTŐKÉPERNYŐN KONFIGURÁLHATÓ SZINUSZOS VÁLTÓIRÁNYÍTÓ HARDVERES ÉS SZOFTVERES

IMPLEMENTÁLÁSA

KÉSZÍTETTE: Boros Rafael Ruben

VILLAMOSMÉRNÖK HALLGATÓ

KONZULENS: Dr. Bodnár István

egyetemi adjunktus Elektrotechnikai és Elektronikai Intézet

Miskolc, 2018

(2)

Tartalomjegyzék

1. Bevezetés ... 3

2. H-híd és vezérlési módok ... 4

2.1 Váltakozó feszültség előállításának módszere ... 4

2.2 Szinuszos impulzusszélesség-modulációs vezérlés ... 7

2.4 A kiválasztott IGBT ...10

3. H-híd vezérlő áramkörök ... 12

3.1 IGBT meghajtóáramkörök ...12

3.2 Ferrit vasmagos kapcsolóüzemű transzformátor méretezése ...13

3.3 Stabilizált szimmetrikus tápegység ...15

3.4 FOD3120 és HCPL-3120 áramkörök ...16

4. ATmega 2560 mikrovezérlős rendszer ... 20

4.1 AVR mikrovezérlőről általánosan ...20

4.2 SPWM jel előállítása 16-bites időzítővel ...21

4.3 A kapcsolási frekvencia intervalluma ...26

4.4 Generált szinuszértékek szándékos torzítása ...27

4.5 Nextion érintőképernyős HMI ...29

4.6 A kész programkód ...33

5. A kész áramkör mérése, kapcsolási rajz ... 34

6. Befejezés ... 37

Irodalomjegyzék ... 38

1. számú melléklet ... 39

2. számú melléklet ... 40

3. számú melléklet ... 41

4. számú melléklet ... 42

5. számú melléklet ... 43

6. számú melléklet ... 44

(3)

1. Bevezetés

Jelenlegi tudományunk szerint nem tudunk váltakozó feszültséget tárolni. Az energiatárolást és hordozást akkumulátorokkal, telepekkel valósíthatjuk meg, melyek csak egyenfeszültséget tudnak előállítani. A legtöbb villamos fogyasztó viszont szinuszos váltakozó feszültséget igényel. Az egyenfeszültségből előállítható váltakozófeszültség, úgynevezett váltóirányítóval. Célom ezen elektronikus átalakító megalkotása.

A váltóirányító által előállított feszültség jelalakja szinuszos, a frekvenciája század léptékben állítható, amplitúdója pedig százalékos skálán változtatható. Az előbbi paraméterek érintőképernyőn könnyen beállíthatók, így a potenciométerek, nyomógombok elkerülhetők.

A komplex rendszer fő alkotóeleme egy mikrovezérlő, melynek feladata igen összetett. A jelgenerálástól kezdve egészen az érintőképernyő kezeléséig minden feladatot el kell látnia.

A kapcsolóelemek megkövetelik, hogy négyszögjelekkel legyenek vezérelve, így lesznek a legkisebbek a kapcsolási veszteségek. A mikrovezérlő négyszögjeleket előtud állítani, így ezt a feladatot eltudja látni.

Fontos része lesz még a témának az IGBT kapcsolóelemek vezérlése és galvanikus elszigetelése a mikrovezérlőtől. Ehhez hardveresen egy kissé bonyolult rendszert kell megalkotni.

A mikrovezérlőre programkódot kell írni, melyet C nyelven implementálok. Ez a programkód hosszú lett, így csak egyes fontosabb részeit ismertetem.

A váltóirányító kimenetének terhelhetősége, hatásfoka az egyenfeszültség nagyságától függ.

Univerzálisnak tekinthető ez a berendezés a beállítható paraméterei miatt. Nem célom konkrét felhasználási területre méretezni. A kimenetére például köthető ferrit vasmagos transzformátor, így könnyen előtudunk állítani 230 V-os, 50 Hz-es feszültséget.

(4)

2. H-híd és vezérlési módok

Egyenfeszültségből előállítható váltakozó feszültség úgynevezett váltóirányítóval (angolul inverter). Az egyfázisú váltóirányító, melynek ismertebb neve H-híd, négy kapcsolóelemből áll. A négy kapcsolóelem ki-be kapcsolásával állítható elő a váltakozó feszültség.

2.1 Váltakozó feszültség előállításának módszere

A H-híd kapcsolási rajzát a 2.1 ábra szemlélteti, melyen látható az Ug

feszültségforrás, mely egyenfeszültséget táplál. Ezt az Ug egyenfeszültséget alakítja át a négy kapcsolóelem váltakozó feszültséggé, ami lehet bipoláris tranzisztor, IGBT, MOFET, stb. Az IGBT mozaikszó jelentése angolul: Insulated Gate Bipolar Transistor, mely magyarul azt jelenti, hogy szigetelt kapujú bipoláris tranzisztor. A MOSFET mozaikszó jelentése angolul: Metal-Oxide-Semiconductor Field-effect Transistor, mely magyarul egyszerűen csak fém-oxid félvezető térvezérlésű tranzisztor. Az ábrán jelenesetben IGBT kapcsolóelem van feltűntetve, mivel a továbbiakban csak ezekkel foglalkozok.

2.1 ábra: A H-híd kapcsolási rajza

(5)

A négy kapcsolóelemet a G (gate) elektródán kell ki-be kapcsolni, ha térvezérelt elemről van szó, a hagyományos bipoláris tranzisztorokat pedig a B (bázis) lábon kell.

A gate elektróda és az emitter elektróda közé feszültségforrást kell kapcsolni. Ha a threshold feszültséget (Uth) meghaladja a G-E elektróda között a feszültségforrás, akkor az IGBT kinyit, megindul a vezetés. Ha a threshold feszültség alá esik, akkor pedig lezár az IGBT és megszűnik a vezetés.

A kimeneti fogyasztót az Rt terhelő ellenállás szimbolizálja. Ezen a fogyasztón már váltakozó előjelű feszültség fog esni, így váltakozó áram fog rajta átfolyni. Passzív fogyasztókon a feszültség és az áram iránya megegyezik. A 2.2 ábrán és a 2.3 ábrán látható az IGBT elemek ki-be kapcsolásával elért váltakozó feszültség és áram az Rt

fogyasztón.

2.2 ábra: Az első periódus

(6)

2.3 ábra: A második periódus

Látható, hogy az áram és a feszültség iránya megváltozik a kapcsolási állapotoktól függően. Fontos megjegyezni, hogy az IGBT kapcsolóelemeket csak teljesen kinyitott, vagy lezárt állapotban szabad üzemeltetni, mert ekkor a legkevesebb a rajta eldisszipálódott teljesítmény, ekkor melegszik a legkevésbé. Ebből következik, hogy négyszögjelekkel célszerű kapcsolni. A Q1 és Q4 félvezetőt, valamint a Q2 és Q3 félvezetőt mindig egyszerre kell bekapcsolni. Ellenpárhuzamos vezérlést kell alkalmazni, ami azt jelenti, hogy ha pl. Q1 és Q4 nyitva van, akkor Q2 és Q3 zárva. A 2.4 ábra egy szemléltető példát ad arra, hogy adott vezérlési jelek esetén milyen lesz a kimeneti feszültség-idő függvény.

(7)

2.4 ábra: A kapcsolási jelek, és az előállított váltakozó feszültség

Az Ut feszültség előjele váltakozik, így már váltakozó feszültségről beszélünk. A vezérlés 180°-os, mert félperiódus ideig tart a vezetés egy kapcsolóelemen.

2.2 Szinuszos impulzusszélesség-modulációs vezérlés

Az előző 2.1 alfejezetben látható, hogy négyszögjelek vezérlésével a kimeneten is váltakozó négyszögjel jön létre. A legtöbb villamos fogyasztó 50 Hz-es szinuszos váltakozó feszültséget igényel. Mivel az IGBT kapcsolóelemeket csak négyszögjelekkel szabad vezérleni, így szinuszos impulzusszélesség-modulációt (angolul SPWM: Sine Pulse Width Modulation) kell alkalmazni. Ez a módszer azt eredményezi, hogy a vezérlési jelnek az alapharmonikusa szinuszos lesz. A 2.5 ábrán látható egy előállított félperiódus, melyet mikrovezérlő valósított meg.

(8)

2.5 ábra: Szinusz alapharmonikust tartalmazó négyszögjelek

A képen látható, hogy a négyszögjel kitöltési tényezője folyamatosan nő 0 %-ról egészen 100 %-ig, majd vissza csökken 0%-ig. Ilyen jel előállítható analóg és digitális áramkörökkel egyaránt. Analóg és digitális technika előállítási módszerek között igen nagy az eltérés. Analóg technikával általában úgy lehet előállítani SPWM-el jelet, hogy műveleti erősítős kapcsolásokkal előállítunk tiszta szinuszos jelet és ezt egy általában háromszögjellel metsszük, összehasonlítunk, előjelet váltunk, összegezzük, stb. A szinusz alapjel frekvenciája egyenlő az alapharmonikus frekvenciájával, a háromszögjel frekvenciája pedig a kapcsolási frekvenciát adja meg, valamint minél nagyobb ez a frekvencia, annál több lépésben állítja elő a félperiódust. A több lépés nagyobb pontosságot eredményez. A háromszögjel frekvenciája sokkal nagyobb, mint a szinusz frekvenciája.

A digitális áramköröket segítségül hívva modernebb, kisebb helyigényű áramkörök valósítható meg. Mikrovezérlős rendszer segítségével nagy pontosságú és frekvenciájú jelgenerálást érhetünk el, viszont külön program megírását igényli. Ez egy nagy témakört ölel fel, amiről később fogok beszélni a 4. fejezetben.

A 2.6 ábra az SPWM módszerével előállított váltakozó Ut kimeneti feszültség- időfüggvényt jelenít meg. Ekkor az alapharmonikus szinuszos lesz, amit a piros görbe jelöl.

(9)

2.6 ábra: Váltakozó feszültség és az alapharmonikus

Az ábrán látott kimeneti feszültség a kényes, szinuszos feszültséget igénylő fogyasztók számára alkalmazhatatlan ebben a formában. Ráadásul az Ug

feszültséggenerátor általában akkumulátor, melyek 12 V-osak, a fogyasztók viszont 230 V váltakozó feszültséget igényelnek. Így transzformátort kell alkalmazni a kimeneten a feszültség feltranszformálása miatt. Kizárólag ferrit vasmagos transzformátor jöhet szóba, mert a lágyvasas transzformátor vasmagja nem mágnesezhető át nagyobb frekvenciákon. A ferrit vasmag több száz kHz frekvencián is átmágnesezhető. A kapcsolási frekvencia növelésével a transzformátor mérete csökkenthető, így sokkal jobban hordozhatóbb lesz a berendezés, kisebb lesz a mérete, súlya. A transzformátor az induktivitásai miatt az áramot nagymértékben simítja a szekunder kimenetén, így a feszültség is simított lesz. A ferrit vasmagos transzformátor induktivitása nem nagymértékű, ezért szükséges még további induktivitást a kimenettel sorba kötni, mely szintén ferrit vasmagos kivitelben készülhet el.

Érdemes megemlíteni, hogy az SPWM módszerrel előállított szinusz tartalmaz felharmonikusokat az alapharmonikuson kívül. A kimeneten alkalmazható ennek kiküszöbölésére valamilyen passzív szűrő, mely segíti visszaállítani a tiszta alapharmonikust.

(10)

2.4 A kiválasztott IGBT

Az általam választott IGBT típusa FGA25N120ANTD. Ennek főbb paramétereit a 2.1 táblázatban részletezem. Lábkiosztása a következő: 1-Gate, 2-Collector, 3- Emitter.

2.1 táblázat: FGA25N120ANTD IGBT főbb paraméterei [1]

Jelölés Paraméter Min. Tipikus Max. Mértékegység

UCES C-E feszültség 1.200 V

UGES G-E feszültség ±20 V

IC C áram (TC = 100 °C) 25 A

Uth G-E threshold feszültség 3,5 5,5 7,5 V

Usat C-E szaturációs feszültség 2,65 V

Az IGBT előnye, hogy robosztus. A MOSFET-ek és a bipoláris tranzisztorok előnyeit ötvözi. UCES feszültsége magasabb a MOSFET társainál, viszont az IC kollektor árama kisebb, mint a MOSFET ID drain árama. A magasUCES feszültség lehetővé teszi, hogy még egy hídág bővítésével háromfázisú aszinkronmotor-hajtást valósítson meg, mert ott általában 400 V-os effektív vonali feszültség csúcsértéke van a közbenső egyenáramú körben (~565 V).

Az IGBT adatlapja szerint a szaturációs feszültség 2,65 V, bár méréseim alapján 0,74 V körüli értékek fordultak elő. Ez a feszültség teljesen kinyitott IGBT esetén a C- E láb között mérhető. Az elfűtött teljesítmény a félvezetőn ettől a feszültségtől nagymértékben függ, ez alapján is méretezendő a hűtőborda.

Az IGBT tartalmaz beépített védődiódát az emitter és collektor lába között, bár a megfelelő védelem érdekében célszerű külön beépíteni a 2.7 ábra alapján.

Védődiódákra azért van szükség, mert amikor az IGBT kapcsolóelemeket kikapcsoljuk, a fogyasztó miatt az emitter és kollektor láb között tízezres nagyságrendű feszültség is indukálódhat. Ez akkor következik be, amikor a fogyasztó induktív, vagy kapacitív jellegű. Gyakorlatban ritka a kapacitív fogyasztó a váltóirányító kimenetén, ennélfogva induktív fogyasztókról érdemes a továbbiakban beszélni.

(11)

2.7 ábra: IGBT védődiódákkal

A kimeneti fogyasztó transzformátor, így az induktív jellegű. A bekapcsolás során energiát tárol mágneses mező formájában, kikapcsolás után ez a fennmaradó energia törvényszerűen akár ívkisülés formájában is elfogy a nagy 𝑑𝑢

𝑑𝑡 miatt. Ennek káros hatása lehet a transzformátor menetzárlata, vagy az IGBT átütése, tönkremenetele.

A védődiódáknak célszerű nagysebességűnek lenni, így leginkább a Schottky- dióda jöhet szóba. Használható még Zener-dióda is, amely jól alkalmazkodik túlfeszültség-védelemhez. Schottky-diódák kerültek kiválasztásra, melyek TO-220 tokozásban készültek el. Egy tokozásban két dióda található, melynek katódjai közösek.

Sajnos nem alkalmas egy tokozott elem két IGBT védelmére, négy darab szükséges belőlük. Rossz, használt számítógép tápegységekből kiforrasztott diódákat építettem be, melynek egyenként másak a típusai. Nyitóirányú feszültségük 150-200 mV közé esik mérések alapján. A TO-220 tokozás azért szükséges, mert ezek a diódák 40 A áramot is képesek vezetni, bár ekkor már hűtést igényelnek. Védelmi célokra hűtőborda nélkül is megfelelő hőmérsékleten működik. Az 1. számú mellékletben látható beforrasztva a négy IGBT a védődiódákkal, hűtőbordákkal, ventilátorral, valamint a négy kivezetés megjelölve.

(12)

3. H-híd vezérlő áramkörök

A H-hídban található IGBT elemeket az erre a feladatra tervezett áramkörökkel kell ki-be kapcsolni. Célom olyan váltóirányító tervezése, melyben az Ug generátor (akkumulátor) elszigetelődik a külön segédüzemű tápfeszültségtől, tehát nem maga az Ug generátor táplálja a vezérlőáramköröket. Ezt úgy kell implementálni, hogy az IGBT elemeket meghajtó áramkör galvanikusan el legyen szigetelve az 5 V-os mikrovezérlős rendszertől. Így a váltóirányító inkább laboratóriumi körülményekhez alkalmazkodik jobban, mint hordozható, felhasználható készülékhez. Ekkor külön tápegység szükséges a vezérlőáramkörhöz. Használható azonban felhasználási célokra is, ekkor egy akkumulátorról is képes működni a rendszer, bár a mikrovezérlős rendszer és a negatív sín nem lesz galvanikusan elválasztva.

3.1 IGBT meghajtóáramkörök

Mint azt korábban a 2.1 pontban említettem, az IGBT akkor nyit ki, amikor nagyobb feszültséget kapcsolunk a G-E láb közé, mint a threshold feszültség.

Emlékeztetőül az FGA25N120ANTD IGBT esetén ez maximum 7,5 V. Tehát ezt a feszültséget túl kell lépni. Minél jobban túl lépjük, annál több áramot képes vezetni az IGBT, de a maximális határ ±20 V lehet. Ha kikapcsoláskor nem 0 V-ot alkalmazunk, hanem annál negatívabb feszültséget, akkor gyorsabban ki tudjuk üríteni a G-E láb között lévő kapacitást, tehát hamarabb lezár az IGBT, így kevesebb a kapcsolási idő, kevesebb a kapcsolási veszteség.

Adódik egy nagy probléma, hogy az egyes IGBT elemek emitter lábai nem közös potenciálon vannak, kivéve a Q2 és Q4 elemet, mert ott közös. Tehát létre kell hozni olyan szimmetrikus tápegységet, mely minimum három különböző földpotenciállal rendelkezik, bár a jobb zavarszűrés érdekében a négy jobban megfelel.

Az UGES feszültséget ±12 V-nak választom meg, így négy ±12 V-os szimmetrikus, stabilizált feszültségforrásra van igény, ekkor jöhet szóba ismételten a ferrit vasmagos transzformátor, mely kapcsolóüzemű tápegység szerepét tölti be.

(13)

3.2 Ferrit vasmagos kapcsolóüzemű transzformátor méretezése

Ami elsőnek kikötést igényel, az a transzformátor primer tekercselésére jutó feszültség nagysága. A szekunder oldalon diszkrét elemeken keresztül stabil ±12 V-ot szükséges előállítani. Érdemes 78xx és 79xx típusú feszültségszabályzó integrált áramköröket használni, melynek bemenetére legalább 2,5 V-al nagyobb feszültséget kell kapcsolni, mint a kimenetén várandó. 7812-es IC (angol mozaikszó: Integrated Circuit rövidítése) + 12 V-ra szabályoz, a 7912 pedig -12 V-ra. Így a bemenő feszültség az IC-ken legalább ±14,5 V kell legyen. Továbbá a szekunder tekercselésekre Graetz- egyenirányítóhidat szükséges kötni, ezen is feszültségesés jön létre, mely körülbelül 1,2V. Ezeket figyelembe véve a szekunderoldalon minimum 12 V + 1,2 V + 2,5 V = 15,7 V feszültségnek kell létrejönni. Mivel szimmetrikus tápegységre van szükség, ezért a negatív feszültségnek -15,7 V-nál kevesebbnek kell lennie. A transzformátor áttétele még egy fontos kérdés a primer oldali feszültség megválasztásához, ezt egyszerűség kedvéért 1-nek választom. Így a primer oldalon tehát 15,7 V-nak kell lenni minimum, de a veszteségek, a hatásfok a transzformátoron ezt nagyobb értéknek követeli meg.

Egyszerűség kedvéért érdemes szabályozható tápegységet kapcsolni a primer oldalra.

A transzformátor méretezéséhez ismerni kell a vasmag effektív keresztmetszetét.

Az ETD 39 vasmag esetén ez adott, mely A = 123 mm2 = 1,23 cm2. Ferrit vasmagok esetén a megengedett indukció tapasztalat szerint legfeljebb 300 mT körüli értéket mutat. Érdemesebb alacsonyabb indukcióra méretezni, így kevésbé telítődik a vasmag, nem áll fent a veszélye a túltelítődésnek, a túlzott felesleges és káros melegedésnek.

Legfontosabb paraméter a kapcsolási frekvencia, mely minél nagyobb, annál kevesebb menetszám, kisebb vasmagkeresztmetszet szükséges. Legyen 20 kHz, mert a primer tekercset N-csatornás MOSFET fogja kapcsolgatni, és azt egy mikrovezérlő fogja ki-be kapcsolni. Sajnos a végtelenségig nem növelhető a frekvencia, a mikrovezérlő és a MOSFET határt szab erre. A 2.1 képlettel meghatározható az, hogy mennyi menet szükséges 1 V feszültséghez.

(14)

𝑁𝑈 = 104

4,4 ∙ 𝐵 ∙ 𝐴 ∙ 𝑓 (2.1)

Behelyettesítve a képletbe: 𝑁𝑈 = 104

4,4∙0,2∙1,23∙20000 = 0,462. A primer oldalon 16 V közeli feszültségérték van, tehát az NU értékét 16-al megszorozva megkapjuk a primer oldali menetszámot: 𝑁𝑝𝑟𝑖𝑚𝑒𝑟 = 𝑁𝑈∙ 16 = 0,462 ∙ 16 = 7,39. Ha nem egész érték a végeredmény, akkor feljebb célszerű kerekíteni, így kevesebb lesz az indukció a vasmagban, tehát nyolc menet szükséges a primer oldalon. A szekunder oldalon is megegyezik a menetszám, mivel a transzformátor áttétele 1, így Nszekunder = 8.

A 3.1 ábra szerint kell kialakítani a transzformátor tekercseléseit, a menetszámok fel vannak tüntetve minden egyes tekercshez. Nagyon fontos a tekercselési irány, ezt külön egy kör jelöli. Minden tekercset azonos irányban kell felcsévélni, így lesznek helyesek a feszültség irányok.

3.1 ábra: Szimmetrikus tápegység transzformátor

(15)

A transzformátor primer tekercselését Atmega328-PU mikrovezérlő kapcsolgatja IRLZ44N MOSFET-tel.

A vasmag, a csévetest és a készülőben lévő tekercselés látható a 3.2 ábrán. A rézhuzal átmérője 0,4 mm, mely 2,5 A/mm2 áramsűrűség mellett 320 mA körüli áramot képes vezetni elfogadható hőmérsékleten. Mérések alapján körülbelül 230 mA áram folyik a primer tekercsen.

3.2 ábra: Szimmetrikus tápegység transzformátor tekercselése

3.3 Stabilizált szimmetrikus tápegység

A transzformátor szekunder oldala középmegcsapolásos kivitelű, így lehetőség van szimmetrikus tápegység készítésére egyszerűen. A 3.3 ábra általános kapcsolási rajzot mutat, amin az egyenirányító-híd, feszültségkorlátozó ellenállás, feszültségstabilizátor, szűrő és pufferkondenzátorok találhatók. A Graetz-híd 6 A áramot képes egyenirányítani megfelelő melegedés mellet. A feszültségkorlátozó ellenállás 2,2 kΩ értékű, vele párhuzamosan kötött elektrolitpufferkondenzátor 10 µF értékű. A feszültségstabilizátorok LM7812 és LM7912 típusúak. Ezeknek a kimenetén 100 nF értékű kerámiakondenzátor és 100 µF kapacitású elektrolitkondenzátor található.

A 3.3 ábrán mutatott kapcsolásból négy ugyanilyet kell kivitelezni.

(16)

Az így létrejövő szimmetrikus feszültséget a következőkben bemutatott FOD3120, vagy HCPL-3120 típusú áramkörök igénylik.

3.3 ábra: Szimmetrikus stabilizált tápegység

Az elkészült modult ábrázoló fénykép, melyen megtalálható a transzformátor és az elektronika, a mikrovezérlő, a 2. számú mellékletben látható.

3.4 FOD3120 és HCPL-3120 áramkörök

Lehetőség van rá, hogy olyan áramköröket használjunk fel, melynek bemenete optocsatolóval rendelkezik és a kimenete alkalmas MOSFET, vagy IGBT vezérlésére.

Erre alkalmas a FOD3120, vagy alternatívaként HCPL-3120 áramkörök. A FOD3120 áramkör funkcióblokkját láthatjuk a 3.4 ábrán, a HCPL-3120 áramköréé szintén nagyon hasonló, csak a push-pull kimenet kapcsolóelemei tranzisztor és FET.

3.4 ábra: FOD3120 áramkör funkcióblokkja [2]

Az alábbiakban a lábkiosztást sorolom fel:

 1 – NC: angol mozaikszó: Not Connected, mely azt jelenti, hogy nem csatlakozik semmihez, nem kell rá kötni semmit.

(17)

 2 – Anode: az optocsatoló LED-jének az anód lába

 3 – Cathode: az optocsatoló LED-jének a katód lába

 5 – Vss: ide az IGBT G-E lábai közé kötendő feszültség negatívabb pontját kell bekötni, esetemben a -12 V-ot.

 6 és 7 – VO1 ésVO2: a meghajtóáramkör kimenete, az IGBT G lábára kell kötni.

Itt jelenik meg a +12 V vagy a -12 V.

 8 – VDD: ide az IGBT G-E lábai közé kötendő feszültség pozitívabb pontját kell bekötni, esetemben a +12 V-ot.

Az áramkör adatlapja szerint 1414 V a megengedett maximális feszültség, amit biztonságosan el tud szigetelni az optocsatoló bementétől. Legfeljebb 50 kHz kapcsolási frekvenciára képes az áramkör, ami esetemben kielégítő. A HCPL-3120 áramkör paraméterei hasonlóak, lábkiosztása megegyezik.

Az áramkör kimenetét a bemenetén lévő LED ki-be kapcsolásával lehet megváltoztatni. Amikor a LED-et bekapcsoljuk, akkor az áramkör kimenete a pozitívabb feszültséget kapcsolja az IGBT-re. A LED kikapcsolása esetén a negatívabb feszültséget vezérli ki. A 3.5 ábrán egy tesztelési folyamat látható.

3.5 ábra: FOD3120 áramkör működésének vizsgálata

(18)

Az oszcilloszkóp 1-es csatornájára a LED-re jutó feszültséget, 2-es csatornájára pedig az áramkör kimenetét kötöttem. A LED-re 470 ohm értékű ellenálláson keresztül 5 V-os négyszögjelek jutnak, melyet mikrovezérlő állít elő, a kimeneten ±12 V van jelen. Ekkor az időskála 10 µs-ra volt állítva. Látható, hogy a bemeneti változást igen gyorsan követi a kimenet, szinte fázisban vannak.

Tapasztalatom azt mutatja, hogy ezen áramkörök megvásárlásakor nem szabad spórolni, külföldről berendelni őket. Húsz darabot vásároltam, melyből hat működött. A nem működő áramköröket tesztelve a 3.6 ábra és a 3.7 ábra szerinti feszültség- időfüggvények jöttek létre. Tehát a minőségen nem szabad spórolni, mindig meg kell bizonyosodni a termékek minőségéről, eredetiségéről, mert később nagy hibákat okozhat, akár egy projekt sikertelenségét is okozhatja.

3.6 ábra: Hibás FOD3120 áramkör működésének vizsgálata

A 2.12 ábrán a kimenet szépen követi a bemenetet bekapcsolási fázisban, de kikapcsoláskor a kimenet exponenciálisan konvergál a negatívabb feszültség felé. Ez a hosszú kikapcsolási idő működésképtelenné teszi a vezérlést, vagy zavart okoz.

A 2.13 ábra azt mutatja, hogy bekapcsolás után a kimenet használhatatlan, csak zajt generál.

(19)

3.7 ábra: Működésképtelen FOD3120 áramkör működésének vizsgálata Végezetül HCPL-3120-as áramkörök kerültek beépítésre, melyek hibátlanul működnek. A projekt idejét ezen áramkörök beszerzése nagymértékben növelte.

(20)

4. ATmega 2560 mikrovezérlős rendszer

Az SPWM jel előállításához mikrovezérlőt alkalmazok. Feladatai a következők:

SPWM jelek előállítása a H-híd számára, érintőképernyő meghajtása, melyről adatot kér be a felhasználótól, és a paraméterek kiírása. Hat menüpont jön létre a kijelző kezdőképernyőjén: kimenetek kezelése, frekvencia beállítása, amplitúdó beállítása, felbontás beállítása, korrekció beállítása, paraméterek megtekintése.

4.1 AVR mikrovezérlőről általánosan

A mikrovezérlő, vagy mikrokontroller egy integrált áramkör, mely elektronikus úton programozható. Legfőbb részei: Központi Vezérlő Egység (CPU), memóriák, Aritmetikai Logikai Egység (ALU), EEPROM (háttértárként memória), flash memória (itt tárolódik a végrehajtandó program), perifériák (I2C, Soros port kommunikáció, időzítők, A/D átalakítók, stb).

A mikrovezérlő legkedvezőbb tulajdonsága, hogy a flash memóriát akár tízezerszer is újra programozhatjuk, így elég sokszor módosíthatjuk a programunkat, és kipróbálhatjuk.

A megvalósítandó célokra az Atmel ATmega 2560 mikrovezérlő alkalmazkodik gazdaságosan. Az összetett rendszer megkívánja a hosszabb programírást, nagyobb memória méretű áramköröket, mivel sok globális változót kell deklarálni a programírásakor. Ez a dinamikus memóriát nagymértékben fogyasztja. Az ATmega 2560-as áramkörnek 8192 bájt méretű a dinamikus memóriája, ami alkalmas a kitűzött célokhoz. Nagyrészét majd a szinusz értékek tárolására szolgáló tömbök fogják lefoglalni, melyből két darab lesz deklarálva.

Ez a mikrovezérlő önmagában külső elemek nélkül nem működőképes.

Kvarcokat, kondenzátorokat, soros port – USB illesztőt, feszültség stabilizátort, csatlakozókat, stb. igényel. Az ATmega 2560 IC TQFP-100 tokozású, melyet DIP tokozásúvá egyszerűen átalakíthatjuk a 4.1 ábra szerint. Így ebbe a panelba tüskesort beforrasztva egy forrasztható próbapanelba beillesztve hozzárendelhetjük a további szükséges diszkrét elemeket. A TQFP-100 tokozású áramköröknek 0,5 mm lábtávolsága

(21)

van, ezért óvatos beforrasztást igényel. Az elkészült panelt, melyen a mikrovezérlő és a vezérlő áramkörök vannak, a 3. számú mellékletben látható fénykép ábrázolja.

4.1 ábra: ATmega2560 mikrovezérlő

4.2 SPWM jel előállítása 16-bites időzítővel

Az ATmega2560 mikrovezérlő tartalmaz kettő 8-bites és négy 16-bites időzítő áramkört. A 16-bites időzítőkkel sokkal nagyobb pontosság érhető el, így a 8-bites időzítő használatát mellőzöm. A négy darab 16-bites időzítőből csak egyre van szükség.

A négy időzítőnek külön neve van, melyek a következők: Timer/Counter 1, 3, 4, és 5.

Ezek közül a Timer/Counter 1-et fogom felhasználni.

Legegyszerűbb esetben a 16-bites számláló 0-tól 65.535-ig felszámol, a számolt érték a TCNT (Timer/Counter) regiszterben található. A számolási sebesség a mikrovezérlő órajelétől, mely jelen esetben 16 MHz, és ha be van kapcsolva, akkor a frekvenciaosztó beállításától függ. Amint a számláló elérte a 65.535 értéket, akkor túlcsordul, és elölről kezdi a számolást. Túlcsorduláskor a TIFR1 (Timer Interrupt Flag Register) regiszterben található TOV1 (Timer/Counter Overflow) flag-et bekapcsolja.

Ekkor megszakítás jön létre és a mikrovezérlő az ISR(TIMER1_OVF_vect) vektorban megírt utasításokat végrehajtja, TOV1 flag-et kikapcsolja. Ezek után a folyamat elölről kezdődik. Az előbb ismertetett módszerrel pontatlan frekvenciájú és 50 % kitöltési tényezőjű négyszögjelet lehet előállítani.

Számos PWM előállítási módszert állíthatunk be. A mód beállításokat a TCCR1A és TCCR1B regiszterek egyes értékének átírásával érhetjük el. Az SPWM jel

(22)

előállításához a Fast PWM (gyors impulzusszélesség-moduláció) mód aktiválása szükséges. A Fast PWM móddal előállítható jelalakot a 4.2 ábra szemlélteti.

4.2 ábra: Fast PWM mód

Fast PWM módban a számláló nem 65.535-ig számol fel, hanem meghatározott top (angolul: felső) értékig, ami legfeljebb 65.535 lehet. TOV flag beállítása akkor következik be, amikor a számláló eléri a top értéket. A top érték meghatározza a kapcsolási frekvenciát, és a periódusidő nagyságát. top értékét az ICR (Input Capture Register) regiszter tárolja. A kitöltési tényező nagyságát pedig az OCR (Output Compare Register) regiszter értéke állítja be. Ebből a regiszterből hármat is aktiválhatunk, melyek egymástól függetlenül működnek. Minden ilyen regiszterhez tartozik egy kimenet is a mikrovezérlőhöz, ezek az OC (Output Compare pin) lábak.

Ezekkel tudjuk az IGBT meghajtóáramköröket kapcsolni. Az OCR regiszter értéke és a TCNT regiszter értéke össze van hasonlítva folyamatosan. Ha a TCNT értéke eléri a beállított OCR értéket, akkor a kimenet kikapcsol az OC lábon nem-invertáló módban.

Két kimenet szükséges a H-híd vezérléséhez, így aktiválásra kerül az OCR1A és OCR1B regiszter. Minden egyes periódusban OCR1A és OCR1B értékét módosíthatjuk, így minden periódusnak a nagysága változhat.

A megírt programkód alapján a mikrovezérlő a következő struktúrát alkalmazza, melynek folyamatát sorrendben felsorolom:

 Az alábbi képlettel kiszámolja a periódus nagyságát, amit a top értékével is egyenlővé tesz: 𝑝𝑒𝑟𝑖𝑜𝑑𝑢𝑠 = 16.000.000

𝑓𝑟𝑒𝑘𝑣𝑒𝑛𝑐𝑖𝑎∙𝑓𝑒𝑙𝑏𝑜𝑛𝑡𝑎𝑠 . A frekvencia itt az

(23)

alapharmonikus frekvenciát jelöli. top értékét az ICR1 regiszterben kell eltárolni, tehát ICR1 = periodus. A kezdőértékek: frekvencia = 50 Hz, felbontás = 1024. Például, ha frekvencia = 50 Hz, felbontas = 512, akkor a periodus = 625. Ügyelni kell, hogy felbontas értéke nem lehet nagyobb, mint 65.535.

 Két tömbben eltárolja a szinusz függvénnyel legenerált értékeket, melyek bizonyos határok között vannak (0-180°-ig). Ezeket a dimenzió nélküli számokat megszorozva az amplitudo változó értékével változtatható lesz a kitöltési tényező, így a fogyasztóra jutó feszültség amplitúdó nagysága is,

 Amikor az értékgenerálás lezajlott, elindul a kiolvasás a szinusz tömbökből. A kiolvasás lépéseinek számát a felbontas értéke adja. Minden megszakítási folyamatban (amikor TOV aktiválódik) az ISR(TIMER1_OVF_vect) nevezetű vektorban megírt utasítások végbe mennek. Ezen utasítások száma csekély, csak az OCR1A és OCR1B érékét változtatja meg, minden egyes periódusban. Minél nagyobbak az OCR értékek, annál hosszabb ideig van bekapcsolva kimenet, tehát annál nagyobb a kitöltési tényező. Ezek az OCR értékek a szinusz értékek miatt először 0-ról növekednek egészen a periódus értékéig, majd visszacsökken 0-ra.

 Ha az érintőképrenyőn megváltoztatunk egy paramétert, akkor a szinusz tömbök értékeinek az újragenerálása játszódik le, majd ezen értékeket olvassa ki a későbbiekben.

Tömören, nagyvonalakban így állítható elő szinusz alapharmonikust tartalmazó négyszögjelsorozat. A programkódnak a szinusz értékeket generáló részletét kiemelem a 4.3 ábrán. Fontos, hogy a tömb méretének a növelése, így a felbontás nagysága nagymértékben telíti a dinamikus memóriát. Legfeljebb 10-bites felbontást lehet beállítani, ettől feljebb már a hardver adottságai nem teszi lehetővé a felbontás növelését. Egy teljes szinusz periódus a felbontásban megadott lépést igényel. Két félperiódus generálódik 0-tól 180°-ig, ehhez a felbontás lépéseinek a fele szükséges

(24)

(max. 512). Ekkor csak pozitív értékek fognak létezni. Az egyik tömbben 0 érték tárolódik egészen a felbontás számának a feléig, míg a másikban a generált értékek, mert soha nem lehet két kimenet bekapcsolva egyszerre. Mindegyik kimenet legfeljebb félperiódusig van kapcsolgatva, ekkor a másik kimenet kikapcsolt ekkor egészen végig OCR értékek = 0).

4.3 ábra: „ujrageneralas” függvény

A regiszterek beállítása a következő lesz, melyeket kettes számrendszerben érdemes beállítani az egyszerűség kevéért:

 TCCR1A: 0b10100010; nem-invertáló Fast PWM mód beállítása,

 TCCR1B: 0b00011001; frekvenciaosztó beállítása, valamint Fast PWM mód beállítása

 TIMSK1: 0b00000001; ezzel engedélyezzük a TOV1 Flag használatát

 DDRB = 0b11100000, a 24, 25, 26-os lábak kimenetként vannak beállítva a D porton.

(25)

A kész struktúrával az alábbi feszültség-időfüggvény jön létre a két digitális kimeneten (4.4 ábra), melyet oszcilloszkóppal mértem. Ezen OC kimenetekre 10 uF-os kondenzátort kötve az alábbi feszültség-időfüggvény alakul (4.5 ábra).

4.4 ábra: A két OC kimenet feszültség-időfüggvénye

4.5 ábra: A két OC kimenet feszültség-időfüggvénye simítva

(26)

A kondenzátorral simított feszültségek frekvenciája megegyezik az alapharmonikus frekvenciával. A két feszültség-időfüggvény a vezérlőáramkörök benemenetére kapcsolódik. A kondenzátoros simítás csak a mérés elvégzéséig, szemléltetés kedvéért van jelen az áramkörben, nem alkalmazandó a kimenetekre.

A generált értékek a két szinusztömbben helyezkednek el. Soros porton keresztül kinyerve a mikrovezérlő memóriájából a 4.6 ábra szerinti értékek jöttek létre. Ezeket az értékeket excel táblázatba helyeztem, melyekhez az indexelést is hozzá rendeltem. A tömb indexelése a C programozás esetében 0-tól indul, mely eltér a normál logikától, mely 1-től indul. Az ábra baloldalán csak 28. indexeléshez láthatunk értékeket, a grafikonon látható, hogy 1.024-ig terjed ez az érték, ezt az összes értéket nem tudom szemléltetni a terjedelme miatt.

4.6 ábra: A két tömbben tárolt értékek grafikonon ábrázolva

4.3 A kapcsolási frekvencia intervalluma

Az alapharmonikus frekvencia és a felbontás változtatásával a kapcsolási frekvencia nagymértékben változik. Ez a jelenség megnehezíti a méretezését a kimenetre kötött transzformátornak. A szükséges vasmag keresztmetszetet és a menetszámokat ez nagymértékben befolyásolja a kapcsolási frekvencia nagysága. Minél kisebb, annál több menetszám és vasmag keresztmetszet szükséges. Ezért meg kell

(27)

határozni egy megengedhető legkisebb értéket. Az IGBT viszont behatárolja a kapcsolási frekvencia intervallumának felső értékét, mivel a kapcsolási frekvenciának növekedésével a disszipált teljesítmény is nő. Ezen kívül a meghajtóáramkörök is legfeljebb 50 kHz kapcsolási frekvencián képesek működni. A disszipált teljesítmény az IGBT-n a kollektor áramtól függ nagymértékben, mely, ha csökken, akkor a kapcsolási frekvencia megnövelhető.

Alsóhatárnak 1 kHz-et választok (így viszonylag kevés menetszám szükséges a transzformátorhoz), felsőhatárnak pedig 50 kHz-et. Ez azt jelenti, hogy periodus változó értéke legfeljebb 16.000, legkevesebb 320 lehet 16 MHz-es órajel esetén. Ennek az intervallumnak egyrésze sajnos a hallható hangtartományban van (20 Hz – 20 kHz), így a transzformátor által kibocsájtott hang zavarhatja az emberi fület.

Tehát úgy kell megírni a programot a mikrovezérlőre, hogy a felhasználó által megadott paramétereket elutasítsa, ha a kapcsolási frekvencia az intervallumon kívülre esik. Továbbá arra is ügyelni kell, hogy beállíthatóak olyan értékek, amivel elérjük, hogy top értéke nagyobb lesz, mint 65.535 (0xFFFF), így a számláló túlcsordul, a mikrovezérlő kifagy, erre is védelmet kell megírni.

4.4 Generált szinuszértékek szándékos torzítása

A kész váltóirányítóval előállított váltakozó feszültségre lágyvasas transzformátort kötöttem. Ha a váltóirányítóból aszinkronmotor-hajtást szeretnék építeni később, akkor a lágyvasas indukciós motorra jutó áramoknak nem lehet nagy nullátmeneti ideje, mert a nyomaték sokkal jobban lüktetőbbé válik, mint a tiszta szinuszos áram esetén. A mérés alapján, melyet a 4.7 ábra szemléltet, látható, hogy igen sokáig nem jelenik meg feszültség a nullátmenet után a transzformátor primer tekercselésén. Ez abból adódik, hogy a lágyvasat nem lehet nagy frekvencián átmágnesezni. Erre megoldás lehet, hogy a szinusz értékek generálásakor a tömb 0.

indexelésétől beállítható indexszámig egy konstanst hozzáadunk az eredeti értékhez, így nagyobb lesz az átlagfeszültség a transzformátor primer tekercselésén a nullátmenettől kezdve. Erre példát mutat a 4.8 ábra, melyen a 0. indexeléstől 29. indexszámig 410 értékkel van növelve az eredeti érték, ahol 128 lépés a felbontás, és a periodus változó értéke 2.500. Az egyik kimenet nincs simítva kondenzátorral, a másik igen az

(28)

ábrázolhatóság miatt. Az ábrán látható, hogy a szinusz félhullám formája eltolódott kissé trapézformájúvá. Így a lágyvasas transzformátor jobban tudja követni a szinusz félhullám szélén lévő időben rövid impulzusokat.

4.7 ábra: Lágyvasas transzformátor primer oldali váltakozófeszültsége

4.8 ábra: Alkalmazott korrekció

(29)

4.5 Nextion érintőképernyős HMI

A Nextion HMI (Human-Machine Interface) egy mikrovezérlő alapú érintőképernyős modul. Lehetővé teszi, hogy TTL soros porton keresztül kommunikáljunk a mikrovezérlővel, így beállíthatunk, kinyerhetünk paramétereket.

Ennek a programozása a Nextion Editor nevű programmal történik. Nyomógombokat, szövegeket, számokat, képeket és egyebeket helyezhetünk el a kijelzőn. Ezeknek mind- mind létezik azonosítója, melyet, ha megérintünk az érintőképernyőn, akkor elküldi a mikrovezérlő felé annak az objektumhoz rendelt hexadecimális címet, így tudjuk, hogy mit szeretne a felhasználó. Több oldalt is létre lehet hozni, ennélfogva nagy kiterjedelmű szoftver valósítható meg. Felprogramozása úgy történik, hogy microSD memóriakártyára rá kell másolni egy fordító által előállított „.tft” kiterjesztésű fájlt, majd be kell helyezni a foglalatba a memóriát, így a memóriakártyáról a HMI a flash memóriájába másolja a programot.

A kijelzőről az alábbi paraméterek módosíthatóak: kimenetek ki-be kapcsolása, alapharmonikus frekvencia, amplitúdó, felbontás, korrekció. A főmenüben kiválaszthatóak a beállítási lehetőségek (4.9 ábra).

4.9 ábra: Főmenü első és második oldala

A kimenet kezelése menüpontban ki-be kapcsolható a mikrovezérlő két kimenete, melyek a H-híd vezérlését végzik (4.10 ábra).

(30)

4.10 ábra: Kimenetek kezelése

A frekvencia beállítsa menüpontban egész és század léptékben változtatható az alapharmonikus frekvencia (4.11 ábra).

4.11 ábra: Frekvencia beállítása

Az amplitúdó beállítása menüpontban százalékos értékben állítható be az amplitúdó (4.12 ábra).

(31)

4.12 ábra: Amplitúdó beállítása

A felbontás beállítása a 4.13 ábra szerint történik, ahol 32-től 1.024-ig állíthatjuk be egy periódus hosszát indexszámban kifejezve.

4.13 ábra: Felbontás beállítása

A korrekciót, mely a generált szinuszértékek szándékos torzítását eredményezi, a 4.14 ábrán látottak alapján konfigurálható. A beállítás után az újragenerálás gombra szükséges koppintani.

(32)

4.14 ábra: Korrekció beállítása

A korrekció beállítás menüpontjának programozását a Nextion Editor programban az alábbiak alapján kell grafikusan megszerkeszteni (4.15 ábra). Az objektumok azonosítója a bal felső sarokban látható, melyekkel, ha utasításokat szeretnénk végrehajtani, akkor a mikrovezérlőre írt programban hivatkozni kell rá, és a szükséges függvényeket meghívni. A színek, méretek, betűtípusok, mind-mind változtathatóak. Élénk színek helyett kontrasztosabb felületet állítottam be.

4.15 ábra: Grafikai felület programozása

(33)

A kapcsolási frekvencia és a periodus nagysága lekérdezhető a paraméterek menüpontban (4.16 ábra).

4.16 ábra: Paraméterek menüpont

4.6 A kész programkód

Az elkészült programkódot a 6. számú mellékletben csatolom. A programkódban megtalálható az IGBT vezérlő program, érintőképernyőt vezérlő program, biztonsági feltételeket kielégítő logikai kapcsolatok, minden, ami szükséges a kész áramkörhöz. A Nextion HMI-hez készült függvénykönyvtár, melyet beimportálva nagymértékben rövidíti és egyszerűsíti a programírást. A kapcsolóüzemű tápegységet vezérlő Atmega328-PU alapú Arduino Nano V3 panelre írt programot nem mellékeltem, mivel az túl egyszerű, csak a D11 kimenetet kapcsolja ki-be 20 kHz-en 20%-os kitöltési tényezővel.

(34)

5. A kész áramkör mérése, kapcsolási rajz

Az előző fejezetek alapján elkészült áramkörök és a programkódok mérés szerint az 5.1 ábránlátható feszültség-időfüggvényt hozzák létre. Ekkor az Rt értéke 10 Ohm volt, UG értéke pedig 15,9 V. A felbontás 1.024-re volt állítva 50.00 Hz frekvencián, 100%-os kitöltési tényező mellett, korrekció alkalmazás nélkül.

5.1 ábra: Az előállított váltakozó feszültség

A továbbiakban bemutatok különböző felbontáson előállított váltakozó feszültségeket. Az 5.2 ábrán a felbontás 64-re lett állítva. Az 5.3 ábrán már 128 léptékben áll elő a váltakozó feszültség, mellyel nagyobb pontosság valósul meg.

Az előállított váltakozó feszültséget ferrit vasmagos transzformátorra kötve LCL szűrőn keresztül előáll a szinuszos 230 V-os feszültség, melynek bemutatására már nem kerítek sort, ez a jövőben viszont rövidesen kivitelezve lesz. Méréseim alapján szükséges lenne még továbbá nagy induktivitású ferritvasmagos tekercs, mely biztosítja az áram és feszültség folytonosságát. Sajnos ennek a tekercsnek az elkészítésére nem került sor anyaghiány miatt, így mérésekkel nem tudom bemutatni a kialakuló feszültséget.

(35)

5.2 ábra: Az előállított váltakozó feszültség 64-es felbontáson

5.3 ábra: Az előállított váltakozó feszültség 128-es felbontáson

A 4. számú mellékletben megtekinthető a kész kapcsolási rajz, amelyen megtalálható maga a H-híd, a kapcsolóüzemű tápegység, az ATmega2560-as mikrovezérlő, a kapcsolóüzemű tápegységet vezérlő Arduino Nano V3 áramkör (mely Atmega328-PU alapú mikrovezérlő), az érintőképernyő, valamint a

(36)

feszültségstabilizátorok, melynek bemenetére az S1 kapcsolótól függően akkumulátor (UG), vagy szabályozható tápegység (UK) kerül. A H-híd kimenetein és sínjein bekeretezett számok a valóságban is megjelölt vezeték azonosítóját tünteti fel.

(37)

6. Befejezés

A kitűzött feladatot sikeresen megvalósítottam, az áramkör a vártaknak megfelelően működik. Célom a továbbiakban a kész áramkör optimalizálása, valamint nagy induktivitású tekercsek készítése, mellyel kisimítható az áram és a feszültség a kimeneten. Amint ez sikerül, a szűrőáramkörök méretezése kerül sorra.

Az áramkörök méretét érdemes lenne csökkenteni SMD alkatrészek beépítésével, valamint egy panelra integrálni minden elemet, így az elektromágneses zavaroknak jobban ellenáll.

Korábbi kutatásaim során ebben a dolgozatban alkalmazott IGBT/MOSFET meghajtóáramkörök helyett IR2113 IC-t használtam fel vezérlési célokra, melyek nem megfelelően működtek, valószínűleg nem eredeti áramkörök felhasználása lehetett a probléma. Az IR2113 áramkör viszont nem igényel külön kapcsolóüzemű tápegységet kialakítása miatt, ennélfogva ennek az áramkörnek az alkalmazásával nagymértékben lecsökkenthető a rendszer fizikai mérete, valamint egyszerűsödik is a kialakítása, a kapcsolóüzemű transzformátor elhagyása pozitív hatással van a rendszerre. A kapcsolóüzemű transzformátor szórt fluxusa az IGBT/MOSFET kapcsolóelemeket igen zavarja.

Remélem, hogy későbbiekben a kész áramkör kibővítésre kerül úgy, hogy 3 fázisú váltóirányító készülhessen el belőle, mely képes legfeljebb 2,2 kW hatásos teljesítményű aszinkronmotorok frekvenciaszabályozására. Az ATmega 2560-as mikrovezérlő alkalmas lenne a célra, a PB7 kimenetet, azaz a 26-os lábat egy harmadik hídág vezérléséhez kéne felhasználni. Egy ilyen rendszert IR2113 vezérlőáramkörrel a szakdolgozatomban terveztem meg.

A méréséket itthon PC alapú USB-s oszcilloszkóppal végeztem, melynek pontos típusa: HANTEK 6104BC. Ez az oszcilloszkóp 4 csatornás, 100 MHz-es, 1 GSa/s mintavételezési sebességre képes. A méréseken látható keskeny impulzusok, melyek hirtelen előjelet is váltanak mérési hibákból származik, nem az áramkör által előállított feszültség valós értéke. Érdemes lenne magasabb minőségű oszcilloszkóppal elvégezni a méréseket újból.

(38)

Irodalomjegyzék

[1] FAIRCHILD SEMICONDUCTOR:FGA25N120ANTD. 2013, p. 9.

[2] FAIRCHILD SEMICONDUCTOR: FOD3120 High Noise Immunity, 2.5A Output Current, Gate Drive Optocoupler. 2016, p. 2.

(39)

1. számú melléklet

(40)

2. számú melléklet

(41)

3. számú melléklet

(42)

4. számú melléklet

(43)

5. számú melléklet

(44)

6. számú melléklet

#include <avr/interrupt.h>

#include <avr/io.h>

#include <math.h>

#include <Nextion.h>

#define max_kapcsolasi_frekvencia 50000

#define min_kapcsolasi_frekvencia 1000 int felbontas = 512;

int felbontas_regi = 0;

bool kimenet = false;

int microMHz = 16;

double frekvencia = 50.00;

int frekvencia_egesz = 50;

int frekvencia_szazad = 0;

double frekvencia_regi = 0.0;

long int periodus = 0;

int szinuszTomb1[1024];

int szinuszTomb2[1024];

double tomb1, tomb2;

double amplitudo = 100, amplitudo_regi;

double amplitudo_ertek;

int index = 0;

int hatvanykitevo = 9;

int korrekcio = 0;

int index_1 = 0;

bool ujrageneralas_kerveny = false;

long int kapcsolasi_frekvencia;

NexButton b0 = NexButton(2, 1, "b0");

NexButton b1 = NexButton(2, 2, "b1");

NexButton b2 = NexButton(3, 3, "b2");

NexButton b3 = NexButton(3, 4, "b3");

NexButton b4 = NexButton(2, 7, "b4");

NexButton b5 = NexButton(2, 8, "b5");

NexButton b6 = NexButton(0, 2, "b6");

NexButton b7 = NexButton(0, 3, "b7");

NexButton b8 = NexButton(0, 4, "b8");

NexButton b9 = NexButton(0, 5, "b9");

NexButton b10 = NexButton(4, 2, "b10");

NexButton b11 = NexButton(4, 3, "b11");

NexButton b12 = NexButton(0, 6, "b12");

NexButton b13 = NexButton(5, 2, "b13");

NexButton b14 = NexButton(5, 3, "b14");

NexButton b15 = NexButton(5, 4, "b15");

NexButton b16 = NexButton(5, 5, "b16");

NexButton b17 = NexButton(5, 6, "b17");

NexButton b19 = NexButton(7, 7, "b19");

NexRadio r0 = NexRadio(1, 1, "r0");

NexRadio r1 = NexRadio(1, 4, "r1");

NexTouch *nex_listen_list[] =

(45)

{ &b0, &b1, &b2, &b3, &b4, &b5, &b6, &b7, &b8, &b9, &b10, &b11, &b12, &b13, &b14, &b15, &b16, &b17, &b19, &r0, &r1, NULL };

void b0PushCallback(void *ptr) {

frekvencia_egesz += 1;

Serial2.print("n1.val=");

Serial2.print(frekvencia_egesz);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

}

void b1PushCallback(void *ptr) {

if (frekvencia_egesz > 1) { frekvencia_egesz -= 1;

Serial2.print("n1.val=");

Serial2.print(frekvencia_egesz);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

} }

void b2PushCallback(void *ptr) {

if (amplitudo <= 110) { amplitudo += 1;

Serial2.print("n0.val=");

Serial2.print((int)amplitudo);

Serial2.write(0xff);

(46)

Serial2.write(0xff);

Serial2.write(0xff);

} }

void b3PushCallback(void *ptr) {

if (amplitudo > 0) { amplitudo -= 1;

Serial2.print("n0.val=");

Serial2.print((int)amplitudo);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

} }

void b4PushCallback(void *ptr) // szazad noveles {

if (frekvencia_szazad < 99) { frekvencia_szazad += 1;

Serial2.print("n2.val=");

Serial2.print(frekvencia_szazad);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

} }

void b5PushCallback(void *ptr) // szazad csokkenes {

if (frekvencia_szazad > 0) { frekvencia_szazad -= 1;

Serial2.print("n2.val=");

Serial2.print(frekvencia_szazad);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

} }

void r0PushCallback(void *ptr) {

kimenet = true;

}

void r1PushCallback(void *ptr) {

kimenet = false;

}

void b6PushCallback(void *ptr) //kimenet engedelyezes menupont {

if (kimenet == true) { Serial2.print("r1.val=");

(47)

Serial2.print(0);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.print("r0.val=");

Serial2.print(1);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

} }

void b7PushCallback(void *ptr) //frekvencia menupont {

Serial2.print("n1.val=");

Serial2.print(frekvencia_egesz);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.print("n2.val=");

Serial2.print(frekvencia_szazad);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

}

void b8PushCallback(void *ptr) //amplitudo menupont {

Serial2.print("n0.val=");

Serial2.print((int)amplitudo);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

}

void b10PushCallback(void *ptr)// felbontas noveles {

if (hatvanykitevo < 10) { hatvanykitevo++;

felbontas = pow(2, hatvanykitevo) + 1;

Serial2.print("n4.val=");

Serial2.print(hatvanykitevo);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.print("n5.val=");

Serial2.print(felbontas);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

} }

void b11PushCallback(void *ptr)// felbontas csokkentes

(48)

{

if (hatvanykitevo > 5) { hatvanykitevo--;

felbontas = pow(2, hatvanykitevo) + 1;

Serial2.print("n4.val=");

Serial2.print(hatvanykitevo);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.print("n5.val=");

Serial2.print(felbontas);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

} }

void b9PushCallback(void *ptr)// felbontas menupont {

felbontas = pow(2, hatvanykitevo) + 1;

Serial2.print("n4.val=");

Serial2.print(hatvanykitevo);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.print("n5.val=");

Serial2.print(felbontas);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

}

void b12PushCallback(void *ptr) //korrekcio menupont {

Serial2.print("n6.val=");

Serial2.print(index_1);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.print("n7.val=");

Serial2.print(korrekcio);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

}

void b13PushCallback(void *ptr) //ujrageneralas {

ujrageneralas_kerveny = true;

}

void b14PushCallback(void *ptr) // index + {

if (index_1 < felbontas / 2) {

(49)

index_1++;

Serial2.print("n6.val=");

Serial2.print(index_1);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

} }

void b15PushCallback(void *ptr) //index - {

if (index_1 > 0) { index_1--;

Serial2.print("n6.val=");

Serial2.print(index_1);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

} }

void b16PushCallback(void *ptr) //mertek + {

if (korrekcio < periodus) { korrekcio += 10;

Serial2.print("n7.val=");

Serial2.print(korrekcio);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

} }

void b17PushCallback(void *ptr) //mertek - {

if (korrekcio > 0) { korrekcio -= 10;

Serial2.print("n7.val=");

Serial2.print(korrekcio);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

} }

void b19PushCallback(void *ptr) //frissites {

Serial2.print("n9.val=");

Serial2.print(periodus);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.print("n10.val=");

Serial2.print(kapcsolasi_frekvencia);

(50)

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

}

void setup() {

Serial.setTimeout(10);

Serial.begin(115200);

Serial2.begin(9600);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

b0.attachPush(b0PushCallback);

b1.attachPush(b1PushCallback);

b2.attachPush(b2PushCallback);

b3.attachPush(b3PushCallback);

b4.attachPush(b4PushCallback);

b5.attachPush(b5PushCallback);

b6.attachPush(b6PushCallback);

b7.attachPush(b7PushCallback);

b8.attachPush(b8PushCallback);

b9.attachPush(b9PushCallback);

b10.attachPush(b10PushCallback);

b11.attachPush(b11PushCallback);

b12.attachPush(b12PushCallback);

b13.attachPush(b13PushCallback);

b14.attachPush(b14PushCallback);

b15.attachPush(b15PushCallback);

b16.attachPush(b16PushCallback);

b17.attachPush(b17PushCallback);

b19.attachPush(b19PushCallback);

r0.attachPush(r0PushCallback);

r1.attachPush(r1PushCallback);

regiszterekBeallitasa();

ujrageneralas();

}

void loop() { delay(1);

nexLoop(nex_listen_list);

if (kimenet == false) { TCCR1A = 0b00000010;

}

if (kimenet == true) { TCCR1A = 0b10100010;

}

if (felbontas != felbontas_regi) { ujrageneralas();

felbontas_regi = felbontas;

}

if (amplitudo != amplitudo_regi) { amplitudo_ertek = amplitudo / 100.00;

ujrageneralas();

amplitudo_regi = amplitudo;

(51)

}

frekvencia = frekvencia_egesz + ((double)frekvencia_szazad * 0.01);

if (frekvencia != frekvencia_regi) { ujrageneralas();

frekvencia_regi = frekvencia;

}

if (ujrageneralas_kerveny == true) { ujrageneralas();

Serial2.print("n8.val=");

Serial2.print(periodus);

Serial2.write(0xff);

Serial2.write(0xff);

Serial2.write(0xff);

ujrageneralas_kerveny = false;

} }//loop

ISR(TIMER1_OVF_vect) {

OCR1A = szinuszTomb1[index];

OCR1B = szinuszTomb2[index];

if (++index >= felbontas) { index = 0;

} }

void regiszterekBeallitasa(void) { TCCR1A = 0b00000010;

TCCR1B = 0b00011001;

TIMSK1 = 0b00000001;

sei(); //Megszakitas engedelyezese

DDRB = 0b11100000; //pin24, pin25, pin26 kimenet ICR1 = 0;

}

void ujrageneralas(void) { TCCR1A = 0b00000010;

periodus = microMHz * 1e6 / frekvencia / felbontas;

kapcsolasi_frekvencia = 16 * 1e6 / periodus;

if (kapcsolasi_frekvencia < min_kapcsolasi_frekvencia ||

kapcsolasi_frekvencia > max_kapcsolasi_frekvencia) { frekvencia = 50;

felbontas = 512;

hatvanykitevo = 9;

periodus = microMHz * 1e6 / frekvencia / felbontas;

kapcsolasi_frekvencia = 16 * 1e6 / periodus;

}

Serial.println(kapcsolasi_frekvencia);

if (periodus > 65535) { periodus = 65535;

}

ICR1 = periodus;

for (int i = 0; i <= felbontas; i++) { if (i < felbontas / 2) { // elso periodus

(52)

tomb1 = sin(i * 2 * M_PI / felbontas) * periodus * amplitudo_ertek;

if (i < index_1 || i > (felbontas / 2) - index_1) { tomb1 = (int)tomb1 + korrekcio;

}

if (tomb1 > periodus) { tomb1 = periodus;

}

szinuszTomb1[i] = (int)(tomb1);

szinuszTomb2[i] = 0;

}

if (i > felbontas / 2) { // masodik periodus

tomb2 = sin((i - felbontas / 2) * 2 * M_PI / felbontas) * periodus * amplitudo_ertek;

if (i < felbontas / 2 + index_1 || i > felbontas - index_1) { tomb2 = (int)tomb2 + korrekcio;

}

if (tomb1 > periodus) { tomb1 = periodus;

}

szinuszTomb2[i] = (int)(tomb2);

szinuszTomb1[i] = 0;

} }

TCCR1A = 0b10100010;

}

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

• Hozzon létre olyan vi-t, amely V-ban jelzi ki a mért

6.9. Igazoljuk, hogy X v´ eletlen v´ altoz´ o karakterisztikus f¨ uggv´ enye pontosan akkor val´ os, ha X eloszl´ asa szimmetrikus.. Igazoljuk, hogy ϕ egy konstans v´ eletlen

(4) Ha az  arcképmás bűnügyi nyilvántartó szerv részére történő megküldése az  1. adatlappal együtt nem lehetséges, az  arcképmást a  bűnügyi

Emiatt az indítványozó (magánvádló) panasszal élt, és elfogultsági kifogást is tett az eljáró bíró ellen. [44] A rendelkezésre álló iratokból az

Amennyiben a versességen belül fordulunk el a szonettől, váratlanul meg- nyílik előttünk valami új, valami — magyaros kiejtéssel — ReSzaNT (rövidí- tés: a Relatív

Halála előtt — huszonegy nappal — már súlyos betegen hallgatta végig beszá- molómat a pozsonyi kiállításról s 7000 koronás Triennále-díjáról, ami csak halála után —

$ U«JL V]¸YHJHN IRUG¯W£V£EDQ PLQGLJ YDQQDN RO\DQ Q\HOYL HOHPHN DPHO\HN P£U QHP U«V]HL D IRUU£VQ\HOYL NXOW¼U£QDN VHP SHGLJ D IRUG¯W£V NRUDEHOL F«O Q\HOYL NXOW¼U£QDN

Tehát egy u csomópont úgy továbbít egy v-nek szóló információt, hogy a szomszédai közül kiválasztja azt a v 0 -t, amelyik a legközelebb van v-hez (esetleg pont v-t) az