MODULACION FM UTILIZANDO MATLAB

26
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

Transcript of MODULACION FM UTILIZANDO MATLAB

Page 1: MODULACION FM UTILIZANDO MATLAB

UNIVERSIDAD DE EL SALVADORFACULTAD DE INGENIERIA Y ARQUITECTURA

ESCUELA DE INGENIERIA ELECTRICASISTEMAS 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

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

Tarea # 5 “Modulación FM utilizando Matlab”

Page 3: MODULACION 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.

Tarea # 5 “Modulación FM utilizando Matlab”

Page 4: MODULACION 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

Tarea # 5 “Modulación FM utilizando Matlab”

Page 5: MODULACION 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.

Tarea # 5 “Modulación FM utilizando Matlab”

Page 6: MODULACION 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.

Tarea # 5 “Modulación FM utilizando Matlab”

Page 7: MODULACION FM UTILIZANDO MATLAB

Desviación de Fase con valor de 0.02

Desviación de Fase con valor de 0.03

Tarea # 5 “Modulación FM utilizando Matlab”

Page 8: MODULACION FM UTILIZANDO MATLAB

Desviación de Fase con valor de 0.05

Tarea # 5 “Modulación FM utilizando Matlab”

Page 9: MODULACION FM UTILIZANDO MATLAB

Desviación de Fase con valor de 0.06

Desviación de Fase con valor de 0.07

Tarea # 5 “Modulación FM utilizando Matlab”

Page 10: MODULACION FM UTILIZANDO MATLAB

Desviación de Fase con valor de 0.1

Tarea # 5 “Modulación FM utilizando Matlab”

Page 11: MODULACION 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;

Tarea # 5 “Modulación FM utilizando Matlab”

Page 12: MODULACION 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);

%==================================================================Tarea # 5 “Modulación FM utilizando Matlab”

Page 13: MODULACION 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; global n;global t1;

Tarea # 5 “Modulación FM utilizando Matlab”

Page 14: MODULACION FM UTILIZANDO MATLAB

global M;global f;

A=handles.am;F=handles.fm;%Se genera la señal a modularAm=A; %Amplitud de la señal a modularwm=2*pi*F; %Frecuencia de la señal a modularphi=0; %Fase de la señal a modularmt=Am*cos(wm*n+phi); %Señal a modularaxes(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 FFTlength(Y1);norm1=max(abs(Y1)); %Para normalizar el espectro en magnitudYf1=unwrap(angle(Y1)); %Cálculo de las componentes de fase de la señalaxes(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;global t1;global M;global f;

Tarea # 5 “Modulación FM utilizando Matlab”

Page 15: MODULACION FM UTILIZANDO MATLAB

A=handles.ap;F=handles.fp;Ac=A; %Amplitud de la señal portadorawc=2*pi*F; %Frecuencia de la señal portadorast=Ac*cos(wc*n); %Señal FMaxes(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 FFTnorm1=max(abs(Y1)); %Para normalizar el espectro en magnitudYf1=unwrap(angle(Y1)); %Cálculo de las componentes de fase de la señalaxes(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;A2=handles.ap;F2=handles.fp;Am=A; %Amplitud de la señal a modularwm=2*pi*F; %Frecuencia de la señal a modular

Tarea # 5 “Modulación FM utilizando Matlab”

Page 16: MODULACION FM UTILIZANDO MATLAB

phi=0; %Fase de la señal a modularmt=Am*cos(wm*n+phi); %Señal a modular%Parametros necesarios para la modulación FMbeta=inm; %Indice de modulaciónkw=beta*wm/Am; %Desviación de frecuenciaphi=-pi/2; %Se desfasa la señalmt1=Am*cos(wm*n+phi); %Se utiliza la señal original para generar eldesf=beta*mt1; %Desfase de la portadora%Se genera la señal FMAc=A2; %Amplitud de la señal portadorawc=2*pi*F2; %Frecuencia de la señal portadorast=Ac*cos(wc*n+desf); %Señal FMindk=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 FFTnorm1=max(abs(Y1)); %Para normalizar el espectro en magnitudYf1=unwrap(angle(Y1)); %Cálculo de las componentes de fase de la señalaxes(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; global n;global t1;global M;global f;

Tarea # 5 “Modulación FM utilizando Matlab”

Page 17: MODULACION FM UTILIZANDO MATLAB

A=handles.am;F=handles.fm;inm=handles.im;A2=handles.ap;F2=handles.fp;Am=A; %Amplitud de la señal a modularwm=2*pi*F; %Frecuencia de la señal a modularphi=0; %Fase de la señal a modularmt=Am*cos(wm*n+phi); %Señal a modular%Parametros necesarios para la modulación FMbeta=inm; %Indice de modulaciónkw=beta*wm/Am; %Desviación de frecuenciaphi=-pi/2; %Se desfasa la señalmt1=Am*cos(wm*n+phi); %Se utiliza la señal original para generar eldesf=beta*mt1; %Desfase de la portadora%Se genera la señal FMAc=A2; %Amplitud de la señal portadorawc=2*pi*F2; %Frecuencia de la señal portadorast=Ac*cos(wc*n+desf); %Señal FMindk=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 FFTnorm1=max(abs(Y1)); %Para normalizar el espectro en magnitudYf1=unwrap(angle(Y1)); %Cálculo de las componentes de fase de la señalaxes(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]);grid on;

function pushbutton5_Callback(hObject, eventdata, handles)global L_medio;global Nfft; global fm;

Tarea # 5 “Modulación FM utilizando Matlab”

Page 18: MODULACION FM UTILIZANDO MATLAB

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 modularwm=2*pi*F; %Frecuencia de la señal a modularphi=0; %Fase de la señal a modularmt=Am*cos(wm*n+phi); %Señal a modular%Parametros necesarios para la modulación FMbeta=inm; %Indice de modulaciónkw=beta*wm/Am; %Desviación de frecuenciaphi=-pi/2; %Se desfasa la señalmt1=Am*cos(wm*n+phi); %Se utiliza la señal original para generar eldesf=beta*mt1; %Desfase de la portadora%Se genera la señal FMAc=A2; %Amplitud de la señal portadorawc=2*pi*F2; %Frecuencia de la señal portadorast=Ac*cos(wc*n+desf); %Señal FMindk=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)');legend('Señal Recuperada');grid on;

Tarea # 5 “Modulación FM utilizando Matlab”

Page 19: MODULACION FM UTILIZANDO MATLAB

Tarea # 5 “Modulación FM utilizando Matlab”