Upload
miguelduff
View
40
Download
1
Embed Size (px)
Citation preview
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.
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
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.
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
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.
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.
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
Sistemas de Comunicaciones I
Tarea # 5 “Modulación FM utilizando Matlab”
Desviación de Fase con valor de 0.05
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
Sistemas de Comunicaciones I
Tarea # 5 “Modulación FM utilizando Matlab”
Desviación de Fase con valor de 0.1
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;
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);
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;
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;
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;
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;
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]);
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)');
Sistemas de Comunicaciones I
Tarea # 5 “Modulación FM utilizando Matlab”
legend('Señal Recuperada');
grid on;