ContentsAnlisis de Distorsin Armnica Total en seales
PWM2Construccin de la Seal Senoidal2Construccin de la Seal Senoidal
aproximada con dos rectas.4Determinacin de coordenadas (x,y) para
el rea mxima4Recta 17Recta 29Recta 311Recta 414Recta 517Recta
619Recta 722Modelos en Simulink (Generacin PWM y Anlisis THD)25THD
en Seal Senoidal Pura25THD en Seal Senoidal aproximada con
rectas.25THD en Seal PWM Senoidal27TDH en Seal PWM con Senoidal
aproximada.28
Anlisis de Distorsin Armnica Total en seales PWMConstruccin de
la Seal Senoidal
En esta seccin se describe el mtodo llevado a cabo para generar
la seal senoidal de 60 Hz en Matlab. Posteriormente se realizar un
anlisis de contenido armnico para esta seal y servir como
referencia y comparacin en el anlisis TDH de una seal senoidal
aproximada con rectas. Estas dos seales ( senoidal y senoidal
aproximada) servirn como seales de referencia en la generacin de
seales PWM. A continuacin se muestra el desarrollo en el Workspace
de Matlab para la generacin de la seal senoidal de 60 Hz.
>> t = [0:0.0001:1];>> f = 60;>> w =
2*pi*f;>> senoidal = sin(w*t); Se grafica un ciclo de la
seal.
>> plot(t,senoidal,'r')>> axis([0 1/60 -1 1])
Para exportar la seal senoidal generada del Workspace de Matlab
a Simulink, es necesario guardar las dos variables (t y senoidal)
en una sola variable de la siguiente manera:
>> senoidal_1 = double([t',senoidal']);
Una vez realizado esto, abrimos Simulink Library y buscamos el
block From Workspace para importar la seal. Creamos un nuevo modelo
mediante File/New/Model y agregamos el block From Workspace. Dando
doble click en el block agregado se introducen los parmetros
necesarios.
Para visualizar la seal se agrega el bloque Scope que se
encuentra en Simulink/Sinks.El bloque necesario para calcular el
THD se encuentra en Simscape/SimPowerSistems/Control and
Measurements. Para representar el valor del THD en porcentaje se
utiliza el bloque Gain ubicado en Simulink/Commonly Used Blocks y
el bloque Display que se encuentra en Simulink/Sinks para mostrar
la cantidad.
Se simula un ciclo de la seal senoidal de 60 Hz mediante el botn
play. Antes de esto es necesario especificar el tiempo de la
simulacin (1/60). El modelo debe de quedar de la siguiente
forma
Se observa un THD de 0.1495 % para la seal senoidal pura. Si se
quiere visualizar la seal se debe de dar doble click en el
Scope.
Construccin de la Seal Senoidal aproximada con dos rectas.
Determinacin de coordenadas (x,y) para el rea mxima
Para representar una senoidal con dos lneas rectas que se
repiten cada 90 grados, es necesario determinar el las coordenadas
para las cuales el rea bajo las rectas es la mxima posible.
Considerando que la onda senoidal es simtrica cada 90 grados (de 0
a /2), se har el clculo con la figura geomtrica que va de 0 a
/2.
Para el rea A1 correspondiente al tringulo tenemos lo
siguiente:
Para el rea A2 que corresponde al cuadriltero tenemos:
El rea total se calcula de la siguiente manera:
Para optimizar derivamos la funcin del rea y despejamos x:
En base al anlisis anterior, el punto (x,y) = (0.8807,0.7712) es
el ptimo para representar el rea mxima posible de la seal senoidal
con dos rectas.
Con los dos puntos mostrados en la figura anterior podemos
calcular siete rectas con sus coordenadas iniciales, coordenadas
finales y su pendiente.
Antes de calcular las rectas, debe de considerarse que debido a
que la seal senoidal es de 60 Hz, es necesario dimensionar los
desplazamientos en x, es decir, en 2 la variable x tiene un valor
de 1/60. Para el caso de la amplitud (variable y) no se debe de
llevar a cabo dimensionamiento.
Recta 1
Coordenadas:
Pendiente:
Ecuacin de la Recta:
Para generar la recta en Matlab es necesario asignar un conjunto
de valores para x, con lo cual se generaran los valores de y. El
procedimiento es el siguiente.>> x1 = 0;>> y1 =
0;>> x2 = ((acos(2/pi))*(1/60))/(2*pi)
x2 =
0.0023
>> y2 = sin(acos(2/pi))
y2 =
0.7712
>> m = (y2-y1)/(x2-x1)
m =
330.1133
>> x = [x1:0.0001:x2];>> y = y1 +
(m*(x-x1));>> plot(x,y)>> hold on>> axis([0 1/60
-1 1])>> plot(t,senoidal,'r')>> plot(x,y,'b')
La figura anterior muestra el resultado de generar la Recta 1 en
Matlab. Se grafica junto con la seal senoidal para verificar que
coincidan.
Para poder exportar los valores de la recta generada del
Workspace de Matlab hacia Simulink es necesario agrupar los valores
de x y los valores de y en una sola variable. Esto se lleva a cabo
de la siguiente manera:
>> recta_1 = double([x',y']);
Ya que tenemos en la variable recta_1 valores de x y valores de
y, se van guardando en un archivo Excel. Cuando se genere la
recta_2 se agregaran sus valores al archivo Excel y asi
sucesivamente hasta llegar a la recta_7.
La figura anterior muestra la Recta_1 generada en Excel.Recta
2
Coordenadas:
Pendiente:
Ecuacin de la Recta:
Desarrollo en Matlab:
>> x1 = ((acos(2/pi))*(1/60))/(2*pi)
x1 =
0.0023
>> y1 = sin(acos(2/pi))
y1 =
0.7712
>> x2 = 1/240
x2 =
0.0042
>> y2 = 1
y2 =
1
>> m = (y2-y1)/(x2-x1)
m =
125.0008
>> x = [x1:0.0001:x2];>> y = y1 +
(m*(x-x1));>> hold on>> axis([0 1/60 -1 1])>>
plot(t,senoidal,'r')>> plot(x,y)
Recta_2 y Seal senoidal de 60 Hz.
Agrupacin de valores x y valores y en variable Recta_2:
>> recta_2 = double([x',y']);
Acumulado de valores de Recta_1 y Recta_2 en Excel.
Recta 3
Coordenadas:
Pendiente:
Ecuacin de la Recta:
Desarrollo en Matlab:
>> x1 = 1/240
x1 =
0.0042
>> y1 = 1
y1 =
1
>> x2 = ((pi*(1/60))/(2*pi))-((acos(2/pi))/(120*pi))
x2 =
0.0060
>> y2 = sin(acos(2/pi))
y2 =
0.7712
>> m = (y2-y1)/(x2-x1)
m =
-125.0008
>> x = [x1:0.0001:x2];>> y = y1 +
(m*(x-x1));>> hold on>> axis([0 1/60 -1 1])>>
plot(x,y,'b')>> plot(t,senoidal,'r')
Grfica de Recta_3 y seal senoidal de 60 Hz.
Agrupacin de valores x y valores y en variable Recta_3:
>> recta_3 = double([x',y']);
Acumulado de valores de Recta_1, Recta_2 y recta_3 en Excel.
Recta 4
Coordenadas:
Pendiente:
Ecuacin de la Recta:
Desarrollo en Matlab:
>> x1 = (1/120) - ((acos(2/pi))/(120*pi))
x1 =
0.0060
>> x2 = (1/120) + ((acos(2/pi))/(120*pi))
x2 =
0.0107
>> y1 = sin(pi-(acos(2/pi)))
y1 =
0.7712
>> y2 = sin(pi+(acos(2/pi)))
y2 =
-0.7712
>> m = (y2-y1)/(x2-x1)
m =
-330.1133
>> x = [x1:0.0001:x2];>> y = y1 +
(m*(x-x1));>> hold on>> axis([0 1/60 -1 1])>>
plot(x,y,'b')>> plot(t,senoidal,'r')
Grfica de Recta_4 y seal senoidal de 60 Hz.
Agrupacin de valores x y valores y en variable Recta_4:
>> recta_4 = double([x',y']);
Acumulado de valores de recta_1, recta_2 , recta_3 y recta_4 en
Excel.
Recta 5
Coordenadas:
Pendiente:
Ecuacin de la Recta:
Desarrollo en Matlab:>> x1 = (1/120) +
((acos(2/pi))/(120*pi))
x1 =
0.0107
>> x2 = (1/80)
x2 =
0.0125
>> y1 = sin(pi+(acos(2/pi)))
y1 =
-0.7712
>> y2 = -1
y2 =
-1
>> m = (y2-y1)/(x2-x1)
m =
-125.0008
>> x = [x1:0.0001:x2];>> y = y1 +
(m*(x-x1));>> hold on>> axis([0 1/60 -1 1])>>
plot(t,senoidal)>> plot(x,y,'r')
Grfica de Recta_5 y seal senoidal de 60 Hz.
Agrupacin de valores x y valores y en variable Recta_5:
>> recta_5 = double([x',y']);
Acumulado de valores de rectas 1 a 5.
Recta 6
Coordenadas:
Pendiente:
Ecuacin de la Recta:
Desarrollo en Matlab:>> x1 = (1/80)
x1 =
0.0125
>> x2 = (1/60) - ((acos(2/pi))/(120*pi))
x2 =
0.0143
>> y1 = -1
y1 =
-1
>> y2 = sin(2*pi - acos(2/pi))
y2 =
-0.7712
>> m = (y2-y1)/(x2-x1)
m =
125.0008
>> x = [x1:0.0001:x2];>> y = y1 +
(m*(x-x1));>> hold on>> axis([0 1/60 -1 1])>>
plot(t,senoidal)>> plot(x,y,'r')
Grfica de Recta_6 y seal senoidal de 60 Hz.
Agrupacin de valores x y valores y en variable Recta_6:
>> recta_6 = double([x',y']);
Acumulado de valores de rectas 1 a 5.
Recta 7
Coordenadas:
Pendiente:
Ecuacin de la Recta:
Desarrollo en Matlab:>> x1 = (1/60) -
(acos(2/pi))/(120*pi)
x1 =
0.0143
>> x2 = 1/60
x2 =
0.0167
>> y1 = sin(2*pi - acos(2/pi))
y1 =
-0.7712
>> y2 = 0
y2 =
0
>> m = (y2-y1)/(x2-x1)
m =
330.1133
>> x = [x1:0.0001:x2];>> y = y1 +
(m*(x-x1));>> hold on>> axis([0 1/60 -1 1])>>
plot(t,senoidal)>> plot(x,y,'r')
Grfica de Recta_7 y seal senoidal de 60 Hz.
Agrupacin de valores x y valores y en variable Recta_7:
>> recta_7 = double([x',y']);
Acumulado de valores de rectas 1 a 5.
Ya que se generaron las 7 rectas y sus respectivos valores, se
guardan en una sola variable. Esta variable contendr los datos que
el bloque From Workspace cargar al momento de llevar a cabo la
simulacin en Simulink.
A medida que se fueron generando las rectas, se fueron guardando
los valores en una hoja de Excel. Para guardar estos valores en una
variable de Matlab, hay que crear una nueva variable en el
Workspace. Ya que se cre esta variable, se da doble click sobre su
nombre para abrir la hoja de celdas donde se guardan sus valores.
Una vez abierta la hoja de celdas de la variable, se pegan los
valores que se guardaron en Excel.
Hasta este punto, tenemos las dos seales portadoras listas para
usarse en Simulink. Se utilizar un bloque para cada variable, el
cual cargar los valores de dichas variables desde el Workspace de
Matlab. Es importante mencionar que para que los bloques de
Simulink carguen los valores de las variables, estas deben de estar
abiertas en el Workspace. Para esto se debi de haber guardado
previamente un archivo con las variables generadas.
Modelos en Simulink (Generacin PWM y Anlisis THD)THD en Seal
Senoidal PuraEn este modelo de simulink, se analiza el THD de una
onda senoidal pura de 60 Hz. Se realiza la simulacin para un ciclo
y se obtiene un resultado de 0.1495 % THD. Aunque el anlisis THD de
importancia es para las seales PWM, se hace ste anlisis como
referencia y como comparacin con los valores arrojados en las otras
seales.
Modelo en Simulink
Seal Senoidal 60 Hz (un ciclo).
Espectro de Frecuencias
Utilizando los datos de la seal senoidal pura podemos obtener su
espectro de frecuencias. Tenemos una seal senoidal_pura cuyos datos
se cargan al Workspace de Matlab desde Simulink mediante una bloque
From Workspace. Con esta serie de datos se puede utilizar la funcin
fft(); para obtener el espectro de frecuencias de la seal. Para
obtener nicamente la magnitud es necesario utilizar abs(fft(seal)).
Una vez obtenidos los valores de las magnitudes estas se pueden
graficar.
Valores de Armnicas y Magnitudes
Espectro de Frecuencias Seal Senoidal Pura
Espectro de Frecuencias Seal Senoidal Pura
THD en Seal Senoidal aproximada con rectas.En este caso, se
import a Simulink la serie de datos de las rectas generadas en el
Workspace de Matlab. Se realiz previamente el clculo para
determinar las coordenadas o puntos adecuados que aprovechan el rea
mxima de la seal senoidal con las rectas. Se utiliz el bloque From
Workspace para importar los datos y poder generar la seal senoidal
aproximada. La frecuencia de la seal es de 60 Hz y se analiza un
ciclo. El resultado obtenido es de 2.424 % THD.
Modelo en Simulink.
Aproximacin de Seal Senoidal con rectas.
Espectro de FrecuenciasPara el caso de la seal senoidal
aproximada con rectas se espera una mayor cantidad de armnicas en
el espectro de frecuencias con respecto a la seal anterior puesto
que hay una diferencia aproximada de 2% TDH entre una y otra seal.
El procedimiento es el mismo para cada seal generada.
Valores de Armnicas y Magnitudes
Espectro de Frecuencias Seal Senoidal Pura
Espectro de Frecuencias Seal Senoidal Pura
THD en Seal PWM SenoidalEn el siguiente modelo, se lleva a cabo
la comparacin de la onda senoidal pura de 60 Hz y una seal
triangular de 3 kHz. Mediante la comparacin se genera la seal PWM
respectiva y despus se realiza el anlisis de THD de la misma seal
PWM. En este caso se obtiene un resultado de 99.98 % TDH.
Modelo en Simulink.
Seal Triangular 3 kHz, Seal Senoidal 60 Hz y seal PWM
resultante.
Espectro de Frecuencias
Valores de Armnicas y Magnitudes
Espectro de Frecuencias Seal Senoidal Pura
Espectro de Frecuencias Seal Senoidal Pura
TDH en Seal PWM con Senoidal aproximada.En el siguiente modelo,
se genera la seal PWM a partir de la comparacin de la seal de
rectas (un ciclo de 60 Hz) y la seal triangular (3kHz). La seal PWM
resultante tiene 109% THD.
Modelo en Simulink.
Seal Triangular 3 kHz, Seal Senoidal aproximada con rectas 60 Hz
y seal PWM resultante.
Espectro de Frecuencias
Valores de Armnicas y Magnitudes
Espectro de Frecuencias Seal Senoidal Pura
Espectro de Frecuencias Seal Senoidal Pura
ConclusinSi observamos los resultados para la Distorsin Armnica
Total de las seales senoidales, tanto de la senoidal pura como de
la senoidal aproximada con rectas, no existe una cantidad
significativa de distorsin armnica (0% THD y 2% THD
respectivamente). Cuando estas dos seales se utilizan para generar
la seales PWM observamos un incremento considerable en la distorsin
armnica. Para la seal PWM generada con la Senoidal Pura como
referencia tenemos un 99.98% THD y para la seal PWM generada con la
Senoidal Aproximada como referencia tenemos un 109% THD. El
espectro de inters es el de las ltimas dos seales, los primeros dos
espectros y THD se utilizaron solo como referencia. Podemos
observar un 9% THD de diferencia entre las dos seales PWM y un
espectro de frecuencias muy parecido. La magnitud de la fundamental
de la segunda seal PWM se reduce a un poco ms de la mitad lo cual
podra ser un factor importante a considerar.