Modulacion Fm Utilizando Matlab

19
UNIVERSIDAD DE EL SALVADOR FACULTAD DE INGENIERIA Y ARQUITECTURA ESCUELA DE INGENIERIA ELECTRICA SISTEMAS DE COMUNICACIONES I CICLO II - 2011 TAREA #5 MODULACION FM UTILIZANDO MATLAB” CATEDRATICO: Ing. Werner Meléndez ALUMNOS: Fuentes Quintanilla, Tony Edwin FQ01002 CIUDAD UNIVERSITARIA, Martes 20 de diciembre del 2011.

Transcript of Modulacion Fm Utilizando Matlab

Page 1: Modulacion Fm Utilizando Matlab

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERIA Y ARQUITECTURA

ESCUELA DE INGENIERIA ELECTRICA

SISTEMAS DE COMUNICACIONES I

CICLO II - 2011

TAREA #5

“MODULACION FM UTILIZANDO MATLAB”

CATEDRATICO:

Ing. Werner Meléndez

ALUMNOS:

Fuentes Quintanilla, Tony Edwin FQ01002

CIUDAD UNIVERSITARIA, Martes 20 de diciembre del 2011.

Page 2: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

TEMA:

Modulación FM utilizando Matlab

La modulación FM utilizando matlab se da cuando se escriben programas que permitan

visualizar de manera clara la forma de comportamiento de una señal que será trasportada por

medio de una señal portadora variando el ángulo de desfase de esta última, recordemos que

existen tres tipos de modulación analogía, la modulación AM, la modulación PM y la

modulación FM.

La modulación FM básicamente consiste en variar el ángulo de fase de la portadora con

un valor correspondiente a la razón de cambio del mensaje. Dicho cambio proporciona una

alteración en la fase de la portadora. Una cantidad importante es el índice de modulación de

fase o desviación de fase que es análoga al índice de modulación en las modulaciones AM

comercial y representa la máximo desplazamiento de f(t) en relación con la frecuencia

portadora fc.

En la Figura 1 se muestra el entorno de trabajo para la modulación FM. Consta de

simples botones que al hacer click sobre cualquiera de ellos nos muestra las graficas

correspondientes a cualquier forma de onda; las cuales pueden ser, la señal original, la señal

portadora, la señal modulada, la señal demodulada y hacer una comparación entre la señal de

entrada y la señal de salida. Dichas formas de onda se muestran al pasar datos de entrada. La

amplitud de la señal mensaje y su frecuencia, la amplitud y frecuencia de la señal portadora y la

desviación de fase.

Figura 1: Entorno de Trabajo para modulación FM

Page 3: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

Funcionamiento:

Como primer argumento para la modulación FM se necesita un mensaje, el mensaje

puede ser cualquier señal, ya sea determinística o aleatoria. En este caso será una señal

determinística cosenoidal con frecuencia de interés para el caso de 100 Hz y amplitud unitaria;

como se indica en la figura 2.

Figura 2: señal mensaje con frecuencia de 100Hz.

Como se puede apreciar en la figura 2, al pasar dichos datos al entorno de trabajo,

mostrara la grafica en el dominio del tiempo y en el dominio de la frecuencia de la señal

mensaje. Estos datos se pueden variar al pasar nuevos argumentos a la entrada de datos de la

señal mensaje.

La señal portadora, debe de poseer una frecuencia mucho mayor que la señal mensaje,

en este caso se tendrá una portadora de 1000 Hz o 1 Khz. Que resultara en una señal como se ve

en la de la figura 3.

Figura 3: portadora con frecuencia de 1000Hz.

Page 4: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

A simple vista parece que ambas señales fueran iguales, pero si se observa con detalle

se aprecia que la frecuencia y el espectro cambian en una razón de 10, es decir, la portadora

tendrá una frecuencia 10 veces mayor.

Al modular ambas señales se obtendrán los resultados que se muestran en la figura 4.

Para este caso es necesario introducir el dato de la desviación de fase. Este parámetro es

importante porque se ve cuando el ancho de banda de una señal cambia desde banda angosta

hasta banda ancha. En señales de banda angosta la modulación se parece mucho a la modulación

de amplitud. Aquí, es interesante ver que el ancho de banda cambia al variar la desviación de

fase.

Figura 4: modulación con valor de cero en la desviación de fase.

Cuando la desviacion de fase es cero, no hay alteracion en la señal portadora y es igual a

la portadora original, figura 4.

La señal demodulada se ve en la figura 5, observamos que cuando la desviacion de fase

es cero, la señal no se parece en nada al mensaje original y lo que se tiene es ruido ya que su

amplitud es muy pequeña.

Figura 5. Señal recuperada con desviacion de fase de valor cero

Page 5: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

Al hacer una comparacion de la señal recuperada con el mensaje, se llega a la

comclusion que la amplitud de la señal recuperada es muy pequeña, Figura 6.

Figura 6. Comparacion entre la entrada con la salida

Al hacer una serie de pruebas se llega al valor de la desviacion de fase que mejor

recupera el mensaje figura 7.

Page 6: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

Figura 7. Valor optimo

Además, el ancho de banda varía a menudo que se incrementa la desviación de fase.

Graficas con Valores distintos de Desviación de fase

Desviación de Fase igual a 0.01.

Page 7: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

Desviación de Fase con valor de 0.02

Desviación de Fase con valor de 0.03

Page 8: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

Desviación de Fase con valor de 0.05

Page 9: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

Desviación de Fase con valor de 0.06

Desviación de Fase con valor de 0.07

Page 10: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

Desviación de Fase con valor de 0.1

Page 11: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

ANEXO.

CODIGO FUENTE

function varargout = FMM(varargin)

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @FMM_OpeningFcn, ...

'gui_OutputFcn', @FMM_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin & isstr(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

%==================================================================

function FMM_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);

global L_medio; %Mitad de la cantidad de muestras a recolectar

L_medio=1000;

global Nfft; %Cantidad de puntos para calcular la FFT

Nfft=2048;

global fm; %Frecuencia de muesreo según Nyquist

fm=80000; %Frecuencia de muesreo según Nyquist

global treq; %Tiempo requerido para recolectar L muestras

treq=2*L_medio/fm; %Tiempo requerido para recolectar L muestras

global fs;

fs=((2*L_medio-1)/treq); %División de tiempo para recolectar L muestras

global n; %Vector de muestras a recolectar

n=0:1/fs:treq;

global t1; %Vector en cantidad de muestras recolectadas

t1=0:length(n)-1;

%Vector de frecuencias para los espectros en frecuencia

global M;

M=Nfft/2;

faux(M+1:Nfft)=0:M-1; %Vector de frecuencias desordenado

faux(1:M)=-M:-1; %Vector de frecuencias ordenado

global f;

Page 12: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

f=fm*faux/(Nfft); %Vector de frecuencias normalizado

x=0;

axes(handles.axes1)

plot(n,x)

title('Dominio del tiempo');

xlabel('Tiempo [S]');

AXIS([0 0.006 -1 1])

set(handles.axes1,'XMinorTick','on')

grid on

axes(handles.axes2)

plot(f,x)

title('Domininio del la Frecuencia');

xlabel('Frecuencia [Hz]');

AXIS([0 2000 0 1])

set(handles.axes2,'XMinorTick','on')

grid on

%==================================================================

function varargout = FMM_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

%==================================================================

function am_CreateFcn(hObject, eventdata, handles)

if ispc

set(hObject,'BackgroundColor','white');

else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

%==================================================================

function am_Callback(hObject, eventdata, handles)

Val=get(hObject,'String');

NewVal = str2double(Val);

handles.am=NewVal;

guidata(hObject,handles);

%==================================================================

function fm_CreateFcn(hObject, eventdata, handles)

if ispc

set(hObject,'BackgroundColor','white');

else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

%==================================================================

function fm_Callback(hObject, eventdata, handles)

Val=get(hObject,'String');

NewVal = str2double(Val);

handles.fm=NewVal;

guidata(hObject,handles);

Page 13: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

%==================================================================

function ap_CreateFcn(hObject, eventdata, handles)

if ispc

set(hObject,'BackgroundColor','white');

else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

%==================================================================

function ap_Callback(hObject, eventdata, handles)

Val=get(hObject,'String');

NewVal = str2double(Val);

handles.ap=NewVal;

guidata(hObject,handles);

%==================================================================

function fp_CreateFcn(hObject, eventdata, handles)

if ispc

set(hObject,'BackgroundColor','white');

else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

%==================================================================

function fp_Callback(hObject, eventdata, handles)

Val=get(hObject,'String');

NewVal = str2double(Val);

handles.fp=NewVal;

guidata(hObject,handles);

%==================================================================

function im_CreateFcn(hObject, eventdata, handles)

if ispc

set(hObject,'BackgroundColor','white');

else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

%==================================================================

function im_Callback(hObject, eventdata, handles)

Val=get(hObject,'String');

NewVal = str2double(Val);

handles.im=NewVal;

guidata(hObject,handles);

%==================================================================

function psmensaje_Callback(hObject, eventdata, handles)

global L_medio;

global Nfft;

global fm;

global treq;

global fs;

Page 14: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

global n;

global t1;

global M;

global f;

A=handles.am;

F=handles.fm;

%Se genera la señal a modular

Am=A; %Amplitud de la señal a modular

wm=2*pi*F; %Frecuencia de la señal a modular

phi=0; %Fase de la señal a modular

mt=Am*cos(wm*n+phi); %Señal a modular

axes(handles.axes1)

plot(n,mt,'linewidth', 3, 'color', 'black')

title('Dominio del tiempo de la señal mensaje');

xlabel('Tiempo [S]');

ylabel('Amplitud m(t) ');

texto=strcat('mensaje de ', num2str(F), 'Hz');

legend(texto);

AXIS([0 2*(1/F) -A A]);

set(handles.axes1,'XMinorTick','on')

grid on

%**************************************************************************

Y1=fft(mt,Nfft); %FFT de Nfft puntos para la señal FM

Y1=fftshift(Y1); %Reordenamiento de los valores de la FFT

length(Y1);

norm1=max(abs(Y1)); %Para normalizar el espectro en magnitud

Yf1=unwrap(angle(Y1)); %Cálculo de las componentes de fase de la señal

axes(handles.axes2)

plot(f,abs(Y1)/norm1,'linewidth', 3, 'color', 'black');

legend('Espectro de m(t)');

title('Espectro continuo en magnitud de la señal mensaje');

xlabel('Frecuencia (Hz)');

ylabel('Magnitud normalizada |FFT|');

legend('Espectro Mensaje m(t)');

xlim([-8*F 8*F]);

grid on;

%==================================================================

function psportadora_Callback(hObject, eventdata, handles)

global L_medio;

global Nfft;

global fm;

global treq;

global fs;

global n;

Page 15: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

global t1;

global M;

global f;

A=handles.ap;

F=handles.fp;

Ac=A; %Amplitud de la señal portadora

wc=2*pi*F; %Frecuencia de la señal portadora

st=Ac*cos(wc*n); %Señal FM

axes(handles.axes1)

plot(n,st,'linewidth',3, 'color', 'black')

title('Dominio del tiempo de señal portadora');

xlabel('Tiempo [S]');

ylabel('Amplitud de c(t)');

texto=strcat('portadora de ', num2str(F), 'Hz');

legend(texto);

AXIS([0 2*(1/F) -A A])

set(handles.axes1,'XMinorTick','on')

grid on

%**************************************************************************

Y1=fft(st,Nfft); %FFT de Nfft puntos para la señal FM

Y1=fftshift(Y1); %Reordenamiento de los valores de la FFT

norm1=max(abs(Y1)); %Para normalizar el espectro en magnitud

Yf1=unwrap(angle(Y1)); %Cálculo de las componentes de fase de la señal

axes(handles.axes2)

plot(f,abs(Y1)/norm1, 'linewidth', 3, 'color', 'black');

title('Espectro continuo en magnitud de la señal portadora');

xlabel('Frecuencia (Hz)');

ylabel('Magnitud normalizada |FFT|');

legend('Espectro Portadora c(t)');

xlim([-8*F 8*F]);

grid on;

%**************************************************************************

function pssmodulada_Callback(hObject, eventdata, handles)

global L_medio;

global Nfft;

global fm;

global treq;

global fs;

global n;

global t1;

global M;

global f;

A=handles.am;

F=handles.fm;

inm=handles.im;

Page 16: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

A2=handles.ap;

F2=handles.fp;

Am=A; %Amplitud de la señal a modular

wm=2*pi*F; %Frecuencia de la señal a modular

phi=0; %Fase de la señal a modular

mt=Am*cos(wm*n+phi); %Señal a modular

%Parametros necesarios para la modulación FM

beta=inm; %Indice de modulación

kw=beta*wm/Am; %Desviación de frecuencia

phi=-pi/2; %Se desfasa la señal

mt1=Am*cos(wm*n+phi); %Se utiliza la señal original para generar el

desf=beta*mt1; %Desfase de la portadora

%Se genera la señal FM

Ac=A2; %Amplitud de la señal portadora

wc=2*pi*F2; %Frecuencia de la señal portadora

st=Ac*cos(wc*n+desf); %Señal FM

indk=beta;

gfm = modulate(mt,wc/(2*pi),fm,'fm',indk);

axes(handles.axes1)

plot(n,gfm,'linewidth', 3, 'color', 'black');

title('Señal FM resultante a partir de m(t)');

xlabel('Tiempo [S]');

ylabel('s(t)');

texto=strcat('señal modulada con beta = ', num2str(beta));

legend(texto );

grid on;

%¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿

Y1=fft(gfm,Nfft); %FFT de Nfft puntos para la señal FM

Y1=fftshift(Y1); %Reordenamiento de los valores de la FFT

norm1=max(abs(Y1)); %Para normalizar el espectro en magnitud

Yf1=unwrap(angle(Y1)); %Cálculo de las componentes de fase de la señal

axes(handles.axes2)

plot(f,abs(Y1)/norm1, 'linewidth', 3, 'color', 'black');

title('Espectro continuo en magnitud de la señal resultante FM');

xlabel('Frecuencia (Hz)');

ylabel('Magnitud normalizada |FFT|');

legend('Espectro FM');

xlim([-35*F 35*F]);

grid on;

function pssdmodulada_Callback(hObject, eventdata, handles)

global L_medio;

global Nfft;

global fm;

global treq;

global fs;

Page 17: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

global n;

global t1;

global M;

global f;

A=handles.am;

F=handles.fm;

inm=handles.im;

A2=handles.ap;

F2=handles.fp;

Am=A; %Amplitud de la señal a modular

wm=2*pi*F; %Frecuencia de la señal a modular

phi=0; %Fase de la señal a modular

mt=Am*cos(wm*n+phi); %Señal a modular

%Parametros necesarios para la modulación FM

beta=inm; %Indice de modulación

kw=beta*wm/Am; %Desviación de frecuencia

phi=-pi/2; %Se desfasa la señal

mt1=Am*cos(wm*n+phi); %Se utiliza la señal original para generar el

desf=beta*mt1; %Desfase de la portadora

%Se genera la señal FM

Ac=A2; %Amplitud de la señal portadora

wc=2*pi*F2; %Frecuencia de la señal portadora

st=Ac*cos(wc*n+desf); %Señal FM

indk=beta;

gfm = modulate(mt,wc/(2*pi),fm,'fm',indk);

rmt1=5*demod(gfm,wc/(2*pi),fm,'fm');

axes(handles.axes1)

plot(n,rmt1, 'linewidth', 3, 'color', 'black');

title('Señal FM generada a partir de m(t)');

xlabel('Tiempo[S]');

ylabel('s(t)');

legend('Señal Recuperada');

grid on;

%¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿

Y1=fft(rmt1,Nfft); %FFT de Nfft puntos para la señal FM

Y1=fftshift(Y1); %Reordenamiento de los valores de la FFT

norm1=max(abs(Y1)); %Para normalizar el espectro en magnitud

Yf1=unwrap(angle(Y1)); %Cálculo de las componentes de fase de la señal

axes(handles.axes2)

plot(f,abs(Y1)/norm1, 'linewidth', 3, 'color', 'black');

title('Espectro continuo en magnitud de la señal portadora');

xlabel('Frecuencia (Hz)');

ylabel('Magnitud normalizada |FFT|');

legend('Espectro de señal recuperada');

xlim([-35*F 35*F]);

Page 18: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

grid on;

function pushbutton5_Callback(hObject, eventdata, handles)

global L_medio;

global Nfft;

global fm;

global treq;

global fs;

global n;

global t1;

global M;

global f;

A=handles.am;

F=handles.fm;

inm=handles.im;

A2=handles.ap;

F2=handles.fp;

Am=A; %Amplitud de la señal a modular

wm=2*pi*F; %Frecuencia de la señal a modular

phi=0; %Fase de la señal a modular

mt=Am*cos(wm*n+phi); %Señal a modular

%Parametros necesarios para la modulación FM

beta=inm; %Indice de modulación

kw=beta*wm/Am; %Desviación de frecuencia

phi=-pi/2; %Se desfasa la señal

mt1=Am*cos(wm*n+phi); %Se utiliza la señal original para generar el

desf=beta*mt1; %Desfase de la portadora

%Se genera la señal FM

Ac=A2; %Amplitud de la señal portadora

wc=2*pi*F2; %Frecuencia de la señal portadora

st=Ac*cos(wc*n+desf); %Señal FM

indk=beta;

gfm = modulate(mt,wc/(2*pi),fm,'fm',indk);

rmt1=27*demod(gfm,wc/(2*pi),fm,'fm');

axes(handles.axes1)

plot(n,mt, 'linewidth', 3, 'color', 'black');

title('Señal Original vrs Señal demodulafa');

xlabel('Tiempo [S]');

ylabel('s(t)');

legend('Señal Original');

grid on;

axes(handles.axes2)

plot(n, rmt1, 'linewidth', 3, 'color', 'blue');

title('Señal FM generada a partir de m(t)');

xlabel('Tiempo[s]');

ylabel('s(t)');

Page 19: Modulacion Fm Utilizando Matlab

Sistemas de Comunicaciones I

Tarea # 5 “Modulación FM utilizando Matlab”

legend('Señal Recuperada');

grid on;