espectro mediante simulink 30-10-2012

Upload: dahanna79

Post on 15-Oct-2015

29 views

Category:

Documents


3 download

TRANSCRIPT

Licenciatura en Ingeniera en Comunicaciones y ElectrnicaSeales 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 GustavoProfesor

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.1Libreras.

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:

ContinuousDiscreteMathoperationsSinksSources

2.2Bloques

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 pasa-bajas 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 Processing Blockset/Transforms

Bloque Vector Scope: este bloque grafica la seal, en funcin de la frecuencia, la potencia o el periodo.

Ubicado en Signal Processing Blockset/Signal Processing Sink

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 delBlock 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

-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

Frecuencia de muestreo.

Resolucin de frecuencia.

-Paso 4: Calcular parmetros temporales.

Periodo de muestreo temporal.

Duracin del espacio muestral temporal.

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

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.

9000;

En tanto, se considerar el uso de 16384 muestras.

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

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 entertf(Num,Den)%damos enter

%Configuracin del filtro[Num,Den]=butter(3,2*pi*9000,'low','s');% 1) Frecuencia mxima contenida en el sistemafmax = 9000;% 2) Nmero de muestrasN=16384;% 3) Parmetros espectralesfss = 10 * fmax;df=fss/N;% 4) parmetros temporalestss=1/fss;T=N*tss;stopTime=T*(1-1/N);% 5) Dominio del tiempot=0:tss:T*(1-1/N);% damos enter

-Parmetros del simulador

Para cualquier simulacin digital hay tres parmetros temporales que deben especificarse:

StartTime: : Tiempo de arranque

SetpType : 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

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:

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, elcdigo 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 frecuenciaf=(-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 sealfigure(1)plot(t,signal)axis([ 0 0.003 -6 6]) % va desde cero, muestreando cada 3ms, con un lmite de amplitud de -6 a 6title('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 10title('Espectro')% dar enterAutomticamente 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:Al ser seal impar, no tiene cosenos, por lo que se puede concluir que:

A continuacin se proceder a calcular las amplitudes de los armnicos seno.

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 ScopeY 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.

-Voltaje total Vrms de la forma de onda.

Porcentaje Cubierto en los 4 primeros armnicos =

-Potencia en componente de DC y en los primeros cuatro armnicos con una resistencia de 50

-Comparacin de potencias

-Cdigo en Matlab y grfica de potencia en Watts

f=[0,1,2,3,4,5,6,7,8]; % nmero de armnicos senoidalesP=[0,405,0,45,0,16.2,0,8.27,0]; % potencia en Watts de cada uno de los armnicosstem(f,P,'linewidth',3), % grfico de los datosxlabel('f(kHz'), % nombre de el eje x que es el de las frecuencias en kHzylabel('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

-Cdigo Matlab y grfica

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

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