Vous êtes sur la page 1sur 39

Licenciatura en Ingeniera en Comunicaciones y

Electrnica
Seales y sistemas lineales

Simulacin de una seal en Simulink


__________________________________________________
Procesos de anlisis espectral de una seal
cuadrada peridica en Matlab/Simulink Vol.

Ruiz Barajas Juan Gustavo


Profesor
Altamirano Cornejo Antonio Martn
Alumno
5to semestre

Simulacin en Simulink del espectro de una seal peridica

INTRODUCCION
Simulink es una aplicacin que permite construir y simular modelos
de sistemas fsicos y sistemas de control mediante diagramas de
bloques. El comportamiento de dichos sistemas se define mediante
funciones de transferencia, operaciones matemticas, elementos de
Matlab y seales predefinidas de todo tipo.
Simulink dispone de una serie de utilidades para la visualizacin,
anlisis y guardado de los resultados de simulacin.
En este breve trabajo, se explicar el uso introductorio al entorno de
Simulink, con el fin de poder visualizar el espectro de una seal
peridica un tren de pulsos deforma de onda cuadrada.
Configuracin del el simulador para anlisis espectral de seales.
Clculo de potencia en el dominio del tiempo.
Clculo de potencia en el dominio de la frecuencia.
1.- Simulink
-Ejecutar Matlab
-Ubicar en la barra debajo del men de Matlab:

-Se selecciona el botn de hipervnculo de Simulink:

- Automticamente se abre la ventana del buscador de libreras


(Simulink Library Browser):

La ventana anterior contiene las libreras (divisin izquierda) con los


bloques de instruccin y funcin especficos (divisin derecha) que
provee Simulink, a partir de esta, se seleccionar posteriormente la
cantidad de bloques necesaria para el diagrama que simular la
seal descrita, por lo cual es de suma importancia mantenerla
siempre activa.
-Hacer clic en File
-Hacer clic en New
-Hacer clic en Model.

-Se abre la ventana de trabajo en blanco, que es donde se armar


el diagrama de bloques:

2.-

Armado de diagrama de bloques.

2.1

Libreras.

Las libreras contienen las categoras y dentro de estas, los


bloques, especficos en funcin del tipo de librera que las contiene.
En este ejercicio solo se van a usar las libreras de Simulink y
Signal Processing Blockset.
Una ves con la ventana de libreras y la ventana de trabajo, se
puede proceder a construir el diagrama de bloques. Por default, al
abrir Simulink, la librera Simulink en la divisin izquierda de la
ventana del buscador de libreras va a estar desplegada, mostrando
las siguientes categoras:

De las cuales solo se concentrar de esta librera en las categoras


de:
Continuous
Discrete
Mathoperations
Sinks
Sources
2.2

Bloques

Son las funciones y/o instrucciones visualizadas en formas


geomtricas, y todas tienen una propiedad o funcin especficas, y
estn contenidas dentro de las categoras de las libreras; estas

simplemente se arrastran de la ventana de bloques hacia la ventana


de trabajo.
Bloque Transfer Fcn: con este bloque se configura el filtro pasabajas para suavizar la seal de salida.

Ubicado en Simulink/Contiuous.
Bloque Zero-OrderHold: con este bloque se transforma de una
seal continua a una discreta, para el posterior uso de un graficador
de vector.

Ubicado en Simulink/Discrete.

Bloque Add: este bloque junta todas las seales o funciones que
entran, las suma y arroja un nico resultado.
Ubicado en

Simulink/Mathoperations

Bloque Scope: Este bloque muestra la seal que entra en un plano


cartesiano en funcin del periodo y la amplitud.
Ubicado en

Simulink/Sinks

Bloque Toworkspace:se usa para almacenar muestras de seales


de Simulink generadas durante una simulacin. Las muestras se
guardan en una variable MATLAB en forma de vector columna.
Ubicado en

Simulink/Sinks

Bloque Signal Generador: Este bloque hace la


funcin virtual de un generador de seales y se le
puede configurar como tal.
Ubicado en

Simulink/Sources

Bloque Sine Wave:Este bloque genera una onda


sinusoidal modificable, y puede ser configurada para
ser continua o discreta.
Ubicado en

Simulink/Sources

Bloque Buffer:Este bloque se reserva para el


almacenamiento temporal de la seal discreta,
mientras espera a ser
procesada
posteriormente.
Ubicado en Signal Processing
Blockset/Buffers/Buffer
Bloque FFTmagnitude: El bloque e transformada
rpida de Fourier (Fast Fourier Tansform) como su
nombre lo indica, transforma a serie de Fourier la
seal entrante, y solo acepta seales peridicas
discretas.
Ubicado en Signal
Blockset/Transforms

Processing

Bloque Vector Scope: este bloque grafica la seal,


en funcin de la frecuencia, la potencia o el periodo.
Ubicado en Signal
Blockset/Signal Processing Sink

Processing

Ya que se tienen los bloques identificados, ubicados


y especificados por su funcin, hacemos el primer
diagrama de bloques que corresponde al anlisis
general de un tren de pulsos cuadrado, de simetra
impar, a 1kHz y de una amplitud de -5 a 5 Volts.
2.3 Pasos para armar un diagrama de bloques.
1)Ubicar los bloques que se necesitan, y uno por
uno, arrastrarlos la ventana de bloques, hasta
la ventana de trabajo.

2)Unir los bloques: esto se logra sosteniendo clic


derecho en la terminal de salida de un bloque
(el tringulo pegado al costado derecho del
bloque), y llevarlo hasta la terminal de entrada
de otro ( > al costado izquierdo del bloque),
completando la unin. Para bifurcar uniones, es
necesario hacer clic y mantenerlo, desde una
terminal, ya sea de entrada o salida, hasta el
cable y hacer interseccin en cualquier parte de
su longitud, evitando hacerlo cerca de una
terminal de otro bloque ya unido.
A continuacin se muestra el diagrama de bloques
de la seal a evaluar terminado.

3.- Editar parmetros de bloques.


3.1 Configuracin SignalGenerator.
Para generar la onda que necesitamos analizar,
necesitamos lo siguiente:
Elegir la forma de onda cuadrada (square).
Establecer la frecuencia de 1000Hz.
La amplitud de la seal delimitada a 5 Volts.
Hacer doble clic sobre el icono para mostrar el panel
Block Parameters y agregar los valores antes
mencionados:

3.2 Configuracin Transfer Fcn.


Este bloque contendr la funcin de transferencia
de un filtro limitador de banda (filtro paso bajas).
Para calcular el numerador y el denominador de la
funcin de transferencia para tal filtro se cambia la
ventana de comandos de MATLAB para introducir la
siguiente funcin:
[Num,Den]=butter(3,2*pi*9000,low,s)
Donde:
Num: variable del numerador.
Den: variable del denominador.
Butter: palabra reservada para declarar que va a
haber un filtro butterworth en este caso pasa-bajas.
3: de tercer orden.
9000: que corte a 9000 Hz.
Low: declara al filtro como pasa BAJAS.
s: variable factorial de la ecuacin.
La lnea anterior genera los polinomios
correspondientes a la funcin de transferencia de el
filtro. Para visualizar el resultado generado por el
cdigo anterior, se escribe la siguiente lnea:
tf(Num,Den)

tf: transfer function, funciones de transferencia,


muestra el resultado de la ecuacin de la funcin de
transferencia del filtro.
Ahora se vuelve a la ventana de trabajo de Simulink
y se hace clic derecho sobre el bloque Transfer
Fnc y del men emergente elegirBlock
Parameters. Entonces aparece el cuadro de
propiedades de del bloque. Se tiene que configurar
el bloque tal como se muestra a continuacin:

Ntese que las variables Num y Den se escriben tal


cuales en los campos Numerador y Denominador del
Block Parameters para que a travs del bloque, se
utilicen en diagrama y sea funcional.

3.3 Configuracin del bloque Scope


haciendo doble clic sobre el bloque Scope se
despliega el cuadro de un osciloscopio, mismo que
se muestra a continuacin:

Al hacer clic en el icono Parameters, podremos


configurar el osciloscopio para observar tres ciclos

del mensaje: cada ciclo dura 1ms, as que tres ciclos


duran 3 ms.
As que el campo Time range se elimina auto, y
se agrega 0.003.

Dejaremos limpias las opciones de la pestaa Data


history para que contine con la seal peridica
3.4 Configuracin de ToWorkspace
Hacer doble clic en el bloque para desplegar Block
Parameters.

El campo Variable Name contiene el nombre de la


variable MATLAB en la cual se almacenarn las
muestras de alguna seal, resultado de la
simulacin. Cambiar el nombre simout por un
nombre conveniente, por ejemplo signal.
El campo saveformat es para elegir el tipo de dato
en el que se almacenarn las muestras. Para
nuestro caso se debe elegir la opcin Array.
4.- Configuracin del simulador (Workspace
Matlab).
Para realizar un anlisis en frecuencia de seales
analgicas generadas en SIMULINK, mediante FFT,
stas deben ser enviadas al entorno de MATLAB y
procesadas de acuerdo a las siguientes
instrucciones.

-Paso 1: Se requieren de dos datos previos para


preparar el clculo de la DFT. El primer dato es la
frecuencia mxima contenida en el mensaje
f max= ?

-Paso 2: El segundo dato previo es el nmero de


muestras de la seal. Este debe ser potencia de 2.
Por lo general se prefiere trabajar con 16384, 32768
o 65536 muestras:
N=16384.
-Paso 3: Calcular los parmetros espectrales
f ss 2 f max
df =

f ss
N

Frecuencia de muestreo.
Resolucin de frecuencia.

-Paso 4: Calcular parmetros temporales.


ss =

1
f ss

Periodo de muestreo temporal.


Duracin del espacio muestral temporal.

T =N ss

stopTime=T 1

1
N

Tiempo de parada de la simulacin.

-Paso 5: En el dominio del tiempo, calcule el dominio


y la imagen de la seal. La seal puede ser
capturada

t=0 : ss :T 1

1
N

Eje del tiempo.

5.-Pasos para configurar el simulador


La configuracin del simulador empieza
especificando dos datos fundamentales: la
frecuencia mxima contenida en la seal y el
nmero de muestras. La frecuencia mxima
presente en el sistema se considerar de 9kHz, que
es la frecuencia ms alta considerada en el sistema.
f max=

9000;

En tanto, se considerar el uso de 16384 muestras.


16384
La frecuencia de muestreo para el simulador se
fijar en 10 veces la frecuencia mxima, esto es:
N=

f ss =10f max
df =f ss / N

En resumen, el cdigo .m que realiza el clculo de


los parmetros de simulacin se muestra a
continuacin.
Nota: seguir las instrucciones paso a paso dando
enter donde se indica, si no, la simulacin no
funcionar.
[Num,Den]=butter(3,2*pi*9000,'low','s')
%damos enter
tf(Num,Den)
%damos enter

%Configuracin del filtro


[Num,Den]=butter(3,2*pi*9000,'low','s');
% 1) Frecuencia mxima contenida en el sistema
fmax = 9000;
% 2) Nmero de muestras
N=16384;
% 3) Parmetros espectrales
fss = 10 * fmax;
df=fss/N;
% 4) parmetros temporales
tss=1/fss;
T=N*tss;
stopTime=T*(1-1/N);
% 5) Dominio del tiempo
t=0:tss:T*(1-1/N);
% damos enter
-Parmetros del simulador
Para cualquier simulacin digital hay tres
parmetros temporales que deben especificarse:
StartTime:
SetpType

: Tiempo de arranque
: Tipo de paso: elija FixedStep.

FixedStepTime: paso de simulacin (equivalente a


periodo de muestreo)
StopTime

: Tiempo de parada

Resolutor
: Es el algoritmo empleado para
solucionar ecuaciones diferenciales
La definicin de tales parmetros se realiza
definiendo las siguientes variables

Type=FixedStep
Start Time=0

Step ss

Stop Time=T 1

1
N

Resolutor=0 de 4 ( RungeKutta )

En el caso del stop time, se puede asignar


directamente la variable StopTime generada segn
los paso de la subseccin anterior.

6.- Ejecucin de la simulacin


-En la hoja de modelo, elegir men
Simulation>>Start para arrancar la simulacin.

-Dar doble clic sobre el bloque Scope para exhibir la


grfica de la seal cuadrada limitada en banda.
Debe verse como se ilustra a continuacin:

Hay que verificar que la variable signal est


presente en el entorno de MATLAB consultando la
seccin WorkSpace, o bien teclear en el workspace
de matlab:
length(signal)
% dar enter
Debe desplegarse entonces el valor 16384 que
indica la longitud del vector columna declarado
como signal.

7.- Pasos generales para el clculo del


oscilograma y del espectro
71.- En el dominio de la frecuencia, calcular el eje de
la frecuencia y el espectro:
f ss
f
1
:dff : ss 1
2
2
N
1
z= fftshift
fft (signal )
N

f=

|(

))|

Eje de la frecuencia.
Espectro de la seal (solo

magnitud).
7.2.-Graficar la seal en el dominio del tiempo. A
esta grfica se le suele conocer comnmente como
el oscilograma:
figure(1)
plot(t,signal)
title(Oscilograma)
Es posible que el oscilograma se exhiba como un
manchn, es decir, hay demasiadas muestras,
tantas que saturan el oscilograma. Para observar un
fragmento de la seal graficada usar la funcin axis:
Axis([tmintmaxyminymax])
Donde:
tmintmax especifican los lmites temporales entre
los cuales se visualiza la seal.
yminymax son los lmites en magnitud entre los
cuales se grafica la seal.
7.3.- Graficar el espectro de la seal:
figure(2)

plot(f, z)
tittle(Espectro)
Nota. Es posible que el espectro se exhiba como un
pequeo manchn en el centro de la grfica, es
decir, el espectro est concentrado en una pequea
banda de frecuencias. Para observar slo esa banda
de frecuencias se debe usar la funcin axis:
Axis([fminfmax 0 zmax])

Donde:
Fminfmax: son los acotamientos de el eje de las
frecuencias.
0 zmax: son los lmites en el eje z.
Al usar la funcin axis para exhibir slo frecuencias
positivas, el espectro debe multiplicarse por un
factor de dos. A consecuencia, el cdigo para
exhibir el espectro de una seal, queda como:
Figure(2)
Plot(f, 2 * z)
Axis([fminfmax 0 zmax])
Tittle(Espectro)
7.4.- El cdigo:
% 6)Dominio de la frecuencia
f=(-0.5*fss:df:0.5*fss*(1-1/N))'
z= abs(fftshift(fft(signal)/N)); % Palabra reservada y
comando para calcular la transformada de Fourier
% 7)Oscilograma: graficando tres ciclos de la seal
figure(1)
plot(t,signal)
axis([ 0 0.003 -6 6]) % va desde cero, muestreando
cada 3ms, con un lmite de amplitud de -6 a 6

title('oscilograma')
% 8)Espectro:
figure(2)
stem(f, 2*z)
axis([0 10000 0 10]) % en el eje de la frecuencia va
desde los 0 a los 10 kHz, y en el eje de la Z de 0 a
10
title('Espectro')
% dar enter
Automticamente van a desplegarse las ventanas
de la seal:
-

Mostrada en el oscilograma

-Mostrado su espectro:

8.- Comprobacin y simulacin a travs de


clculos y sumas de armnicos.
Ahora que tenemos de manera directa el clculo y la
visualizacin de la onda y de su espectro, se
proceder a calcular la serie de Fourier en torno a
las caractersticas del tren de pulsos cuadrados.
Nuestra tipo de seal, es un tren de pulsos
cuadrados, de amplitud de -5 a 5 Volts, sin DC, con
una frecuencia de 1 kHz, y seal impar.

Por definicin y planteamiento de la seal, esta no


tiene componente de DC, puesto que esta es igual a
cero, siendo la mitad en longitud de sus amplitudes
acotadas (-5,5), es cero volts. Por lo anterior se
puede asegurar que: a0 =0
Al ser seal impar, no tiene cosenos, por lo que se
puede concluir que:
am =0

A continuacin se proceder a calcular las


amplitudes de los armnicos seno.
0

5 sen ( mt ) dt +

2
5 sen ( mt ) dt
T 0 T
0

2
0

2
bm =
T 0 T
0

)]

[ ( )]

bm =

T
T
10
10
1+cos m 0 +
1cos m 0
T 0 m
2
T 0 m
2

bm =

1010 cos ( m )10 cos ( m ) +10 2020 cos ( m) 1010 cos (m )


=
=
2 m
2 m
m

para mimpar :

20
m

para m par :0

b1=

1010(1) 20
= Armnico fundamental
(1)

b3 =

1010(1) 20
=
(3)
3

b5 =

1010(1) 20
=
(5)
5

b7 =

1010(1) 20
=
(7)
7

b9 =

1010(1) 20
=
( 9)
9

b11 =

1010(1) 20
=
(11)
11

b13=

1010 (1) 20
=
(13)
13

b15=

1010 (1) 20
=
(15)
15

Haciendo las divisiones, se puede comprobar el


resultado de la magnitud de la amplitud respecto a
la grfica de espectro concuerdan, haciendo
correcta la simulacin, con el clculo.
Ahora que se tienen los armnicos calculados,
procedemos a construir el diagrama de bloques que
simular la suma de las amplitudes de los senos
impares que contiene la seal cuadrada.
Para este diagrama se necesitan los bloques
Sine wave: ubicado en Simulik/Signals.
Add: ubicado en Simulink/Mathoperations.
Scope: ubicado en Simulink/Sinks.

Zero-OrderHold: ubicado en Simulink/Discrete.


Buffer: ubicado en Signal Processing
Blockset/Buffers/Buffer.
Magnitude FFT: ubicado en Signal Processing
Blockset/Transforms.
Vector Scope: ubicado en Signal Processing
Blockset/Signal Processing Sink.
-Armado del diagrama.
En la siguiente imagen, se muestra el diagrama que
se quiere lograr.

Se van a arrastrar 8 veces el bloque Sine Wave a


la ventana de trabajo, dado que solo vamos a sumar

8 ondas senoidales con sus correspondientes


amplitudes.
-Configuracin de parmetros del bloque Sine Wave.
Dar doble clic izquierdo a un bloque de Sine Wave
para desplegar la ventana Source Block
Parameters

Los nicos campos que se van a modificar son:


-Amplitude: es donde asignamos el valor de la
amplitud a cada uno de los ocho bloques, en el caso
de la imagen anterior, es de el primer armnico
(bloque sine wave con etiqueta de 1 kHz).
-Frequency: la frecuencia de la seal dada en
(rad/seg).

-Configuracin del bloque Add.

-Dar doble clic izquierdo al bloque add para


desplegar la ventana Function Block Parameters:
Add

En Iconshape se puede elegir entre forma


rectangular o circular, en este caso, lo dejamos en
rectangular.
Como queremos que se sumen ocho seales, se
debe de editar el campo con el nombre de list of
signs:, en donde cada signo de suma, es una
terminal de entrada. Por default, el bloque contiene
solo dos signos de suma, que indican dos terminales
de entrada, y en este ejemplo, se necesitan 8
entradas, por lo cual es necesario que en este
campo se tengan 8 signos de suma.
-Configuracin de Zero-OrderHold

Para que la seal de salida de el bloque add , que


es una seal de tiempo continuo, se convierta a una
seal de tiempo discreto, es necesario agregar este
bloque, que su funcin es hacer un muestreo
definido por el usuario. En este ejemplo se har una
muestra cada milisegundo (1/1000).

-Configuracin del bloque buffer


El bloque buffer no es necesario editarlo, puesto que
es un apoyo al bloque Zero-OrderHold.

-Configuracin del bloque Magnitude FFT


Hacer doble clic en el bloque, para desplegar la
ventana Function Block Parameters: Magnitude
FFT, y configurarlo de igual manera que en la
siguiente imagen.

-Configuracin del bloque Vector Scope


Hacer doble clic izquierdo en el bloque para
desplegar la ventana Sink Block Parameters: Vector
Scope
Y cambiar el dominio de entrada (Imputdomain) a
Frecuencia (Frequency).

-Ejecucin de la simulacin
-En la hoja de modelo, elegir men
Simulation>>Start para arrancar la simulacin.
-Automticamente va a aparecer la ventana de el
espectro generado del bloque Vector Scope, al
momento se va a ver una lnea sin sentido, por eso,
le tenemos que dar clic derecho, y seleccionar

Autoscale, y va a aparecer una grfica como la de


la imagen a continuacin:

-Despus se procede a dar doble clic sobre el bloque


Scope para exhibir la grfica de la seal cuadrada
limitada en banda. Debe verse como se ilustra a
continuacin:

Podemos observar que, tanto la simulacin y el


clculo a travs del cdigo de Matlab y del primer
diagrama de bloques, y los clculos analticos y el
diagrama de bloques de la suma de los armnicos,
el resultado es el mismo, con el cual comprobamos
la efectividad de las series de Fourier sobre el tren
de pulsos cuadrados.

9.- Clculos de voltajes y potencias.


-Voltaje en los primeros cuatro armnicos.

V RMS = 0+(

20 2
20 2
20 2
) +(
) +(
)
3 2
5 2
2

V RMS =4.8723 volts

-Voltaje total Vrms de la forma de onda.


0.5

0.5

5 2 dt + 52 dt= 12.5+12.5=5 V
0.5

Porcentaje Cubierto en los 4 primeros armnicos =


4.8723100
=97.44
5

-Potencia en componente de DC y en los primeros


cuatro armnicos con una resistencia de 50
PDC =0
P AC =

V 2P
2 RL

R L=50
VP
2
P AC =
RL

( )

P1=405 mW
P2=45 mW
P3=16.2 mW
P4 =8.27 mW

-Comparacin de potencias
2

PTotal =

( V RMS )

5V2
=0.5 W
RL
50
474.47 W
=

n=DC , 1,3,5,7

Porcentaje de potencia en los primeros 4 armnic os=

474.47 mW100
=94.89
500 nW

-Cdigo en Matlab y grfica de potencia en Watts

f=[0,1,2,3,4,5,6,7,8]; % nmero de armnicos


senoidales
P=[0,405,0,45,0,16.2,0,8.27,0]; % potencia en Watts
de cada uno de los armnicos
stem(f,P,'linewidth',3), % grfico de los datos
xlabel('f(kHz'), % nombre de el eje x que es el de las
frecuencias en kHz
ylabel('p(mW)'),grid% nombre del eje y que es el de
la potencia en mW

-Modelado de imagen de analizador de espectro en


potencia de dBm
PDC =0
P1=405 mW =10 log

( 4051 mWmW )=26.07 dBm

P1=45 mW =10 log

mW
( 451 mW
)=16.53 dBm

P1=16.2 mW =10 log

( 16.21 mWmW )=12.09 dBm

P1=8.27 mW =10 log

( 8.271 mWmW )=9.175 dBm

-Cdigo Matlab y grfica


f=[0,1,2,3,4,5,6,7,8]; % nmero de armnicos
senoidales
P=[0,26.7,0,16.53,0,12.09,0,9.175,0]; % potencia
en dBm de cada uno de los armnicos
stem(f,P,'linewidth',3), % grfico de los datos
xlabel('f(kHz)'), % nombre de el eje x que es el de
las frecuencias en kHz
ylabel('p(dBm)'),grid% nombre del eje y que es el de
la potencia en mW

Bibliografa

www.mathworks.com/.../simulink/
http://bloglabcom1.files.wordpress.com/2010/04/analisis_espectral.pdf
http://webdiee.cem.itesm.mx/web/servicios/archivo/trabajos/comunicaciones
/filtros/matlab.html
Aplicaciones en la ingeniera de las seales y sistemas lineales usando
Matlab Ruiz barajas, Juan Gustavo, Castillas Limn, Mara Guadalupe.

Vous aimerez peut-être aussi