- Kas ir SPWM (sinusoidālā impulsa platuma modulācija)?
- Kā darbojas SPWM pārveidotājs
- Komponenti, kas nepieciešami SPWM pārveidotāja izveidei
- SPWM invertoru shēmu uzbūve
- Arduino programma SPWM invertoram
- Pārbauda TL494 PWM invertora shēmu
Invertora shēmas bieži ir nepieciešamas, ja nav iespējams iegūt maiņstrāvas padevi no tīkla. Invertora ķēde tiek izmantota, lai pārveidotu līdzstrāvu par maiņstrāvu, un to var iedalīt divos veidos: tīra sinusa viļņu invertori vai modificēti kvadrātveida viļņu pārveidotāji. Šie tīrā sinusa viļņu invertori ir ļoti dārgi, kur modificētie kvadrātveida viļņu invertori ir lēti. Uzziniet vairāk par dažāda veida invertoriem šeit.
Iepriekšējā rakstā es jums parādīju, kā neveidot modificētu kvadrātveida viļņu invertoru, risinot ar to saistītās problēmas. Tāpēc šajā rakstā es izgatavošu vienkāršu tīra sinusa viļņu invertoru, izmantojot Arduino, un izskaidrošu ķēdes darbības principu.
Ja veicat šo ķēdi, lūdzu, ņemiet vērā, ka šai shēmai nav atgriezeniskās saites, nav pārslodzes aizsardzības, nav īssavienojuma un temperatūras aizsardzības. Tādējādi šī shēma ir veidota un demonstrēta tikai izglītības nolūkos, un nav ieteicams veidot un izmantot šāda veida shēmas komerciālām ierīcēm. Tomēr, ja nepieciešams, varat tos pievienot savai ķēdei, piemēram, parasti izmantotajām aizsardzības ķēdēm
Pārsprieguma aizsardzība, pārslodzes aizsardzība, apgrieztās polaritātes aizsardzība, aizsardzība pret īssavienojumu, karstās maiņas kontrolieris utt.
UZMANĪBU: Ja veidojat šāda veida shēmas, lūdzu, esiet īpaši piesardzīgs attiecībā uz augstsprieguma un sprieguma svārstībām, ko rada komutācijas signāls uz ieeju.
Kas ir SPWM (sinusoidālā impulsa platuma modulācija)?
Kā norāda nosaukums, SPWM apzīmē S inusoidal P ulse W idth M odulation. Kā jūs jau zināt, PWM signāls ir signāls, kurā mēs varam mainīt impulsa biežumu, kā arī ieslēgšanas un izslēgšanas laiku, ko sauc arī par darba ciklu. Ja vēlaties uzzināt vairāk par PWM, varat to izlasīt šeit. Tātad, mainot darba ciklu, mēs mainām impulsa vidējo spriegumu. Zemāk redzamajā attēlā redzams, ka
Ja ņemam vērā PWM signālu, kas pārslēdzas starp 0 - 5 V un kura darba cikls ir 100%, mēs saņemsim vidējo izejas spriegumu 5 V, atkal, ja ņemsim vērā to pašu signālu ar 50% darba ciklu, mēs iegūt izejas spriegumu 2,5 V, un 25% darba ciklam tas ir puse no tā. Tas apkopo PWM signāla pamatprincipu, un mēs varam pāriet uz izpratni par SPWM signāla pamatprincipu.
Sinuss spriegums galvenokārt ir analoģija spriegumu, kas maina savu apjomu laika gaitā, un mēs varam pavairot šo uzvedību sinusoidāls vilnis, ko nepārtraukti mainot ciklu no PWM vilnis, zemāk attēlā ir redzams, ka.
Ja paskatās zemāk redzamo shēmu, tas redzēs, ka transformatora izejā ir pievienots kondensators. Šis kondensators ir atbildīgs par maiņstrāvas signāla izlīdzināšanu no nesēja frekvences.
Izmantotais ieejas signāls uzlādēs un izlādēs kondensatoru atbilstoši ieejas signālam un slodzei. Tā kā mēs esam izmantojuši ļoti augstas frekvences SPWM signālu, tam būs ļoti mazs darba cikls, kas ir kā 1%, šis 1% darba cikls nedaudz uzlādēs kondensatoru, nākamais darba cikls ir 5%, tas atkal uzlādēs kondensators nedaudz vairāk, pēc impulsa darba cikls būs 10%, un kondensators uzlādēs mazliet vairāk, mēs lietosim signālu, līdz būsim sasnieguši 100% darba ciklu, un no turienes mēs atgriezīsimies lejup līdz 1%. Tas izvadē izveidos ļoti gludu līkni kā sinusa vilnis. Tātad, nodrošinot pareizas darba cikla vērtības pie ieejas, pie izejas mums būs ļoti sinusoidāls vilnis.
Kā darbojas SPWM pārveidotājs
Iepriekš attēls parāda galveno braukšanas sadaļa SPWM invertora, un, kā jūs varat redzēt, mēs izmantojām divas N-kanālu MOSFETs in pustilta konfigurāciju vadīt transformators šajā ķēdē, lai samazinātu nevēlamu pārslēgšanas troksni un aizsargātu MOSFET, mēs esam izmantojuši 1N5819 diodes paralēli MOSFET. Lai samazinātu vārtu sekcijā radītos kaitīgos tapas, mēs esam izmantojuši 4,7 omu rezistorus paralēli 1N4148 diodēm. Visbeidzot, BD139 un BD 140 tranzistori ir konfigurēti push-pull konfigurācijāvadīt MOSFET vārtus, jo šim MOSFET ir ļoti liela vārtu kapacitāte, un, lai pareizi ieslēgtos, pamatnē ir nepieciešams vismaz 10 V. Uzziniet vairāk par Push-Pull pastiprinātāju darbību šeit.
Lai labāk izprastu ķēdes darbības principu, mēs esam to samazinājuši līdz vietai, kur šī MOSFET sadaļa ir ieslēgta. Kad MOSFET ir strāvā, vispirms plūst caur transformatoru un pēc tam tiek iezemēts ar MOSFET, tādējādi tiks ierosināta arī magnētiskā plūsma virzienā, kurā strāva plūst, un transformatora kodols iziet magnētisko plūsmu sekundārajā tinumā, un mēs iegūsim sinusoidālā signāla pozitīvo pusi ciklu pie izejas.
Nākamajā ciklā ķēdes apakšējā daļa atrodas ķēdes augšdaļā, tāpēc es esmu noņemusi augšējo daļu, tagad strāva plūst pretējā virzienā un rada magnētisko plūsmu šajā virzienā, tādējādi mainot virzienu magnētiskās plūsmas virziens kodolā. Uzziniet vairāk par MOSFET darbību šeit.
Tagad mēs visi zinām, ka transformators darbojas ar magnētiskās plūsmas izmaiņām. Tātad, ieslēdzot un izslēdzot gan MOSFET, gan otrādi apgrieztus, gan to izdarot 50 reizes sekundē, transformatora serdes iekšpusē radīsies jauka svārstīga magnētiskā plūsma, un mainīgā magnētiskā plūsma izraisīs spriegumu sekundārajā spolē, jo mēs zinām pēc faraday likuma. Tā darbojas pamata invertors.
Šajā projektā izmantotā pilnā SPWM invertora shēma ir dota zemāk.
Komponenti, kas nepieciešami SPWM pārveidotāja izveidei
Sl. Nē |
Daļas |
Tips |
Daudzums |
1 |
Atmega328P |
IC |
1 |
2 |
IRFZ44N |
Mosfets |
2 |
3 |
BD139 |
Tranzistors |
2 |
4 |
BD140 |
Tranzistors |
2 |
5 |
22pF |
Kondensators |
2 |
6 |
10 tūkstoši, 1% |
Rezistors |
1 |
7 |
16MHz |
Kristāls |
1 |
8 |
0.1uF |
Kondensators |
3 |
9 |
4.7R |
Rezistors |
2 |
10 |
1N4148 |
Diode |
2 |
11 |
LM7805 |
Sprieguma regulators |
1 |
12 |
200uF, 16V |
Kondensators |
1 |
13 |
47uF, 16V |
Kondensators |
1 |
14 |
2,2 uF, 400 V |
Kondensators |
1 |
SPWM invertoru shēmu uzbūve
Šajā demonstrācijā shēma tiek konstruēta uz Veroboard ar shēmas palīdzību. Transformatora izejā caur savienojumu plūst milzīgs strāvas daudzums, tāpēc savienojuma džemperiem jābūt pēc iespējas biezākiem.
Arduino programma SPWM invertoram
Pirms mēs ejam uz priekšu un sākam saprast kodu, noskaidrosim pamatus. No iepriekš minētā darbības principa jūs esat iemācījušies, kā PWM signāls izskatīsies izejā, tagad paliek jautājums, kā mēs varam radīt tik atšķirīgu viļņu pie Arduino izejas tapām.
Lai izveidotu mainīgo PWM signālu, mēs izmantosim 16 bitu taimeri1 ar preskalera iestatījumu 1, kas mums dos 1600/16000000 = 0,1 ms laiku katram skaitam, ja ņemsim vērā vienu sinusa viļņa pusciklu, kas precīzi ietilpst 100 reizes viena viļņa cikla laikā. Vienkārši sakot, mēs varēsim 200 reizes izlasīt mūsu sinusa vilni.
Tālāk mums ir jāsadala sinusoidāls viļņi līdz 200 gabaliem un jāaprēķina to vērtības ar amplitūdas korelāciju. Tālāk mums ir jāpārvērš šīs vērtības taimera skaitītāja vērtībās, reizinot to ar skaitītāja ierobežojumu. Visbeidzot, mums ir jāievieto šīs vērtības uzmeklēšanas tabulā, lai to ievadītu skaitītājā, un mēs saņemsim savu sinusa vilni.
Lai padarītu lietas mazliet vienkāršākas, es izmantoju ļoti labi uzrakstītu SPWM kodu no GitHub, kuru izgatavojis Kurts Huttens.
Kods ir ļoti vienkāršs. Mēs sākam savu programmu, pievienojot nepieciešamos galvenes failus
# iekļaut # iekļaut
Tālāk mums ir mūsu divas uzmeklēšanas tabulas, no kurām mēs iegūsim taimera skaitītāja vērtības.
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};
Pēc tam iestatīšanas sadaļā mēs inicializējam taimera skaitītāja vadības reģistrus, lai katrā no tiem būtu skaidrs. Lai iegūtu papildinformāciju, jums jāiet cauri atmega328 IC datu lapai.
TCCR1A = 0b10100010; / * 10 skaidrs mačā, iestatīts uz BOTTOM compA. 10 skaidrs mačā, iestatīts uz BOTTOM par compB. 00 10 WGM1 1: 0 viļņu formai 15. * / TCCR1B = 0b00011001; / * 000 11 WGM1 3: 2 viļņu formai 15. 001 uz letes nav iepriekšējas skalas. * / TIMSK1 = 0b00000001; / * 0000000 1 TOV1 Iespējot karoga pārtraukšanu. * /
Pēc tam mēs inicializējam ievades uztveršanas reģistru ar iepriekš noteiktu vērtību 16000, jo tas palīdzēs mums ģenerēt tieši 200 paraugus.
ICR1 = 1600; // 16MHz kristālu periods pārslēgšanās frekvencei 100KHz 200 apakšiedaļām 50Hz sinusoidālā cikla laikā.
Pēc tam mēs iespējojam globālos pārtraukumus, izsaucot funkciju, sei ();
Visbeidzot, mēs kā izvadi iestatījām Arduino tapas 9 un 10
DDRB = 0b00000110; // Iestatiet PB1 un PB2 kā izvadi.
Tas iezīmē iestatīšanas funkcijas beigas.
Koda cilpas sadaļa paliek tukša, jo tā ir taimera skaitītāja pārtraukuma virzīta programma.
void loop () {; /*Neko nedarīt…. uz visiem laikiem! * /}
Pēc tam mēs esam definējuši taimera1 pārpildes vektoru, šī pārtraukšanas funkcija saņem zvanu, tiklīdz taimeris1 tiek pārpildīts un ģenerē pārtraukumu.
ISR (TIMER1_OVF_vect) {
Pēc tam mēs paziņojam, ka daži lokālie mainīgie ir statiski mainīgie, un mēs esam sākuši ievadīt vērtības uztveršanas un salīdzināšanas rezistoram.
static int num; statiskā char trig; // katru periodu mainīt darba ciklu. OCR1A = lookUp1; OCR1B = lookUp2;
Visbeidzot, mēs iepriekš palielinām skaitītāju, lai nākamās vērtības ievadītu uztveršanas un salīdzināšanas rezistoros, kas iezīmē šī koda beigas.
if (++ num> = 200) {// Pirmsnumura skaitlis, tad pārbaudiet, vai tas ir zem 200. num = 0; // Atiestatīt numuru trig = trig ^ 0b00000001; digitalWrite (13, trig); }
Pārbauda TL494 PWM invertora shēmu
Lai pārbaudītu ķēdi, tiek izmantota šāda iestatīšana.
- 12V svina-skābes akumulators.
- Transformators, kuram ir 6-0-6 un 12-0-12 pieskāriens
- 100W kvēlspuldze kā slodze
- Meco 108B + TRMS multimetrs
- Meco 450B + TRMS multimetrs
Izejas signāls no Arduino:
Kad esmu augšupielādējis kodu. Es izmērīju izejas SPWM signālu no divām Arduino tapām, kas izskatās kā zemāk redzamais attēls,
Ja mēs mazliet pietuvināmies, mēs varam redzēt PWM viļņa nepārtraukti mainīgo darba ciklu.
Tālāk zemāk redzamajā attēlā parādīts transformatora izejas signāls.
SPWM invertora shēma ideālā stāvoklī:
Kā redzams no iepriekš minētā attēla, šī shēma darbojas ap 13W, vienlaikus darbojoties ideāli
Izejas spriegums bez slodzes:
Invertora ķēdes izejas spriegums ir parādīts iepriekš, tas ir spriegums, kas izejā pie izejas bez pievienotas slodzes.
Ieejas enerģijas patēriņš:
Iepriekš redzamajā attēlā parādīta ieejas jauda, ko patērē, ja tiek piestiprināta 40 W slodze.
Izejas enerģijas patēriņš:
Iepriekš redzamajā attēlā parādīta izejas jauda, ko patērē šī shēma (slodze ir 40 W kvēlspuldze)
Ar to mēs noslēdzam ķēdes testēšanas daļu. Demonstrāciju varat apskatīt zemāk esošajā videoklipā. Es ceru, ka jums patika šis raksts un mazliet uzzinājāt par SPWM un tā ieviešanas paņēmieniem. Turpiniet lasīt, turpināt mācīties, turpināt veidot, un es jūs redzēšu nākamajā projektā.