You are on page 1of 7

Control de Potencia Monofsica por

SPWM
Aplicaciones en: Control de Potencia y la Industria
Jacobi Diego - Pfarher Ivn
diego@jacobi.com.ar - ipfarher@gmail.com
Universidad Tecnolgica acional !ac"ltad #egional Paran
Argentina Entre !os - Paran"
$e%&ords' sp&() control) potencia) (onofsica) distorsin) (osfet) cr"ce por cero) f"ente flotante*
#es"(en
Esta aplicaci#n en electr#nica de potencia se basa en el control de potencia de la
onda senoidal monof"sica$ por medio de la t%cnica &P'($ de forma tal )ue el ancho de
pulso de la modulaci#n P'( este ralacionado con la funci#n senoidal. Esta t%cnica hace
)ue la distorsi#n arm#nica se desplace a mayor frecuencia y por consiguiente los filtros se
*er"n simplificados.
Introd"ccin
Cuando surge la necesidad de *ariar
una tensi#n alterna$ con el objeti*o de
entregar mayor o menor potencia en una
carga particular$ es donde aparecen los
controles de potencia monof"sicos$ con los
cuales se logra recortar partes de la onda
senoidal$ *ariando la potencia entregada a
la carga. +as t%cnicas con*encionales
empleadas$ son por control de fase$ estas
generan arm#nicas cercanas a la arm#nica
fundamental$ lo cual hace )ue los filtros
utili,ados para eliminarlas sean complejos
y poco econ#micos. Es por esto$ )ue
aparecen t%cnicas como la )ue se utili,a
en este proyecto para )ue las primeras
armonicas se *ean despla,adas a
frecuencias mas altas$ lo cual hace )ue los
filtros empleados para la eliminacion de las
armonicas contaminanes sean de dise-o
mas simple.
SPWM
El funcionamiento b"sico de la
modulaci#n por ancho de pulso es simple$
una serie de pulsos cuyo ancho es
controlado por la *ariable de control. Es
decir$ )ue si la *ariable de control se
mantiene constante o *ar!a muy poco$
entonces el ancho de los pulsos se
mantendr" constante o *ariar" muy poco
respecti*amente.
&i hacemos )ue el ancho de pulso
no *ar!e linealmente con la *ariable de
control$ de modo )ue el ancho de los
pulsos puede ser diferentes unos de otros$
entonces ser!a posible seleccionar el
ancho de los pulsos de forma )ue ciertas
arm#nicas sean eliminadas.
E.isten distintos m%todos para
*ariar el ancho de los pulsos. El m"s
com/n y el )ue incenti*a esta ponencia es
la modulaci#n senoidal del ancho de pulso
0&P'(1.
En el control P'( senoidal se
generan los anchos de pulso al comparar
un *oltaje de referencia triangular de
amplitud Ar y y de frecuencia fr con otro
*oltaje semisenoidal portador de amplitud
*ariable Ac y de frecuencia 2 fs.
El *oltaje semisenoidal de referencia
est" en fase con el *oltaje de fase de
entrada pero tiene 2 *eces su frecuencia.
+a amplitud del *oltaje semisenoidal de
referencia controla el indice de modulacion
( )ue *aria entre 3 y 4$ es decir$ 3 a 433
5. El !ndice de modulacion se define
como:
( 6 Amplitud de semisenoidal de
referencia 7 Amplitud de triangular de
referencia
En una modulaci#n &P'($ el factor
de despla,amiento es la unidad y el factor
de potencia se mejora en gran medida
respecto del P'( normal.
+as arm#nicas de menor orden se
eliminan o se reducen. Por ejemplo$ con 8
pulsos por medio ciclo$ la arm#nica de
orden mas bajo es la )uinta y con seis
pulsos por medio ciclo$ la arm#nica de
orden mas bajo es la s%ptima.
En esta implementaci#n hacemos
9: pulsos por medio ciclo lo )ue nos da
una arm#nica de menor orden de 8;<,
apro.imadamente
+a se-al senoidal de referencia
debe ser pura$ es decir )ue si el prop#sito
es el control de potencia$ y estamos
hablando de una frecuencia de linea de =3
<,$ deberemos generar un senoide puro de
=3 <, sin obtenerlo de la misma linea.
Esto es debido a )ue la tensi#n de
linea se puede encontrar con mucha
distorsi#n arm#nica y generar!a errores en
la presici#n del &P'( los cuales ser!an
aumentados por el efecto de aliasing en el
A>C.
I(ple(entacin
E.isten *arios m%todos posibles
para la implementaci#n de &P'(.
El desarrollador podr!a pensar )ue
ser!a mas sencillo y eficiente utili,ar
amplificadores operacionales comparando
entre la se-al senoidal de referencia y la
triangular. Pero$ si bien este tipo de
implementaci#n es perfectamente posible$
se presentan otros problemas. ?enerar
una se-al senoidal pura y coerente de =3
<, no es tarea f"cil$ de la misma forma$
tampoco lo es generar una se-al triangular.
Adem"s$ ambas se-ales deben ser
capaces de ponerse en fase con la tensi#n
de linea de =3 <, lo cual presenta el
desaf!o mas importante.
+a se-al senoidal de referencia
debe ser entonces coerente y en fase con
la tensi#n de linea y no ser obtenida a
partir de esta ultima.
+a se-al triangular debe ser tan
perfecta como sea posible y su frecuencia
tan alta como se necesite despla,ar los
arm#nicos indeseados. Adicionalmente$
como el &P'( debe estar en fase con el
per!odo de la tensi#n de l!nea$ la
frecuencia de la se-al triangular deber" ser
un multiplo entero de la de l!nea.
Entonces$ por ejemplo$ la tensi#n de
l!nea es de =3 <,$ la se-al senoidal de
referencia debe ser de =3 <, y la triangular
de =3@A <,.
Es por estas ra,ones )ue resulta
e*idente )ue las t%cnicas digitales pueden
reali,ar este trabajo sin repasar los mismos
problemas.
Ilustracin 1: Seal SPWM y de cruce por cero generada por
el microcontrolador
En este proyecto se implement#
%sta t%cnica haciendo uso de un
microcontrolador AB.
+a se-al senoidal es un conjunto de
*alores pre*iamente calculados y
guardados en la memoria interna del
microcontrolador por ra,ones de mayores
prestaciones$ ya )ue siendo este un
dispositi*o de C bits$ el c"lculo del *alor
instant"neo del seno es demaciado intenso
para el procesador.
+os *alores utili,ados corresponden
a cuarto de ciclo de senoide y con un
contador se selecciona el *alor
correspondiente incrementando y luego
decrementando$ conformando asi medio
ciclo del senoide.
+a frecuencia interna de la
referencia es entonces un semiseno
pulsante de 433 <,$ ya )ue al reali,ar las
comparaciones con la se-al triangular
elegimos reali,arlo siempre con *alores
positi*os.
+a se-al triangular es reali,ada
haciendo uso del P'( interno del
microcontrolador.
+a sincroni,aci#n se reali,a usando
una interrupci#n )ue dispar" un semiciclo
de &P'( cada *e, )ue se detecte un
paso por cero en la tensi#n de l!nea.
Estos detalles nos permiten )ue el
microcontrolador est% en su mayor parte
del tiempo inacti*o$ solo despertando en
cada interrupci#n 0cada 47433 DsE1 y durante
cada interrupci#n de contador$ de modo
)ue el circuito de control consumir" muy
baja potencia$ siendo despreciable para
cual)uier prop#sito.
Diagra(a en +lo,"es
El es)uema )ue se presenta es de configuraci#n sencilla y segura. El
microcontrolador se encuentra aislado de la etapa 4$ la cual detecta los cruces por cero de
la se-al de la red el%ctrica monof"sica de distribuci#n de energ!a.
El control de disparo de la etapa de potencia se encuentra aislada por la etapa 2$ la
cual esta formada por una fuente flotante.
+a alimentaci#n del microcontrolador$ como de las etapas adyacentes se reali,a
por una fuente de alimentaci#n e.terna de 42 y =B.
Ilustracin 2: Diagrama en Bloques General

Circ"ito
El circuito del microcontrolador
Atmega 92 posee pocos componentes
asciados y pines utili,ados$ entre ellos se
encuentran: un preset conectado al canal
cero del A>C con el cual se *aria la se-al
&P'($ el circuito oscilador e.terno
compuesto por el cristal de 4F(<, y sus
capacitores$ el circuito de reset$ la entrada
de detecci#n del cruce por cero y la
alimentacion del mismo.
Ilustracin : Microcontrolador !tmega2

El circuito de detecci#n de cruce por
cero esta compuesto por un puente
rectificador$ el cual entrega la onda
rectificada al diodo emisor del
optocoplador$ este conmuta de estado GH
a GII en cada cruce por cero de la onda
senoidal de =3<,. +a tensi#n del colector
del transistor de salida del optoacoplador
dispara el transistor dri*er obteniendose un
pulso cada 3$34 seg. en el colector. Esta es
la se-al de entrada al microcontrolador en
el pin de interrupcion cero.
Ilustracin ": #tapa de aislacion 1: Deteccin de cruce por
cero de la seal senoidal de $%&'
Para tener aislaci#n entre la etapa
l#gica y la etapa de potencia$ mas
presisamente la etapa de disparo del
(G&IEJ$ se dise-o una fuente flotante.
+a fuente flotante se compone de
dos transistores dri*er 2n9:38$ los cuales
se encargan de conmutar el primario del
transformador toroidal con la se-al
portadora de =3;<, modulada por la se-al
&P'(.
+os pulsos de alta frecuencia del
secundario son filtrados$ teniendo de esta
forma la se-al &P'( 2 )ue dispara al
(G&IEJ en la etapa de potencia.
Ilustracin $: #tapa de aislacin 2: (uente )lotante por
trans)ormador toroidal

+a etapa de potencia se basa en
una configuraci#n de intrruptor de corriente
alterna monof"sico con puente rectificador.
Esta configuraci#n permite conmutar
cargas de CA con dispositi*os de CC.
Ilustracin *: #tapa de Potencia: Interruptor de +!
mono),sico con puente recti)icador

En las siguientes dos gr"ficas se
puede obser*ar los resultados obtenidos
respecto a la conmutaci#n del (osfet y la
caida de tensi#n en la carga.
Ademas$ se puede *er )ue la primer
componente )ue cobra importancia en el
espectro en frecuencia se sit/a
apro.imadamente en los 8;<,.
Ilustracin -: Seal de conmutacin del M.S(#/ so0re una
carga de -$W
!ir(&are
7@ &ources:
@@ http:77KKK.nongnu.org7a*r-libc7user-
manual7modules.html
@@
@@ Lurn Kith:
@@ a*rdude -c usbasp -p atmega92 -M flash:K:main.he. -M
eeprom:K:main.eep
@7
Ninclude Omain.hO
77 +a amplitud del senoide es asignada por un canal de
A>C
77 esta controla la potencia total entregada a la carga.
uchar amplitudPsenoQ
77 Esta funcion iniciar" el contador interno como P'( del
microcontrolador$
77 configurandolo de tal forma )ue obtengamos una
buena frecuencia para empujar las arm#nicas
77 distorsionantes a mayores frecuencias pero a su *e,
lo suficientemente baja para )ue el
77 microcontrolador no se *ea muy e.igido y tenga tan
poco consumo electrico como sea posible.
inline *oid triangular&JAJ0*oid1
R
JCC3 6 LIJ0 '?(33 1 S LIJ0 CG(34 1 S LIJ0 C&34 1Q
77 P'( Phase Correct 0triangular1
77 Prescaller de C da 9: subidas y 9: bajadas.
77 El Pin con GC3 debe estar configurado como salida.
GC3 6 3Q
JCHJ3 6 3.IIQ 77 El contador empe,ar"
decrementando.
JCC4A 6 LIJ0CG(4A31Q 77Joogle
JCC4L 6 LIJ0'?(421 S LIJ0C&431Q 77'?(49:368
6T CJC$ C&42:364 6T prescaler64
GC4A 6 4=:Q 77para generar =3;<,
U
inline *oid triangular&JGP0*oid1
R
77 Apaga el contador interno )ue controla el P'(
JCC3 6 3Q
U
inline *oid spKm&JAJ0*oid1
R
77 Iniciara el &inusoidal P'($ incluyendo desde el
contador correspondiente a la se-al triangular
77 hasta el contador correspondiente al senoide.
77 Este ultimo contador tiene una frecuencia de
actuali,aci#n mucho menor$ ya )ue no re)uiere terminar
su
77 ciclo tantas *eces como la triangular.
triangular&JAJ01Q
JCC2 6 LIJ0 C&24 1 S LIJ0 '?(24 1Q
JCHJ2 6 3Q
GC2 6 VCQ 77 9: subidas mas 9: bajadas
&LI0 JI(&; $ GCIE2 1Q
77 (ostrar inicio y fin de un periodo senoidal en pin PL3
&LI0 PGJL$ PL3 1Q
U
inline *oid spKm&JGP0*oid1
R
77 >etenemos toda la generacion del &P'(.
77 Esta funcion es llamada al terminar el P'( luego de
cada semiperiodo de =3 <,.
77 Casi inmediatamente despues$ el &P'( es *uelto a
iniciar por la siguiente interrupci#n.
JCC2 6 3Q
CLI0 JI(&; $ GCIE2 1Q
triangular&JGP01Q
CLI0 PGJL$ PL3 1Q
U
Ilustracin 1: #spectro en )recuencia: armnica )undamental
en $%&' y primer armnica en "2&'
77 El senoide de referencia es un conjunto de *alores
calculados en un softKare de hoja de calculo y
77 formateada en forma de arreglo )ue ser"
almacenado en la flash o memoria de programa del
77 microcontrolador.
77 Este m%todo es necesario ya )ue es demaciado
costoso para un microcontrolador calcular el *alor
77 instant"neo de un seno.
77 &e pueden ahorrar un par de instrucciones mas
copiando este *ector de 42F elementos a memoria
77 durante el inicio del microcontrolador$ en *e, de
acceder a la memoria flash cada *e, )ue necesita
77 ser leido.
77 Cambiando los *alores de este *ector podemos reali,ar
distintos tipo de controles$ como por ejemplo
77 utili,ar un seno al cuadrado como se-al de
referencia$ haciendo )ue el &P'( concentre su mayor
77 operaci#n en la ,ona de mayor tensi#n de la tensi#n
de linea.
Ndefine HM(P&A(P+E& 42F
static const uchar &enoDHM(P&A(P+E&E PG?(E( 6 R
3$ 9$ F$ 43$ 49$ 4F$ 4:$ 22$ 2F$ 2:$ 92$ 9=$ 9C$ 84$ 8=$ 8C$
=4$ =8$ =V$ F3$ F9$ FV$ V3$ V9$ VF$ V:$ C2$ C=$ CC$ :4$ :8$
:V$
433$ 439$ 43F$ 43:$ 444$ 448$ 44V$ 423$ 429$ 42F$ 42C$
494$ 498$
49V$ 49:$ 482$ 48=$ 48V$ 4=3$ 4=2$ 4==$ 4=C$ 4F3$ 4F9$
4F=$ 4FV$
4V3$ 4V2$ 4V=$ 4VV$ 4V:$ 4C4$ 4C8$ 4CF$ 4CC$ 4:3$ 4:2$
4:8$ 4:F$
4::$ 234$ 232$ 238$ 23F$ 23C$ 243$ 242$ 248$ 24=$ 24V$
24:$ 223$
222$ 229$ 22=$ 22F$ 22C$ 22:$ 294$ 292$ 299$ 29=$ 29F$
29V$ 29C$
29:$ 283$ 282$ 289$ 289$ 288$ 28=$ 28F$ 28V$ 28C$ 28:$
28:$ 2=3$
2=3$ 2=4$ 2=2$ 2=2$ 2=9$ 2=9$ 2=9$ 2=8$ 2=8$ 2=8$ 2=8$
2==$ 2==$
2==$ 2==$ 2== UQ
77 +a interrupcion del timer 2 controla el *alor instantaneo
del seno de referencia )ue esta siendo usado en
77 cada comparaci#n con la triangular.
I&0JI(E2PCG(PP*ect1
R
static uchar A 6 4Q
static char inc 6 4Q
MInteger seno*Q
77 +a constante A se incremente hasta el ultimo elemento
del *ector y luego se decrementa hasta su inicio.
77 >e esta forma se reali,a por simetria un semiciclo
completo de seno$ ahorrando otros 42= *alores
77 en el *ector.
AW6incQ
if 0A 66 42=1
inc 6 -4Q
if 0A 66 31
R
A 6 4Q
inc 6 4Q
spKm&JGP01Q
77 Al terminar el semiciclo completo el &P'( se apaga
temporalmente 0o reinicia1.
U
77 +a *ariable Oseno*O es una union de 4F bits de longitud
de dos partes. Mn entero )ue en la familia AB es
77 de 4F bits$ y un array de 2 caracteres de C bits.
Ambos tipos de datos ocupan el mismo espacio de
77 memoria pero son tratados diferente por el
compilador.
77 Msamos este m%todo para poder reali,ar una
multiplicacion de C bits por C bits )ue dar" como resultado
77 un *alor ma.imo de 4F bits y luego seleccionar
unicamente la parte alta 0ultimos C bits1 del resultado.
77 Con esta operacion )ue puede parecer complicada$
e*itamos utili,ar *ariables de tipo OfloatO en el *ector
77 de los *alores seno. Este tipo de *ariable es de 92
bits 08 *eces lo )ue estamos ocupando1 y su manejo
77 en un procesador de C bits es muy costoso$ y debe
e*itarse a toda costa.
77 Primero iniciali,amos seno* leyendo el *alor del seno
desde la memoria de programa:
seno*.cD3E6pgmPreadPbyte00P?(PP1X&enoDAE1Q
seno*.cD4E63Q
seno*.i 6 amplitudPseno@seno*.iQ
GC3 6 seno*.cD4EQ 77 Es mucho menos costoso en
tiempo )ue usar floats
77 Mn problema con esta implementaci#n$ es )ue el GC3
tiene un doble buffer y no se actuali,a al instante$
77 se actuali,a recien al terminar de contar 0alcan,ar su
ma.imo o minimo1$ lo cual crea un defasaje entre
77 el senoide y la pKm. Por eso empe,amos con A64$
para )ue el primer *alor del seno no sea cero.
77 Como pseudosoluci#n$ se puede por hardKare acti*ar
la interrupci#n de cruce por cero ligeramente
77 antes 0unos pocos nanosegundos medidos
*isualmente con osciloscopio1 con un ancho de pulso
77 ajustable$ de form )ue si el cruce por cero e.acto es
el centro del pulso de interrupci#n$ entonces el
77 flanco descendente ser" unos nanosegundos antes$
permitiendo a los contadores iniciar nanosegundos
77 antes.
U
I&0A>CP*ect1
R
77 El A>C controla la amplitud del seno para poder ajustar
la potencia de salida.
77 &i necesitaramos no solo *ariar la potencia si no
tambien regularla$ deber!amos usar otro canal del A>C
77 para obtener el estado de la salida y detener o no la
funcion triangular.
amplitudPseno 6 A>C<Q
U
I&0IHJ3P*ect$ I&PHGL+GC;1
R
77 +a interrupci#n e.terna IHJ3 debe ser acti*ada por un
detector de cruce por cero por flanco
77 descendente. Esta hace )ue se dispare una ciclo
completo de P'( en forma sincroni,ada con la
77 tensi#n de linea$ resol*iendo de esta forma los
problemas )ue tendr!amos al generar las se-ales de
77 referencia en forma anal#gica.
77 >etener el P'( no deber!a ser necesario ya )ue este
se auto termina al finali,ar el ciclo$ el cual termina
77 antes de )ue ocurra la siguiente interrupci#n$ pero su
inclusi#n no perjudica y nos asegura )ue ante un
77 error$ las *ariables ser"n reiniciadas.
spKm&JGP01Q
spKm&JAJ01Q
U
I&0LA>I&P*ect1
R
77 Interrupcion por defecto ante una interrupcion
desconocida.
77 &i no se define esto$ el micro se resetea ante un error.
77 Por supuesto$ un error nunca deber!a ocurrir.
U
static *oid hardKareInit0*oid1
R
>>L 6 LIJ0 &P'(LIJ 1 S LIJ0 PL3 1Q
PGJL 6 3Q
>>> 6 LIJ0 P>= 1Q 77 P>= como salida de =3;<,
77 Podemos usar el puerto C para debugear en forma
sencilla.
>>C 6 3.IIQ 77 PortC: outputs
PGJC 6 3.33Q 77 +eds apagados
77 <abilitar interrupciones:
&LI0 ?IC $ IHJ3 1Q
(CMC S6 PLB0 I&C34 1Q 77 IHJ3 por flanco de
bajada
77 Msar A>C3 en Iree unning$ pin AEI como
referencia$ Grdenar a la i,)uierda para C bits en A>C<
&IIG 6 3Q
A>(MY 6 LIJ0 A>+A 1Q
A>C&A 6 LIJ0 A>EH 1 S LIJ0 A>&C 1 S LIJ0 A>AJE 1 S
LIJ0 A>IE 1 S LIJ0 A>P&2 1 S LIJ0 A>P&4 1 S
LIJ0 A>P&3 1Q 77 A>C Enable$ AutoJrigger$ Enable
interrupt
amplitudPseno 6 2==Q
U
776666666666666666666666666666666666666666666
6666666666666666666666
7766666666666666666666 main
666666666666666666666666666666666666666
776666666666666666666666666666666666666666666
6666666666666666666666
int main0*oid1
R
77KdtPenable0'>JGP4&1Q
77 E*en if you donZt use the Katchdog$ turn it off here.
Gn neKer de*ices$
77 the status of the Katchdog 0on7off$ period1 is
PE&EBE> GBE E&EJ[
PdelayPloopP20433331Q
77 >elay para eliminar cual)uier error )ue pueda
generarse en el pin de interrupcion
77 durante el encendido de la placa$ y dispare todo un
ciclo de pKm.
hardKareInit01Q
sei01Q 77 Acti*ar interrupciones
for0QQ1
R
U
return 3Q
U
7@ -------------------------------------------------------------------------
@7
+ibliograf-a
OElectr#nica de PotenciaO (uhammad <.
ashid$ 2\ Edicion$ Prentice <all
Manual online de programacion de AVR
http:77KKK.nongnu.org7a*r-libc7user-
manual7
ATMEL ATmega32's Datasheet
http:77KKK.atmel.com
Softwares
AVR Studio
!roteus

You might also like