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