- Què és l’SPWM (modulació sinusoidal de l’amplada del pols)?
- Com funciona l’inversor SPWM
- Components necessaris per construir l'inversor SPWM
- Construcció de circuits d’inversors SPWM
- Programa Arduino per a inversors SPWM
- Prova del circuit inversor TL494 PWM
Sovint es necessiten circuits inversors on no és possible obtenir subministrament de corrent altern de la xarxa. Un circuit inversor s’utilitza per convertir l’ alimentació de CC a corrent altern i es pot dividir en dos tipus: inversors d’ona sinusoïdal pura o inversors d’ona quadrada modificats. Aquests inversors d’ona sinusoïdal pura són molt cars, on els inversors d’ona quadrada modificats són econòmics. Obteniu més informació sobre els diferents tipus d’inversors aquí.
En un article anterior, us he mostrat com no fer un inversor d’ona quadrada modificat abordant els problemes associats. Així doncs, en aquest article faré un simple inversor d’ona sinusoïdal pura amb Arduino i explicaré el principi de funcionament del circuit.
Si esteu realitzant aquest circuit, tingueu en compte que aquest circuit no conté retroacció, ni protecció contra sobrecorrent, ni protecció contra curtcircuits ni protecció contra la temperatura. Per tant, aquest circuit està construït i demostrat només amb finalitats educatives i no es recomana construir i utilitzar aquest tipus de circuit per a aparells comercials. Tanmateix, podeu afegir-los al vostre circuit, si cal, als circuits de protecció més utilitzats
La protecció contra sobretensió, la protecció contra sobrecorrent, la protecció contra la polaritat inversa, la protecció contra el curtcircuit, el controlador d’intercanvi en calent, etc., ja s’han comentat.
PRECAUCIÓ: Si esteu fent aquest tipus de circuits, tingueu molta precaució respecte a les pujades de tensió i alta generades pel senyal de commutació a l'entrada.
Què és l’SPWM (modulació sinusoidal de l’amplada del pols)?
Com el nom suggereix, SPWM significa S inusoidal P Ulse W idth M odulation. Com ja sabreu, un senyal PWM és un senyal en el qual podem canviar la freqüència del pols, així com el temps d’interrupció i d’aturada, que també es coneix com a cicle de treball. Si voleu obtenir més informació sobre PWM, podeu llegir-lo aquí. Per tant, variant el cicle de treball, alterem el voltatge mitjà del pols. La imatge següent mostra que-

Si considerem un senyal PWM que commuta entre 0 i 5V que té un cicle de treball del 100%, obtindrem una tensió de sortida mitjana de 5V, de nou si considerem el mateix senyal amb un cicle de treball del 50%, ho farem obtenir el voltatge de sortida de 2,5 V, i per al cicle de treball del 25%, és la meitat. Això resumeix el principi bàsic del senyal PWM i podem passar a entendre el principi bàsic del senyal SPWM.
Un voltatge sinusoïdal és principalment un voltatge analogic que modifica la seva magnitud amb el pas del temps, i podem reproduir aquest comportament d’una ona sinusoïdal canviant contínuament el cicle de treball de l’ona PWM, la imatge següent ho mostra.

Si mireu l’ esquema següent, veurà que hi ha un condensador connectat a la sortida del transformador. Aquest condensador s’encarrega de suavitzar el senyal de corrent altern de la freqüència portadora.
El senyal d'entrada utilitzat carregarà i descarregarà el condensador segons el senyal d'entrada i la càrrega. Com que hem utilitzat un senyal SPWM d’alta freqüència, tindrà un cicle de treball molt petit que és com l’1%, aquest cicle de treball de l’1% carregarà una mica el condensador, el següent cicle de treball és del 5%, es tornarà a carregar el condensador una mica més, després del pols tindrà un cicle de treball del 10% i el condensador es carregarà una mica més, aplicarem el senyal fins que arribem al cicle de treball del 100% i, a partir d’aquí, tornarem a baixar fins a l’1%. Això crearà una corba molt suau com una ona sinusoïdal a la sortida. Per tant, en proporcionar valors adequats del cicle de treball a l’entrada, tindrem una ona molt sinusoïdal a la sortida.
Com funciona l’inversor SPWM
La imatge anterior mostra la secció principal de conducció de l’inversor SPWM i, com podeu veure, hem utilitzat dos MOSFET de canal N en configuració de mig pont per accionar el transformador d’aquest circuit, reduir el soroll de commutació no desitjat i protegir el MOSFET, hem utilitzat díodes 1N5819 paral·lels als MOSFET. Per reduir els pics nocius generats a la secció de la porta, hem utilitzat les resistències de 4,7 ohms paral·leles als díodes 1N4148. Finalment, els BD139 i BD 140 transistors estan configurats en un push-pull de configuracióper accionar la porta del MOSFET, perquè aquest MOSFET té una capacitat de porta molt alta i requereix un mínim de 10V a la base per encendre’s correctament. Obteniu més informació sobre el funcionament dels amplificadors Push-Pull aquí.

Per entendre millor el principi de funcionament del circuit, l’hem reduït a un punt en què aquesta secció del MOSFET està ACTIVADA. Quan el MOSFET està en el corrent, primer flueix a través del transformador i després es connectada a terra pel MOSFET, per tant, un flux magnètic també es va induir a la direcció en què el corrent està fluint, i el nucli de l'transformador passarà el flux magnètic al bobinatge secundari, i obtindrem el mig cicle positiu del senyal sinusoïdal a la sortida.

Al següent cicle, la part inferior del circuit està a la part superior del circuit està apagada, per això he eliminat la part superior, ara el corrent flueix en la direcció oposada i genera un flux magnètic en aquesta direcció, invertint així la direcció del flux magnètic al nucli. Obteniu més informació sobre el funcionament de MOSFET aquí.
Ara, tots sabem que un transformador funciona mitjançant canvis de flux magnètic. Així, en activar i desactivar els MOSFET, un invertit a l’altre i fer-ho 50 vegades en un segon, es generarà un bon flux magnètic oscil·lant dins del nucli del transformador i el flux magnètic canviant induirà una tensió a la bobina secundària ho sabem per la llei de Faraday. Així funciona l’inversor bàsic.
A continuació es mostra el circuit inversor SPWM complet utilitzat en aquest projecte.

Components necessaris per construir l'inversor SPWM
|
Sl.No |
Parts |
Tipus |
Quantitat |
|
1 |
Atmega328P |
I C |
1 |
|
2 |
IRFZ44N |
Mosfet |
2 |
|
3 |
BD139 |
Transistor |
2 |
|
4 |
BD140 |
Transistor |
2 |
|
5 |
22pF |
Condensador |
2 |
|
6 |
10.000, 1% |
Resistència |
1 |
|
7 |
16 MHz |
Cristall |
1 |
|
8 |
0,1 uF |
Condensador |
3 |
|
9 |
4.7R |
Resistència |
2 |
|
10 |
1N4148 |
Diodo |
2 |
|
11 |
LM7805 |
Regulador de voltatge |
1 |
|
12 |
200uF, 16V |
Condensador |
1 |
|
13 |
47uF, 16V |
Condensador |
1 |
|
14 |
2.2uF, 400V |
Condensador |
1 |
Construcció de circuits d’inversors SPWM
Per a aquesta demostració, el circuit es construeix a Veroboard, amb l'ajut de l' esquema. A la sortida del transformador, una gran quantitat de corrent fluirà per la connexió, de manera que els ponts de connexió han de ser el més gruixibles possible.
Programa Arduino per a inversors SPWM
Abans de seguir endavant i començar a entendre el codi, esborrem els conceptes bàsics. Pel principi de funcionament anterior, heu après com serà el senyal PWM a la sortida, ara queda la pregunta de com podem fer una ona tan variable als pins de sortida de l'Arduino.
Per fer el senyal PWM variable, utilitzarem el temporitzador de 16 bits1 amb un ajust de prescalador d’1, que ens donarà 1600/16000000 = 0,1 ms de temps per a cada recompte si considerem un únic mig cicle d’una ona sinusoïdal, que s’adapta exactament a 100 vegades dins d’un cicle mig de l’ona. En termes senzills, podrem provar la nostra ona sinusoïdal 200 vegades.
A continuació, hem de dividir la nostra ona sinusoïdal en 200 peces i calcular-ne els valors amb una correlació de l'amplitud. A continuació, hem de convertir aquests valors en valors de comptador de temporitzador multiplicant-lo amb el límit de comptador. Finalment, hem de posar aquests valors en una taula de cerca per alimentar-lo al comptador i obtindrem la nostra ona sinusoïdal.
Per fer les coses una mica més senzilles, estic fent servir un codi SPWM molt ben escrit de GitHub, fet per Kurt Hutten.
El codi és molt senzill. Comencem el nostre programa afegint els fitxers de capçalera necessaris
#include #include
A continuació, tenim les nostres dues taules de cerca a partir de les quals obtindrem els valors del comptador del temporitzador.
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, 00, 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, 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};
A continuació, a la secció de configuració , inicialitzem els registres de control del comptador del temporitzador perquè quedin clars a cadascun. Per obtenir més informació, cal que consulteu el full de dades de l'IC atmega328.
TCCR1A = 0b10100010; / * 10 clars al partit, establert a BAIX per a compA. 10 clars al partit, fixat a BAIX per compB. 00 10 WGM1 1: 0 per a la forma d'ona 15. * / TCCR1B = 0b00011001; / * 000 11 WGM1 3: 2 per a la forma d'ona 15. 001 sense preescala al taulell. * / TIMSK1 = 0b00000001; / * 0000000 1 TOV1 habilitació d'interrupció de senyal. * /
Després d'això, inicialitzem el registre de captura d'entrada amb un valor predefinit de 16000, ja que ens ajudarà a generar exactament 200 mostres.
ICR1 = 1600; // Període per a cristall de 16 MHz, per a una freqüència de commutació de 100 KHz per a 200 subdivisions per cicle d'ona sinusoïdal de 50 Hz.
A continuació, activem les interrupcions globals trucant a la funció, sei ();
Finalment, establim els pins 9 i 10 d’Arduino com a sortida
DDRB = 0b00000110; // Estableix PB1 i PB2 com a sortides.
Això marca el final de la funció de configuració.
La secció de bucle del codi roman buida, ja que és un programa impulsat per interrupcions de comptador de temporitzador.
bucle buit () {; /*No fer res…. per sempre! * /}
A continuació, hem definit el vector de desbordament del temporitzador1, aquesta funció d’interrupció rep una trucada un cop es desborda el temporitzador1 i genera una interrupció.
ISR (TIMER1_OVF_vect) {
A continuació, declarem algunes variables locals com a variables estàtiques i hem començat a alimentar els valors a la resistència de captura i comparació.
estàtic int num; estàtic char trig; // canvia el cicle de treball cada període. OCR1A = lookUp1; OCR1B = lookUp2;
Finalment, preincrementem el comptador per alimentar els següents valors a la captura i comparem les resistències, cosa que marca el final d’aquest codi.
if (++ num> = 200) {// Preincrement num comproveu que sigui inferior a 200. num = 0; // Restableix núm. trig = trig ^ 0b00000001; digitalWrite (13, trig); }
Prova del circuit inversor TL494 PWM
Per provar el circuit, s’utilitza la configuració següent.
- Bateria de plom àcid de 12V.
- Un transformador que té un toc 6-0-6 i un 12-0-12
- Bombeta incandescent de 100W com a càrrega
- Multímetre Meco 108B + TRMS
- Multímetre Meco 450B + TRMS
Senyal de sortida d'Arduino:
Un cop he penjat el codi. Vaig mesurar el senyal SPWM de sortida dels dos pins de l' Arduino que sembla la imatge següent,

Si ampliem una mica, podrem veure el cicle de treball en constant canvi de l’ona PWM.

A continuació, la imatge següent mostra el senyal de sortida del transformador.

Circuit inversor SPWM en estat ideal:
Com podeu veure a la imatge anterior, aquest circuit dibuixa al voltant de 13W mentre funciona perfectament
Voltatge de sortida sense càrrega:
La tensió de sortida del circuit del convertidor es mostra a la part superior, aquesta és la tensió que surt a la sortida sense que hi hagi cap càrrega connectada.
Consum d'energia d'entrada:
La imatge anterior mostra la potència d’entrada que consumeix ic quan s’adjunta una càrrega de 40W.
Consum d'energia de sortida:
La imatge anterior mostra la potència de sortida que consumeix aquest circuit (la càrrega és una bombeta incandescent de 40W)
Amb això, concloguem la part de prova del circuit. Podeu veure el vídeo següent per fer una demostració. Espero que aquest article us hagi agradat i hàgiu après una mica sobre SPWM i les seves tècniques d’implementació. Segueix llegint, continua aprenent, continua construint i et veuré en el proper projecte.
