8.
CAPITULO -III: DISEÑO Y RESULTADOS DEL
EXPERIMENTO COMPARATIVO ENTRE LAS TECNICAS DE MODULACION DIGITAL
8.1
FASE DE DISEÑO
En esta parte del diseño, tomaremos la primera parte de los simuladores,
la herramienta Matlab, donde realizaremos la simulación de las modulaciones
primarias, es decir, ASK, FSK y PSK. Para esto haremos referencia a lo que se
mencionó anteriormente del estudio implícito de los comandos de programación de
Matlab y los aplicaremos haciendo una referencia en cada línea de programación
que se haya usado.
8.1.1
PROCEDIMIENTO
Primero que todo se genera un archivo .m, donde se escriben todas las
líneas de código involucradas en la simulación. Este procedimiento es
repetitivo para las tres simulaciones; a continuación veremos el procedimiento
hecho para generar la modulación ASK.
8.2
SIMULACION MODULACION
ASK
Como se dijo anteriormente, las líneas de código las iremos mencionando
para dejar clara la operación de cada una en el programa.
1.2.1
PROGRAMA MODULACION ASK EN MATLAB
function ASK(g,f)%funcion
ASK([secuencia de entrada],frecuencia)
% MODULACION
%EJEMPLO PARA INGRESAR
DATOS
%PSK([110000111],2);
if nargin > 2
error('muy extenso');
elseif nargin==1
f=1;
end
if f<1
error('frecuencia
tiene que ser mayor que 1');
end
t=0:2*pi/99:2*pi;%tiempo
cp=[]; sp=[];
mod=[]; mod1=[]; bit=[];
for n=1:length(g)%recorrer
la secuencia de entrada para generar modulacion
if g(n)==0
die=ones(1,100);
se=zeros(1,100);
else g(n)==1
die=2*ones(1,100);%amplitud
1 para un uno de la secuencia de entrada
se=ones(1,100);%amplitud
2 para un cero de la secuencia de entrada
end
c=sin(f*t);% generar señal modulada en
ASK
cp=[cp
die];
mod=[mod c];
bit=[bit se];
end
ask=cp.*mod;%producto
punto de vectores en cp donde esta los ceros y unos y la modulacion
subplot(2,1,1);plot(bit, 'LineWidth', 1.5);grid on;%graficar
secuencia de entrada
title('Señal
binaria');
axis([0 100*length(g) -2.5 2.5]);
subplot(2,1,2);plot(ask, 'LineWidth', 1.5);grid on;%graficar
señal modulada en ASK
title('Modulacion ASK');
axis([0 100*length(g) -2.5 2.5]);
end
Como nos podemos dar cuenta, en el programa para hacer un comentario es
necesario poner el símbolo de porcentaje, los comentarios son las definiciones
que hace cada línea de programación pero no afectan en nada al programa que
hace la modulación.
8.2.2
GRAFICA MODULACION ASK EN MATLAB
En la siguiente gráfica podremos apreciar la modulación ASK, en la parte
de arriba vemos la secuencia de bits que entra al modulador, y en la parte de
abajo vemos la señal modulada.
8.3 SIMULACION MODULACION
FSK
En esta parte veremos una modificación en la frecuencia,
es decir, para cero toma un valor f1 y para 1 toma un valor f2.
8.3.1
PROGRAMA MODULACION FSK EN
MATLAB
function FSK(g,f0,f1)%funcion
ASK([secuencia de entrada],frecuencia1,frecuencia2)
% MODULACION
%EJEMPLO PARA INGRESAR
DATOS
%PSK([110000111],2);
if nargin > 3
error('muy extenso');
elseif nargin==1
f0=1;
f1=2;
elseif nargin==2
f1=2;
end
val0 = ceil(f0)-(f0);
val1 = ceil(f1)-(f1);
if val0 ~=0 || val1 ~=0
error('Frecuencia
debe ser entero');
end
if f0<1 || f1 <1
error('frecuencia tiene que ser mayor que 1');
end
t=0:2*pi/99:2*pi;%tiempo de
la señal modulada
cp=[]; sp=[];
mod=[]; mod1=[]; bit=[];
for n=1:length(g)%recorrer
el vector de la secuencia de entrada
if g(n)==0
die=ones(1,100);
c=sin(f0*t);%señal con
frecuencia1
se=zeros(1,100);
else g(n)==1
die=ones(1,100);
c=sin(f1*t);%señal con
frecuencia2
se=ones(1,100);
end
cp=[cp die];
mod=[mod c];
bit=[bit se];
end
fsk=cp.*mod;
subplot(2,1,1);plot(bit, 'LineWidth', 1.5);grid on;%grafica
secuencia de entrada
title('Señal binaria');
axis([0 100*length(g) -2.5 2.5]);
subplot(2,1,2);plot(fsk, 'LineWidth', 1.5);grid on;%grafica
señal modulacion FSK
title('Modulacion FSK');
axis([0 100*length(g) -2.5 2.5]);
end
8.3.2
GRAFICA MODULACION FSK
EN MATLAB
En
la gráfica podemos ver en la primera parte la secuencia de entrada, y en la
parte de abajo, la señal modulada en FSK, cabe recordar que el valor de las
frecuencias f1 y f2 son ingresadas por el usuario al igual que la secuencia de
bits de entrada, como se menciona en el programa, son parámetros de la función
llamada FSK.
8.4
SIMULACION MODULACION
PSK
La
última de las modulaciones primarias es la PSK, la cual mostraremos a
continuación su programa y respectiva gráfica en Matlab.
8.4.1
PROGRAMA MODULACION PSK EN
MATLAB
function PSK(g,f)%funcion
PSK con parametros([secuencia de bits],frecuencia para modular)
% MODULACION
if nargin > 2
error('muy extenso');
elseif nargin==1
f=1;
end
if f<1
error('frecuencia
tiene que ser mayor que 1');
end
t=0:2*pi/99:2*pi;% tiempo de
la modulacion
cp=[]; sp=[];
mod=[]; mod1=[]; bit=[];
for n=1:length(g)%recorre
la secuencia de entrada
if g(n)==0
die=(-ones(1,100));%cambio de
fase
se=zeros(1,100);
else g(n)==1
die=ones(1,100);%cambio de
fase
se=zeros(1,100);
end
c=sin(f*t);%señal para modular
cp=[cp
die];
mod=[mod c];
bit=[bit se];
end
bpsk=cp.*mod;%producto
punto entre vectores
subplot(2,1,1);plot(cp, 'LineWidth', 1.5);grid on;%grafica
de la secuencia de entrada
title('Señal binaria');
axis([0 100*length(g) -2.5 2.5]);
subplot(2,1,2);plot(bpsk, 'LineWidth', 1.5);grid on;%grafica
de la señal modulada PSK
title('Modulacion PSK');
axis([0 100*length(g) -2.5 2.5]);
end
8.4.2
GRAFICA DE MODULACION
PSK EN MATLAB
En
esta gráfica al igual que las anteriores podemos ver en primer lugar la
secuencia de bits que entra al modulador, y en la parte de abajo vemos la señal
modulada FSK; es fácil evidenciar en esta gráfica el cambio de polaridad o de
fase de la gráfica dependiendo de la secuencia de bits entrante.
8.5
DISEÑO MODULADOR QAM
Después
de haber visto las técnicas de modulación primarias, nos damos fácilmente cuenta
por medio de las gráficas que aunque son moduladores digitales, no darían
abasto en caso de tener que modular señales de video o datos, para lo cual
posterior a la modulación QPSK que es una modulación con 4 símbolos, es decir,
según la formula que vimos anteriormente, maneja dos bits por símbolo; tampoco
fue suficiente para la modulación de video y datos y surge la modulación M-QAM,
donde M simboliza la cantidad de símbolos que interfieren en la modulación. En
nuestro caso es un 16-QAM, es decir, que intervienen 16 símbolos en la
modulación, y cada símbolo maneja información de 4 bits.
Este
modulador fue diseñado en la segunda herramienta a la cual se hizo mención en
el segundo capitulo, en Picc, este fue menos inmediato que Matlab, en que
sentido, en que las gráficas de Matlab se muestran con solo llamar la función
como se llamo la modulación, en el caso de QAM, se programa en Picc y el
programa se quema en un microcontrolador por medio de la herramienta Pickit2
contenida en quemador de Pics. Luego de programar el microcontrolador, era
necesario diseñar un circuito acondicionador el cual complementara lo hecho en
el programa del micro que básicamente era la modulación QAM por medio de la
señal de entrada con el conversor análogo/digital y luego, esa señal digital
vuelve y pasa por el circuito acondicionador para finalmente visualizar la
modulación QAM en un osciloscopio. A continuación mostraremos paso a paso la
construcción del modulador QAM.
8.5.1
ELEMENTOS INVOLUCRADOS
8.5.1.1
MICROCONTROLADOR
El
microcontrolador es un dispositivo mejor conocido como PIC, es un elemento
programable y es capaz de generar múltiples soluciones de electrónica y
comunicaciones. Hay de mucha variedad, pero en nuestro caso usamos un PIC de
referencia 16f877a con un diagrama de pines que podemos ver a continuación en
la Figura12.
Como
podemos ver en la Figura12, el conversor análogo digital se encuentra en el pin
2, también conocido como RA0 ya que hace parte del puerto A. el
microcontrolador tiene 4 puertos, del A al D, cada uno contando entre 4 y 8
pines por puerto. Para nuestro diseño, usamos el puerto B como salida de los
datos digitales, conversión realizada por el puerto A0.
1.5.1.2
ARREGLO R2R
En
la Figura13 podemos ver el arreglo de resistencias de manera que trabajan como
un conversor digital análogo, es conocido R2R por que se toman valores de
resistencias y del doble de ese valor para hacer el montaje como se ve en la
figura.
1.5.1.3
CIRCUITO ACONDICIONADOR
El
circuito acondicionador está formado por un arreglo de resistencias conocido
como el R2R o el conversor digital análogo, para poder mostrar la señal QAM en
el osciloscopio.
1.5.2
SEGUIMIENTO FOTOGRAFICO
A
continuación veremos una serie de fotos de la construcción del circuito
acondicionador.
Foto1
Como nos podemos dar cuenta en las fotografías, en la
Foto1 esta el montaje del microcontrolador, en la Foto2, se está haciendo el
montaje del arreglo R2R, y en la Foto3 se está haciendo el cableado entre el
puerto B del microcontrolador y el arreglo R2R para presentar a continuación el
circuito final de la investigación.
1.5.2.1
CIRCUITO FINAL MODULADOR QAM
En la imagen 14 podemos ver el circuito final con el
microcontrolador instalado, la salida del puerto B conectadas al arreglo R2R
que se diseñó con valores de resistencias de 10 KΩ y 20 KΩ, podemos ver una
placa metálica conectada en el microcontrolador, es el oscilador, o reloj, el
cual va hacer funcionar de manera
adecuada el micro, en este caso es de 20 MHz, finalmente está instalado un
potenciómetro o resistencia variable, el cual me va a generar cambios de
amplitud de una señal entrante por el pin RA0 que es el conversor análogo
digital y a partir de la cual se empieza a construir la señal modulada QAM.
1.5.3
PROGRAMA EN PICC DEL
MODULADOR QAM
#include
<16F877A.h>
#device adc=8
#use
delay(clock=20000000)
#fuses HS,NOWDT,NOPUT
#include
<math.h>
#BYTE TRISB=0x86
#BYTE PORTB=0x06
void main()
{
int a;
float32 se,fi,l;
unsigned char vec[20];
int8 x,d,t,b,q;
float amp;
TRISB=0x00;
PORTB=0xFF;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);%%CONVERSOR
ANALOGO DIGITAL
for(;;)
{
set_adc_channel(0);
delay_us(20);
q=read_adc();
a=0;
for(a=0;a<=7;a=a+2)
{
if(vec[a]==0x45)
{
if(vec[a+1]==0x45)
{
if(x==1)
{
amp=1;
l=3.1416;
d=1;
x=0;
}
if(x==0)
{
amp=1;
l=3.1416;
d=0;
x=1;
}
}
else
{
if(vec[a+1]==0x45)
{
if(x==1)
{
amp=0.5;
l=3.141592654;
d=1;
x=0;
}
if(x==0)
{
amp=0.5;
l=3.1416;
d=0;
x=1;
}
}
}
}
else
{
if(vec[a]==0x46)
{
if(vec[a+1]==0x46)
{
if(x==1)
{
amp=0.5;
l=0;
d=1;
x=0;
}
if(x==0)
{
amp=0.5;
l=0;
d=0;
x=1;
}
}
else
{
if(vec[a+1]==0x45)
{
if(x==1)
{
amp=1;
l=0;
d=1;
x=0;
}
if(x==0)
{
amp=1;
l=0;
d=0;
x=1;
}
}
}
}
}
if(d==1)
{
t=1;
while(t!=360)
{
se=cos(fi);
se*=amp;
se+=1;
b=se/195312;
PORTB=b;
t++;
fi=(t*3.1416)/180;%%GENERACION SEN Y COS MOD. QAM
fi+=l;
fi-=1.5707;
}
t=1;
PORTB=64;
}
else
{
t=1;
while(t!=360)
{
se=sin(fi);
se*=amp;
se+=1;
b=se/195312;
PORTB=b;
t++;
fi=(t*3.1416)/180;%%GENERACION SENOS Y COS MOD. QAM
fi+=l;
}
t=1;
PORTB=64;
}
}
}
}
En el programa nos podemos dar cuenta, se está dando la
generación de los senos y cosenos que son los datos que componen la señal QAM,
por medio de los comentarios es fácil ubicar dichos procesos, ahora, veremos
unas fotos tomadas al osciloscopio donde se muestra la señal modulada QAM.
1.5.3.1
GRAFICA MODULADOR QAM
En las tres fotografías anteriores podemos ver la
modulación QAM, y aunque a simple vista no es evidente, cuando se verifica
detalladamente nos damos cuenta que una curva contiene cerca de 4 bits, lo que
lo hace un 16 QAM, cuando hablo de cerca, me estoy refiriendo a que se puede
generar problemas debido a la tolerancia de los equipos utilizados en el
montaje, hay que recordar que no son elementos ideales y que tienen algunas
pérdidas que se evidencian en la modulación.
Este comentario ha sido eliminado por el autor.
ResponderEliminardisculpe pero me sale este error..... en matlab 2012
ResponderEliminar>> ASK
Error using ASK (line 10)
Not enough input arguments.
me podrian ayudar
Posiblemente ya lo resolviste en su tiempo, pero ahí te dice claro que no tiene parámetros de entrada la funcion ASK, lo que debes hacer es simplemente definir un vector g=[ 1 0 0 1 1 1 0] (los valores que se te antojen como datos binarios de entrada)
Eliminary la f = 2.
Muy buenas excelente blog, pero no puedo ver las imagenes las podrias cargar de nuevo??
ResponderEliminar