- Co je SPWM (sinusová modulace šířky pulzu)?
- Jak funguje invertor SPWM
- Komponenty potřebné k sestavení měniče SPWM
- Konstrukce obvodu invertoru SPWM
- Program Arduino pro invertor SPWM
- Testování obvodu měniče TL494 PWM
Obvody střídače jsou často potřebné tam, kde není možné získat střídavé napájení ze sítě. Obvod střídače se používá k převodu stejnosměrného napájení na střídavý proud a lze jej rozdělit na dva typy, a to na střídače Pure Sine Wave nebo Modified Square Wave inverters. Tyto čistě sinusové měniče jsou velmi drahé, přičemž modifikované měniče s obdélníkovými vlnami jsou levné. Zde se dozvíte více o různých typech střídačů.
V předchozím článku jsem vám ukázal, jak nevytvořit upravený měnič obdélníkových vln řešením problémů s ním spojených. V tomto článku tedy vyrobím jednoduchý invertor čisté sinusové vlny pomocí Arduina a vysvětlím princip fungování obvodu.
Pokud vytváříte tento obvod, mějte na paměti, že tento obvod nemá žádnou zpětnou vazbu, žádnou nadproudovou ochranu, žádnou ochranu proti zkratu a žádnou teplotní ochranu. Proto je tento obvod vytvořen a předveden pouze pro vzdělávací účely a rozhodně se nedoporučuje tento typ obvodu stavět a používat pro komerční zařízení. V případě potřeby je však můžete přidat do svého obvodu, jako jsou běžně používané ochranné obvody
Ochrana proti přepětí, ochrana proti nadproudu, ochrana proti přepólování, ochrana proti zkratu, regulátor Hot Swap atd. Již byly diskutovány.
UPOZORNĚNÍ: Pokud vytváříte tento typ obvodu, buďte obzvláště opatrní na vysoké napětí a napěťové špičky generované spínacím signálem na vstup.
Co je SPWM (sinusová modulace šířky pulzu)?
Jak název napovídá, SPWM znamená S inusoidal P ulse W idth M odulation. Jak již možná víte, signál PWM je signál, ve kterém můžeme měnit frekvenci pulzu, stejně jako čas zapnutí a vypnutí, který je také známý jako pracovní cyklus. Pokud se chcete o PWM dozvědět více, můžete si je přečíst zde. Takže změnou pracovního cyklu měníme průměrné napětí pulzu. Obrázek níže ukazuje, že -
Uvažujeme-li PWM signál, který je přepínání mezi 0 - 5V, který má pracovní cyklus 100%, dostaneme průměrnou výstupní napětí 5V, znovu, pokud vezmeme v úvahu stejný signál s pracovním cyklem 50%, budeme získejte výstupní napětí 2,5 V a pro pracovní cyklus 25% je to polovina. To shrnuje základní princip signálu PWM a můžeme přejít k pochopení základního principu signálu SPWM.
Sinusové napětí, je v první řadě analogií napětí, které mění její velikost v průběhu času, a můžeme reprodukci tohoto chování sinusové vlny tím, neustále mění pracovní cyklus PWM vlny, níže obrázek ukazuje, že.
Pokud se podíváte na níže uvedené schéma, uvidíte, že na výstupu transformátoru je připojen kondenzátor. Tento kondenzátor je zodpovědný za vyhlazení střídavého signálu z nosné frekvence.
Použitý vstupní signál nabije a vybije kondenzátor podle vstupního signálu a zátěže. Protože jsme použili velmi vysokofrekvenční signál SPWM, bude mít velmi malý pracovní cyklus, který je jako 1%, tento 1% pracovní cyklus trochu nabije kondenzátor, další pracovní cyklus je 5%, tím se znovu nabije kondenzátor o něco více, následující impuls bude mít pracovní cyklus 10% a kondenzátor se bude nabíjet o něco více, budeme aplikovat signál, dokud nedosáhneme pracovního cyklu 100% a odtud se vrátíme dolů na 1%. Tím se na výstupu vytvoří velmi hladká křivka jako sinusová vlna. Takže poskytnutím správných hodnot pracovního cyklu na vstupu budeme mít na výstupu velmi sinusovou vlnu.
Jak funguje invertor SPWM
Výše uvedený obrázek ukazuje hlavní hnací část střídače SPWM a jak vidíte, použili jsme dva N-kanálové MOSFETy v konfiguraci polovičního můstku k pohonu transformátoru tohoto obvodu, ke snížení nežádoucího spínacího šumu a ochraně MOSFET, použili jsme diody 1N5819 paralelně s MOSFETy. Pro snížení škodlivých špiček generovaných v sekci brány jsme použili paralelně rezistory 4,7 ohmů s diodami 1N4148. Konečně, BD139 a BD 140 tranzistory jsou uspořádány v souměrném uspořádánířídit bránu MOSFET, protože tento MOSFET má velmi vysokou kapacitu brány a pro správné zapnutí vyžaduje minimálně 10V na základně. Další informace o fungování zesilovačů Push-Pull se dozvíte zde.
Abychom lépe porozuměli principu fungování obvodu, snížili jsme ho do bodu, kdy je tato část MOSFET ZAPNUTÁ. Když je MOSFET na proudu, nejprve protéká transformátorem a poté se uzemní MOSFETem, takže magnetický tok bude také indukován ve směru, ve kterém protéká proud, a jádro transformátoru bude procházet magnetickým tokem v sekundárním vinutí a na výstupu získáme kladný poloviční cyklus sinusového signálu.
V dalším cyklu je spodní část obvodu v horní části obvodu vypnutá, proto jsem odstranil horní část, nyní proud proudí v opačném směru a generuje magnetický tok v tomto směru, čímž se obrací směr magnetického toku v jádře. Více informací o fungování MOSFET se dozvíte zde.
Nyní všichni víme, že transformátor pracuje na základě změn magnetického toku. Takže zapnutím a vypnutím obou MOSFETů, převrácených do druhého a 50krát za sekundu, vznikne pěkný oscilační magnetický tok uvnitř jádra transformátoru a měnící se magnetický tok indukuje napětí v sekundární cívce víme to podle Faradayova zákona. Tak funguje základní střídač.
Kompletní invertorový obvod SPWM použitý v tomto projektu je uveden níže.
Komponenty potřebné k sestavení měniče SPWM
Sl. Č |
Díly |
Typ |
Množství |
1 |
Atmega328P |
IC |
1 |
2 |
IRFZ44N |
Mosfet |
2 |
3 |
BD139 |
Tranzistor |
2 |
4 |
BD140 |
Tranzistor |
2 |
5 |
22pF |
Kondenzátor |
2 |
6 |
10 tis., 1% |
Rezistor |
1 |
7 |
16 MHz |
Krystal |
1 |
8 |
0,1 μF |
Kondenzátor |
3 |
9 |
4,7R |
Rezistor |
2 |
10 |
1N4148 |
Dioda |
2 |
11 |
LM7805 |
Regulátor napětí |
1 |
12 |
200uF, 16V |
Kondenzátor |
1 |
13 |
47uF, 16V |
Kondenzátor |
1 |
14 |
2,2 uF, 400 V |
Kondenzátor |
1 |
Konstrukce obvodu invertoru SPWM
Pro tuto ukázku je obvod konstruován na Veroboardu pomocí schématu. Na výstupu transformátoru protéká spojením obrovské množství proudu, takže propojky musí být co nejsilnější.
Program Arduino pro invertor SPWM
Než začneme a začneme rozumět kódu, vyjasněme si základní informace. Z výše uvedeného pracovního principu jste se naučili, jak bude vypadat signál PWM na výstupu, nyní zůstává otázkou, jak můžeme na výstupních pinech Arduina vytvořit takovou proměnlivou vlnu.
Abychom vytvořili měnící se signál PWM, použijeme 16bitový časovač1 s nastavením předvolby 1, což nám dá 1600/16000000 = 0,1ms čas pro každý počet, pokud vezmeme v úvahu jeden půlcykus sinusové vlny, který zapadá přesně stokrát do poloviny cyklu vlny. Jednoduše řečeno, budeme moci ochutnat naši sinusovou vlnu 200krát.
Dále musíme rozdělit naši sinusovou vlnu na 200 kusů a vypočítat jejich hodnoty s korelací amplitudy. Dále musíme tyto hodnoty převést na hodnoty čítače časovače vynásobením limitem čítače. Nakonec musíme tyto hodnoty vložit do vyhledávací tabulky, abychom je mohli přivést k pultu a dostaneme naši sinusovou vlnu.
Aby to bylo trochu jednodušší, používám velmi dobře napsaný SPWM kód z GitHubu, který vytvořil Kurt Hutten.
Kód je velmi jednoduchý, náš program začneme přidáním požadovaných hlavičkových souborů
# zahrnout # zahrnout
Dále máme dvě vyhledávací tabulky, ze kterých získáme hodnoty čítače časovače.
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};
Dále v sekci nastavení inicializujeme řídicí registry čítače časovače, aby byly na každém z nich jasné. Další informace najdete v datovém listu atmega328 IC.
TCCR1A = 0b10100010; / * 10 jasné na zápas, nastaveno na DOLNÍ pro compA. 10 jasných na zápas, nastaveno na BOTTOM pro compB. 00 10 WGM1 1: 0 pro průběh 15. * / TCCR1B = 0b00011001; / * 000 11 WGM1 3: 2 pro průběh 15. 001 bez předvolby na počítadle. * / TIMSK1 = 0b00000001; / * 0000000 1 Povolení přerušení příznaku TOV1. * /
Poté inicializujeme registr zachycení vstupu s předdefinovanou hodnotou 16000, protože nám to pomůže vygenerovat přesně 200 vzorků.
ICR1 = 1600; // Perioda pro 16MHz krystal, pro spínací frekvenci 100KHz pro 200 subdivizí na 50Hz sinusový cyklus.
Dále povolíme globální přerušení voláním funkce, sei ();
Nakonec jsme nastavili Arduino pin 9 a 10 jako výstup
DDRB = 0b00000110; // Nastaví PB1 a PB2 jako výstupy.
To znamená konec funkce nastavení.
Smyčková část kódu zůstává prázdná, protože se jedná o program řízený přerušením časovače.
void loop () {; /*Nedělat nic…. navždy!*/}
Dále jsme definovali vektor přetečení časovače1, tato funkce přerušení dostane hovor, jakmile dojde k přetečení časovače1 a vygeneruje přerušení.
ISR (TIMER1_OVF_vect) {
Dále deklarujeme některé lokální proměnné jako statické proměnné a začali jsme přivádět hodnoty do rezistoru zachycení a porovnání.
statické int číslo; statický char trig; // změna pracovního cyklu každé období. OCR1A = lookUp1; OCR1B = lookUp2;
Nakonec předem zvýšíme počitadlo, aby se další hodnoty přivedly na odpory pro zachycení a porovnání, které označují konec tohoto kódu.
if (++ num> = 200) {// Pre-increment num then check it's below 200. num = 0; // Resetovat číslo trig = trig ^ 0b00000001; digitalWrite (13, trig); }
Testování obvodu měniče TL494 PWM
K otestování obvodu se používá následující nastavení.
- 12V olověný akumulátor.
- Transformátor, který má odbočku 6-0-6 a odbočku 12-0-12
- 100W žárovka jako zátěž
- Multimetr Meco 108B + TRMS
- Multimetr Meco 450B + TRMS
Výstupní signál z Arduina:
Jakmile jsem nahrál kód. Změřil jsem výstupní signál SPWM ze dvou pinů Arduina, který vypadá jako obrázek níže,
Pokud se trochu přiblížíme, můžeme vidět neustále se měnící pracovní cyklus vlny PWM.
Dále níže uvedený obrázek ukazuje výstupní signál z transformátoru.
Obvod střídače SPWM v ideálním stavu:
Jak můžete vidět z výše uvedeného obrázku, tento obvod při ideálním běhu čerpá kolem 13 W.
Výstupní napětí bez zátěže:
Výstupní napětí obvodu měniče je zobrazeno výše, jedná se o napětí vycházející z výstupu bez připojené zátěže.
Příkon:
Výše uvedený obrázek ukazuje příkon, který ic spotřebovává při připojení zátěže 40 W.
Spotřeba výstupního výkonu:
Výše uvedený obrázek ukazuje výstupní výkon spotřebovaný tímto obvodem (zátěž je 40W žárovka)
Tím uzavíráme testovací část obvodu. Níže si můžete prohlédnout ukázku videa. Doufám, že se vám tento článek líbil a dozvěděli jste se něco o SPWM a jeho technikách implementace. Pokračujte ve čtení, pokračujte v učení, pokračujte v budování a uvidíme se v příštím projektu.