- Mikä on SPWM (sinimuotoinen pulssinleveyden modulaatio)?
- Kuinka SPWM-invertteri toimii
- SPWM-invertterin rakentamiseen tarvittavat komponentit
- SPWM-invertteripiirirakenne
- Arduino-ohjelma SPWM-invertterille
- Testaus TL494 PWM -invertteripiirille
Invertteripiirejä tarvitaan usein, jos verkkovirtaa ei ole mahdollista saada verkosta. Invertteripiiriä käytetään muuntamaan tasavirta vaihtovirraksi, ja se voidaan jakaa kahteen tyyppiin, jotka ovat Pure Sine Wave Inverters tai Modified Square Wave Inverters. Nämä puhtaat siniaaltoinvertterit ovat erittäin kalliita, missä modifioidut neliöaaltoinvertterit ovat halpoja. Lisätietoja erityyppisistä taajuusmuuttajista on täällä.
Aikaisemmassa artikkelissa olen osoittanut, kuinka muunnettua neliöaaltosuuntaajaa ei tehdä tekemällä siihen liittyviä ongelmia. Joten tässä artikkelissa aion tehdä yksinkertaisen puhtaan siniaaltoinvertterin Arduinolla ja selittää piirin toimintaperiaate.
Jos teet tätä virtapiiriä, huomaa, että tällä piirillä ei ole takaisinkytkentää, ei ylivirtasuojausta, ei oikosulkusuojausta eikä lämpötilasuojausta. Siksi tämä piiri on rakennettu ja osoitettu vain koulutustarkoituksiin, eikä ole ehdottomasti suositeltavaa rakentaa ja käyttää tämän tyyppistä virtapiiriä kaupallisiin laitteisiin. Voit kuitenkin lisätä ne piiriisi tarvittaessa, yleisesti käytetyt suojapiirit kuten
Ylijännitesuoja, ylivirtasuoja, käänteisen napaisuuden suojaus, oikosulkusuojaus, Hot Swap -ohjain jne. On jo keskusteltu.
VAROITUS: Jos teet tämän tyyppistä piiriä, ole erityisen varovainen suurten jännitteiden ja jännitepiikkien suhteen, jotka syntyvät kytkentäsignaalista tuloon.
Mikä on SPWM (sinimuotoinen pulssinleveyden modulaatio)?
Kuten nimestä voi päätellä, SPWM tarkoittaa S inusoidista P ulse W idth M odulaatiota. Kuten ehkä jo tiedätte, PWM-signaali on signaali, jossa voimme muuttaa pulssin taajuutta sekä päälle- ja poiskytkentäaikaa, joka tunnetaan myös käyttöjaksona. Jos haluat oppia lisää PWM: stä, voit lukea sen täältä. Joten vaihtelemalla käyttöjaksoa muutamme pulssin keskimääräistä jännitettä. Alla oleva kuva osoittaa, että
Jos pidämme PWM-signaali, joka on kytkentä välillä 0 - 5 V, joka on käyttömäärä 100%, saamme keskimääräinen lähtöjännite 5V, uudelleen, jos otamme huomioon saman signaalin työjaksoa 50%, me saada lähtöjännite 2,5 V, ja 25%: n käyttöjaksolle se on puolet siitä. Se tiivistää PWM-signaalin perusperiaatteen, ja voimme siirtyä ymmärtämään SPWM-signaalin perusperiaatetta.
Sini jännite on ensisijaisesti vastaavasti jännitteen, joka muuttuu sen suuruus ajan, ja voimme toistaa tätä käyttäytymistä siniaallon jatkuvasti muuttamalla käyttömäärä PWM aalto, alla kuva osoittaa, että.
Jos tarkastelet alla olevaa kaaviota, se huomaa, että muuntajan lähtöön on kytketty kondensaattori. Tämä kondensaattori vastaa tasoittamalla AC-signaali pois kantoaaltotaajuus.
Käytetty tulosignaali lataa ja purkaa kondensaattorin tulosignaalin ja kuormituksen mukaan. Koska olemme käyttäneet erittäin korkeataajuista SPWM-signaalia, sillä on hyvin pieni käyttöjakso, joka on kuin 1%, tämä 1%: n käyttöjakso lataa kondensaattoria vähän, seuraava käyttöjakso on 5%, tämä taas latautuu kondensaattori hieman enemmän, seuraavan pulssin käyttöjakso on 10% ja kondensaattori latautuu hieman enemmän, käytämme signaalia, kunnes olemme saavuttaneet 100%: n käyttöjakson, ja sieltä palataan alas 1 prosenttiin. Tämä luo lähtöön hyvin sileän käyrän kuin siniaalto. Joten antamalla tulojaksolle oikeat työkierron arvot, meillä on lähdössä erittäin sinimuotoinen aalto.
Kuinka SPWM-invertteri toimii
Yllä olevassa kuvassa on esitetty tärkeimmät ajo osa SPWM invertteri, ja kuten näkyy, olemme käyttäneet kaksi N-kanava-MOSFET on puoli-silta kokoonpano ajaa muuntajan tämän piirin, vähentää ei-toivottuja kytkentä melua ja suojella MOSFET, olemme käyttäneet 1N5819-diodeja rinnakkain MOSFET-laitteiden kanssa. Porttilohkossa syntyvien haitallisten piikkien vähentämiseksi olemme käyttäneet 4,7 ohmin vastuksia rinnakkain 1N4148-diodien kanssa. Lopuksi BD139- ja BD 140 -transistorit on konfiguroitu push-pull- kokoonpanoonajaa MOSFETin porttia, koska tällä MOSFETillä on erittäin suuri portin kapasitanssi ja se vaatii vähintään 10 V: n tyvestä, jotta se kytkeytyy oikein. Lue lisää Push-Pull-vahvistimien toiminnasta täältä.
Piirin toimintaperiaatteen ymmärtämiseksi paremmin olemme vähentäneet sen pisteeseen, jossa MOSFETin tämä osa on päällä. Kun MOSFET on nykyisen, ensimmäinen virtaa muuntajan ja sitten saa maadoitettu MOSFET, siten Magneettivuon myös indusoi siihen suuntaan, jossa virta kulkee, ja ydin muuntaja siirtää magneettivuon toisiokäämityksessä, ja saamme sinimuotoisen signaalin positiivisen puolisyklin lähdössä.
Seuraavassa syklissä, alaosa piiri on yläosa piiri on pois päältä siksi olen poistanut yläosa, nyt virta kulkee vastakkaiseen suuntaan ja muodostaa magneettivuon siihen suuntaan, näin käännetään sydämen magneettivuon suunta. Lue lisää MOSFETin toiminnasta täältä.
Nyt me kaikki tiedämme, että muuntaja toimii magneettivuon muutoksilla. Joten, molempien MOSFETien kytkeminen päälle ja pois päältä, toinen ylösalaisin ja tekemällä se 50 kertaa sekunnissa, tuottaa mukavan värähtelevän magneettivuon muuntajan ytimen sisällä ja muuttuva magneettivuo indusoi jännitteen toissijaisessa kelassa kuin me tiedämme faradayn lailla. Näin taajuusmuuttaja toimii.
Tässä projektissa käytetty täydellinen SPWM-invertteripiiri on annettu alla.
SPWM-invertterin rakentamiseen tarvittavat komponentit
Sl. Ei |
Osat |
Tyyppi |
Määrä |
1 |
Atmega328P |
IC |
1 |
2 |
IRFZ44N |
Mosfet |
2 |
3 |
BD139 |
Transistori |
2 |
4 |
BD140 |
Transistori |
2 |
5 |
22pF |
Kondensaattori |
2 |
6 |
10 kt, 1% |
Vastus |
1 |
7 |
16MHz |
Kristalli |
1 |
8 |
0,1 uF |
Kondensaattori |
3 |
9 |
4.7R |
Vastus |
2 |
10 |
1N4148 |
Diodi |
2 |
11 |
LM7805 |
Jännitteensäädin |
1 |
12 |
200uF, 16V |
Kondensaattori |
1 |
13 |
47uF, 16V |
Kondensaattori |
1 |
14 |
2,2 uF, 400 V |
Kondensaattori |
1 |
SPWM-invertteripiirirakenne
Tämän esittelyn, piiri on rakennettu Veroboard, joiden avulla on kaavamainen, lähdöstä muuntajan, valtava määrä virta kulkee liitoksesta, niin yhteys puseroita tarvitse olla yhtä paksu kuin mahdollista.
Arduino-ohjelma SPWM-invertterille
Ennen kuin siirrymme eteenpäin ja aloitamme koodin ymmärtämisen, selvennetään perusteet. Yllä olevasta toimintaperiaatteesta olet oppinut, kuinka PWM-signaali näyttää lähdössä, nyt on edelleen kysymys siitä, miten voimme tehdä niin vaihtelevan aallon Arduinon lähtöliittimissä.
Jotta erilaiset PWM-signaalin, aiomme käyttää 16-bittistä Timer1 kanssa prescaler asetus 1, joka antaa meille 1600/16000000 = 0.1ms aika laskettavat jos ajatellaan yhden puolijakson siniaallon, joka sopii tarkalleen 100 kertaa puolen aallon jakson sisällä. Yksinkertaisesti sanottuna pystymme näyte siniaalto 200 kertaa.
Seuraavaksi meidän on jaettava siniaalto 200 kappaleeksi ja laskettava niiden arvot amplitudin korrelaatiolla. Seuraavaksi meidän on muunnettava nämä arvot ajastimen laskuriarvoiksi kertomalla se laskurin rajalla. Lopuksi meidän on lisättävä nämä arvot hakutaulukkoon syöttääksesi sen laskuriin ja saamme siniaaltoamme.
Jotta asiat olisivat hieman yksinkertaisempia, käytän erittäin hyvin kirjoitettua SPWM-koodia GitHubilta, jonka on tehnyt Kurt Hutten.
Koodi on hyvin yksinkertainen. Aloitamme ohjelmamme lisäämällä vaaditut otsikkotiedostot
# sisällyttää # sisällytä
Seuraavaksi meillä on kaksi hakutaulukkoamme, joista aiomme saada ajastimen laskurin arvot.
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};
Seuraavaksi, asennusosassa , alustamme ajastinlaskurin ohjausrekisterit selkeiksi kussakin. Saat lisätietoja käymällä läpi atmega328 IC: n tietolomakkeen.
TCCR1A = 0b10100010; / * 10 selvä ottelussa, asetettu BOTTOM compA: lle. 10 selvä ottelussa, asetettu BOTTOM compB: lle. 00 10 WGM1 1: 0 aaltomuodolle 15. * / TCCR1B = 0b00011001; / * 000 11 WGM1 3: 2 aaltomuodolle 15. 001 ei esiasetusta laskurilla. * / TIMSK1 = 0b00000001; / * 0000000 1 TOV1 Lipun keskeytys -toiminto. * /
Sen jälkeen alustamme syötteen sieppausrekisterin ennalta määritetyllä arvolla 16000, koska se auttaa meitä tuottamaan tarkalleen 200 näytettä.
ICR1 = 1600; // Aika 16 MHz: n kristalleille, 100 KHz: n kytkentätaajuudelle 200 osastolle 50 Hz: n siniaaltojaksoa kohden.
Seuraavaksi otamme käyttöön globaalit keskeytykset kutsumalla funktion, sei ();
Lopuksi asetamme Arduino-nastat 9 ja 10 lähtöön
DDRB = 0b00000110; // Aseta lähdöiksi PB1 ja PB2.
Tämä merkitsee asennustoiminnon loppua.
Koodin silmukkaosa pysyy tyhjänä, koska se on ajastinlaskurin keskeytysohjattu ohjelma.
void loop () {; /*Älä tee mitään…. ikuisesti!*/}
Seuraavaksi olemme määrittäneet ajastimen1 ylivuotovektorin, tämä keskeytystoiminto saa puhelun, kun ajastin1 on täynnä ja tuottaa keskeytyksen.
ISR (TIMER1_OVF_vect) {
Seuraavaksi julistamme joitain paikallisia muuttujia staattisiksi muuttujiksi ja olemme aloittaneet arvojen syöttämisen sieppaus- ja vertailuvastukseen.
staattinen int-numero; staattinen char trig; // vaihda käyttöjaksoa joka jakso. OCR1A = lookUp1; OCR1B = lookUp2;
Lopuksi lisäämme laskuria etukäteen syöttämään seuraavat arvot sieppaus- ja vertailuvastuksiin, mikä merkitsee tämän koodin loppua.
jos (++ num> = 200) {// Pre-increment num, tarkista, että se on alle 200. num = 0; // Palauta numero trig = trig ^ 0b00000001; digitalWrite (13, trig); }
Testaus TL494 PWM -invertteripiirille
Piirin testaamiseksi käytetään seuraavaa asetusta.
- 12 V: n lyijyakku.
- Muuntaja, jossa on 6-0-6 hana ja 12-0-12 hana
- 100 W: n hehkulamppu kuormana
- Meco 108B + TRMS yleismittari
- Meco 450B + TRMS yleismittari
Lähtösignaali Arduinolta:
Kun olen ladannut koodin. I mitattu ulostulo SPWM signaalin kahdesta nastat Arduino joka näyttää alla kuva,
Jos lähennämme hieman, voimme nähdä PWM-aallon jatkuvasti muuttuvan käyttöjakson.
Seuraavaksi alla oleva kuva näyttää muuntajan lähtösignaalin.
SPWM-invertteripiiri ihanteellisessa tilassa:
Kuten yllä olevasta kuvasta näet, tämä piiri vetää noin 13 W: n käydessä ihanteellisesti
Lähtöjännite ilman kuormaa:
Taajuusmuuttajapiirin lähtöjännite on esitetty yllä, tämä on jännite, joka tulee lähtöön ilman kuormitusta.
Syöttötehon kulutus:
Yllä oleva kuva näyttää syöttötehon, joka kuluu, kun 40 W: n kuorma on kiinnitetty.
Lähtötehon kulutus:
Yllä oleva kuva näyttää tämän piirin kuluttaman lähtötehon (kuorma on 40 W: n hehkulamppu)
Tällä tavoin päätetään piirin testausosa. Voit katsoa alla olevan videon esittelyä varten. Toivottavasti pidit tästä artikkelista ja opit vähän SPWM: stä ja sen toteuttamistekniikoista. Jatka lukemista, jatka oppimista, jatka rakentamista ja näen sinut seuraavassa projektissa.