- Kas yra SPWM (sinusoidinio impulso pločio moduliacija)?
- Kaip veikia SPWM keitiklis
- Komponentai, reikalingi SPWM keitikliui sukurti
- SPWM keitiklio grandinių konstrukcija
- „Arduino“ programa, skirta SPWM keitikliui
- TL494 PWM keitiklio grandinės testavimas
Inverterio grandinės dažnai reikalingos ten, kur neįmanoma gauti kintamosios srovės maitinimo iš tinklo. Inverterio grandinė naudojama nuolatinei energijai paversti kintamąja energija ir ją galima suskirstyti į du tipus: grynojo sinuso keitikliai arba modifikuoti kvadratinių bangų keitikliai. Šie gryno sinuso bangos keitikliai yra labai brangūs, kai modifikuoti kvadratinių bangų keitikliai yra nebrangūs. Sužinokite daugiau apie skirtingus keitiklio tipus čia.
Ankstesniame straipsnyje aš jums parodžiau, kaip nepadaryti modifikuoto kvadratinių bangų keitiklio, sprendžiant su juo susijusias problemas. Taigi šiame straipsnyje aš naudosiu paprastą gryną sinusinės bangos keitiklį naudodamas „Arduino“ ir paaiškinsiu grandinės veikimo principą.
Jei darote šią grandinę, atkreipkite dėmesį, kad šioje grandinėje nėra grįžtamojo ryšio, jokios apsaugos nuo viršsrovės, apsaugos nuo trumpojo jungimo ir apsaugos nuo temperatūros. Taigi ši grandinė yra sukurta ir demonstruojama tik švietimo tikslais, todėl visiškai nerekomenduojama kurti ir naudoti tokio tipo grandines komerciniams prietaisams. Tačiau, jei reikia, galite juos pridėti prie savo grandinės, pavyzdžiui, dažniausiai naudojamos apsaugos grandinės
Apsauga nuo viršįtampio, apsauga nuo viršsrovės, apsauga nuo atvirkštinio poliškumo, apsauga nuo trumpojo jungimo, „Hot Swap“ valdiklis ir kt.
ĮSPĖJIMAS: Jei kuriate tokio tipo grandines, būkite ypač atsargūs dėl aukštos įtampos ir įtampos šuolių, kuriuos generuoja perjungimo signalas į įėjimą.
Kas yra SPWM (sinusoidinio impulso pločio moduliacija)?
Kaip rodo pavadinimas, SPWM žymi S inusoidal P ulse W idth M odulation. Kaip jau žinote, PWM signalas yra signalas, kuriame mes galime pakeisti pulso dažnį, taip pat įjungimo ir išjungimo laiką, kuris taip pat žinomas kaip darbo ciklas. Jei norite sužinoti daugiau apie PWM, galite jį perskaityti čia. Taigi, keisdami darbo ciklą, mes keičiame vidutinę impulso įtampą. Žemiau pateiktame paveikslėlyje matyti, kad
Jei atsižvelgsime į PWM signalą, kuris persijungia tarp 0 - 5 V, kurio darbo ciklas yra 100%, gausime vidutinę išėjimo įtampą 5 V, vėl atsižvelgdami į tą patį signalą, kurio darbo ciklas yra 50%, mes gauti išėjimo įtampą 2,5 V, o 25% darbo ciklui - pusė. Tai apibendrina pagrindinį PWM signalo principą ir galime pereiti prie pagrindinio SPWM signalo principo supratimo.
Sinusinės įtampos pirmiausia analogija įtampa, kuri keičia savo dydį per tam tikrą laiką, ir mes galime atkurti šį sinusinės bangos elgesį nuolat keičiasi muito ciklą PWM bangos, žemiau paveikslėlyje vaizduojama, kad.
Jei pažvelgsite į toliau pateiktą schemą, pamatysite, kad transformatoriaus išvestyje yra kondensatorius. Tai kondensatorius yra atsakingas už išlyginant kintamosios srovės signalą iš nešlio dažnis.
Panaudotas įvesties signalas įkraus ir iškraus kondensatorių pagal įvesties signalą ir apkrovą. Kadangi mes naudojome labai aukšto dažnio SPWM signalą, jis turės labai mažą darbo ciklą, kuris yra kaip 1%, šis 1% darbo ciklas šiek tiek įkraus kondensatorių, kitas darbo ciklas bus 5%, tai vėl įkraus kondensatorius dar truputį, sekant impulsui , jo darbo ciklas bus 10%, o kondensatoriaus - šiek tiek daugiau, mes taikysime signalą, kol pasieksime 100% darbo ciklą, ir iš ten grįšime atgal iki 1%. Tai sukurs labai lygią kreivę kaip sinuso banga išvestyje. Taigi, įvesdami tinkamas darbo ciklo vertes, išėjime turėsime labai sinusinę bangą.
Kaip veikia SPWM keitiklis
Aukščiau pateiktas vaizdas rodo pagrindinis vairavimo SKILTĮ SPWM keitiklio, ir, kaip matote, mes naudojamas du n-kanalo MOSFETs į pusę-tilto konfigūracijos vairuoti šios grandinės transformatorius, siekiant sumažinti nepageidaujamą perjungimo triukšmo ir, siekiant apsaugoti MOSFET, mes naudojome 1N5819 diodus lygiagrečiai su MOSFET. Norėdami sumažinti bet kokius žalingus smaigalius, atsirandančius vartų skyriuje, naudojome 4,7 omų rezistorius lygiagrečiai su 1N4148 diodais. Galiausiai, BD139 ir BD 140 tranzistoriai yra sukonfigūruoti „push-pull“ konfigūracijojevairuoti MOSFET vartus, nes šis MOSFET turi labai didelę vartų talpą ir, norint tinkamai įsijungti, pagrinde reikia mažiausiai 10 V įtampos. Sužinokite daugiau apie „Push-Pull“ stiprintuvų veikimą čia.
Norėdami geriau suprasti grandinės veikimo principą, mes jį sumažinome iki taško, kuriame įjungtas šis MOSFET skyrius. Kai MOSFET yra srovėje, pirmiausia teka per transformatorių ir tada įžeminamas MOSFET, taigi magnetinis srautas taip pat bus sukeltas kryptimi, kuria teka srovė, ir transformatoriaus šerdis praeis magnetiniu srautu antrinėje apvijoje, o išėjime gausime teigiamą sinusoidinio signalo pusinį ciklą.
Kito ciklo metu, apačia grandinės yra viršutinėje dalyje grandinės yra išjungtas, kad yra, kodėl odtrąciłem viršutinę dalį, dabar teka srovė į priešingą pusę ir generuoja magnetinis srautas, ta kryptimi, tokiu būdu atbulinės eigos magnetinio srauto kryptis šerdyje. Sužinokite daugiau apie MOSFET darbą čia.
Dabar visi žinome, kad transformatorius veikia keičiantis magnetiniam srautui. Taigi, įjungiant ir išjungiant abu MOSFET, apverstus ant kito ir tai darant 50 kartų per sekundę, transformatoriaus šerdyje susidarys gražus svyruojantis magnetinis srautas, o besikeičiantis magnetinis srautas sukels įtampą antrinėje ritėje, nes mes žinome pagal faradėjaus įstatymą. Taip veikia pagrindinis keitiklis.
Visa šiame projekte naudojama SPWM keitiklio grandinė pateikta žemiau.
Komponentai, reikalingi SPWM keitikliui sukurti
Sl. Nr |
Dalys |
Tipas |
Kiekis |
1 |
„Atmega328P“ |
IC |
1 |
2 |
IRFZ44N |
Mosfetas |
2 |
3 |
BD139 |
Tranzistorius |
2 |
4 |
BD140 |
Tranzistorius |
2 |
5 |
22pF |
Kondensatorius |
2 |
6 |
10 tūkst., 1 proc. |
Rezistorius |
1 |
7 |
16MHz |
Krištolas |
1 |
8 |
0,1 uF |
Kondensatorius |
3 |
9 |
4.7R |
Rezistorius |
2 |
10 |
1N4148 |
Diodas |
2 |
11 |
LM7805 |
Įtampos reguliatorius |
1 |
12 |
200uF, 16V |
Kondensatorius |
1 |
13 |
47uF, 16V |
Kondensatorius |
1 |
14 |
2,2 uF, 400 V |
Kondensatorius |
1 |
SPWM keitiklio grandinių konstrukcija
Šiai demonstracijai grandinė sukonstruota „Veroboard“, pasitelkiant schemą. Transformatoriaus išvestyje per jungtį tekės didžiulis srovės kiekis, todėl jungties trumpikliai turi būti kuo storesni.
„Arduino“ programa, skirta SPWM keitikliui
Prieš pradėdami suprasti kodą, išsiaiškinkime pagrindus. Iš pirmiau minėto darbo principo jūs sužinojote, kaip PWM signalas atrodys išvestyje, dabar lieka klausimas, kaip mes galime padaryti tokią kintančią bangą prie „Arduino“ išvesties kaiščių.
Norėdami sukurti kintantį PWM signalą, naudosime 16 bitų laikmatį1 su išankstinio skalerio nustatymu 1, kuris suteiks mums 1600/16000000 = 0,1 ms laiko kiekvienam skaičiavimui, jei atsižvelgsime į vieną sinusinės bangos pusinį ciklą, kuris telpa tiksliai 100 kartų per pusę bangos ciklo. Paprasčiau tariant, mes galėsime atrinkti savo sinusinę bangą 200 kartų.
Tada mes turime padalyti savo sinusinę bangą į 200 vienetų ir apskaičiuoti jų vertes pagal amplitudės koreliaciją. Tada mes turime konvertuoti tas vertes į laikmačio skaitiklio vertes, padauginę ją iš skaitiklio ribos. Galiausiai, mes turime įdėti šias vertes į paieškos lentelę, kad paduotume ją į skaitiklį, ir gausime savo sinusinę bangą.
Kad viskas būtų šiek tiek paprasčiau, naudoju labai gerai parašytą SPWM kodą iš „GitHub“, kurį pagamino Kurtas Huttenas.
Kodas yra labai paprastas. Savo programą pradedame pridėdami reikiamus antraštės failus
# įtraukti # įtraukti
Tada turime dvi paieškos lenteles, iš kurių gausime laikmačio skaitiklio reikšmes.
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};
Tada sąrankos skyriuje inicijuojame laikmačio skaitiklio valdymo registrus, kad kiekviename būtų aišku. Norėdami gauti daugiau informacijos, turite pereiti prie „atmega328 IC“ duomenų lapo.
TCCR1A = 0b10100010; / * 10 aišku rungtynių metu, nustatytas BOTTOM „compA“. 10 aišku rungtynėse, nustatytas BOTTOM for compB. 00 10 WGM1 1: 0, kai bangos forma 15. * / TCCR1B = 0b00011001; / * 000 11 WGM1 3: 2, kai signalo forma yra 15. 001. * / TIMSK1 = 0b00000001; / * 0000000 1 TOV1 Įjungti žymos pertraukimą. * /
Po to mes inicijuojame įvesties fiksavimo registrą su iš anksto nustatyta 16000 verte, nes tai padės mums sukurti tiksliai 200 pavyzdžių.
ICR1 = 1600; 16MHz kristalų laikotarpis, kai perjungimo dažnis yra 100KHz 200 padalijimų per 50Hz sinusinių bangų ciklą.
Tada įgaliname visuotinius pertraukimus iškviesdami funkciją, sei ();
Galiausiai kaip išvestį nustatėme „Arduino“ kaiščius 9 ir 10
DDRB = 0b00000110; // Nustatykite PB1 ir PB2 kaip išvestį.
Tai žymi sąrankos funkcijos pabaigą.
Kodo ciklo dalis lieka tuščia, nes tai yra laikmačio skaitiklio pertraukimo valdoma programa.
tuštuma kilpa () {; /*Nieko nedaryk…. amžinai! * /}
Toliau mes apibrėžėme laikmačio1 perpildymo vektorių, ši pertraukimo funkcija sulaukia skambučio, kai laikmatis1 perpildomas ir sukuria pertraukimą.
ISR (TIMER1_OVF_vect) {
Tada mes paskelbiame kai kuriuos vietinius kintamuosius kaip statinius kintamuosius ir mes pradėjome vertes tiekti į fiksavimo ir palyginimo rezistorių.
statinis int skaičius; statinis char trig; // keisti darbo ciklą kiekvieną laikotarpį. OCR1A = lookUp1; OCR1B = lookUp2;
Galiausiai, mes iš anksto padidiname skaitiklį, kad gautume kitas reikšmes į fiksavimo ir palyginimo rezistorius, kurie žymi šio kodo pabaigą.
if (++ num> = 200) {// Išankstinio prieaugio skaičius, patikrinkite, ar jis yra mažesnis nei 200. num = 0; // Iš naujo nustatyti numerį trig = trig ^ 0b00000001; „digitalWrite“ (13, trigeris); }
TL494 PWM keitiklio grandinės testavimas
Norėdami patikrinti grandinę, naudojama ši sąranka.
- 12 V rūgštinė švino baterija.
- Transformatorius, turintis 6-0-6 ir 12-0-12 čiaupą
- 100 W kaitrinė lemputė kaip apkrova
- „Meco 108B + TRMS“ multimetras
- „Meco 450B + TRMS“ multimetras
Išvesties signalas iš „Arduino“:
Įkėlęs kodą. Aš išmatavau išvesties SPWM signalą iš dviejų „ Arduino“ kaiščių, kuris atrodo kaip žemiau pateiktas vaizdas,
Šiek tiek priartinę galime pamatyti nuolat besikeičiantį PWM bangos darbo ciklą.
Toliau pateiktame paveikslėlyje parodytas transformatoriaus išvesties signalas.
SPWM keitiklio grandinė idealioje būsenoje:
Kaip matote iš aukščiau esančio vaizdo, ši grandinė veikia maždaug 13 W, o veikia idealiai
Išėjimo įtampa be apkrovos:
Inverterio grandinės išėjimo įtampa parodyta aukščiau, tai yra įtampa, išeinanti prie išėjimo be jokios apkrovos.
Įvesties energijos suvartojimas:
Aukščiau pateiktame paveikslėlyje parodyta įvesties galia, kurią sunaudoja, kai prijungiama 40 W apkrova.
Išvesties energijos suvartojimas:
Aukščiau pateiktame paveikslėlyje parodyta išėjimo galia, kurią sunaudoja ši grandinė (apkrova yra 40 W kaitrinė lemputė)
Tuo mes užbaigiame bandymo grandinės dalį. Norėdami pamatyti demonstraciją, galite peržiūrėti toliau pateiktą vaizdo įrašą. Tikiuosi, kad jums patiko šis straipsnis ir šiek tiek sužinojote apie SPWM ir jo įgyvendinimo metodus. Skaityk toliau, mokykis, tęskis ir aš tave pamatysiu kitame projekte.