- Hva er SPWM (sinusformet pulsbreddemodulasjon)?
- Hvordan SPWM-omformeren fungerer
- Komponenter som kreves for å bygge SPWM-omformer
- SPWM Inverter Circuit Construction
- Arduino-program for SPWM-omformer
- Testing av TL494 PWM inverterkrets
Inverterkretsløp er ofte nødvendig der det ikke er mulig å få vekselstrømforsyning fra nettet. En inverterkrets brukes til å konvertere likestrøm til vekselstrøm, og den kan deles inn i to typer som er Pure Sine Wave Inverters eller Modified Square Wave Inverters. Disse rene sinusomformerne er veldig dyre, der de modifiserte firkantbølgerne er billige. Lær mer om forskjellige typer inverter her.
I en tidligere artikkel har jeg vist deg hvordan du ikke lager en modifisert firkantbølgeomformer ved å løse problemene knyttet til den. Så i denne artikkelen skal jeg lage en enkel ren sinusomformer ved hjelp av Arduino, og forklare kretsens arbeidsprinsipp.
Hvis du lager denne kretsen, vær oppmerksom på at denne kretsen ikke har noen tilbakemelding, ingen overstrømsbeskyttelse, ingen kortslutningsbeskyttelse og ingen temperaturbeskyttelse. Derfor er denne kretsen bygget og demonstrert kun for pedagogiske formål, og det anbefales absolutt ikke å bygge og bruke denne typen krets til kommersielle apparater. Du kan imidlertid legge dem til i kretsen din om nødvendig, de ofte brukte beskyttelseskretsene som
Overspenningsbeskyttelse, overstrømsbeskyttelse, omvendt polaritetsbeskyttelse, kortslutningsbeskyttelse, hot swap-kontroller, etc. har allerede blitt diskutert.
FORSIKTIG: Hvis du lager denne typen krets, må du være ekstra forsiktig med høyspennings- og spenningsspisser generert av koblingssignalet til inngangen.
Hva er SPWM (sinusformet pulsbreddemodulasjon)?
Som navnet antyder, SPWM står for S inusoidal P Ulse W idth M odulation. Som du kanskje allerede vet, er et PWM-signal et signal der vi kan endre frekvensen på pulsen, samt på-og av-tid, som også er kjent som driftssyklus. Hvis du vil lære mer om PWM, kan du lese det her. Så, ved å variere driftssyklusen, endrer vi gjennomsnittsspenningen til pulsen. Bildet nedenfor viser at-
Hvis vi vurderer et PWM-signal som bytter mellom 0 - 5V som har en driftssyklus på 100%, vil vi få en gjennomsnittlig utgangsspenning på 5V, igjen hvis vi vurderer det samme signalet med en driftssyklus på 50%, vil vi få utgangsspenningen på 2,5V, og for driftssyklusen på 25% er det halvparten av det. Det oppsummerer grunnprinsippet til PWM-signalet, og vi kan gå videre til å forstå det grunnleggende prinsippet til SPWM-signalet.
En sinusspenning er først og fremst en analogispenning som endrer størrelsen over tid, og vi kan reprodusere denne oppførselen til en sinusbølge ved kontinuerlig å endre PWM-bølgens driftssyklus, bildet nedenfor viser det.
Hvis du ser på skjematisk nedenfor, vil den se at det er en kondensator koblet til utgangen til transformatoren. Denne kondensatoren er ansvarlig for å jevne ut vekselstrømssignalet fra bærefrekvensen.
Det brukte inngangssignalet vil lade og lade ut kondensatoren i henhold til inngangssignalet og belastningen. Siden vi har brukt et veldig høyfrekvent SPWM-signal, vil det ha en veldig liten driftssyklus som er som 1%, denne 1% driftssyklusen vil lade kondensatoren litt, neste driftssyklus er 5%, dette vil igjen lade kondensatoren litt mer, følgende puls vil ha en driftssyklus på 10% og kondensatoren vil lade litt mer, vi vil bruke signalet til vi har nådd en driftssyklus på 100% og derfra vil vi gå ned igjen til 1%. Dette vil skape en veldig jevn kurve som en sinusbølge ved utgangen. Så, ved å gi riktige verdier av driftssyklusen ved inngangen, vil vi ha en veldig sinusformet bølge ved utgangen.
Hvordan SPWM-omformeren fungerer
De ovennevnte bildet viser hoveddriv -delen av SPWM omformeren, og som man kan se, er det brukt to N-kanal MOSFET i halvbro-konfigurasjon for å drive transformatoren til denne kretsen, for å redusere uønsket svitsjing støy og for å beskytte de MOSFET, har vi brukt 1N5819-dioder parallelt med MOSFET-ene. For å redusere skadelige pigger som genereres i portdelen, har vi brukt motstandene på 4,7 ohm parallelt med 1N4148-dioder. Til slutt er BD139- og BD 140-transistorer konfigurert i en push-pull- konfigurasjonfor å kjøre porten til MOSFET, fordi denne MOSFET har en veldig høy portkapasitans og krever minimum 10V ved basen for å slå på riktig. Lær mer om hvordan Push-Pull-forsterkere fungerer.
For bedre å forstå kretsens arbeidsprinsipp, har vi redusert det til et punkt der denne delen av MOSFET er PÅ. Når MOSFET er på strømmen, flyter den først gjennom transformatoren og blir deretter jordet av MOSFET, slik at en magnetisk fluks også vil bli indusert i retningen strømmen strømmer i, og kjernen til transformatoren vil passere den magnetiske strømmen i sekundærviklingen, og vi får den positive halvsyklusen til det sinusformede signalet ved utgangen.
I neste syklus er den nederste delen av kretsen på den øverste delen av kretsen, og det er grunnen til at jeg har fjernet den øverste delen, nå strømmer strømmen i motsatt retning og genererer en magnetisk strøm i den retningen, og reverserer dermed retningen til magnetstrømmen i kjernen. Lær mer om hvordan MOSFET fungerer her.
Nå vet vi alle at en transformator fungerer ved magnetiske fluksendringer. Hvis du slår begge MOSFETene av og på, en invertert til en annen og gjør det 50 ganger i sekundet, vil det generere en fin oscillerende magnetisk strømning inne i transformatorens kjerne, og den skiftende magnetiske strømmen vil indusere en spenning i sekundærspolen som vi kjenner etter faradays lov. Slik fungerer den grunnleggende omformeren.
Den komplette SPWM-inverterkretsen som brukes i dette prosjektet er gitt nedenfor.
Komponenter som kreves for å bygge SPWM-omformer
Sl.nr |
Deler |
Type |
Mengde |
1 |
Atmega328P |
IC |
1 |
2 |
IRFZ44N |
Mosfet |
2 |
3 |
BD139 |
Transistor |
2 |
4 |
BD140 |
Transistor |
2 |
5 |
22pF |
Kondensator |
2 |
6 |
10K, 1% |
Motstand |
1 |
7 |
16MHz |
Krystall |
1 |
8 |
0,1 uF |
Kondensator |
3 |
9 |
4.7R |
Motstand |
2 |
10 |
1N4148 |
Diode |
2 |
11 |
LM7805 |
Spenningsregulator |
1 |
12 |
200uF, 16V |
Kondensator |
1 |
1. 3 |
47uF, 16V |
Kondensator |
1 |
14 |
2.2uF, 400V |
Kondensator |
1 |
SPWM Inverter Circuit Construction
For denne demonstrasjonen er kretsen konstruert på Veroboard, ved hjelp av skjematisk, Ved utgangen til transformatoren vil en enorm mengde strøm strømme gjennom forbindelsen, så tilkoblingshoppene må være så tykke som mulig.
Arduino-program for SPWM-omformer
Før vi begynner å forstå koden, la oss fjerne det grunnleggende. Fra ovennevnte arbeidsprinsipp har du lært hvordan PWM-signalet vil se ut på utgangen. Nå gjenstår spørsmålet hvordan vi kan lage en så varierende bølge ved utgangspinnene til Arduino.
For å lage det varierende PWM-signalet, skal vi bruke 16-bit-timer1 med en prescaler-innstilling på 1, som vil gi oss 1600/16000000 = 0,1 ms tid for hver telling hvis vi vurderer en enkelt halvsyklus av en sinusbølge, som passer nøyaktig 100 ganger innen en halv syklus av bølgen. Enkelt sagt vil vi kunne prøve sinusbølgen 200 ganger.
Deretter må vi dele sinusbølgen til 200 stykker og beregne verdiene deres med en korrelasjon av amplituden. Deretter må vi konvertere disse verdiene til tidtellerverdier ved å multiplisere den med tellergrensen. Til slutt må vi sette disse verdiene i en oppslagstabell for å mate den til telleren, og vi får sinusbølgen.
For å gjøre ting litt enklere bruker jeg en veldig velskrevet SPWM-kode fra GitHub som er laget av Kurt Hutten.
Koden er veldig enkel. Vi begynner programmet vårt med å legge til de nødvendige headerfilene
# inkluderer # inkluderer
Deretter har vi de to oppslagstabellene vi skal få timertellerverdiene fra.
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};
Deretter initialiserer vi tidtellerkontrollregistrene i oppsettdelen for å være tydelige på hver. For mer informasjon, må du gå gjennom databladet til atmega328 IC.
TCCR1A = 0b10100010; / * 10 klar på kamp, satt til BUNN for compA. 10 klart på kamp, satt til BUNN for compB. 00 10 WGM1 1: 0 for bølgeform 15. * / TCCR1B = 0b00011001; / * 000 11 WGM1 3: 2 for bølgeform 15. 001 ingen forhåndsskala på telleren. * / TIMSK1 = 0b00000001; / * 0000000 1 TOV1 Aktivering av flaggavbrudd. * /
Etter det initialiserer vi inngangsregistreringsregisteret med en forhåndsdefinert verdi på 16000, da dette vil hjelpe oss med å generere nøyaktig 200 prøver.
ICR1 = 1600; // Periode for 16MHz krystall, for en svitsjefrekvens på 100KHz for 200 underavdelinger per 50Hz sinusbølgesyklus.
Deretter aktiverer vi globale avbrudd ved å ringe inn funksjonen, sei ();
Til slutt setter vi Arduino pin 9 og 10 som utgang
DDRB = 0b00000110; // Sett PB1 og PB2 som utganger.
Det markerer slutten på oppsettfunksjonen.
Sløyfeseksjonen i koden forblir tom da den er et tidtellerstopp-avbruddsprogram.
ugyldig sløyfe () {; /*Gjør ingenting…. for alltid!*/}
Deretter har vi definert overløpsvektoren timer1, denne avbruddsfunksjonen får en samtale når tidtakeren 1 blir overfylt og genererer et avbrudd.
ISR (TIMER1_OVF_vect) {
Deretter erklærer vi noen lokale variabler som statiske variabler, og vi har begynt å mate verdiene til fangst og sammenligne motstand.
statisk int num; statisk røye trig; // endre driftssyklus hver periode. OCR1A = lookUp1; OCR1B = lookUp2;
Til slutt forhøyer vi telleren for å mate de neste verdiene til fangst og sammenligne motstander, som markerer slutten på denne koden.
hvis (++ num> = 200) {// Pre-increment num, så sjekk at det er under 200. num = 0; // Tilbakestill antall. trig = trig ^ 0b00000001; digitalWrite (13, trig); }
Testing av TL494 PWM inverterkrets
For å teste kretsen brukes følgende oppsett.
- 12V blybatteri.
- En transformator som har en 6-0-6 kran og en 12-0-12 kran
- 100W glødelampe som last
- Meco 108B + TRMS multimeter
- Meco 450B + TRMS multimeter
Utgangssignal fra Arduino:
Når jeg har lastet opp koden. Jeg målte utgangsspwm-signalet fra de to pinnene på Arduino, som ser ut som bildet nedenfor,
Hvis vi zoomer inn litt, kan vi se PWM-bølgens stadig skiftende driftssyklus.
Deretter viser bildet nedenfor utgangssignalet fra transformatoren.
SPWM inverterkrets i ideell tilstand:
Som du kan se fra bildet ovenfor, trekker denne kretsen rundt 13W mens den kjører ideell
Utgangsspenning uten belastning:
Omformerkretsens utgangsspenning er vist ovenfor, dette er spenningen som kommer ut på utgangen uten belastning.
Inngangseffektforbruk:
Ovenstående bilde viser inngangseffekten som jeg bruker når en 40 W belastning er festet.
Utgangseffektforbruk:
Ovenstående bilde viser utgangseffekten som forbrukes av denne kretsen, (belastningen er en 40W glødelampe)
Med det avslutter vi testdelen av kretsen. Du kan sjekke ut videoen nedenfor for en demonstrasjon. Jeg håper du likte denne artikkelen og lærte litt om SPWM og implementeringsteknikker. Fortsett å lese, fortsett å lære, fortsett å bygge og jeg ser deg i neste prosjekt.