- Ano ang SPWM (Sinusoidal Pulse Width Modulation)?
- Paano gumagana ang SPWM Inverter
- Kinakailangan ang Mga Bahagi upang Bumuo ng SPWM Inverter
- Paggawa ng SPWM Inverter Circuit
- Arduino Program para sa SPWM Inverter
- Pagsubok sa TL494 PWM Inverter Circuit
Ang mga circuit ng inverter ay madalas na kinakailangan kung saan hindi posible na makakuha ng suplay ng AC mula sa grid. Ginagamit ang isang inverter circuit upang baguhin ang DC power sa AC power at maaari itong nahahati sa dalawang uri na Pure Sine Wave Inverters o Modified Square Wave Inverters. Ang mga dalisay na inverter na alon ng sine na ito ay napakamahal, kung saan ang binago na mga square inverter na alon ay hindi magastos. Matuto nang higit pa tungkol sa iba't ibang uri ng inverter dito.
Sa isang nakaraang artikulo, ipinakita ko sa iyo kung paano hindi makagawa ng isang binagong parisukat na alon na inverter sa pamamagitan ng pagtugon sa mga problemang nauugnay dito. Kaya sa artikulong ito, gagawa ako ng isang simpleng dalisay na inverter ng sine wave gamit ang Arduino, at ipaliwanag ang gumaganang prinsipyo ng circuit.
Kung gumagawa ka ng circuit na ito, mangyaring tandaan na ang circuit na ito ay walang tampok na feedback, walang labis na proteksyon, walang maikling proteksyon sa circuit, at walang proteksyon sa temperatura. Samakatuwid ang circuit na ito ay itinayo at ipinakita para sa mga hangaring pang-edukasyon lamang, at ganap na hindi inirerekumenda na itayo at gamitin ang ganitong uri ng circuit para sa mga komersyal na kasangkapan. Gayunpaman maaari mong idagdag ang mga ito sa iyong circuit kung kinakailangan, ang karaniwang ginagamit na mga circuit ng proteksyon tulad ng
Napag-usapan na ang Over Voltage Protection, Overcurrent Protection, Reverse Polarity Protection, Short Circuit Protection, Hot Swap controller, atbp.
Pag-iingat: Kung gumagawa ka ng ganitong uri ng circuit, mangyaring maging labis na maingat tungkol sa mataas na boltahe at boltahe na mga spike na nabuo ng switching signal sa input.
Ano ang SPWM (Sinusoidal Pulse Width Modulation)?
Tulad ng ipinahihiwatig ng pangalan, ang SPWM ay nangangahulugang S inusoidal P ulse W idth M odulation. Tulad ng alam mo na, ang isang signal ng PWM ay isang senyas kung saan maaari nating baguhin ang dalas ng pulso pati na rin ang on-time at off-time, na kilala rin bilang duty cycle. Kung nais mong matuto nang higit pa tungkol sa PWM, maaari mo itong basahin dito. Kaya, sa pamamagitan ng pag-iiba ng cycle ng tungkulin, binabago namin ang average boltahe ng pulso. Ipinapakita ng imahe sa ibaba na-
Kung isasaalang-alang namin ang isang senyas ng PWM na lumilipat sa pagitan ng 0 - 5V na mayroong isang cycle ng tungkulin na 100%, makakakuha kami ng isang average na boltahe ng output na 5V, muli kung isasaalang-alang namin ang parehong signal na may isang cycle ng tungkulin na 50%, gagawin namin makuha ang output boltahe ng 2.5V, at para sa cycle ng tungkulin na 25%, kalahati nito. Ibinubuod nito ang pangunahing prinsipyo ng signal ng PWM, at maaari tayong lumipat sa pag-unawa sa pangunahing prinsipyo ng signal ng SPWM.
Ang isang boltahe ng sine ay pangunahin na isang pagkakatulad na boltahe na binabago ang lakas nito sa paglipas ng panahon, at maaari nating kopyahin ang pag-uugali na ito ng isang sine wave sa pamamagitan ng patuloy na pagbabago ng cycle ng tungkulin ng PWM alon, ipinapakita iyon ng imahe sa ibaba.
Kung titingnan mo ang eskematiko sa ibaba, makikita nito na may isang capacitor na konektado sa output ng transpormer. Ang kapasitor na ito ay responsable para sa pagpapakinis ng signal ng AC mula sa dalas ng carrier.
Ang ginamit na signal ng pag-input ay sisingilin at magpapalabas ng capacitor ayon sa input signal at load. Tulad ng paggamit namin ng isang napakataas na dalas na signal ng SPWM, magkakaroon ito ng napakaliit na cycle ng tungkulin na tulad ng 1%, ang 1% na cycle ng tungkulin na ito ay sisingilin nang kaunti ang capacitor, ang susunod na cycle ng tungkulin ay 5%, muli itong sisingilin ang kapasitor ng kaunti pa, kasunod ng pulso ay magkaroon ng isang duty cycle ng 10% at ang kapasitor sisingilin ng isang maliit na bit higit pa, kami ay mag-aplay ang signal hanggang umabot kami ng duty cycle ng 100% at mula doon, kami ay pumunta sa likod pababa hanggang 1%. Lilikha ito ng isang napaka-makinis na curve tulad ng isang sine wave sa output. Kaya, sa pamamagitan ng pagbibigay ng wastong mga halaga ng cycle ng tungkulin sa input, magkakaroon kami ng isang napaka-sinusoidal na alon sa output.
Paano gumagana ang SPWM Inverter
Ipinapakita ng imahe sa itaas ang pangunahing seksyon ng pagmamaneho ng inverter ng SPWM, at tulad ng nakikita mo, gumamit kami ng dalawang N-channel MOSFET sa pagsasaayos ng kalahating tulay upang himukin ang transpormer ng circuit na ito, upang mabawasan ang hindi nais na paglipat ng ingay at protektahan ang MOSFET, ginamit namin ang 1N5819 diode parallel sa MOSFETs. Upang mabawasan ang anumang nakakapinsalang mga spike na nabuo sa seksyon ng gate, ginamit namin ang 4.7 ohms resistors kahanay ng 1N4148 diode. Sa wakas, ang BD139 at BD 140 transistors ay naka-configure sa isang push-pull configupang himukin ang gate ng MOSFET, dahil ang MOSFET na ito ay may napakataas na capacitance ng gate at nangangailangan ng isang minimum na 10V sa base upang mabuksan nang maayos. Matuto nang higit pa tungkol sa pagtatrabaho ng Push-Pull amplifiers dito.
Upang higit na maunawaan ang nagtatrabaho prinsipyo ng circuit, binawasan namin ito sa isang punto kung saan ang seksyon na ito ng MOSFET ay ON. Kapag ang MOSFET ay nasa kasalukuyang, unang dumadaloy sa pamamagitan ng transpormer at pagkatapos ay mina-grounded ng MOSFET, sa gayon ang isang pang -magnet na pagkilos ng bagay ay sapilitan din sa direksyon kung saan dumadaloy ang kasalukuyang, at ang core ng transpormer ay magpapasa sa magnetic flux sa pangalawang paikot-ikot, at makukuha namin ang positibong kalahating ikot ng sinusoidal signal sa output.
Sa susunod na pag-ikot, ang ilalim na bahagi ng circuit ay nasa tuktok na bahagi ng circuit na off kaya't inalis ko ang tuktok na bahagi, ngayon ang kasalukuyang daloy sa kabaligtaran na direksyon at bumubuo ng isang magnetic flux sa direksyong iyon, sa gayon ay baligtarin ang direksyon ng magnetic flux sa core. Matuto nang higit pa tungkol sa pagtatrabaho ng MOSFET dito.
Ngayon, alam nating lahat na ang isang transpormer ay gumagana sa pamamagitan ng mga pagbabago sa magnetic flux. Kaya, ang pag-on at pag-off ng parehong MOSFETs, ang isa ay baligtad sa isa pa at ginagawa iyon ng 50 beses sa isang segundo, ay makakabuo ng isang magandang oscillating magnetic flux sa loob ng core ng transpormer at ang nagbabago ng magnetic flux ay mag-uudyok ng isang boltahe sa pangalawang likaw bilang alam natin sa batas ng faraday. Iyon ay kung paano gumagana ang pangunahing inverter.
Ang kumpletong circuit ng inverter ng SPWM na ginamit sa proyektong ito ay ibinibigay sa ibaba.
Kinakailangan ang Mga Bahagi upang Bumuo ng SPWM Inverter
Sl. Hindi |
Mga Bahagi |
Uri |
Dami |
1 |
Atmega328P |
IC |
1 |
2 |
IRFZ44N |
Mosfet |
2 |
3 |
BD139 |
Transistor |
2 |
4 |
BD140 |
Transistor |
2 |
5 |
22pF |
Kapasitor |
2 |
6 |
10K, 1% |
Resistor |
1 |
7 |
16MHz |
Crystal |
1 |
8 |
0.1uF |
Kapasitor |
3 |
9 |
4.7R |
Resistor |
2 |
10 |
1N4148 |
Diode |
2 |
11 |
LM7805 |
Regulator ng Boltahe |
1 |
12 |
200uF, 16V |
Kapasitor |
1 |
13 |
47uF, 16V |
Kapasitor |
1 |
14 |
2.2uF, 400V |
Kapasitor |
1 |
Paggawa ng SPWM Inverter Circuit
Para sa pagpapakitang ito, ang circuit ay itinayo sa Veroboard, sa tulong ng eskematiko, Sa output ng transpormer, isang malaking halaga ng kasalukuyang dumadaloy sa pamamagitan ng koneksyon, kaya't ang mga jumpers ng koneksyon ay kailangang maging makapal hangga't maaari.
Arduino Program para sa SPWM Inverter
Bago kami magpatuloy at simulang maunawaan ang code, limasin natin ang mga pangunahing kaalaman. Mula sa prinsipyo ng pagtatrabaho sa itaas, natutunan mo kung paano magiging hitsura ang signal ng PWM sa output, ngayon ang tanong ay nananatili kung paano namin makagagawa ng iba't ibang alon sa mga output pin ng Arduino.
Upang makagawa ng iba't ibang signal ng PWM, gagamitin namin ang 16-bit timer1 na may prescaler setting na 1, na magbibigay sa amin ng 1600/16000000 = 0.1ms na oras para sa bawat bilang kung isasaalang-alang namin ang isang solong kalahating-ikot ng isang sine wave, na umaangkop nang eksaktong 100 beses sa loob ng isang kalahating ikot ng alon. Sa simpleng mga termino, magagawa naming i-sample ang aming sine wave ng 200 beses.
Susunod, kailangan nating hatiin ang aming sine alon sa 200 piraso at kalkulahin ang kanilang mga halaga sa isang ugnayan ng amplitude. Susunod, kailangan nating i-convert ang mga halagang iyon sa mga counter counter na halaga sa pamamagitan ng pagpaparami nito sa counter limit. Sa wakas, kailangan nating ilagay ang mga halagang iyon sa isang lookup table upang pakainin ito sa counter at makukuha namin ang aming sine wave.
Upang gawing mas simple ang mga bagay, gumagamit ako ng napakahusay na nakasulat na SPWM code mula sa GitHub na ginawa ni Kurt Hutten.
Napakadali ng code, Sinimulan namin ang aming programa sa pamamagitan ng pagdaragdag ng kinakailangang mga file ng header
# isama ang # isama
Susunod, mayroon kaming aming dalawang mga talahanayan ng paghahanap kung saan kukuha kami ng mga halaga ng timer counter.
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}; 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, 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};
Susunod, sa seksyon ng pag- set up , pinasimulan namin ang mga rehistro ng counter counter control upang maging malinaw sa bawat isa. Para sa karagdagang impormasyon, kailangan mong dumaan sa datasheet ng atmega328 IC.
TCCR1A = 0b10100010; / * 10 malinaw sa laban, itinakda sa BOTTOM para sa compA. 10 malinaw sa laban, itinakda sa BOTTOM para sa compB. 00 10 WGM1 1: 0 para sa form ng alon 15. * / TCCR1B = 0b00011001; / * 000 11 WGM1 3: 2 para sa form ng alon 15. 001 walang prescale sa counter. * / TIMSK1 = 0b00000001; / * 0000000 1 TOV1 I-flag ang pag-abala paganahin. * /
Pagkatapos nito, pinasimulan namin ang rehistro ng pag- capture ng pag-input na may paunang natukoy na halaga ng 16000 dahil makakatulong ito sa amin na makabuo ng eksaktong 200 na mga sample.
ICR1 = 1600; // Panahon para sa 16MHz na kristal, para sa isang dalas ng paglipat ng 100KHz para sa 200 mga subdibisyon bawat 50Hz sine wave cycle.
Susunod, pinapagana namin ang mga pandaigdigang pagkagambala sa pamamagitan ng pagtawag sa pagpapaandar, sei ();
Sa wakas, itinakda namin ang Arduino pin 9 at 10 bilang output
DDRB = 0b00000110; // Itakda ang PB1 at PB2 bilang mga output.
Na ang marka ng pagtatapos ng pag-andar ng pag-setup.
Ang seksyon ng loop ng code ay mananatiling walang laman dahil ito ay isang programa ng timer counter na nakagambala.
walang bisa loop () {; / * Huwag gumawa…. magpakailanman! * /}
Susunod, natukoy namin ang timer1 overflow vector, ang nakakagambala na pagpapaandar na ito ay nakakakuha ng isang tawag sa sandaling ang timer1 ay umapaw at bumubuo ng isang nakakagambala.
ISR (TIMER1_OVF_vect) {
Susunod, idineklara namin ang ilang mga lokal na variable bilang mga static variable at nagsimula kaming pakainin ang mga halaga sa makuha at ihambing ang risistor.
static int num; static char trig; // baguhin ang duty-cycle bawat panahon. OCR1A = lookUp1; OCR1B = lookUp2;
Sa wakas, pauna naming dagdagan ang counter upang pakainin ang mga susunod na halaga sa pagkuha at ihambing ang mga resistor, na nagmamarka sa pagtatapos ng code na ito.
kung (++ num> = 200) {// Pre-increment num pagkatapos suriin ito sa ibaba 200. num = 0; // I-reset ang num. trig = trig ^ 0b00000001; digitalWrite (13, trig); }
Pagsubok sa TL494 PWM Inverter Circuit
Upang masubukan ang circuit, ginagamit ang sumusunod na pag-setup.
- 12V lead-acid na baterya.
- Isang transpormer na mayroong 6-0-6 tap at isang 12-0-12 tap
- 100W maliwanag na ilaw bombilya bilang isang pagkarga
- Meco 108B + TRMS Multimeter
- Meco 450B + TRMS Multimeter
Output Signal mula sa Arduino:
Kapag na-upload ko na ang code. Sinukat ko ang signal ng output SPWM mula sa dalawang mga pin ng Arduino na mukhang sa ibaba ng imahe,
Kung mag-zoom in tayo nang kaunti maaari nating makita ang patuloy na pagbabago ng cycle ng tungkulin ng PWM alon.
Susunod, ipinapakita ng imahe sa ibaba ang signal ng output mula sa transpormer.
SPWM Inverter Circuit sa mainam na estado:
Tulad ng nakikita mo mula sa imahe sa itaas, ang circuit na ito ay kumukuha sa paligid ng 13W habang tumatakbo ang perpekto
Output Boltahe Nang Walang Load:
Ang output boltahe ng inverter circuit ay ipinapakita sa itaas, ito ang boltahe na lumalabas sa output nang walang anumang nakakabit na karga.
Input na Kuryente sa Pag-input:
Ipinapakita ng imahe sa itaas ang lakas ng pag-input na kung saan ay ubusin kapag naka-attach ang isang 40W na pag-load.
Pagkonsumo ng Power Output:
Ipinapakita ng imahe sa itaas ang lakas ng paglabas na natupok ng circuit na ito, (ang karga ay isang 40W bombilya na maliwanag na maliwanag)
Sa pamamagitan nito, natatapos namin ang pagsubok na bahagi ng circuit. Maaari mong suriin ang video sa ibaba para sa isang pagpapakita. Inaasahan kong nagustuhan mo ang artikulong ito at natutunan nang kaunti tungkol sa SPWM at mga diskarte sa pagpapatupad nito. Patuloy na basahin, patuloy na matuto, magpatuloy sa pagbuo at makikita kita sa susunod na proyekto.