- Kaj je SPWM (sinusoidna modulacija širine impulza)?
- Kako deluje pretvornik SPWM
- Komponente, potrebne za izdelavo pretvornika SPWM
- Konstrukcija vezja pretvornika SPWM
- Program Arduino za pretvornik SPWM
- Preizkušanje vezja pretvornika PLM TL494
Pogosto so potrebni pretvorniški tokokrogi, kjer iz omrežja ni mogoče dobiti oskrbe z izmeničnim tokom. Pretvorniško vezje se uporablja za pretvorbo enosmerne energije v izmenično moč in ga lahko razdelimo na dve vrsti, to je pretvorniki s čistim sinusnim valom ali spremenjeni pretvorniki s kvadratnimi valovi. Ti čisti pretvorniki s sinusnimi valovi so zelo dragi, kjer so spremenjeni pretvorniki s kvadratnim valom poceni. Več o različnih vrstah pretvornika preberite tukaj.
V prejšnjem članku sem vam pokazal, kako ne narediti spremenjenega pretvornika kvadratnih valov, tako da sem odpravil težave, povezane z njim. V tem članku bom torej naredil preprost pretvornik s čistim sinusnim valom z uporabo Arduina in razložil načelo delovanja vezja.
Če izdelujete to vezje, upoštevajte, da to vezje nima povratnih informacij, zaščite pred prekomernim tokom, zaščite pred kratkim stikom in temperature. Zato je to vezje zgrajeno in predstavljeno samo v izobraževalne namene, zato ni priporočljivo graditi in uporabljati te vrste vezij za komercialne naprave. Vendar jih lahko po potrebi dodate v svoje vezje, kot so običajno uporabljena zaščitna vezja
O zaščiti pred prenapetostjo, zaščito pred prenapetostjo, zaščito pred povratno polarnostjo, zaščito pred kratkim stikom, krmilniku za vročo zamenjavo itd.
POZOR: Če izdelujete to vrsto vezja, bodite previdni pri visokonapetostnih in napetostnih konicah, ki jih ustvari preklopni signal na vhod.
Kaj je SPWM (sinusoidna modulacija širine impulza)?
Kot že ime pove, SPWM stoji za S inusoidal P ulse W idth M odulation. Kot morda že veste, je signal PWM signal, v katerem lahko spremenimo frekvenco impulza ter čas vklopa in izklopa, kar je znano tudi kot delovni cikel. Če želite izvedeti več o PWM, si jo lahko preberete tukaj. Torej s spreminjanjem delovnega cikla spremenimo povprečno napetost impulza. Spodnja slika prikazuje, da-
Če upoštevamo signal PWM, ki preklaplja med 0 - 5 V in ima delovni cikel 100%, bomo dobili povprečno izhodno napetost 5 V, če upoštevamo isti signal z delovnim ciklom 50%, bomo dobite izhodno napetost 2,5 V in za delovni cikel 25% je to polovica. To povzema osnovno načelo signala PWM in lahko preidemo na razumevanje osnovnega principa signala SPWM.
Sinusna napetost je predvsem analogija napetost, ki je spremenila njegovo magnitudo čez nekaj časa, in se lahko reproducirajo to vedenje sinusni signal, ki ga nenehno spreminja ciklus za PWM val, spodnje slike je razvidno, da je.
Če pogledate spodnjo shemo, bo videl, da je na izhodu transformatorja priključen kondenzator. Ta kondenzator je odgovoren za glajenje izmeničnega signala iz nosilne frekvence.
Uporabljeni vhodni signal bo napolnil in izpraznil kondenzator glede na vhodni signal in obremenitev. Ker smo uporabili zelo visokofrekvenčni signal SPWM, bo imel zelo majhen delovni cikel, ki je približno 1%, ta 1% delovni cikel bo kondenzator malo napolnil, naslednji delovni cikel je 5%, to bo spet polnilo kondenzator še malo, naslednji impulz bo imel obratovalni cikel 10% in kondenzator se bo napolnil nekoliko več, signal bomo uporabljali, dokler ne dosežemo delovnega cikla 100% in od tam se bomo spustili nazaj na 1%. To bo ustvarilo zelo gladko krivuljo, kot je sinusni val na izhodu. Z zagotavljanjem ustreznih vrednosti delovnega cikla na vhodu bomo imeli na izhodu zelo sinusni val.
Kako deluje pretvornik SPWM
Gornja slika kaže glavni oddelek vožnja v SPWM pretvornika, in kot lahko vidite, smo uporabili dva N-kanalni MOSFET v konfiguraciji pol mostu voziti transformator za to vezje, da se zmanjša neželene preklapljanje hrupa in za zaščito MOSFET, uporabili smo diode 1N5819 vzporedno z MOSFET-ji. Da bi zmanjšali škodljive konice, ki nastanejo v odseku vrat, smo uporabili 4,7 ohmske upore, vzporedne z diodami 1N4148. Končno so tranzistorji BD139 in BD 140 konfigurirani v push-pull konfiguracijiza pogon vrat MOSFET-a, ker ima ta MOSFET zelo visoko kapacitivnost vrat in za pravilno vklop zahteva najmanj 10V na dnu. Več o delovanju ojačevalnikov Push-Pull preberite tukaj.
Za boljše razumevanje principa delovanja vezja smo ga zmanjšali do točke, ko je ta odsek MOSFET-a VKLOPLJEN. Ko je MOSFET na tok, najprej teče skozi transformator in nato dobi ozemljena z MOSFET, torej magnetnega pretoka bo tudi inducira v smeri, v kateri je tok, ki teče, in jedro transformatorja bo mimo magnetni pretok v sekundarnem navitju in na izhodu bomo dobili pozitivni polcikel sinusnega signala.
V naslednjem ciklu je spodnji del vezja na zgornjem delu vezja izključen, zato sem zgornji del odstranil, zdaj tok teče v nasprotni smeri in ustvarja magnetni tok v tej smeri, s čimer se obrne smer magnetnega pretoka v jedru. Več o delovanju MOSFET-a preberite tukaj.
Zdaj vsi vemo, da transformator deluje s spremembami magnetnega pretoka. Torej, če vklopite in izklopite oba MOSFET-a, enega obrnjenega v drugega in to storite 50-krat v sekundi, bo znotraj jedra transformatorja ustvarjen prijeten nihajni magnetni tok in spreminjajoči se magnetni tok bo povzročil napetost v sekundarni tuljavi kot vemo po Faradejevem zakonu. Tako deluje osnovni pretvornik.
Celotno vezje pretvornika SPWM, uporabljeno v tem projektu, je navedeno spodaj.
Komponente, potrebne za izdelavo pretvornika SPWM
Sl.Št. |
Deli |
Tip |
Količina |
1. |
Atmega328P |
IC |
1. |
2. |
IRFZ44N |
Mosfet |
2. |
3. |
BD139 |
Tranzistor |
2. |
4. |
BD140 |
Tranzistor |
2. |
5. |
22pF |
Kondenzator |
2. |
6. |
10K, 1% |
Upor |
1. |
7. |
16MHz |
Kristal |
1. |
8. |
0,1uF |
Kondenzator |
3. |
9. |
4.7R |
Upor |
2. |
10. |
1N4148 |
Dioda |
2. |
11. |
LM7805 |
Regulator napetosti |
1. |
12. |
200uF, 16V |
Kondenzator |
1. |
13. |
47uF, 16V |
Kondenzator |
1. |
14. |
2.2uF, 400V |
Kondenzator |
1. |
Konstrukcija vezja pretvornika SPWM
Za to predstavitev je vezje izdelano na Veroboard s pomočjo sheme: Na izhodu transformatorja bo skozi povezavo tekla ogromna količina toka, zato morajo biti mostički za povezavo čim debelejši.
Program Arduino za pretvornik SPWM
Preden začnemo razumeti kodo, razjasnimo osnove. Iz zgornjega principa dela ste izvedeli, kako bo izgledal signal PWM na izhodu, zdaj pa ostaja vprašanje, kako lahko naredimo tako različen val na izhodnih zatičih Arduina.
Za spreminjanje signala PWM bomo uporabili 16-bitni časovnik1 z nastavitvijo prednapetostnega znaka 1, kar nam bo dalo 1600/16000000 = 0,1 ms časa za vsako štetje, če upoštevamo en polciklus sinusnega vala, ki ustreza natančno 100-krat v polčasu vala. Preprosto povedano, naš sinusni val bomo lahko vzorčili 200-krat.
Nato moramo sinusni val razdeliti na 200 kosov in izračunati njihove vrednosti s korelacijo amplitude. Nato moramo te vrednosti pretvoriti v vrednosti števca časovnika, tako da ga pomnožimo z omejitvijo števca. Končno moramo te vrednosti vnesti v iskalno tabelo, da jo pošljemo na števec, in dobili bomo svoj sinusni val.
Za poenostavitev stvari uporabljam zelo dobro napisano kodo SPWM podjetja GitHub, ki jo je izdelal Kurt Hutten.
Koda je zelo preprosta. Naš program začnemo z dodajanjem zahtevanih datotek glave
#include #include
Nato imamo dve iskalni tabeli, iz katerih bomo dobili vrednosti števca časovnika.
int lookUp1 = {50, 100, 151, 201, 250, 300, 349, 398, 446, 494, 542, 589, 635, 681, 726, 771, 814, 857, 899, 940, 981, 1020, 1058, 1095, 1131, 1166, 1200, 1233, 1264, 1294, 1323, 1351, 1377, 1402, 1426, 1448, 1468, 1488, 1505, 1522, 1536, 1550, 1561, 1572, 1580, 1587, 1593, 1597, 1599, 1600, 1599, 1597, 1593, 1587, 1580, 1572, 1561, 1550, 1536, 1522, 1505, 1488, 1468, 1448, 1426, 1402, 1377, 1351, 1323, 1294, 1264, 1233, 1200, 1166, 1131, 1095, 1058, 1020, 981, 940, 899, 857, 814, 771, 726, 681, 635, 589, 542, 494, 446, 398, 349, 300, 250, 201, 151, 100, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0}; int lookUp2 = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 100, 151, 201, 250, 300, 349, 398, 446, 494, 542, 589, 635, 681, 726, 771, 814, 857, 899, 940, 981, 1020, 1058, 1095, 1131, 1166, 1200, 1233, 1264, 1294, 1323, 1351, 1377, 1402, 1426, 1448, 1468, 1488, 1505, 1522, 1536, 1550, 1561, 1572, 1580, 1587, 1593, 1597, 1599, 1600, 1599, 1597, 1593, 1587, 1580, 1572, 1561, 1550, 1536, 1522, 1505, 1488, 1468, 1448, 1426, 1402, 1377, 1351, 1323, 1294, 1264, 1233, 1200, 1166, 1131, 1095, 1058, 1020, 981, 940, 899, 857, 814, 771, 726, 681, 635, 589, 542, 494, 446, 398, 349, 300, 250,201, 151, 100, 50, 0};
Nato v razdelku za nastavitev inicializiramo nadzorne registre števca časovnika, da bodo jasni za vsakega. Za nadaljnje informacije si oglejte podatkovni list atmega328 IC.
TCCR1A = 0b10100010; / * 10 jasno na tekmi, nastavljeno na DNO za compA. 10 jasno na tekmi, nastavljeno na DNO za compB. 00 10 WGM1 1: 0 za valovno obliko 15. * / TCCR1B = 0b00011001; / * 000 11 WGM1 3: 2 za valovno obliko 15. 001 brez števila na števcu. * / TIMSK1 = 0b00000001; / * 0000000 1 TOV1 Omogoči prekinitev zastavice. * /
Po tem inicializiramo vhodni register zajemanja z vnaprej določeno vrednostjo 16000, saj nam bo to pomagalo ustvariti natanko 200 vzorcev.
ICR1 = 1600; // Obdobje za kristal 16MHz, za preklopno frekvenco 100KHz za 200 pododdelkov na 50Hz ciklus sinusnega vala.
Nato omogočimo globalne prekinitve s klicem funkcije, sei ();
Na koncu smo za izhod nastavili Arduino pin 9 in 10
DDRB = 0b00000110; // Nastavite PB1 in PB2 kot izhoda.
To pomeni konec nastavitvene funkcije.
Odsek zanke kode ostane prazen, saj gre za program, ki ga poganja prekinitev števca.
void loop () {; /*Delati nič…. za vedno! * /}
Nato smo definirali vektor prelivanja timer1, ta funkcija prekinitve prejme klic, ko se timer1 prelije in ustvari prekinitev.
ISR (TIMER1_OVF_vect) {
Nato nekatere lokalne spremenljivke deklariramo kot statične spremenljivke in smo začeli podajati vrednosti uporu za zajem in primerjavo.
statična int številka; statični char trig; // vsako obdobje spremenimo delovni cikel. OCR1A = lookUp1; OCR1B = lookUp2;
Končno števec vnaprej prirastimo, da vnese naslednje vrednosti v zajem in primerjamo upore, kar označuje konec te kode.
if (++ num> = 200) {// Predprirastek num, potem preverite, ali je pod 200. num = 0; // Ponastavi številko trig = trig ^ 0b00000001; digitalWrite (13, trig); }
Preizkušanje vezja pretvornika PLM TL494
Za preizkus vezja se uporablja naslednja nastavitev.
- 12V svinčeno-kislinska baterija.
- Transformator s pipo 6-0-6 in 12-0-12 pipo
- 100W žarnica z žarilno nitko kot obremenitev
- Meco 108B + TRMS multimeter
- Meco 450B + TRMS multimeter
Izhodni signal iz Arduina:
Ko naložim kodo. Jaz izmerjena izhodna SPWM signal iz dveh zatiči iz Arduino, ki izgleda kot spodnji sliki,
Če malo povečate, lahko vidite nenehno spreminjajoči se delovni cikel PWM vala.
Nato spodnja slika prikazuje izhodni signal iz transformatorja.
Vezje pretvornika SPWM v idealnem stanju:
Kot lahko vidite iz zgornje slike, to vezje med idealnim delovanjem porabi približno 13 W
Izhodna napetost brez obremenitve:
Izhodna napetost pretvorniškega vezja je prikazana zgoraj, to je napetost, ki prihaja na izhodu brez pritrjene obremenitve.
Poraba vhodne moči:
Zgornja slika prikazuje vhodno moč, ki jo porabi IC, ko je pritrjena obremenitev 40 W.
Poraba izhodne moči:
Na zgornji sliki je prikazana izhodna moč, ki jo porabi to vezje (obremenitev je 40W žarnica z žarilno nitko)
S tem zaključimo preskusni del vezja. Za predstavitev si lahko ogledate spodnji video. Upam, da vam je bil ta članek všeč in ste se naučili nekaj o SPWM in tehnikah njegove izvedbe. Nadaljujte z branjem, učite se, gradite in se vidimo v naslednjem projektu.