1 - TESIUAMI

Anuncio
UNIVERSIDAD AUTONOMA METROPOLITANA
UNIDAD IZTAPALAPA
DMSION DE CIENCIAS BASICAS E INGENIERIA
44ANALIzADOR
DE ESPECTROS / OSCILOSCOPIO DIGITAL
BASADO ENLA M.C.U. M68HCIIEWU"
REPORTE DE PROYECTO TERMINAL QUE PAR A OBTENER EL TITULO DE :
INGENIERO EN ELECTT ONICA (AREA DE CONCENTRACION EN
C ;MUNICACIONES)
ASESOR:ING. ALEJANDRO MARTINEZ.
MEXICO, D.F. JUNIO DE 1994.
INDICE ...............,...............................I
INTRODUCCION......................................
.4
CAPITULO 1
TEORIA
DE
SEÑALES
1.1 CLASIFICACION
1.2 SEÑALES DE
1.3 SEÑALES
DE
SEÑALES
....................
ENERGIAY SEÑALES
PERIODICASY SEÑALES
DE
10
POTENCIA
.....11
NO-PERIODICAS.
..14
1.4 SEÑALES MULTICANAL Y SEÑALES
15
MULTIDIMENSIONALES ...........................
1.5 SEÑALES ALEATORIAS
Y SEÑALES DETERMINISTICAS.17
1.6 SEÑALES
ANALOGICASY SEÑALES
DIGITALES
.......17
CAPITULO 2
INTRODUCCION
AL
ANALISIS
DE
FOURIER.
2.1 SERIES DE FOURIER.
...........................
2.2 LA SERIE DE FOURIER EN SU FORMA
1
20
TRIGONOMETRICA ...............................
2.3 LA SERIE
DE
FOURIER
EN
SU
EXPONENCIAL
..22
.............23
FOURIER
FOURIER .....
INVERSA
25
2.4
2.5
TRANSFORMADA
TRANSFORMADA
DISCRETA
DISCRETA
2.6
TRANSFORMADA
RAPIDA
2.7
TEOREMA
..........................
MUESTRE0
2.8
DE
DE
DE
FORMA
DE
21
FOURIER
...............26
30
RECUPERACION DE, UNA SEÑAL A PARTIR DE SUS
MUESTRAS .....................................
34
CAPITULO 3
TECNICAS DE CONVERSION DE SEÑALES
3.1
3.2
CONVERSION
DE
CONVERTIDOR
SEÑALES
........................
AL ................40
ANALOGICO-DIGIT
3.2.1
CONVERTIDOR
TIPO
3.2.2
CONVERTIDOR
DE
3.3
3.2.1
CONVERTIDOR
CONVERTIDOR
39
.................. 41
CONTADOR
APROXIMACIONES
....45
SUCESIVAS
................45
DIGITAL-ANALOGICO
D/A
TIPO
..............5 0
ESCALERA
CAPITULO 4
FUNCIONAMIENTO DEL SISTEMA
SISTEMA
.............. 53
4.1.1 COMPONENTES DE HARDWARE DEL SISTEMA
........55
4.1 DESCRIPCION GENERAL DEL
2
4.1.2
COMPONENTES
4.2
DESCRIPCION
4.3
MODO
4.4
DE
SOFTWARE
DEL
SISTEMA
........56
M68HCllEVBU
....57
GENERAL LA
DEMCU
OPERACION
............................
DE
FUNCIONAMIENTO
GENERAL
DE
58
ACUERDO
AL
DIAGRAMA.....................................
59
CAPITULO 5
DESCRIPCION DEL SOFTWARE
5.1 EL
PROGRAMA
5.2
EL
PROGRAMA
5.3
OTROS
PROGRAMA
62
........................
PR0YECT.C
63
PARA EL
PROGRAMAS
ANEXO 1 SOFTWARE
EL
CONVER.ASM
.......................
PARA
LA
SISTEMA
..............64
MCU
CONVER.ASM
...........................
ANEXO 2 SOFTWARE
PARA
LA
66
PC
PR0YECT.C
............................
63
BIBLIOGRAFIA ......................................
89
EL
PROGRAMA
3
INTRODUCCION
ParapoderinterpretardeformarApida
y
eficazlas
características mAs importantes de las seAales y los sistemas de
comunicaci6n, el ingenieroelectrhico debe conocer y utilizar la
T e o r f a Matemdtica de F o u r i e r ,
esto con el fin de que podamos
encontrar para una Sena1 dada en el Dominio del Tiempo, su SeAal
correspondiente en el Dominio de la Frecuencia.
Actualmente el uso de las computadoras ha permitido ampliar
el panorama de cdlculo para obtener la Transformada de F o u r i e r ,
utilizando como medio el algoritmo de la TRANSFORMADA DISCRETA DE
FOURIER
(
Transform
o DFT por sus siglas en
),
inglb de Discret Fourier
lamentablemente este proceso tiene la desventaja de
4
que se va volviendo cada vez
m&
lento a medida que el numero de
muestras crece. El problema mencionado, ha sido afortunadamente
superado gracias al algoritmo que en 1968 propusiera Turkey
y que
actualmente conocemos como TRANSFORMADA FXAPIDA DE FOURIER
( o FFT
por sus siglas en ingles de Fast Fourier Transform
).
Como la
referida FFT es s610 un algoritmo, no es muy necesario tener un
gran conocimiento de lo que la FFT significa, pero lo que si es
necesario comprender con claridad
para
poder
interpretar
mejor
lo que significa la
es
sus
DFT,
resultados.
Partiendo de esta premisa, el presente estudio se enfoca en
la utilizacibn deun algoritmo computacional eficiente, basado en
la herramienta FFT sin perder de vista las posibles soluciones de
la TDF.
El
PROYECTO consiste en capturar una
convertirla en una SeAal Digital
MCU
(
Analdgica
y
con el convertidor A/D de la
o
MicroControllerUnit
Seiral
UnidaddeMicroControl
)
MC68HCllEVBU,
posteriormente
la
informacion
digitalizada
se
guarda en unaRAM de 8 KB de la misma Tarjeta de Microcontrol.La
5
informacibn almacenada posteriormente es enviada vía el
S e r i a l hacia la
Puerto
PC en donde ser6 recibida por un programa de
despues para
captura de datos para ser graficada en tiempoy real
ser procesada utilizando el algoritmo de la Transformada Riipida
de Fourier FFT, que pasa una sefial en el Dominio del Tiempo al
Dominio de la Frecuencia, obteniendo diversas griificas, tales
como :
Griifica de Parte Real
e Imaginaria.
Gr6fica
de
Magnitud
y Fase.
Grdfica de Potencia.
Para establecer la solucion m6s viable al problema que hemos
planteado consideremoslos s'iguiente puntos:
6
Se consider6 necesaria una herramienta para el Muestre0
codificaci6n de las sefiales anal6gicas externas,
y
convirtihdolas
en sefiales digitales que pudieran ser procesadas por el programa
implementado
en
la
computadora.
La facilidad de programacibn, de manejo,
y en general de
explotaci6n de los recursos de la MCU, aunado
a su relativamente
bajo costo, nos determin6 que es muy adecuada su utilizaci6n para
el fin detallado en el punto anterior.
Se determin6 la necesidad de que
la programacibn fuese
llevada a cabo en un lenguaje de considerado de nivel intermedio
(
Lenguaje C
),
debido a que permite un muestreo más continuo.
por su facilidad en el manejo de las comunicaciones entre
PC la
y
la Tarjeta, favorecido por la mayor rapidez de procesamiento de
sus brdenes internas
y de los datos.
El desarrollo del programa de c6mputo debe basarse en el
algoritmo definido por el análisis matemático de la FFT y debe
procesar los datos obtenidos del muestreo, graficar todos
los
componentes de la Transformada Discreta de Fourier en pantalla,
7
adem6s de imprimir esos resultados
y considerar la posibilidad de
guardarlos
en
medios
mag-nkticos
para
su
posterior
utilizacih.
Para poder manejar el equipo
electrhico que requerimos
utilizar
en
este
proyecto
es
necesario
contar
con
los
conocimientosindispensables,enelusode
los
diferentes
elementos que componen el sistema.Dichos elementos son:
HARDWARE
Una
PC
Una
MCU
con
procesador
80286
en
adelante.
MC68HCllEVBU.
Una Fuente de Poder 5de
Voltios.
Un
Protocolo
de
Comunicación
RS-232.
Un C.I. 74HC:373 (Latch)
Un C.I. 74HC138 (Decodificador de3 a 8)
Un C.I. 6264 (Memoria de8 Kbytes)
Un C.I. M741 (Amplificador operacional)
Un Potenciometro de 180
ohm
Un
push
button.
8
SOETWARE
Sistema operativo.
Los siguientes archivos:
CONNECT.EXE.
. .
ATT BGI
CGA.BG1.
EGAVGA.BG1.
. .
HERC BGI
IBM8514.BGI.
PC3270.BGI.
PR0YECT.C.
PROYECT.EXE.
CONVER.I S M .
En este trabajo dedicaremos apartados independientes para
hacer la descripci6n a detalle delos elementos de Hardware y de
Software
que
hemos
mencionado.
9
CAPITULO 1
TEORIA
DE
SERALES
1.1 CLASIFICACION DE
SERALES
Los mktodos que vamos a utilizar en el procesamiento de
a una
una seiral o en el analisis de la respuesta de un sistema
seiral dependen fuertemente de los atributos característicos de
la seiral específica. Existen tkcnicas de procesamiento para
.
cada conjunto particular de seiíales
En consecuencia, al i.niciar una investigación relacionada
con el Procesamiento Digital de Seiíales, es conveniente hacer
y apuntar a qu6 tipo de
una clasificación de las seirales
seflalesseva
a enfocarnuestrainvestigación.
tenemos que las sefiales de acuerdo
pueden
clasificar
como:
10
Así
pues,
a sus características se
1.- Sefiales de Energia
y Sefiales de Potencia.
2.- SeAales
Peri6dicasy sefiales No-Peribdicas.
3.- SeAales
Multicanal.
y SeAales
4.-
Multidimensionales.
Sefiales Aleatoriasy Sefiales Deterministicas.
5.- Sefiales Anal6gicasy SeAales
Digitales.
a explicar cada
En los siguientes apartados nos dedicamos
una de estas clasificaciones.
1.2 SERALES DE ENERGIA
Y SERALES DE POTENCIA.
Una sefial de energía es una seAal en forma de pulso que
o en
normalmente existe durante un intervalo finito de tiempo,
el caso de que se presente por un lapso infinito tiene al
menos,
lamayorpartede
su
intervalo finito de tiempo.
11
energíaconcentradaenun
Para los sistemas elktricos, una sefial es un voltaje
o
una corriente. La potencia instantdnea disipada por un voltaje
e(t) en una resistencia
R es :
1.2.1
y por una corrientei (t) es :
p = ) i (t)
1 2 * ~
1.2.2
En cada caso, la potencia instantdnea es proporcional
a la
magnitud de la sefial al cuadrado. Para una resistencia de 1.0
ohm, estas ecuaciones toman la misma forma, por
usual, en el andlisis de sefiales, referirse
lo que es
a la potencia
instantanea asociada con una sefial dada f(t) como:
p
=
I
fwatts
(t)
Aunque
la
ecuaci6n
1.2.3
1.1.3
parezca
dimensionalmente
o divisi6n
incorrecta, la convenci6n implica la multiplicaci6n
por una resistencia adecuada.
De acuerdo con esta convenci6n,
la energía disipada por la
sefial durante un intervalo de tiempo
(tl,t2) es :
12
a
E =
J
I
f(t)
l2
dtjoules1.2.4
tl
Se define como una seilal de energía aquella para la cual
la ecuaci6n 1.1.4 es finita, aún cuando el intervalo de tiempo
sea infinito, esto es, cuando
:
En la figura
l. 1 se muestran varios ejemplos de seilales
de energía. La potencia media disipada por la seilal
f (t)
durante el intervalo de tiempo (tl, t2): es
1.2.6
13
Si el intervalo de la derecha de la ecuacih se mantiene
finito pero no cero, la sefial f (t) tiene potencia media finita
y se
llamasefial de potencia.
M
o
-r
FIGURA 1 . 1 EJEMPLOS DE SE-ES
DE POTENCIA
1.3 SERALES PERIODICAS Y NO-PERIODICAS.
14
Una seiíal periódica es la que se repite exactamentea
sí
misma despub de un lapso fijo. Por lo tanto la sena1 f (t) es
periódica si existe un número
T tal que :
f (t+T) =
f (t)paracualquier
t
1.3.1
Donde T es un número positivo al que se le denomina
periodo de la
seiial y que define la duración de un ciclo
.
completo de f (t) Una seAa:l periódica es una seflal de potencia
si su energia por ciclo es finita,
y en tal caso, la potencia
media s610 necesita
calcularse
en
un ciclo completo.
Cualquier seiíal para la queno pueda encontrase un valor
de T para que pueda cumplirse con la ecuación1.3.1
,
se dice
que esta seiial es no-periódica
o aperiódica.
1.4 SERALES MULTICANAL Y MULTIDIMENSIONALES
Una seiíal estd descrita por una función de una
o mds
variables independientes. Los valores de la función puede ser
una cantidad escalar de valor real, una cantidad de valor
:
complejo o quizds un vector. Por ejemplo la sefial
15
sl (t)
=
A sen 38t
1.4.1
es unasefial de valor real. Sin embargo, la sefial
:
s2 (t) = A exp (j39t) = A cos (3¶t) + jA sen (38t)
1.4.2
tiene
un
valor
complejo.
En algunas aplicaciones las Sefiales son generadas por
múltiplesfuentes
se
o múltiplessensores.Talessefiales,
pueden
representar
forma
en vectorial.
Por
ejemplo,
considerando un dispositivo como el
M68HCllEVBU que cuenta con
un convertidorAnalbgico/Digitaldeochocanalespodemos
considerar que el contenido de todos
los canales en un memento
dado
puede
ser
representada
mediante
S (t) =
16
un
vector
como
sigue:
Donde el vector de sefiales puede ser definido como
una
sefial multicanal.
1.5
SERALES
ALEATORIASY SERALES DETERMINISTICAS
Una sefial aleatoria es aquella en la que existe un cierto
grado de incertidumbre antes de que se presente, es decir,
los
valores futuros de la sefial pueden no ser predecibles aún
despu6s de la observaci6n de valores anteriores.
Para
el
caso
de
las
sefiales
determinísticas
son
predecibles en base
a la ohservaci6n de valores anteriores. Por
lo que
1.6
podemos representarlas mediante modelos matemiiticos.
SERALES ANALOGICAS Y SE~~ALES
DIGITALES.
Las sefiales. se pueden clasificar en cuatro diferentes
categorias dependiendo de las características de la variable
17
independiente (tiempo) y los valores que pueda tomar la varible
dependiente,a saber estas cuatro categorias :son
1
.-
Las sefiales continuas en el tiempo
y continuas en la
varible dependiente o Sefíalee Anal6gicae que estan definidas en
cada valor de tiempo y toman valores en el intervalo continuo
(a,b) dondea puede ser - m y b puede ser +m
. Matdticamente,
estas sefiales se pueden describir por funciones de una variable
continua. Las formas de onda de una sefial de y
vozlas seAales
sinusoidales son ejemplos de sefiales analbgicas.
2
.-
Las sefiales discretas en
el tiempo que estan definidas
solamente para valores muy especificos en el eje de la variable
. Estos
independiente (tiempo)
instantes de tiempo pueden o no
ser equidistentes aunque en la practica se acostumbra tenerlos
igualmenteespaciadosporconvenienciasmatematicas
y
de
calculo.
La sena1 x(tn)= exp (-1
tn
I), n = O,
fl, f2, f3,
...,
nos da un
el tiempo. Si utilizamos el indice
ejemplo de sefial discreta en
n de los instantes discretos en
el tiempo como la variable
independiente, el valor de la sefial se convierte en una funcibn
de una variable entera. Entonces, una sefial discreta en
18
el
tiempo se puede representar matemdticamente por una secuencia
o complejos.
de números reales
3
.- Las
sefiales que son continuas en tiempo pero son discretas
en la variable dependiente, es decir que estan definidas en
todo un intervalo de tiempo desde a hasta b pero solo pueden
tomar un numero determinado de valores, como ejemplo, podemos
mencionar
4
.-
una
serie
infinita
de
pulsos.
Las Sebles Digitales son aquellas que son discretas tanto
en el tiempo como en la variable dependiente, es decir, que la
y la variable
funcion existe en una serie discreta de instantes
dependiente estd limitadaa una serie discreta de valores
y es
el estudio de este tipo de seiiales lo que nos va a ocupar a
través de este trabajo.
19
CAPITULO
2
INTRODUCCION AL ANALISIS
2.1 SERIES
DE
FOURIER.
DE FOURIER.
El andlisis en frecuencia de una
visualizaci6n de la misma
sefial comprende la
a traves de
sus componentes en
frecuencia,estoscomponentessonsenalessenoidalesde
diferentes magnitudes. La recombinacion de los componentes
senoidales para
la reconstrucci6n
basicamente
problema
un
de
de la sefial
sintesis
de
original es
Fourier.
una sefial nos proporciona una "identificaci6n"
ninguna
el
de ella que
desarrollo
andlisis
en
frecuencia
lo
es
representaciones
la
matemdticasy grificas
de
de
herramientas
obtenci6n
de
las
componentes
frecuencia que se encuentran en una sena1 dada. El t6rmino
espectroesusadocuandonosreferimosalconjuntode
componentes
en
de una senal.
frecuencia
20
.... . ."
,
espectro
otra sefial tendrd.
La principalmotivaci6n para
de
El
de
de
2.2 LA SERIE DE FOURIER EN
SU
FORMA
TRIGONOMETRICA
Una funci6n peri6dicav(t) con un periodo fundamentalTo
puede
serrepresentadacomounasumainfinita
sinusodales.
escrita
v(t) =
en
AO
La
+
Esta
sumatoria
varias
formas.
c
AIU COS
llamada
Una de
2 nnt/To
+
estas
serie
formas
de
de
ondas
Fourier
puede ser
la
es siguiente:
Bn sen 2 rnt/To
2.2.1
constante Ao es el valor promedio de v(t)
y esta
por :
2.2.2
mientras que los coeficientes An y Bn estain dados por:
21
dada
La Serie de Fourier
de
una
funci6n
peri6dica
es
vista
una sumatoria de armonicos de una frecuencia fundamental
fo=
1/To
2.3 LA SERIE DE
FOURIER EN SU FORMA
EXPONENCIAL.
La forma exponencial de la Serie de Fourier tiene una
extensa aplicaci6n en la teoria de comunicaciones. Esta forma
esta
dadapor:
2.3.1
como
donde Vn esta
f
Vn = 1/To
J
dadopor:
v(t) exp (- j 2 n W T o )
los coeficientes Vn tienen la propiedad de que Vn y V-n son
= V*-n.
complejos conjugados, es decir, Vn
Los Vn's
son
las
espectrales Vn exp
amplitudes
espectrales
de los
componentes
. (jznnfot)
2.4 TRANSFORMADA DISCRETA DE FOURIER.
La Transformada
Discretade Fourier DFT (de
lassiglas en
ingles Discret Fourier Transform) es ampliamente usada
en el
procesamiento de sefiales para el andlisis
de las sefiales
discretas en tiempo. La evaluacion mediante algoritmos de la
DFT,
aunqueesposiblemedianteprocesadoresdigitales,
requiere multiplicaciones
complejas
del
orden
del
cuadrado
ntímero de muestras procesadas. Por ejemplo una DFT de 1000
muestras
podrxarequerir
un
23
millendemultiplicaciones
del
complejas
La
en
para
obtener
Transformada
mil
nmeros complejos
Discreta
de
de
Fourier
salida.
de
una
seAal
discreta
tiempox(n) esta definida como:
k = 0,1,2. ..,No1
2.4.1
constituye la base de las funciones complejas bSsicas
o
factores principales de la DFT. Los factores principales son
periodicos y definen puntos en el circulo unitario del plano
complejo.
LOS
factores principales se encuentran igualmente
espaciados a lo largo del circulo
frecuencia de
P/n, donde F es
y
con incrrementos de
la relaci6n de la seAal de
entrada. Por lo tanto, el nےmero de nuestras que definen el
espectro de X (k), estan
dadas
fk = k F/N
,
de
el
eje
de
k = 0,1,2..,N-1
La resolucion de frecuencia de
incremento0
en
2.4.2
la D F T
frecuencia
F/N. La respuesta
frecuencias
por:
en
es igual al
frecuencia
de
salida de cualquier DFT se determina aplicando una sefial de
24
la
entrada de exponencial complejo y evaluando la respuesta de
salida de la DFT
conformela frecuencia varia.
2.5 TRANSFORMADA
DISCRETA
DE
FOURIER
INVERSA.
fecuencia X (k), la Transformada
Dados los valores en
Discreta de Fourier Inversa (IDFT) nos da una secuencia en
tiempo como sigue:
= I: X(k)
El desarrollo
m-*
2.5.1
de esta relaci6n es fdcilmente obtenido
sustituyendo la ecuaci6n
en la
2.4.1
2.5.1
y
IDFT
es
evaluando la
expresi6n :
La
formade la
ecuaci6n
para
la
identica
a la DFT
1/N y el signo
con la excepci6n del factor normalizante
de la
exponente de los factores principales. Esta es una importante
observaci6n
que
nos
proporcionam&odo
un
para
obtenerla IDFT
sin cambios en el algoritmo de la DFT. LA ecuaci6n 2.4.1
es
llamada la transfomada discreta de Fourier o Transformada de
An6lisis y la ecuaci6n 2.5.1
es referida como la Transformada
25
Discreta de Fourier Inversa
o transformada de Slntesis.Es de
interes notar que la DFT es igual a la transformada 2 de una
frecuencia, x(n), evaluada en entradas igualmente espaciadas
unitario el
en plano 2 .
del
circulo
2.6
TRANSFORMADA RAPIDA DE FOURIER
La transformada Rdpida de Fourier (FFT de
sus siglas en
ingles Fast Fouriere Transform) un
e6 algoritmo muy eficiente
para obtener
la transformada discreta de Fourier
de una
secuencia. Esta aprovecha el hecho de que muchasoperaciones
son repetidas al realizar una DFT, como cnsecuencia
naturaleza peribdica, en base
a
la ecuacibn 2.4.1
sea
2.6.1
,
podemos reescribir la ecuacibn de la siguiente forma :
t
2.6.2
x(n) Wnk
asumiendo que W (N+qN)
(k+rN)
=Wnk
26
de su
para toda q. Posteriormente
X(k) =
x(2n) W2nkN
+
dividimosla DFT en dos partes:
x(2n+l)W(2n+l)kN
2.6.3
donde el subindice n en el factor principal representa
la
longitud de la
pares
secuencia.
Si
representamos
los
elementos
de la secuencia x(n) por el xev
y los elementos impares como
xod, podemos reescribir la ecuacidn de la siguiente forma:
X(k) =
Xev (n) WnkN/2
+
Wnk f Xod (n) W W / 2
Ahoratenemosdosexpresiones
de
escribiremos:
X(k) = Xev (k)
+
WlcN/2
Xod(k)
27
1.2.6.5
la
DFT,
1.2.6.4
as5
que
Debemos de notar que solamente las DFTs
puntos
necesitan
Debido a que
ser
el fndice
peri6dica de las
DFTs
calculados
para
obtenr
k debe estar en
pares
e
de N sobre 2
impares
N-1,
el de
valor
X(k).
la propiedad
puede
ser
usada.
palabras :
Xev (k) = Xev (k-N/2) para
1.2.6.6
N/2 <= k <= N-1
El proceso de dividir el resultado
de la DFT en pares e
impares puede ser repetido haste que uno cuenta con dos
solo
puntos de DFT
A (k) =
=
a
evaluar.
a(0) + a(1) exp (-2jw&4 toda K
a(0)
= a(0)
Asf,
+ a(1) para k par
- a(1)
para k impar
2.6.7
paradospuntosdelaDFTno
se
requiere
multiplicacibn, solamente sumas y restas. La evaluaciende la
DFTcompleta
atin
requieremultiplicacidn
de
lasDFTs
individuales por factores apropiados de W cuyo rango es de
28
En
otra
WN/2-1 .En
de una
la siguiente
FFT
en
el
diagrama
de flujo
de16 puntos.
Las aplicaciones
DFTs
figurase muestra
del
andlisis
espectral
tiempo
real. La obtencidn
de
la
generalmente
DFT
requieren
para
N muestras
de
entrada requiere N2 multiplicaciones complejas y N2-N sumas
complejas para
N
puntos de salida. Esto asume que todos los
coeficientes
los
factores
de
principales
requieren
multiplicaciones complejas,incluso aquellos que tienen partes
reales e imaginarias igualesa 1 o a O. En adici6n a sumasy
restas debemos
de
proveer
capacidad
de
almacenamiento
para
datos. Tambih los factores principales deben de ser ya sea
procesados o almacenados
para
su
uso
La FFT es un rdpido algoritmo para
eficiente de la
seAal
de
Los
DFT
N son
salida
donde
el
la
la
en
FFTsonexpresados
multiplicaciones por segundo (FFT)
= F/2 log2 N
sumas por segundo (FFT)
= F log2 N
tiempo la
de
Nenpuntos de frecuencia.
siguiente manera:
29
computaci6n.
la implementacih
nihuero
muestras
de
transformados
requerimientosde
en
de
la
los
2 . 7 TEOREMA DE
MUESTRE0
El teorema de muestreo establece los siguiente: Si una
sefial est&
limitada
en
banda
hasta
un devalor
B Hz, (es decir,
una sefial cuya transformada de Fourier es igual a cero para
toda I w I > 2nB ) queda
a
intervalos
si
determinada
uniformes
con
univocamente
separacibn
por
sus valores
menor
tenemos una sefial anal6gica y sabemos el
de sus componentes
espectrales
en
que
valor
frecuencia,
es decir,
1/2B
mdximo
quela
tenemoslimitadaenbandapodemosreproducirlatomando
muestras a una velocidad mayor
que el doble
componente espectral, con esto obtenemos una
discreta en tiempo pero
variable
dependiente
que
no
de su maxima
sefial que es
es sefial
una digital
por
que
la
puede
estar tomando cualquier valor.
Para demostrar el Teorema de muestreo, se considera una
banda B.a La multiplicacih de g(t)
sefial g(t) limitada
en
un tren de impulsos
unitario
gs (t) = g(t)
*
por
produce sefial
la muestreada gs(t) :
d(t-nTs)
2.7.1
30
segundos.
2.7.2
Se toman
las
transformadas
de
Fourier
de ambos miembros y
se obtiene lo siguiente:
Gs (w) = 1/Ts
G (w-nws )
donde ws = 2n/Ts
2.7.3
La transformada de Fourierde la sefial muestreada gs (t)
consta
nws
,
deG (w) repitihdose a SI
misma
para n =
O,
1, 2
,
3,
... .
31
No
indefinidamente
a
cada
habrd traslapes entre
> 2(2nB) o sea 2n/Ts
ciclos sucesivos de G(w) siempre que w0
sea mayor o igual a 4nB esto esTs <= 1/2B en consecuencia,
<= 1/2B o la raz6n de
mientras el intervalo de muestreo
,
muestreo sea mayor que 2B muestras por segundo
(w)
Gs
constar6 de repeticiones que no se traslapan deG (w) y, en
gs (t) simplemente al
consecuencia g(t) se podrd recuperar de
hacerla pasar a traves de un filtro de pasabajas con una
funci6n
de
transferencia
cuya
.
aparece con linea punteada en la figura
teorema
de
el
Esto demuestra el
muestreo.Elm6ximointervalo,
= 1/
2B, se conoce
correspondiente
indice
o razdn
permisible, Ts
segundo ) se conoce
de IH(w)l
magnitud
caracteristica
como
de
de
muestreo
intervalo
de Nyquist, y
muestreo
(2B muestras
por
comoel indicede muestreo de Nyquist
Estrictamente hablando, una seAal de banda limitada no
existe
enla realidad. Se puede demostrar, si
que unasefial es
de tiempo limitado (esto es, existe solo durante
un intervalo
finito de tiempo )
, no
puede ser de banda limitada,
y si una
sefial es de banda limitada (esto es, que
componentesarm6nicosest6
en
frecuencias)
no
fisicas
necesariamente
son
podr6
ser de
en algCln instante finito
unintervalolimitadode
tiempo
de
la cantidad de
limitado.
tiempo
Todas sefiales
las
limitado
y deben terminar en
ya
que
comienzan
algCln otro
instante finito. En consecuencia, todas las sefiales practicas
son de banda no limitada. Sin embargo, si una
transformable
sefial es
enel sentido de Fourier su energia en finita y
del Teorema de Parseval se deduce que I G ( w )
32
I
debe decaer a
frecuencias m6s altas. La mayor parte de la energía de una
sefial reside en una banda finita, y el espectro a frecuencias
mas altas
contribuyepoco.
El error que se introduce al cortar el extremo que est6
mas a116
de
si se hace B
una
cierta
suficientemente
Por consiguiente,
sefial se pude
frecuencia
puede
hacerse
despreciable
grande.
para
considerar
B
todos
como
los
prop6sitos
escencialmente
de banda
prdcticos
una
limitada
a algCln valor B, cuya elecci6n depende de la exactitud que se
desea. Un ejemplo practico de esto es una
te6ricamente
unasefial de voz
siendo
tiene un ancho de banda infinito.
frecuencia mas allfa de
despreciable de la
3
energía
sefial de voz,
una
sefial de tiempo
Pero las componentes de
KHz contribuyen con una fracciJ n
total.
se transmiten sefiales
Cuando
de voz mediante PCM (Pulse Code Modulation),
primero
a
trav6s
de
un
finito
filtro
Pasa-Bajas
se hace pasar
dedeancho
banda
3.5 KHz, y a la sefial resultante
sela muestrea
a
8000 muestras
un
banda
3500
deHz
la minima
porsegundo.
Para
ancho
raz6nde muestreo (el índice
de
de
una
de
raz6n
de
,
Nyquist) 7000.
es
Los
indices de muestreo m6s altos permiten la recuperaci6nde la
sefial a
partirde sus muestras
utilizando
filtros
relativamente
simples. La recuperaci6n de sefiales muestreadas al Sndice de
Nyquist
requieren
filtros
de
33
corte
exacto
(ideales).
2.8 RECUPERACION
Ya hemos
de una
DEUNA SE@=
mencionado
sena1 si disponemos
Se hace pasar
pasaba jas
A
que
PARTIR
se
DESUS MUESTRAS
puede
dela funci6n
realizar
la recuperaci6n
muestreada.
lafunci6nmuestreadapor
conunafrecuenciadecorte
un filtro
m.
Setrata,
evidentemente
de
una
operaci6n
en
el
dominio
de
la
frecuencia. Debido a la dualidad entre el dominio
fecuencia y
de la
el dominio del tiempo, existe una operacien
equivalente en el dominio del tiempo conla que se recupera
f (t) a partirde sus muestras. En este apartado describimos
esta operacien.
Consideremos una sena1 f(t) muestreada con
la rapidez
minima requerida, 2fm muestras por segundo. En este caso:
T = 1 / 2fm
w0 = 2n/T =
2.8.1
4 ~ rfm = 2wm
2.8.2
y segtin la ecuaci6n :
34
Fs ( w )
=
2.8.3
1/T F (w-nw0)
como antes,
podemos
obtener
el
espectro si
F(w)
filtramos
con un filtropasa bajo con frecuenciade corte wm
FS(W)
Es
claro que esa operaci6n equivale a multiplicar Fs(w) por una
funci6n
pulso
anterior
.
rectangular
G2wn(w)
Por lo tanto de la
ecuaci6n
obtenemos:
Fs(w) G2wm(w) = 1/T F(w)
De donde podemos despejar
F(w) obteniendo:
F(w) = T Fs(w) G2wm(w)
Por consiguiente, la transmisi6n de la seflal muestreada
fs(t)
El
T=l/2fm
del
atraves de un
filtro
. Se
filtro
filtro
tiene
una
pasa
bajo,
frecuencia
reproduce
de wm
corte
y una
la (t)
sena1
ganancia
puede expresarla funci6n de transferencia, H(w)
que
vamos
a
emplear :como
35
f
H(w) = T G2wm(w)
= 1/2 f G2wm(w)
F(t) = Tfs(t) = wm / Sa (wmt)
para
f(t)
tener la siguiente expresi6n:
=
fn t *
La
Sa (wm t)
funci6n
muestreada
est& dada por:
fs (t)
=
fn (t-nt) *
Sa (wn t)
=
fn Sa [wn (t-nT))
=
fn Sa (wnt-n)
36
Es obvio que se puede construir f (t) en el dominio del
tiempo a partir de sus muestras de acuerdo con las iiltimas
ecuaciones
. GrBficamente,
cada muestra se multiplica por una
funci6n de muestreo y se suman todas las formas de onda
resultantes
para
obtener
f(t).
En la practica la mayoriade las seaales se aproximan a
seaales limitadas en banda. Conviene aclarar aqul que, en un
sentido
estricto,
Puede
no
existen
demostrarse
finito del tiempo,
sinembargo,en
que
posee
esas
seiiales en banda limitada.
si seiial
una existe
componentes
de
en
un
intervalo
todas
las
frecuencias;
lapractica,lasfuncionesdedensidad
espectral disminuyen a frecuencias superiores. La mayor parte
de la energia reside en las componentes que ocupan un cierto
intervalo
de
frecuenciademaneraqueparaprop6sitos
prbcticos, se puede
El error
que
considerarla seiialcomo
procede
de
no
tomar
en
limitada
cuenta
las
en
banda.
componentes
de
alta frecuencia es despreciable.
El teorema
permite
de
reemplazar
secuencia discreta de
muestreo
es
un
una
seflal continua
concepto
limitada
importante,
en
banda
por
sus muestras sin perder informacidn
alguna. Por tanto el contenido de informacibn de la sena1
equivale a elementos discretos de
informacidn. Ya que el
principio de muestreo especifica el valor minimo de valores
discretos necesarios para reproducir una seAal continua,
37
el
pues
una
no
fs (t) = fn (t-nt)
Es obvio
a
*
Sa (wn t)
= fn
Sa [wn (t-nT)]
= fn
Sa (wnt-n)
que
se
puede
partirde sus muestras
de
construir
(t) en fel
acuerdo
dominio
del
tiempo
con líltimas
las
ecuaciones
Grbficamente, cada muestra se multiplica por una funci6n de
muestre0 y se suman todas las formas de onda resultantes para
obtener
f
.(t)
En la practica la mayorla
de las seflales se aproximan a
seflales limitadas en banda. Conviene aclarar aqul que, en un
sentido
estricto,
no
existen
esas
seflales en banda limitada.
Puede demostrarse que si una seAal existe en un intervalo
finito
del
tiempo,
posee
componentes
embargo, en la practica, las funciones
disminuyen
a
frecuencias
superiores.
de
todas
las
frecuencias
de densidad espectral
La
mayor
parte
de la
energia
reside en las componentes que ocupan un cierto intervalo de
frecuencia de manera que para prop6sitos prdcticos,
se puede
considerar la seflal como limitada en banda. El error
que
de no tomar en cuenta
las componentes de alta frecuencia es
despreciable.
38
.
.. .
procede
I
I
_
_
3
CAPITULO
DE
TECNICAS
CONVERSION
DE
3.1 CONVERSION
En
los
SmALES
DE SmALES
apartados
anteriores
hemos
tratado
la clasificacitin
de
de las seflales, podemos decir que somos capaces ya de entender
claramente lo que se conoce comouna Sefial Digital y una seflal
Anal6gica. Las primeras
tambien
su variable
en
son
seflales discretas
dependiente,
son senales continuas en tiempo
en
tiempo
y
discretas
mientras seflales
las
anal6gicas
y
continuas en
la variable
dependiente.
Existendispositivoshechosparaeltratamiento
informacitin que nos proporcionan algunas
39
de
la
sefiales analegicas, y
podemos observar que así mismo existen dispositivos como
computadoras que nos permiten manipular
queremos
usar
una
computadora
para
la
seflales digitales. Si
manejar
la
informaci6n
obtenida
de una seflal anal6gica es necesario convertir estaseflal en una
seflal digita1,asi
mismo
si
una
seflal digital
se
requiere
para
ser
tratada como anal6gica debemos primeramente convertirla en este
tiltimo tipo de seflal.
Enlossiguientesapartadosestudiaremoslastecnicas
empleadas en la conversi6n de una seflal anal6gica a una
seflal
digital asi como tambien la t6cnica utilizada en la conversi6n
contraria.
3.2 CONVERTIDORANALOGICO-DIGITAL
El
Convertidor
Anal6gico-Digital
es
el
dispositivo
empleado,
como su nombre lo indica, para transformar una seAal anal6gica en
un
conjuntode valores
aplicaciones
que
discretos,
podemos
van a ser
que
o posiciones
presidn
utilizados
entonces estamos ante
para
.I
una
seAal
se
utilizan
para
digital.
estar
Las
sensando
especlficas
y si estos parmetros
realizar ntímero
un
elevado
la necesidad
40
_."".
decir,
mencionar mtíltiples,
son
ejemplo de esto
lo tenemos en los dispositivos
temperatura,
es
de
cdlculos,
de realizar una conversien
En
el
presente
trabajo
hablaremos
de
dos
metodos
para
la conversiones anal6gico-digita1, estosson:
1.- Convertidor
Tipo
Contador
2.- Convertidor de Aproximaciones
3.2.1
CO-TIDOR
Este
TIPO
sistema
COHTADOR
de
conversien
Primero se presenta un pulso
para este comience desde
binaria
Sucesivas.
de
funciona
borrado
cero. El
como
que
sigue:
inicializa
al contador
contador registra en forma
el niímero de pulsos de la linea
de reloj. El reloj
esuna
fuente de pulsos los cuales se encuentran a intervalos de tiempo
iguales. El niímero
de pulsos se incrementan linealmente con el
tiempo, la palabra binaria representando este contador es usada
como la entrada del convertidor anal6gico-digital cuya salida es
una
forma de onda
comola que se muestra en la figura.
Si consideramos una seflal de
Vs mas grande
entrada
en
magnitud
a Vd el comparador ( que es un amplificador diferencial de alta
ganancia)
presenta
una
salida con
41
nivel'alto!,
ocasionando
quela
reali
compuerta 'and' se habilita para quelos pulsos
de
reloj
vayan
al
contador. Cuando el voltaje Vd es ms grande que Va la salida del
comparador cambia a un nivel bajo
y se deshabilita la compuerta
'and'.
El
contadorse detendrd
cuando
se
presenten
las condiciones
Vi-Vd y el contador leerd la palabra digital
voltaje de entrada
reptresentando el
anal6gico.
Si el voltaje anal6gico varia con el tiempo no
convertir
los
datos
analdgicos
en una forma continua;
pero
hacerse si la sefial de
Si representamos
se pueden
entrada
un
fueran
valor
muestras
mdximo
de
con
voltaje
podria
intervalos.
anal6gico
por
pulsos y el periodo del reloj esta dado por t segundos, el
intervalominimoentremuestras(considerandoeltiempo
de
conversien) es nt segundos.
Otra versi6n del contadorADC, llamado servo convertidor,es
obtenido
usando
la siguiente
con
un
figura,
respecto
contador
la
en cual
al lade figura
ascendente-descendente,
se
se
ilustra
en
observa pequefia
una
modificaci6n
anterior.
Este
circuito
requiere
no
de
un pulso de borrado y tampoco usa una compuerta and. Utiliza un
contador
ascendente/descendente,la
salida
del
comparador
alimenta
al control del contador. El funcionamiento del circuito es el
de voltaje
siguiente, la salida del DAC se encuentra en un nivel
menor
con
respecto
al
voltaje
de
entrada
Vi, laentonces
salida en
un nivel alto delcomparador provoca que el contador cuente en
42
I1nf
forma
descendente.La salida
pulso de reloj
de linea
en
forma
hastaque excede
al
ascendente/descendente
descendente
convertidor
se incrementa con cada
del
(pero
voltaje
anal6gico
Vi. Elcontrol
cambia
de estado
esto
se
para
realiza
en forma LSB
ahora
).
Finalmente provocando que el control cambie nuevamente
estado (ascendente) y la cuenta
(LBS)
. El
procesoes conservado
se presentara un valor de
contar
de
se incrementa solo por un bit
de
este
modo
y en
lasalida
digital
1 bit (LBS)
alrededor del valor correcto. El tiempo de conversien es menor
cuapdo se presentan cambios menores entre las muestras
de
sefiales anal6gicas.
43
I
O
1
4
3
4
6
6
7
8
9
10
FIGURA 3.1 COMRTIDOR A/D TIPO CONTAMlR
Catulor
FIGURA 3.2 SERVO CONVERTIDOR.
44
En este
tipo
de
convertidor
se
utiliza
un
contador
programable
en lugar del contador binario.
El contador programado coloca al bit
mbs significativo
(MBS)
.
en un estado alto, con todoslos dembs bits en estado bajo El
y la
comparador toma la salida del convertidor anal6gico-digital
compara
con
el
es removido al
voltaje
anal6gico
1 anal6gico
entrada,
el
de
del
MBS
siguientebit mas significativo, y es realizada una
nueva comparacibn, el voltaje anal6gico
es mayor que Vd, el 1
permanece hasta que se llega
proceso,es decir que se
al
final
del
presenta una equivalencia binaria de la seAal anal6gica.Para un
sistema de N bits, el tiempo de conversien N periodos de reloj,
denot6ndose una oposicien con
el convertidor del que hablamos en
el apartado anterior de contador
porque en
tiempo de conversien es de 2N periodos
.
3 3 CONVERTIDOR
DIGITAL-ANALOGICO.
45
de
el
peor
de los casos su
reloj.
Muchos
electr6nica
de
lossistemasutilizadosenelmundo
digital
requieren
da
a
un voltaje o corriente
convierte
una
de
seAal
analdgico
de
(un
la
entrada;
la cual se
nivel
de corriente
o de tensidn) segfín sea el caso donde vaya a ser utilizado. Estos
sistemas son llamados
convertidores
digital-anal6gico
o DAC's
(por
sus iniciales en ingles Digital Anologic Converters). La palabra
digital
es
representada
son
puramente
Code
Decimal).
La
en
o c6digo
binarios
salidaVo para
un
una
variedad
m9s comunes
c6digos,
los
de
- decimal - binario
convertidor
D/A
de
(BCD de Dinary
N-bits
se
obtiene
mediante
la siguiente ecuacidn:
+
donde Vo es un factor
parametros
del
de proporcionalidad determinado por los
y donde
sistema,
n-esirno bit es 1 o O
a aN-3 y su peso
(LBS) corresponde
. El
es2
N
'
%
.
a$-N 3.3.1
los
coeficientes =1ano (=O) si el
bit mds significativo
mientras
aaoy su
que
pesoes V
el
bit
(MBS)
corresponde
menos
significativo
RP
Considere por ejemplo una palabra de (N=5)
y si consideramos
la ecuacion 1.3.2.1
tenemos lo siguinte :
46
.
v =
( l6a4
+
8a3
+
4a2
+
..
2a1 )
3.3.2
Si asumimos V = 3 2 v. Entonces si a0 y todas las demas son cero,
nosotros
Cero
tendremos
entoncesV o = 2
un nivel
de
que
Vo -1
+
tensi6n
. Si a0
1 = 3 , etc.
= a l = 1 y todas las
son
Claramente se observa que Vo es
proporcional
a la entrada
FIGURA 3 . 3 CONVERTIDOR D/A
47
dem&s
digital.
LOS
bloques
SO
,
SI
,
s2
,
.
,
SN-1, en la figura
son
interruptoreselectr6nicosconcontroladoresdigitales.Por
1 en la linea MSB, el interruptor
ejemplo, cuando se presenta un
SN-1 se conecta
mismo cuando
conecta
al
al
resistor
R a la tensi6n de
referencia-VR
MBS, el
un O se encuentra presente en la
resistor
la
con linea
de
Todos los
tierra.
, as$
interruptor
interruptores
son de la forma unpolo dos tiros (llamado tambien un polo
y dos
posiciones ) y se activan por el nivel altoo bajo de cada bit,
conectando a los resistores con
-VR o Tierra. El amplificador
operacional funciona como un convertidor de corriente
a voltaje.
Podemos observar que si el MSB es 1 y los demds bits son cero la
corriente que circula
por
el
resistor
R es -VR /R y la
Vo (MBS) = VR R'/R
48
salida
es:
Demanerasimilar,
configuracidn de
5
lasalidaparael
bits (N=5)
LBS,
parauna
:
3.3.4
Vo (LBS) = VR R / 1 6 R
Finalmente si todos los bits son1 se tiene:
Vo (TOTAL) = (1 + 1 / 2
Vo (TOTAL) = ( 1 6
+
8
+
+
+
1/4
4
+
2
1/8
+
+
1 / 1 6 ) * VR R ‘ / R3 . 3 . 5
1 )* v~R/16R
3.3.6
Este argumento confirma que el voltaje anal6gico
proporcional
VO
es
a la entrada digital.
La presicion y estabilidad del convertidorD/A de la figura
1.18
depende principalmente de
la absoluta presici6n
resistores y de suponer una baja dependencia con el
de los
cambio de
y el mas grande
temperatura. Todos los resistores son diferentes
est6 dado por la relacibn 2N’1R
,
pequefio, estos
valores
requieren
con
grande.
muy
Esto
un
valor
donde R es el resistor
del
dltimo
49
uso
de
representa
m6s
resistores
de presici6n
un
gran
problema
a
la hora de implementar
los
circuitos
pr6cticos;
a continuaci6n
se
presenta el convertidor tipo escalera mismo que evita estas
dificultades.
D/A TIPO 18CALBM
3 , 3 0 1 CO-TIDOR
Este circuito es
circuito
es
el mas veloz de los convertidores. El
funcional
para
el mismo
de la figura 1.18 pero,
el circuito
circuito
de los
es
es
con
numero
valores
un
dispositivo
resistores
es
mas
de
. La escalera
divisor
crítica
Bits
resistores
Ry2R
de
mostrado laen figura1.19
de
que
de
su
que
el
circuito
solamente,
usada
en
el
y as$ la raz6n
corriente
valor
absoluto.
Se observa que uno de los nodos lade escalera en la figura
1.19 tiene la resistencia 2R mirando
hacia
el
lado
derecho
o hacia
el lado izquierdode l o s iterruptores.
Por ejemplo, si el LSB es O, para el lado izquierdo del nodo
1 se muestra una combinaci6n en paralelo de dos resistencias
2R
hacia tierra en serie con
R , para una resistencia total de
2R, y
as1
sucesivamente
hasta
interruptor, digamos
el
Clltimo
interruptor.
N-2,
resistencia en VR es (2R
+
es conectado a
2R
*
2R)
nodo N-2 es :
50
VR
Si
algh
el valor de la
/ 2R = 3R y el voltaje en el
VR /3 =
R( VR
/3)
3.3.6
FIGURA 3.4 CONVERTIDOR D/A TIPO ESCALERA.
A
causa
un tiempo
de la capacidad perdida de
los nodos a tierra
deretardo en
la
propagaci6n
de
izquierda
a derecha
SO se cierra
la red escalera. Cuando el interruptor
propagaci6n es mucho mayor
As1
, cuando
el
voltaje
que
cuando
digital
51
el
cambia,
existe
el
bajo
retardo
de
interruptor
MSB se cierra.
un
transitorio
aparecer6
a
la salida
antesde que VO alcance
un
valor
apropiado.
Estos transitorios pueden ser evitados usando
escalera invertida.
52
un DAC de
CAPITULO
4
FUNCIONAMIENTO
DEL
SISTEMA
4.1DESCRICION
GENERAL
DEL
SISTEMA
En este Proyecto Terminal de Ingenieria hemos creado un
sistema que dada una Sena1 Anal6gica toma muestras
de ella y les
asigna un valor
cada
muestra
para
digitalizar
sido
de
muestras
senal.
El
valor
almacenado laenmemoria de la MCU. Dicha
es
a 64 Kbytes
expandida
ha
dicha
suficientes
para
para
poder
que
podamos
recuperar
tener
las
asignado
memoria
una
seAales
cantidad
a
partir
de sus muestras. Todos los valores que hemos almacenado serdn
enviados a la PC para que se realice el c6mputo de la FFT para
poder
graficar
espectro
el
en
frecuencia
de la sefial en
el
de la computadora.
53
monitor
a
El
programa
que
hemos
el dominio de la frecuencia
cual
nos
hecho
como
un mentí de
presenta
en
opciones
nos
permite
ver
la
el
dominio
del
tiempo,
para
1.- Leer los datos desde: [Dl Disco
[PI Puerto serie
2.-Dominio:
(TI Tiempo
[ F]
3.-En cualquier
Frecuencia.
opci6nse puede
mostrar:
[R] Parte Real e Imaginaria
[M] Magnitud y Fase
[PI Potencia
4.-Por tíltimo tenemos
las
opciones
de:
[S] Salvar secuencia
(A] Abandonar.
54
. ..
..
poder
seAal
seleccionar
:
tanto
para
lo
en
Esto es lo que
ahora
veremos
c6mo
un
usuario
esta
del
sistema
integrado
el
puede
sistema
egperar
que
hemos
del
mismo,
y
disefiado
construido.
El Hardware
esta
integrado
por
los
siguientes
- Una PC 80286 en adelante.
- Una MCU M68HCllEVBU (EnModo Expandido
- Una fuente de poder
de 5V. 3A.
- Un C.I. 74HC373 (Latch)
- Un C.I.
Multiplexado)
74HC138 (Decodificador de 3 a 8)
- Un C.I. 6264 (Memoria RAM de 8 Kbytcs)
- Un C.I. m 7 4 1 (Amplificador operacional)
- Un potenciometro de180 ohm
- Un push button.
55
componentes:
Dedicamos
discutir
4.1.2
el
en
este
mismo
funcionamiemto
CONPOWBNTBS DB S0-E
El software
esta
de
capStulo
estos
EGAVGA.
para
componentesel en
sistema.
DBL SI8TBNA
integrado
- SISTEMA OPERATIVO
- CONNECT.EXE.
- ATT .BGI .
- CGA .BGI .
-
un m6s
apartado
adelante
.
BGI
- HERC.BG1.
- IBM8514.BGI.
- PC3270.BGI.
- PR0YECT.C
- PROYECT.EXE.
- CONVER.ASM.
56
por
los
siguientes
programas:
En el siguiente capitulo haremos una descripci6n
programas
de los
mencionados
y
en
los
anexos
y 2 1se
programasCONVER.ASM y PR0YECT.C
4.2 DESCRIPCION
La
GENERAL
Tecnologla
baja
respectivamente.
de
Alta
densidad
CMOS (HCMOS)
en
alta
inmunidad
memoria
integrado
en
el
memoria
EEPROM
512
RAM.
de
y
El chip provee
de
chip
mejores
al
usada la
en Unidad
ingles)
o Microcontrolador
combinael tamaf'ioreducido y la
potenciay la
listados
DE LA MCU M68HCllEVBU
de Microcontrol (MCU por sus siglas
M68HCllEVBU
presentan
de los
alta
velocidad
con
ruido CMOS.
del El sistema
incluye
funciones
de
ROM,
512 debytes
Kbytes
12
de
la
de
de
manejo
perifericos.
Incluye,
como
habiamos
ya
mencionado,
convertidor
un
Analbgico/Digital de ocho
La
frecuencia
del
canales
reloj
de la MCU es
con
una
resoluci6n
de ocho bits.
de75 Khz, tardando 32 ciclos
de reloj para convertirla sefial de un canal. Se incluye, adem&s,
una Interface de Comunicaci6n Serial Asíncrona (SCI sus
de siglas
57
en ingles Serial Communication Interface)
y una Interfase Serial
Sincrona (Serial Peripheral Interface). El sistema temporalizador
principales
de
16
bits,con
tres
lineas
de
capturade
seflales,cinco salidas de comparaci6n de lineas,
y una funcibn de
interrupcidn
8 bits
en
tiempo
real.
Un
subsistema
acumulador
de pulsos
de
puede contar eventos externos
o medir periodos deseflales
externas.
Cuenta
con
su
propio
circuito
de
monitoreo,
para
proteger
integrado de eventuales errores del sistema. Un sistema guardidn
llamado Operaci6n Apropiada del Computador (COP) lo protege de
eventuales
software.
Un
de
errores
corre demasiado lento. Un circuito de detecci6n de c6digos
cualquier
una
que
se
cuando
pierde o el
reloj
&te
realiza
momento
genera
reinicializaci6n
detecta
el
monitor
de reloj
una
ilegales de operaci6n
en
sistema
interrupci6n
no
enmascarable
c6digoilegal..
Para conseravr su poder adicional, contiene dos modos de
control de software, WAIT y STOP.
4.3MODODEOPERACION
El Modo de operaci6n en el que va a trabajar la MCU para
58
.I .".III"".".
"..
...
.
si
al
llevar a cabo lo que
el Modo Expandido
de accesar a un
seha planteado
Multiplexado,
espacio
64 Kbytes. El bus
al
inicio
de este
trabajo
en que
el la MCU tiene la
dememoria
en que
el se pueden
es
capacidad
direccionar
de expansi6n ocupa los puertos B y C, y las
sefiales de control AS y R/W. La figura
siguiente
muestra
la amnera
de obtener la demultiplexaci6n de las direcciones suministradas
mediante
el
puertoC. Las direcciones, R/W y las sefialesAS estan
activas y son validas para todos los ciclos del bus
incluyendo
el
acceso
a las
.
4 4 FUNCIONAMIENTO
GENERAL
La Fuente de Voltaje
Modo Expandido
Latch,
un
localidades
ACUERDO
memoria
interna.
AL DIAGRAMA
polarizando
a la MCU la cual est6
esta
Multiplexado,
decodif
DE
de
de datos
para cual
lo requiere
icador3 a de
8 y una
el
en-
manejo un
de
memoriaRAM de 8 Kbytes, al
introducir la Sena1 Analbgica se le suma voltaje de offset de
aproximadamente 2.5 V. esto
sefial que
con
el
siguiente
fin: si se tiene una
tienevalores entre 22 V. al montarla en un voltaje de
59
FIGURA 4.1 CONEXIONES EN MODO
60
EXPANDIDO
offset todos los valores que reciba la
posteriormente
este
que las grdficas que
esPeramos.La
voltaje DCdesera
MCU
quitado
sean positivos,
en
el
programa
para
se presentan sean exactamente las que
sena1 anal6gica sumada al voltaje offset pasan al
convertidor A/D de la MCU para
su
almacenamiento
y posterior e n v h
al Puerto serial para ser posteriormente procesadas por el
programa.
Presentamos en la siguiente pdgina el diagrama
de nuestro
sistema tal como se implement6.
i
61
n
1
I
-.,
L
.
.
,
L
1
..
.. t
I
D
' ( I r
>
Y4
O
f
o
ro
r
c
5
CAPITULO
DEL
DESCRIPCION
5.1 EL PROGRAMA
Se
SOFWm
DEL
SISTEMA
CONVER. ASM
desarro116 elprogramaparala
MCU
y
lollamamos
CONVER. ASM, ya que, primeramente, nos sirve para activar el
Convertidor
Anal(Sgico/Digital.
El programa fue escrito en
el lenguaje ensamblador adecuado
al
microprocesadorde la MCU.
Este programa fue estructurado bdsicamente para permitir
la
conversien A/D y guardar los datos de la cuantificacien en la
memoria RAM para
su
posterior
envío
62
el
hacia
puerto
serial
para
que
la informaci6n se transmita
transmisidn a bajas
hacia
la
computadora,
realizando
frecuencias. El contenido específico del
programa se define en el Anexo 1 de este trabajo donde
presentado
un
dicha
listado
de
5.2 EL PROGRAMA PROYECT
este
se ha
programa
.C
Se desarrolld el programa para laPC y se le llam6 PROYECT
pues es
la parte que desarrollamos
de software para nuestro
C y se hizo siguiendo
Proyecto Terminal. Se codific6 en Lenguaje
comoestructuraesquemdtica
procesamiento de las
lamodificacidnadecuadaenel
seflales, con el fin de obtener una mejor
interpretaci6n de Bstas.
Para
esto
sedb le
un
seguimiento
especial
a l o s pasos necesarios parala realizaci6n de la FFT, los cuales
segfm la
definici6n que nos proporciona el manual 'Transformada
Rapida de Fourier' realizado por acad6micos del Departamento de
Ingeniería
Electrica
1.- Planteamiento
2.- Comportamiento
3.-
dela UAMI son:
dela Matriz.
intuitivo
de
la FFT.
SeAales de flujo grdfico.
63
4.- Nodo
dual
Espaciamiento
Evaluaci6n
de
de
5.- Determinaci6n
los
los
de
dela FFT.
7.- Obtencidn
del
De
acerca
bajo
el
modelo
es
especial
de
flujoladeFFT.
de
donde
que
debe
obtenemos
seguir
un
resumen
nuestro
programa
y fue
2
cualse ha desarrollado el programa PR0YECT.C. El anexo
de este
de los
t6rminos
Wp.
diagrama
esteCiltimo punto
del
nodos
dual.
los
6.- Reacomodo
nodos
dual.
trabajo
es
un
listado
datosque env€a la MCU y los
del
programa
que
procesa,as€ mismo
realiza
la captura
realiza
las
grdficas correspondientes a las seaales que se analizan. Del
tratamientomatemdticode
microcontrolador
y nuestro
a dicho
.
5 3 OTROS
se
los
obtiene
el
datos
espectro
programatambih proporciona
espectro.
PROGRAMAS
PARA
EL SISTEMA
64
que
la
llegandesdeel
en
frecuencia
de una seaal
grdfica
correspondiente
concreto
Como
de
un
sabemos
sistema
El
para
operativo,que
en
a
comunicarnos
la PC necesitamos
con
nuestro
caso
programaCONNECT.EXE que es proporcionado
delmicrocontrolador sirve
MCU y la
empezar
para
establecer
la
es el
MSDOS.
por
el
fabricante
comunicaci6n
entre
la
computadora.
Los programas con extensibn BGI sirven para configurar el
monitor de la PC en la que
estamos
del monitor en modo grdfico
grdficas
en
tiempo
y los
real
trabajando
para
poder
y se puedan desplegar en
espectros
65
en
frecuencia.
hacer
61 las
uso
1
ANEXO
(SOFTWARE
PROGRAMA
PARA
LA
COWER. ASM
66
MCU)
*
i
i
..
w
t
+
T:
i
!
T
-i "i
3
r
*
*
?r-
I:!
r:
!-i
Q
m
r
u:
i i
ANEXO
(SOFTWARE
PROGRAMA
2
PARA
LA
PROYECT. C
68
PC)
r
Ultima modificacion:13 de Enerode 1994
~cclr+nn*.,***t***t'ntttnt*t*nttt'~~*'*~*~ttt*t~tt~~
t
t
Programa que Calcula y Grafica La Transformada Rapida de Fourier
Y
Grafica en tiempoReal una Seual
t
t
t
t
I.m~t*~**tt+HuttnH*nttt'*tt't*~tt*.*H"**t**ut~"*.*~
I
#tnclude <stdio.h>
#include <conio.h>
#include <alloc. h>
#include <math.h>
#Include <graphics.h>
#include <dos.h>
##define NoPuntos512
##define SI 1
##defineNO O
Mefine ESC 27
typedef shortBool;
enum Dominios{
mpo,
FREC
1;
enum Opciones{
REAL,
MAGN,
Porn
1;
unsigned int dirvideo;
void MenuPrin ( B o o 1 *aped, &>o1 'apslr);
void LeerSec (float **apentr, float "apenti, int 'lapnmax, B o o 1 esdir);
B o o t Transfrm ( B o o t &ir, float entro, float entia,
float **apslr, float **apsli,
int nmax);
void OpcSal (floattmpa, float tmpiu, floatfrca, float ficin,
int nmax);
void LeerArch (float '+apentr, float *apenti, int *apnmax);
void LeerPuerto (float "apentr, float "apenti, int *apnmax,
char nmfn, char nmvr);
void Borrlin (int numlin);
void Leercmpj (float enm, float entin, int n, char
car);
void DespMenu (void);
void Indicar (int posx, int sel);
B o o 1 Calcular (float "apsup, float -apinf, float
float s e c i u ,
int nrnax, int ow);
void Graficar (float ssupu, float sinf0, int nmax, intow);
void Salvar (float
float secio, int nmax);
B o o 1 Apmb (void);
B o o 1 ModoGraf (void);
wid MinMax (float
int nmax, float *apmin, float "aprnax);
void Escala (int control, float "Divisor,float *Amplitud);
int ObtenTecla (intpara);
seca,
seca,
seco,
main 0
{ int nmax;
B o o 1 &ir, salir, exb;
float *entre,"entim, 'salre, 'salim;
textmode (BW80);
MenuPrin (&esdir, &salir);
while (!salir) {
LeerSec (&entre, (Lentim, &nmax, esdir);
if
{
nula
/* Si no
entrada
"I
exib = Transfrm (esdir, entre, entim,&salre,&salim, nmax);
if ( e a ) {
P Si salida no nula
if (&ir)
*t
OpcSal (entre, entim, salre, salim, nmax);
else
OpcSal ( s a l r e , salim, entre, entim, nmax);
1
free (salre);
free (salim);
free (entre);
free (entirn);
1
MenuPrin (&&ir, &salir);
1
P Fin si salidanonula
*I
P F:in si entrada no nula
P Finmientrasnosalir
"I
closegraph();
1
/
.
.
t
t
"
"
"
"
"
"
"
"
1- "
"
FASTW
escribe una cadena directamente
en la memoria devideo
"
"
fastw(int x,int y,char cadjJ,int atrib){
register inti=O,j=O,max=O;
max=strlen(cad);
I
MODO-VIDEO
Inicia el modoVideo
deadecuado
8
8
8
void rnodo-video(void){
int Vmode;
Vmade=Video-ModeO;
if((vmode!=2)&&(vmode!=3)&&(vmode)!=7)
exit(1);
if(Vmode==7){ P Monocrom t i c o . *I
dirvideo=0x8000;
1
else{ P Color. 7
dirvideo=OxB800;
1
1
int Video_Mode(void)
{
union REGS r;
r.h.ah=)5;
retum(int86(0x1O,&r,&r)&255);
1
p
"
l8
-"
-n
n
8
8
*
"
*
8
8
*
-
CUADRO
dibuja un marco en la pantalla
"
"
.
"
1
void cuadro(xl ,y1,x2,y2,color)
int x1 ,y1,x2,y2,color,
int ¡ , a ;
if(xl>O && yl>O EL& y2>yi 88 mxl && y 2 4 6 %& d41)
??
Ppone la segunda linea horizontal de arriba*/
for(i=xl;i<>Q;i++)
{
fastw(i,(yl+2),"P,co1or);
1
Ppone las lineas verticales*/
fastw(x1,yl + l ,'(*',color);
fastwbl , y i + 2 , ' 9 P , ~ ~ ~ r ) ;
fastw(&?,yl
+l,lw',color);
fastw(x2,yl+2,'"'",color);
for(i=(yl+3);i<y2;i++)
{
fastw(x=l,i,'w'lcolor);
fastw(x2,i,'w',color);
1
void MenuPrin ( B o o 1 'apesd, B o o 1 'apslr)
{char car;
void modo-video(void);
clrscro;
modo-vic@O;
cuadro(l,3,80,24,WHlTE,O);
gotoxy(l5,4);
printf("UNIVERSIDA0 AUTONOMA MIZIROPOLITANA- IZTAPALAPA");
gotoxy(l5,22);
printfr
ESPERE UN MOMENTO POR FAVOR *");
defay(1ooo0);
clrscro;
cuadro(l,3,80,24,WHlTE,O);
gotoxy(3,4);
printFfTeclea [R] para continuaro [S] para salir:.. '7;
g o t w w , 12);
printFrGraficaci#n en Tiempo [Rleal");
gotoxy(=, 16);
printFC'[S]aliAnW');
while ( (car=getchO)!='r' && car!='¡' && car!='s');
*aped = (car=='t)
? SI : NO ;
*apslr = (car=='s')
? SI : NO ;
void LeerSec
{char car;
(mi"apentr, float **stpenti, int *apnmax, B o o 1 esdir)
char nmfn, mvr ;
nmfn = &ir? 'g' : 'G';
nmvr = esdir ? 'k : 'n' ;
clrscro;
modo-video();
cuadro(l,3,80,24,WHllE,O);
gotoxy(5,4);
printF("Leer los Datos desde: _.\n");
gotoxY(30,9);
, printfr
[D]isco");
gotOxY(30,12);
printft'
[Pluerto SeriehW?;
while ( (car=getchO)!='d' && car!='p');
if (car=='d)
LeerArch (apentr, apenti, apnmax);
else
{
lnicializaModoGrafico();
Leepuerto (apentr, apenti, apnmax, nmfn, nmvr);
73
void LeerArch (float "apentr, float "apenti, int 'apnmax)
{char nmarch[80];
FILE 'arch;
int nmax;
int posy;
float "entr, 'enti;
size-t nr, ni;
B o o 1 reint
r
r
Rutma
de
Apertura
de
Archivo.
r
*I
*I
*I
posy = whereyo;
do {
gotoxy (5,pOsy);
printf C'Nombre del archivo: .. '3;
(nmarch);
gets
nombre
archivo
Pdel
Entra
el
*I
arch = fopen (nmarch,"rb');
if (!arch) {
gotoxy~5*pOsY+2);
*
printf ("Nofue posible abrir
el archivo %s\n",nmarch);
gotoxy(tj*
PoSYc3);
printf rlntentar denuevo ? (s/n) _.'3;
reint = Aprobo;
1
1while ( !arch && reint );
P Fin
rutina
apertura
archivo
if (!arch) {
*apnmax = O;
return;
I" Si fracaso
en
r Indica
entrada
nula
LecturadelTamanode
fread(anmax,sizeof(int),
*I
*I
l o s Arreglos y AsignaciondeMemoria.
*f
1 /.elemento*/,arch);/"
entr = calloc (nmax Ppontos*/,sizeof(fI0at)
);
enti = c a l l o c (nmax Ppontos'l, sizd(float));
if (!entr 11 !enti) {
la apertura
PYregreSa
1
r
r
r
'I
Lee nmax
*I
*I
*I
*I
P Asigna memoria */
/L Si memoria
insuficiente
*I
void BorrLin (int numlin)
{ int i;
for (¡=O; icnumlin; i++)
1
dellineo;
DibujaEjesO
double j;
double d i ;
int MaxX = getmaxxo;
int MaxY = getmaxyo;
setcolor( getmaxcoloro );
line(35,33,35,MaxY-24);
setrines~e(~LID-LINE,Ox3ff,THICK_WIDTH);
rectangle(O, O, M a , MaxY);
settexMyre(SANS-SERIF-FONT, HORIZ-DIR, 1);
outtexbcy( M e - 14.8, 16,"ONDA ANALOGICA");
outtexbcy( MaxXE-4'8, MaxY-16,'TEMPO'');
settexMyIe(SANS-SERlF-FONT,VERT-DIR, 1);
outtexbcy( 16, MaxYl2 4.8, "AMPLITUD");
-
setlinestyle(SOLID-LINE,~,NORM-WIDTH);
line(35,33,35,MaxY-24);
-+..~.."rn-n I I L I n
~
.~ ~
~ n n \ aa # lt n n 11.
I I cu_LIIuc,u~~II,Iuurrlvl-.vvIu
t n),
wt'inea,pe
div=("K
for (i=l; j<M;++j){
line(dVj,33,div*j,MaxY-24);
1;
div=(MaxVrm);
for (j=2;j<M;++j){
1;
setlinestyle(SOLID-LINE,~,NORM-WIDR-1);
/ . t . . . . t t . . t . r " * . t t . . t . r U $ " ~ ~ ~ * . * ~ * . t " ~ ~ * ~ * ~ " * m ~
LEERPUERTO
Leer los datosdelpuertoCOM1
y guardarlosenmemoria
*
"
"
m
*
*
*
m
*
*
,
*
m
*
i
t
+
.
.
n
*
+
+
+
m
n
c
r
r
void LeerPuetto (float **apentr,float "apenti, int *apnmax,
c h a r nmfn, c h a r nmvr)
{ int nrn-512;
*
I
float 'entr, 'enti;
int posy,cntrl;
char cad[%];
struct text-info info;
int altura, ancho, altvnt;
int fin;
unsigned data=(0x03I 0x00 I oxo0 IOxEO);
int
Xi=30,Yi=30,Xf=getmaxxO-30,Yt-getmaxyO-30,i,puntoY,color;
int car;
float Divisor=l,Amplitud=l;
LeerNumerode
P
'I
Puntos y AsignarMemoria
entr = c a l l o c (nmax Ppuntos'l, sizeof(fl0at) 1;
enti = calloc (nmax Ppuntos*/, sizeof(fl0at)
);
P Asigna memoria 7
if (!entr 11 !enti) {
P Si memoria
insuficiente
printf (%Memoria insuficiente para alojar ia secuencia.\n");
printf (Tn Desea intentar de nuevo ? (sin) .. '3;
*/
1
} while ( (!em 11 !enti) && AprobO );
if ( !entr I] !enti) {
*apnmax = O;
if (entr) free (entr);
if (enti) free (enti);
return;
P Si memoria
insuficiente
Pentrada
nula
Indica
f Libera memoria si asignada
1
r
P Y regresa
Ciclo de Lectura de Datos de Teclado y Eco en Pantalla
bioscom(O,data,O);
DibujaEjesO;
setViewprt(Xr,Yi,Xr,Yf,1);
puntoY=(Yf+NoPuntos-300)/2;
do P Graficar mientras no se presione alguna tecla'/
{
cntri=toupper(kbhitO);
mweto(0,puntoY);
Escala(cnM,&Amplitud,&Divisor);
for (i = O; i <= (int) (Nopuntos -l)'DiYisor, i++)
do(
car-OxFF & bioscxm(2,0,0);
entr[i3 = car;
enti[il =O;
puntoy = (Yf+NoPuntos-300)/2 Amplitud'car;
lineto(i/Divisor,puntoY);
DibujaEjes0;'l
-
P
)while(i++<512);
clearviewporto;
w i l e (!kbhitO);
restorecrtmodeo;
*I
'I
'1
*f
'I
'apnmax = NoPuntos,
*apentr = entr;
*apenti = enti;
Pnula
Indica
entrada
no
r Y asigna arreglos
posx = wherexo;
posy = whereyo;
r
r
r
*I
"I
Leer la Cadena.
*I
*t
*I
pos = cad;
c
do
if (Car==O)
getch0;
else if (car==8){
if @os>cad) {
putchar (8);
putchar C ');
putchar (8);
3
1
r
Si tecla no ASCII, leer d i g o *I
P Si BACKSPACE,borrar anterior *I
m-;
P s i es imprimible
else if ( (unsigned
char)car>31 ) {
putchar (car);
*(pos++) = car;
1
1while ( (cat=getch0)!=13 );
Mientras no RElZlRN
r lermina la cadena
*pos= 10;
r
r
r
SepararlaCadenaensusPartes
pos = cad;
*I
Real eImaginaria.
*I
while ( *pos!='
88
W *pos!=',' && *pos!=' ' )
Pos++;
cd2 = pos;
while ( *cd2!=1(Y && rcd2==','
cd2++;
*pos =
10';
enbfn] = atof (cad);
enti[n] = atof (cd2);
11 *cd2=='
:'I )
*I
*I
*I
P exponente
Slgno
del
sgn = esdir ? -1 : 1 ;
rCoeficiente
del
exponente
coef = sgn ' 2 ' "PI I nmax;
'I
numitrs = (int) ( log((doub1e)nmax) I log(2.0)); P lteraciones
'I
for (iter-O; itercnumitrs; iter++) {
numgpos = (int) pow (2,0,(float)iter); P Grupos:
2'iter
*I
ptsgpo2 = (nmaxlnumgpos)
12;
/' Puntos por grupo / 2
coefg = coef ' numgpos;
P Coeficiente para esta
iter.
for ( g r u p o ; grupocnumgpos; grupo++) {
nini = grupo ' ptsgpo2 ' 2 ; P Inicio del grupoentumo
*I
nfold = nini + ptsgpo2 ;
f La mitad
del
grupo
en
tumo
for (n=nini,dn=O; wnfold; n++,dn++) {
gr = salfln];hr
= salfln+ptsgpo2];
gi = sali[n]; hi = sali[n+ptsgpo2];
salrfn] = gr + hr;sali[n] = gi + hi;
cosa = cos (coefg*dn);
sena = sin (coefg'dn);
salrfn+ptsgpoZ] = casa'(gr-hr) - sena'(gi-hi);
sali[n+ptsgpo2] = sena'(gr-hr) + cosa'(gi-hi);
3
'I
'I
*I
*I
1
1-
r
r
'1
Ordena los ResultadosdelaTransformacion.
P
*I
for (n=l; ncnmax; n++) {
num = n;
opuesto = O;
factor = nmax;
while (facto~{l)
factor I= 2;
opuesto += (1 & num) factor;
num X-= 1;
*f
1
if (opuesto>n) {
gr = salr[n]; salqn] = salrfopuesto]; salqopuesto] = gr;
gi = sali[n]; sali[n] = sali[opuesto]; sali[opuesto] = gi;
1
1
if (!esdir)
for (n=O,apsr=salr,apsi=sali;ncnmax; n++,apsr++,apsi++) {
%psr /= nrnax;
'apsi I= nmax;
1
*apslr = salr;
'apsli = sali;
return (SI);
1
P Asigna arreglos
exit0P Indica
'I
'1
void OpcSal (float tmpm, float tmpio, float frcm,Roat frcin,
int nmax)
{ €3001 haydom, hayopc, s a l i r , exito;
int dom, opc;
char car;
float 'secr, 'seci;
float "ssup, 'sinf;
const posx = 6;
const posy= 21 ;
const xdom = 4;
const xopc = 27;
P Posician de iniciode mensajes '1
r Posbcion horizontal delos menus'I
P dominio
de
y mostrar
*/
haydom = NO;
hayopc = NO;
salir = NO;
do {
DespMenuO;
if (haydom) Indicar (xdom, dom);
if (hayow) Jndicar (xopc, ow);
gotow (Posx,pasY);
printf("1ndique su seleccion: .. '3;
car = getcho;
dellineo;
gotoxy (Po% POSY) ;
if (mr==v11 car=='f)1
dom = (car==") ? TMPO : FREC ;
secr = (cat==")? tmpr : frcr ;
seci = (cat=='f)? tmpi frci ;
haydom = SI;
1
else if (car=='f11car=='m'jl car-='p') {
opc = (cat=='r')? REAL : (car=='m') ? MAGN : POW ;
hayopc = SI;
1
else if (car=='g'){
if (! haydom 11!hayopc) {
if (!haydom)
printf TNo ha elegido dominio. PulseESC .. '3;
else
printf ("Noha indicadoque mostrar. PulseESC ._'3;
while (getcho ! = E X );
1
else {
exito = Calcular (&ssup,&sinf, secr,seci, nmax, ow);
if (exito) {
if (Car=='g')
Graficar (ssup, sinf, nmax, ow);
if (opc!=REAL) {
free(sup);
free (sinf);
1
1
81
1
1
else if (car=='a') {
salir =SI;
1
else if (cal.==',') {
if (!hayxiom) {
printf fNo ha elegido dominio. PulseESC... *' );
while (getcho !=EX);
1
else
1
Salvar (frcr, frci, nmax);
} while (!salir);
I
/.m+ctttt+*mmimmm"*""***""
T
DESPMENU
Desplegar menu de opciones
*
- * H m t * ~ * ~ * H ~ * t - * * ~ ~ ~ ~
/ ~ * * * * * * * * * ~
void DespMenu (void)
{
clrscro;
modo-video();
cuadro(l,3,80,24,WHfTE,O);
gatoxy ( 8 4
MOSTRAR
CDOMINIO
printf
MODO");
gotoxy (688);
printf
iernpo
p]
real e imaginaria [GI raficaf');
gotoxy ( 6101;
printf VIFJ recuencia
M agnitud Y fase '3;
gotoxy (29,12);
printf (" [PI otencia");
gotoxy (14,16);
printf C[Slahrar secuencia
[A) bandonat');
("m
1
I
"
"
"
*
"
INDICAR
Indica y Lee la opci#n de dominio
t
*
/"*"*m-
void Indicar (int p o s x , int s e r )
ow;
char car;
CORS~int maxopc
= 3;
const int yini = 8;
82
for (opc=O; opccmaxopc; o w + ) {
gotoxy (posx, yini + 2 . 0 ~ ~ ) ;
car = (opc==sel) 7 : '
putch (car);
In'
I;
1
seca,float seciu,
B o o 1 Calcular (float "apsup, float "apinf, float
int nmax, int opc)
{float %sup, *sinf, val;
int n;
if (opc==REAL) {
s u p = secr;
sinf = s e c i ;
1
else {
ssup = calloc (nmaxPelementos*/, sizeof(fl0at));
sinf = calloc (nm&elementosn/, sized(float));
if (!ssup 11 !sin9 {
printf ("No hay memoria suficiente.ESC para continuar .. '7;
while ( getcho !=ESC );
if (ssup) free (ssup);
if (sinf) free (sinf);
return (NO);
1
for (n=O; ncnmax; n++) {
val = secrfn]*secr[n] + ~eci[n]~seci[n];
ssup[n] = (opc==MAGN)? s q r t ( v a 1 ) : val ;
v a l = secan] ? atan2 (seci[n], secqnl) : se?ci[n] ? M-PI-2 : O ;
sinfin] = (opc==MAGN) ? val : 0.0 ;
1
*apsup = ssup;
*apinf = sinf;
return (SI);
1
void Graficar (float ssupo, float sinfn, int nmax, opc)
int
( B o o 1 exito;
float vmin,max,escx, escy, 'sec;
int sup
&
[!
inflq, izq, der, vist;
int m=, maxy,
alt, x, y, yo;
char *let[2], cad[80];
int n;
exito = ModoGrafO;
if (!exito)
return;
rnaxx=getmaxxO + 1;
maxy = getmaxyo + 1;
izq = 3*maxx 120;
der = lQ*ma>ocm);
sup[O] = maxy / 10;
inflo] = 17'rnaxy I 2 0 ;
sup[l] = maxy 10;
inql] = 17 maxy/ 2 0 ;
leqO] = (opc==REAL) ? "Parte Real" : (opc==MAGN) ? "MAgnitud" : "Potencia";
leql] = (opc==R'EAL) ? "Parte Imag" : (opc==MAGN) ? "FAse" :
'"I;
for (vist=O, sec=ssup;visW2; vist++,sec=sinf) {
MinMax ( s e c , nmax, &win, &vmax);
SettextjustQ ( LEFT-TEXT, BOlTOM-TEXT );
outtextxy (O,sup[vist] -5,let(vistl);
settextjusbfy (RIGHT-TEXT, TOP-TEXT );
sprintf (cad,"%.3g", vmax*5/255);
outtexbcy (izq-5,sup[vist], cad);
sprintf (cad,'%d", nrnax-1);
outtexbcy (der,inqvist] +5, cad);
settextjushfy (RIGHT-TEXT, BOlTOM-TEXT );
sprintf (cad,'%.3g'', vmin*5/255);
outtexlxy (iq-5,inflvist], cad);
TOP-TEXT );
settexgustrfy (LEFT-=,
outtexbcy (izq,inqvist]+5, "0" );
escx =(float) (der-kq)/ (nmax-1);
alt = inqvist] -sup[vist];
escy = (vmax==vmin) ? (float) att : att/(vmax-vmin);
yo = (int) (escy (vmax-0.0));
yo = (yo<O) ? O : ( F a l t ) ? alt : yo;
yo = yo + sup[vist];
line ( i q , yo, der, yo );
for (n=O; nenmax; n++) {
nr = fwnte (secr, sizeof(float), nmax fpuntas'l, arch);
ni = fwnte ( m i , sizeof(float), nmax Ppuntcs'I, arch);
if (nr!=nmax 11 ni!=nmax ) {
gotoxY (Posxz Posy);
BorrLin (5);
printf C'Error durante la escntura.");
printf ('ln Desea intentar de nuevo
? (s/n) ..'9;
reint = Aprobo;
if (reint)
f s e e k (arch, (long)sizeof(int),SEEK--SET);
1
} while ( (nr!=nmax 11 nr!=nmax ) 88 reint );
fclose (arch);
if (nr!=nmax
gotoxy
1
1
11 ni!=nmax) {
Posy);
BorrLin (5);
printf (?Secuencia no salvada.ESC paw continuar ..");
while ( getcho !=ESC);
return;
Boo1Aprob (void)
{char car,
B o o 1 resp;
while ( (car=getchO)!='s' && car!='n'
resp = (car=='s')? SI : NO ;
return (resp);
1;
1
B o o 1 ModoGraf (void)
{ int disp, errgraf;
static int modo;
modo = getgraphmodeo;
errgraf = graphresulto;
if (errgraf == grNolnrtGraph) {
disp =DETECT;
initgraph (&disp,&modo,"BGl");
errgraf = graphresulto;
1
if (errgraf !=grOk) {
printf (In Error: %sW, grapherrormsg (errgraf));
y = sup[vist] + (int) (escy*(vmax-sec[n]) );
x = itq + (int) (esoc'n);
line (x, y o , XJ);
1
settexgustrfy { CENTER-TEXT, BOTTOM-.TEXT );
outtextxy ( m d , maxy, "<ENTER> para continuar .. '3;
while ( getcho !=13);
cleardeviceo;
mid Salvar ( k t
seca,float seci[ 1, int nmax)
{char nmarch[%],
FILE 'arch;
B o o 1 reint;
size-t nr, ni;
const posx = 10;
const posy = 221;
I
"
-
J
RUTINA DE APERTURA DE ARCHIVO
*" " "
do f
gotov (posx,posy);
printf (" Nombre del archivo : .. '9;
gets (nmarch);
arch = fopen (nmarch,W 9 ;
if (!arch) {
printf ('In No fue posible abrirel archivo %s.",nmarch);
printf (7n Intentar de nuevo ? {s/n)..");
A"-L
n.
reir; 1np1ou u,
1
} while (!arch 88 reint );
if (!arch) {
gotc)xY
POSY);
B o d i n (5);
printf ("Secuencia no salvada.ESC para continuar ..");
while (getcho ! = E X );
return;
( p o s x 7
1
7"
ESCRITURA DEL TAMANO
DEL
ARREGLO
M
e (slnmax, sizeof (int), 1 PelementosV, arch);
86
Y LOSDATOS
1
printf r7 Pulse ESC para regresar ..'?;
while ( getcho !=ESC);
return (NO);
1
else {
setgraphmode (modo);
return (SI);
1
1
secn, i n t nmax, float 'apmin,
void MinMax (float
{float min, max;
int n;
float 'apmax)
min = sec[O];
max = secp];
for (n=l; ncnmax; n++) {
if (sec[n] c min ) min= sec[n];
if (sec[n] > m a ) max= sec[n];
1
'apmin
'apmax
1
= min;
= max;
InicializaModoGrafico
{
int rowpos;
int g-driver, g-mode, %error;
detectgraph(&g-driver,&g-rnode);
initgraph(&El_driver,&~rnode,"3;
g-error = graphresulto;
if (g-errorKO)
{
printf("Error de inicializacion del modo
grafico %s.\n",
grapherrormsg(g-error));
exit(1) ;
1
1
void Escala(int Control, float 'Amplitud, float
'Divisor)
{
switch(Control) {
-
case 97: if ('Amplitud40)
'Amplrtud=*Amplitud+(cAmplrtud)"0.05;
break;
case 1 0 0 : if ('Amplitud>O.l)
*Amplitud=*Amplihrd-('Amplitud)*0.05;
break,
case 9 9 : if ('Divisor40)
'Divisor='Divisor+(*Divisor)'0.05:
break;
case 101: if rDMs0~0.1)
'DRlisor"DivisorCDivisor)*0.05,
break;
O
1
1
88
BIBLIOGRAFIA
The Fast Fourier Transform
E. Oran Brigman
Prentice Hall 1975
Englewood Cliffs, N.Y.
Digital Signal Processing
A.V.Oppenheim & W.S. Schaffer
Prentice Hall 1975
Englewood Cliffs, N.Y.
Turbo C ++ Bible
Naba Barkakati
SAMs
Transformada Rápida de Fourier
MLV, GDS Y FCS
Departamento de Ingeniería Eléctrica, UAMI, 1991.
México, D.F.
Manuales de la
Motorola 1988.
MCU
M68HCllEVBU
General Purposes Lineal Dev.ices
National Semiconductor Corporation
Edición 1988.
Introducción a la Teoríay !Sistemas de Comunicación
Lathi B.
P.
Limusa 8" edición.
of Digital
Theory and Applications
Rabiner L.R. & Gold B.
Prentice Hall 1975
89
Signal
Processing
Descargar