- Mi az SPWM (szinuszos impulzusszélesség-moduláció)?
- Hogyan működik az SPWM Inverter
- Az SPWM Inverter elkészítéséhez szükséges elemek
- SPWM inverter áramkörépítés
- Arduino program az SPWM Inverterhez
- A TL494 PWM inverter áramkörének tesztelése
Inverteres áramkörökre gyakran szükség van, ahol nem lehet váltakozó áramú tápellátást szerezni a hálózatról. Az inverter áramkörét használják az egyenáramú áram váltakozására váltóárammá, és két típusra osztható, azaz a tiszta szinuszhullámú inverterekre vagy a módosított négyzetes hullámváltókra. Ezek a tiszta szinuszhullámú inverterek nagyon drágák, ahol a módosított négyzethullámú inverterek olcsók. Tudjon meg többet a különböző típusú inverterekről itt.
Egy korábbi cikkemben bemutattam neked, hogyan ne készítsünk módosított négyzethullámú invertert a hozzá kapcsolódó problémák megoldásával. Tehát ebben a cikkben egy egyszerű tiszta szinusz hullámú invertert készítek az Arduino segítségével, és elmagyarázom az áramkör működési elvét.
Ha ezt az áramkört készíti, vegye figyelembe, hogy ez az áramkör nem rendelkezik visszacsatolással, túláramvédelemmel, rövidzárlatvédelemmel és hőmérsékletvédelemmel. Ezért ezt az áramkört csak oktatási célokra építik és demonstrálják, és egyáltalán nem ajánlott ilyen típusú áramkörök építése és használata kereskedelmi készülékekhez. Ha szükséges, felveheti őket az áramkörbe, például az általánosan használt védelmi áramkörök
A túlfeszültség-védelemről, a túláram-védelemről, a fordított polaritás-védelemről, a rövidzárlat-védelemről, a hőcserélő vezérlésről stb. Már volt szó.
VIGYÁZAT: Ha ilyen típusú áramkört készít, kérjük, legyen különösen körültekintő a bemenetre kapcsoló jel által generált nagyfeszültségű és feszültséges tüskékkel szemben.
Mi az SPWM (szinuszos impulzusszélesség-moduláció)?
Ahogy a neve sugallja, SPWM jelentése S inusoidal P ulse W idth M odulation. Mint azt már tudhatjátok, a PWM jel olyan jel, amelyben megváltoztathatjuk az impulzus frekvenciáját, valamint a bekapcsolási és kikapcsolási időt, amelyet munkaciklusnak is nevezünk. Ha többet szeretne megtudni a PWM-ről, elolvashatja itt. Tehát a munkaciklus változtatásával megváltoztatjuk az impulzus átlagos feszültségét. Az alábbi kép azt mutatja,
Ha figyelembe vesszük a PWM jelet, amely 0 és 5 V között vált, és amelynek 100% -os munkaciklusa van, akkor átlagosan 5 V kimeneti feszültséget kapunk, ha ismét ugyanazt a jelet vesszük figyelembe 50% -os munkaciklus mellett, akkor kapja meg a kimeneti feszültséget 2,5 V, és 25% -os működési ciklus esetén ennek a fele. Ez összefoglalja a PWM jel alapelvét, és áttérhetünk az SPWM jel alapelvének megértésére.
A szinuszfeszültség elsősorban egy analóg feszültség, amely idővel megváltoztatja a nagyságát, és a szinusz hullám ezen viselkedését a PWM hullám munkaciklusának folyamatos változtatásával reprodukálhatjuk. Az alábbi kép ezt mutatja.
Ha megnézi az alábbi vázlatot, látni fogja, hogy kondenzátor van csatlakoztatva a transzformátor kimenetéhez. Ez a kondenzátor felelős az AC jel kisimításáért a vivőfrekvenciából.
Az alkalmazott bemeneti jel a kondenzátort a bemeneti jelnek és a terhelésnek megfelelően tölti fel és kisüt . Mivel nagyon nagy frekvenciájú SPWM jelet használtunk, annak nagyon kicsi a működési ciklusa, ami olyan, mint 1%, ez az 1% -os munkaciklus egy kicsit feltölti a kondenzátort, a következő munkaciklus 5%, ez ismét feltölti a kondenzátor még egy kicsit, a következő impulzus működési ciklusa 10%, a kondenzátor pedig egy kicsit többet tölt fel, addig alkalmazzuk a jelet, amíg el nem érjük a 100% -os munkaciklust, és onnan visszamegyünk 1% -ra. Ez nagyon sima görbét hoz létre, mint egy szinusz hullám a kimeneten. Tehát azáltal, hogy a bemeneten megadjuk a munkaciklus megfelelő értékeit, a kimeneten nagyon szinuszos hullám lesz.
Hogyan működik az SPWM Inverter
A fenti kép is mutatja a fő vezetési részben a SPWM inverter, és mint látható, már használt két N-csatornás MOSFET a félhíd vezetni a transzformátor ennek a körnek, hogy csökkentsék a nem kívánt kapcsolási zaj és védi a MOSFET, 1N5819 diódát használtunk a MOSFET-ekkel párhuzamosan. A kapu szakaszban keletkező káros tüskék csökkentése érdekében az 1N4148 diódákkal párhuzamosan használt 4,7 ohmos ellenállásokat használtuk. Végül a BD139 és BD 140 tranzisztorok push-pull konfigurációban vannak konfigurálvaa MOSFET kapujának meghajtásához, mert ennek a MOSFET-nek nagyon nagy a kapu kapacitása, és a bázisnál legalább 10 V szükséges a megfelelő bekapcsoláshoz. Tudjon meg többet a Push-Pull erősítők működéséről itt.
Az áramkör működési elvének jobb megértése érdekében lecsökkentettük egy pontra, ahol a MOSFET ezen szakasza be van kapcsolva. Amikor a MOSFET áramban van, először a transzformátoron áramlik, majd a MOSFET földeli, így mágneses fluxus is indukálódik abban az irányban, amelybe az áram folyik, és a transzformátor magja átengedi a mágneses fluxust a szekunder tekercsben, és a kimeneten megkapjuk a szinuszos jel pozitív félciklusát.
A következő ciklusban az áramkör alsó része az áramkör felső részén van kikapcsolva, ezért eltávolítottam a felső részt, most az áram ellentétes irányban áramlik, és mágneses fluxust generál ebben az irányban, így megfordul a mágneses fluxus iránya a magban. Tudjon meg többet a MOSFET működéséről itt.
Most már mindannyian tudjuk, hogy a transzformátor mágneses fluxusváltozásokkal működik. Tehát mind a MOSFET-ek be- és kikapcsolása, az egyik megfordítása a másik felé, és ezt másodpercenként 50-szer megtéve , szépen oszcilláló mágneses fluxust generál a transzformátor magjában, és a változó mágneses fluxus feszültséget indukál a szekunder tekercsben a faraday törvénye alapján tudjuk. Az alapvető inverter így működik.
A projektben használt teljes SPWM inverter áramkört az alábbiakban adjuk meg.
Az SPWM Inverter elkészítéséhez szükséges elemek
Sl. Nem |
Alkatrészek |
típus |
Mennyiség |
1 |
Atmega328P |
IC |
1 |
2 |
IRFZ44N |
Mosfet |
2 |
3 |
BD139 |
Tranzisztor |
2 |
4 |
BD140 |
Tranzisztor |
2 |
5. |
22pF |
Kondenzátor |
2 |
6. |
10K, 1% |
Ellenállás |
1 |
7 |
16MHz |
Kristály |
1 |
8. |
0,1 uF |
Kondenzátor |
3 |
9. |
4,7R |
Ellenállás |
2 |
10. |
1N4148 |
Dióda |
2 |
11. |
LM7805 |
Feszültségszabályozó |
1 |
12. |
200uF, 16V |
Kondenzátor |
1 |
13. |
47uF, 16V |
Kondenzátor |
1 |
14 |
2,2uF, 400V |
Kondenzátor |
1 |
SPWM inverter áramkörépítés
Ehhez a bemutatáshoz az áramkört a Veroboardon építik fel, a vázlat segítségével. A transzformátor kimenetén hatalmas mennyiségű áram áramlik át a kapcsolaton, ezért a csatlakozó jumpereknek a lehető legvastagabbnak kell lenniük.
Arduino program az SPWM Inverterhez
Mielőtt továbbmennénk és elkezdjük megérteni a kódot, tisztázzuk az alapokat. A fenti működési elvből megtanulta, hogyan fog kinézni a PWM jel a kimeneten, most az a kérdés marad, hogy miként tudunk ilyen változó hullámot adni az Arduino kimeneti csapjain.
A változó PWM jel előállításához a 16 bites időzítőt 1 használjuk egy előskáler beállítással, amely 1600/16000000 = 0,1ms időt ad számunkra, ha egy szinusz hullám egyetlen félciklusát vesszük figyelembe., amely pontosan 100-szor illeszkedik a hullám fél ciklusán belül. Egyszerűbben fogalmazva: 200-szor fogunk tudni mintát venni a szinusz hullámunkból.
Ezután el kell osztanunk a szinusz hullámunkat 200 darabra, és az amplitúdó korrelációjával kell kiszámítanunk értékeiket. Ezután ezeket az értékeket időzítő számláló értékekké kell átalakítanunk, megszorozva azt a számláló határértékével. Végül fel kell tennünk ezeket az értékeket egy keresőtáblába, hogy betápláljuk a számlálóba, és megkapjuk a szinusz hullámunkat.
A dolgok egy picit egyszerűbbé tétele érdekében egy nagyon jól megírt SPWM kódot használok a GitHub-tól, amelyet Kurt Hutten készített.
A kód nagyon egyszerű. A programot a szükséges fejlécfájlok hozzáadásával kezdjük
#include #include
Ezután megvan a két keresési táblázatunk, amelyekből megkapjuk az időzítő számláló értékeit.
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};
Ezután a beállítás részben inicializáljuk az időzítő számláló vezérlő regisztereit, hogy mindegyiken tiszta legyen. További információkért át kell mennie az atmega328 IC adatlapján.
TCCR1A = 0b10100010; / * 10 tiszta meccsen, BOTTOM-ban állítva a compA számára. 10 tiszta meccsen, a BOTTOM-nál állítva a compB számára. 00 10 WGM1 1: 0 a 15. hullámformához. * / TCCR1B = 0b00011001; / * 000 11 WGM1 3: 2 a 15. hullámformához. 001 nincs előskála a számlálón. * / TIMSK1 = 0b00000001; / * 0000000 1 TOV1 Flag megszakítás engedélyezése. * /
Ezt követően inicializáljuk a bemeneti rögzítési regisztert egy előre meghatározott 16000 értékkel, mivel ez pontosan 200 minta előállításához segít.
ICR1 = 1600; // 16MHz-es kristály periódusa, 100KHz-es kapcsolási frekvenciánál, 200 alfelülethez 50Hz-es szinusz hullám ciklusonként
Ezután engedélyezzük a globális megszakításokat a függvény meghívásával, sei ();
Végül kimenetként állítottuk be az Arduino 9. és 10. tűt
DDRB = 0b00000110; // Állítsa kimenetekként a PB1 és a PB2 elemeket.
Ez a telepítési funkció végét jelenti.
A kód hurok szakasza üres marad, mivel ez egy időzítő számláló megszakítással vezérelt program.
void loop () {; /*Ne csinálj semmit…. örökké!*/}
Ezután meghatároztuk a timer1 túlcsordulási vektort, ez a megszakítási funkció hívást kap, ha az timer1 túlcsordul és megszakítást generál.
ISR (TIMER1_OVF_vect) {
Ezután deklarálunk néhány lokális változót statikus változóként, és elkezdtük az értékek betáplálását a befogási és összehasonlító ellenállásba.
statikus int szám; statikus char trig; // minden időszakban megváltoztatja az üzemi ciklust. OCR1A = lookUp1; OCR1B = lookUp2;
Végül előre növeljük a számlálót, hogy a következő értékeket betápláljuk a befogási és összehasonlító ellenállásokba, ami ennek a kódnak a végét jelöli.
if (++ num> = 200) {// Pre-increment num, akkor ellenőrizze, hogy 200 alatt van-e. num = 0; // Szám visszaállítása trig = trig ^ 0b00000001; digitalWrite (13, trig); }
A TL494 PWM inverter áramkörének tesztelése
Az áramkör teszteléséhez a következő beállítást kell használni.
- 12 V-os ólomakkumulátor.
- Transzformátor, amelynek 6-0-6 és 12-0-12 csapja van
- 100 W-os izzólámpa terhelésként
- Meco 108B + TRMS multiméter
- Meco 450B + TRMS multiméter
Kimeneti jel az Arduino-tól:
Miután feltöltöttem a kódot. Megmértem a kimenő SPWM jelet az Arduino két érintkezőjéről, amely az alábbi képnek tűnik,
Ha kicsit nagyítunk, láthatjuk a PWM hullám folyamatosan változó munkaciklusát.
Ezután az alábbi kép a transzformátor kimeneti jelét mutatja.
SPWM inverter áramkör ideális állapotban:
Amint a fenti képen látható, ez az áramkör 13 W körüli teljesítményt nyújt ideális működése közben
Kimeneti feszültség terhelés nélkül:
Az inverter áramkör kimeneti feszültsége fent látható, ez az a feszültség, amely terhelés nélkül jön ki a kimeneten.
Bemeneti energiafogyasztás:
A fenti kép azt a bemeneti teljesítményt mutatja, amelyet 40 W-os terhelés esetén fogyaszt.
Kimeneti energiafogyasztás:
A fenti képen látható az áramkör által fogyasztott kimenő teljesítmény (a terhelés 40 W-os izzólámpa)
Ezzel lezárjuk az áramkör tesztelési részét. Megnézheti az alábbi videót bemutatóként. Remélem, tetszett ez a cikk, és megtudott egy kicsit az SPWM-ről és annak megvalósítási technikáiról. Olvass tovább, tanulj, építs tovább, és találkozunk a következő projektben.