Sunteți pe pagina 1din 17

SEALES 1. SEALES EN TIEMPO CONTINUO.

Una seal en tiempo continuo es aquella que puede tomar cualquier valor en cualquier instante de tiempo, donde la variable independiente tiempo puede ser cualquier instante desde - infinito a + infinito. Como ejemplo de este tipo de seales est cualquier funcin matemtica que dependa del tiempo, como v(t) Vp*cos(2**f*t) , dnde t es la variable independiente y v(t), la variable dependiente. En este caso particular tenemos una funcin que se repite peridicamente en el tiempo y f indica la rata de repeticin, normalmente f tiene unidades de Hertz o ciclos/seg. El inverso de f es el periodo T o el tiempo de duracin de un ciclo. En la figura 1 tenemos un ciclo de la seal v(t), para vp = 10voltios y f = 100hz.

10 V O L T I O S 8 6 4 2 0 -2 -4 -6 -8 -10

0.001

0.002

0.003

0.004

0.005

0.006

0.007

0.008

0.009

0.01

S E G UNDO S

F IG URA 1

GENERACIN DE SEALES EN TIEMPO CONTINUOCON MATLAB ONDA SENO.- Para generar la onda seno vamos a suponer que es de 100Hz, para esto necesitamos un vector de tiempo que lo vamos a generar as: t = (0:0.001:1) lo cual significa que es un vector de 1001 elementos intervalos de 1 milisegundo. de cero a 1 segundo en

Posteriormente se genera la onda seno con el comando: y = sin(2*pi*100*t) el cual nos produce tambin un vector de 1001 elementos, de tal forma que si queremos graficar los primeros 50 elementos solamente, entonces se ejecuta el comando: plot(t(1:50),y(1:50)) resumiendo el programa en Matlab sera: t = (0:0.001:1); y = sin(2*pi*100*t); plot(t(1:50);y(1:50)); La grafica producida por este programa se muestra en la figura 1-2.

1 0.8 0.6 0.4 0.2 V O LTIO S 0 -0.2 -0.4 -0.6 -0.8 -1

0.005

0.01

0.015

0.02

0.025

0.03

0.035

0.04

0.045

0.05

S E G UNDO S - FIG 1-2

Si ahora a la onda de la figura 1-2, le queremos agregar un ruido blanco uniformemente distribuido, esto lo logramos adicionado el comando: 0.5*randn(size(t)); a la segunda lnea del programa anterior. Lo cual nos produce la seal contaminada de la fig 1-3
2

2.5 V O L T I O S 2 1.5 1 0.5 0 -0.5 -1 -1.5 -2 -2.5

O NDA S E NO + RUIDO

0.005

0.01

0.015

0.02

0.025

0.03

0.035

0.04

0.045

0.05

S E G UNDO S FIG 1-3

ONDA DIENTE DE SIERRA.- Matlab posee la funcin sawtooth, que nos sirve para generar onda diente de sierra, con un pico de +/-1 y un periodo de 2*pi. A manera de ejemplo supngase que se quiere generar una onda diente de sierra de 100Hz, con frecuencia de muestreo de 10Khz y graficar 0.2 segundos de la onda generada. Este problema se resuelve a travs del siguiente programa en Matlab, cuya grfica obtenida se muestra en la figura 1-4: Fs = 10.000; t = 0:1/fs:2; x = sawtooth(2*pi*100*t); plot(t,x), axis([0 0.2 1 1]);

O NDA TRIA NG ULA R G E NE RA DA CO N S A W TO O TH 1 V O L T I O S 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1

0.02

0.04

0.06

0.08

0.1

0.12

0.14

0.16

0.18

0.2

S E G UNDO S FIG 1-4

ONDA CUADRADA.- Con la funcin square de Matlab podemos generar onda cuadrada con un periodo 2*pi y ciclo til, especificado a travs de un parmetro. Ejemplo 1-1. Utilizando la funcin square de Matlab generar una onda cuadrada de 50 Hz con una frecuencia de muestreo de 1000 m/s y graficar hasta 0.08 segundos de la seal, con un ciclo til de a)50%. b) 70%. Solucin: a) fm = 1000; t = 0:1/fm:1; x = square(2*pi*50*t); plot(t,x), axis([0 0.08 2 2]); En la fig 1-5 se muestra la seal correspondiente. b) En la solucin anterior cambiamos la tercera lnea del programa por: x = square(2*pi*50*t,70); el resultado lo observamos en la figura 1-6.

O NDA CUA DRA DA CO N CICLO UTIL DE L 50% 2

1.5

0.5 V O LTIO S

-0.5

-1

-1.5

-2

0.01

0.02

0.03

0.04 S E G UNDO S

0.05 FIG 1-5

0.06

0.07

0.08

2 V 1.5 O L 1 T I O 0.5 S 0

O NDA CUA DRA DA CO N CICLO UTIL DE L 70%

-0.5

-1

-1.5

-2

0.01

0.02 0.03 S E G UNDO S

0.04

0.05 FIG 1-6

0.06

0.07

0.08

2. SEALES EN TIEMPO DISCRETO Una seal en tiempo discreto, solo esta definida para cierto valores del tiempo. Supngase que empezando de cero tomamos muestras de la seal analgica de la figura 1 (onda seno) y que estas muestras las tomamos cada 0.001 segundos (perodo de muestreo). Segn esto, de la seal anterior en el perodo se tomaron 10 muestras, definimos la frecuencia de muestreo como el numero de muestras por segundo que es el inverso del periodo de muestreo o sea Fm = 1/T = 1/0.001 = 1000 muestras/segundo. En la figura 1-7 se observa la seal en tiempo discreto.

10 V O L T I O S 8 6 4 2 0 -2 -4 -6 -8 -10

4 M UE S TRA S

7 FIG URA 2

10

Figura 1-7

Ntese que la seal en tiempo discreto se obtuvo de tomar muestra cada n*T instantes de tiempo donde n es un numero entero y T el periodo de muestreo, o sea que la seal en tiempo discreto es: v(n) = 10*cos(2**(100/1000)*n), esta ecuacin la podemos escribir de esta forma: v(n) = 10*cos(2**F*n), la cual se parece mucho a la ecuacin de la seal en tiempo continuo, donde F tiene un significado sutilmente distinto al caso de tiempo continuo. En tiempo continuo f es la frecuencia en Hertz ( ciclos/segundo) y en tiempo discreto F es la relacin entre la
6

frecuencia f y la frecuencia de muestreo F = f/Fm, donde evidentemente, la unidades de F son Ciclos/muestras , esta F es la frecuencia en el dominio digital. Veamos algunas propiedades del coseno en tiempo discreto: Un coseno en tiempo discreto es peridico si su frecuencia F es un numero racional.

Para probar esto partamos del hecho que una seal en tiempo discreto es peridica s y solo s x(n) = x(n + N), dnde N es el numero de muestras que hay que tomar para que la seal comience a repetirse, (el numero N ms pequeo es el periodo fundamental) lo cual implica para el coseno: Vp*cos(2**F*n) = Vp*cos[2**F(n +N)] , lo cual es correcto si F = K/N , dnde K y N son enteros, de tal forma que si F, no se puede expresar como la relacin de dos enteros entonces el coseno en tiempo discreto no es peridico. Esta es una diferencia fundamental con la seal correspondiente en tiempo continuo, donde el valor de f no tiene ninguna restriccin para que sea peridica. El periodo fundamental N se obtiene al simplificar a la mnima expresin la relacin F = K / N y tomando el valor del denominador. Ejemplo1-2. Determinar si la seal en tiempo discreto v(n) = 5*cos(200**n), es peridica y si lo es, cul es su perodo fundamental. Solucin: 5*cos(200**n) = 5*cos(2**F*n) , de donde se desprende que: 200* *n = 2* *F*n , de donde, F = 1/100, como F se pudo expresar como la relacin de dos enteros , entonces 5*cos(200**n) es peridica. Y el perodo fundamental es100 ya que 1/100 esta reducido a la ms mnima expresin. Las cosenosoides en tiempo discreto que estn separadas por un mltiplo entero de 2*, son idnticas.

Sea la cosenosoide vp*cos(w*n), dnde w es la frecuencia digital en radianes/muestra, si lo anterior es cierto entonces vp*cos(w*n) = vp*cos[(w+2*)*n], lo cual si se satisface ya que: Vp*cos[w+ 2*)*n] = vp*[cos(w*n)*cos(2**n) seno(w*n)*seno(2**n) y como cos(2**n) = 1 y seno(2**n) = 0, por ser n entero. Entonces: vp*cos[w+2*)*n] = vp*cos(w*n).
7

Ejemplo1-2. Encuentre una frecuencia digital distinta de 1/10, de tal forma que la seal en tiempo discreto 10*cos(2**100/1000*n), resulte idntica con esta nueva frecuencia. Solucin: Como, F = 1/10 y w = 2**F = 2**1/10 , entonces por la propiedad anterior (w + 2* = wo = w), 2**1/10 + 2* = wo, debe ser una frecuencia idntica a w. Y wo = 2**(1/10+10/10) = 2**11/10, luego la frecuencia digital F = 1/10 es idntica a la frecuencia digital Fo = 11/10, lo cual significa que digitalmente la seal 10*cos(2**100/1000*n) es idntica a 10*cos(2**11/10*n), lo cual puede comprobarse calculado los 10 primeros valores de las dos seales. Ntese que lo anterior significa que digitalmente es lo mismo si tomamos la seal 10*cos(2**100*t) o 10*cos(2**1100*t) y la muestreamos a 1000 muestras segundos, esta conclusin es de suprema importancia ya que es factible que tengamos dos seales analgicas distintas que al muestrearse con una determinadas frecuencia resulten digitalmente idnticas, es decir puede haber un problema de ambigedad en el mbito digital, mas adelante indicaremos que hay que hacer para que esto no suceda. Digitalmente la mayor frecuencia que puede alcanzarse es w = ( w = -) o anlogamente F = (o F = -1/2).

GENERACIN DE SEALES EN TIEMPO DISCRETO CON MATLAB IMPULSO UNITARIO.- Esta seal es de suprema importancia en el anlisis de sistemas lineales con Matlab. El siguiente programa nos permite generarla, ntese que la forma de graficar una seal en tiempo discreto es usando la funcin stem en lugar de plot. Ver fig 1-8. n = -10:10; imp= zeros(1,21); imp(11) = 1; stem(n,imp) % generando 21 elementos % generando un vector con 21 ceros(matriz de 1 fila) % colocando imp(0) = 1 en la grafica.

1 V O L T I O S 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 -10

IM P ULS O UNITA RIO P A RA 21 M UE S TRA S U(n)

-8

-6

-4

-2

4 F IG 1-8

10

M UE S TRA S

EXPONENCIAL DECRECIENTE-.El siguiente programa genera y grafica una exponencial decreciente . ver figura 1-9 Fm = 20 ; % fm es 20 muestras /segundo n = 0:50; %se van a graficar 51 muestras v = 5*exp(-n/(Fm*0.5)); stem(n,v);

E XP O NE NCIA L E N TIE M P O DIS CRE TO 5 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0

V O L T

10

15

20

25

30

35 F IG 1-9

40

45

50

M UE S TRA S

3. GENERACIN DE SEALES CON MICROCONTROLADOR PIC Aqu se pretende disear el hardware y el software necesario para producir una onda seno con un microcontrolador PIC16F84 de Microchip y un conversor digital / anlogo DAC0808 de National Semiconductor, como se ve en la figura 1-10.

Figura 1-10.
10

Dado que con el conversor DAC0808 no es posible producir voltajes negativos vamos a producir la onda seno montada sobre un nivel DC de dos voltios, dicha onda se generar con una frecuencia de 100 Hz, con una frecuencia de muestreo de 10.000 muestras/segundo. La amplitud de la onda seno ser de 2 voltios de tal forma que la ecuacin analtica ser: V(n) = 2*sin(2*pi*100*n/10000) + 2 de donde la frecuencia digital ser f = 100/10000 = 1/100 de donde el periodo mnimo de esta seno es N = 100. Es decir, necesitamos generar una tabla de 100 valores los cuales pueden ser obtenidos con el siguiente programa en Matlab: n = 0:99 v = 2*sin(2*pi*n/100)+2 %estos 100 valores se muestran en tabla 1-1

2 3.1756 3.9021 3.9021 3.1756 2.0000 0.8244 0.0979 0.0979 0.8244

2.1256 3.2748 3.9372 3.8596 3.0717 1.8744 0.7252 0.0628 0.1404 0.9283

2.2507 3.3691 3.9646 3.8097 2.9635 1.7493 0.6309 0.0354 0.1903 1.0365

2.3748 3.4579 3.9842 3.7526 2.8516 1.6252 0.5421 0.0158 0.2474 1.1484

2.4974 3.5410 3.9961 3.6887 2.7362 1.5026 0.4590 0.0039 0.3113 1.2638

2.6180 3.6180 4.0000 3.6180 2.6180 1.3820 0.3820 0 0.3820 1.3820

2.7362 3.6887 3.9961 3.5410 2.4974 1.2638 0.3113 0.0039 0.4590 1.5026

2.8516 3.7526 3.9842 3.4579 2.3748 1.1484 0.2474 0.0158 0.5421 1.6252

2.9635 3.8097 3.9646 3.3691 2.2507 1.0365 0.1903 0.0354 0.6309 1.7493

3.0717 3.8596 3.9372 3.2748 2.1256 0.9283 0.1404 0.0628 0.7252 1.8744

TABLA 1-1 DATOS ALMACENADOS EN ORDEN POR FILAS Como se puede ver en la figura 1, el voltaje de referencia del conversor es 5.1 voltios, por lo tanto la resolucin es: Resolucin = 5.1/(2exp(8) 1) = 5.1/(256 1) voltios/pasos = 0.02 voltios/paso Luego el equivalente digital de los valores de la tabla 1-1 , se calculan tomando el entero mas cercano de la divisin entre el valor correspondiente de la tabla 1-1 y la resolucin.
11

De tal forma que si el valor es 2 entonces el equivalente digital es: Valor digital = 2/resolucin = 2/ 0.02 = 100 y as para todos los valores, obtenindose los valores de la tabla 1-2.Estos valores son los que deben entregarse al DAC0808. 100 159 195 195 157 100 41 5 5 41 106 164 197 193 154 94 36 3 7 46 113 119 125 131 137 143 168 173 177 181 184 188 198 199 200 200 200 199 190 188 184 181 177 173 148 143 137 131 125 119 87 81 75 69 63 57 32 27 23 19 16 12 2 1 0 0 0 1 10 12 16 19 23 27 52 57 63 69 75 81 TABLA 1-2 VALOR DIGITAL DE la tabla 1-1 148 190 198 168 113 52 10 2 32 87 154 193 197 164 106 46 7 3 36 94

Lo que nos queda ahora es escribir un programa en microcontrolador PIC, que entregue los datos de la tabla 1-2, a una rata de 10.000 muestras/segundo. Para esto vamos a generar una interrupcin de sobreflujo del timer cada 100 microsegundos, que es el tiempo de muestreo a esta velocidad. Supngase que el cristal opera a 4 MHz, o sea que la frecuencia bsica de operacin es 1 MHz. Si los bits PS2, PS1 y PS0 del registro OPTION se cargan con 001 respectivamente y se escoge el modo de preescala para el TMR0, ste se va a incrementar cada 4 microsegundos, o sea que se necesitara 25 cuentas del timer para temporizar 100 microsegundos. Como la interrupcin del timer de 8 bits ocurre en la cuenta 256, entonces la carga inicial del timer debe ser 256 25 = 231. El registro INTCON del PIC debe cargarse con 0A0h para habilitar la interrupcin de sobreflujo del timer. El programa siguiente especifica el cdigo detallado para obtener el objetivo propuesto. ;****************************************************************************************** ;EL SIGUIENTE PROGRAMA GENERA UNA ONDA SENOIDAL DE 100 HZ ;DE 2 VOLTIOS PICOS MONTADA SOBRE UN NIVEL DC DE 2 VOLTIOS ;CON UNA FRECUENCIA DE MUESTREO DE 10.000 M/S UTILIZANDO ;INTERRUPCIONES, PARA EL HARDWARE DE LA FIG 1. ;****************************************************************************************** TMR0 EQU 1 PCL EQU 2 APUNT EQU 0 ;APUNTA EL ENCABEZADO DE LA TABLA 1-2 INTCON EQU 0BH ;REGISTRO QUE CONFIGURA INTERRUPCIONES. STATUS EQU 03H
12

PTOA PTOB RP0

EQU EQU EQU

5H 6H 5

;AQUI SE CONECTA LAS ENTRADAS DEL DAC0808.

list p=16f84A CP_ON CP_OFF PWRTE_ON PWRTE_OFF WDT_ON WDT_OFF LP_OSC XT_OSC HS_OSC RC_OSC EQU H'000F' EQU H'3FFF' EQU H'3FF7' EQU H'3FFF' EQU H'3FFF' EQU H'3FFB' EQU H'3FFC' EQU H'3FFD' EQU H'3FFE' EQU H'3FFF'

__CONFIG CP_OFF & WDT_OFF & XT_OSC & PWRTE_ON ORG 0 GOTO INICIO ORG 4 ;********************************************************************************* ;LA SIGUIENTE ES LA RUTINA DE SERVICIO DE INTERRUPCIONES ;********************************************************************************** INTERRUP: MOVLW .231 ; INICIALIZANDO TIMER MOVWF TMR0 MOVF APUNT,0 CALL TABLA ;SACA EL SIGUIENTE DATO MOVWF PTOB ;Y LO LLEVA AL DAC0808 INCF APUNT ;APUNTA SIGUIENTE DATO MOVLW .100 ;ES EL ULTIMO DATO DE TABLA? XORWF APUNT,0 BTFSS STATUS,2 GOTO FINAL BCF INTCON,2 CLRF APUNT ;VUELVE A EMPEZAR LA TABLA. RETFIE FINAL: BCF INTCON,2 RETFIE

13

;******************************************************************************* ;EL SIGUIENTE CODIGO ARMA LOS DATOS DE LA TABLA 1-2 ;******************************************************************************** TABLA ADDWF PCL,1 RETLW .100 RETLW .106 RETLW .113 RETLW .119 RETLW .125 RETLW .131 RETLW .137 RETLW .143 RETLW .148 RETLW .154 RETLW .159 RETLW .164 RETLW .168 RETLW .173 RETLW .177 RETLW .181 RETLW .184 RETLW .188 RETLW .190 RETLW .193 RETLW .195 RETLW .197 RETLW .198 RETLW .199 RETLW .200 RETLW .200 RETLW .200 RETLW .199 RETLW .198 RETLW .197 RETLW .195 RETLW .193 RETLW .190 RETLW .188 RETLW .184 RETLW .181 RETLW .177 RETLW .173 RETLW .168 RETLW .164 RETLW .159 RETLW .154 RETLW .148 RETLW .143 RETLW .137
14

RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW

.131 .125 .119 .113 .106 .100 .94 .87 .81 .75 .69 .63 .57 .52 .46 .41 .36 .32 .27 .23 .19 .16 .12 .10 .7 .5 .3 .2 .1 .0 .0 .0 .1 .2 .3 .5 .7 .10 .12 .16 .19 .23 .27 .32 .36 .41 .46 .52
15

RETLW RETLW RETLW RETLW RETLW RETLW RETLW INICIO: MOVLW MOVWF BSF MOVLW MOVWF CLRF BCF MOVLW MOVWF CLRF

.57 .63 .69 .75 .81 .87 .94 0A0H INTCON STATUS,RP0 1 TMR0 PTOB STATUS,RP0 .231 TMR0 APUNT ; INICIALIZANDO INTERRUPCIONES ; CAMBIANDO PAGINA1 ; TIMER 1:4 ; PTOS SALIDA ;INICIALIZANDO TIMER ;APUNTA INICIO TABLA ;ESPERANDO 100 MICROSEG. ESPERE

ESPERE: NOP NOP NOP GOTO END

********************************** EJERCICIOS: 1) Escribir un programa en Matlab para generar y graficar las siguientes seales escaln unitario desplazados: u(n-5) ,u(n-15), u(n+10) y u(n-2) , con 41 puntos. 2) Escribir un programa en Matlab para graficar 3 periodos de la seal de la fig 1-9 3) Escribir un programa en Matlab de tal forma que contenga una grafica y 3 botones rotulados SENO, TRIANGULAR y CUADRADA, de tal forma que al oprimir el botn respectivo aparezca en la grafica un perodo de la seal correspondiente. 4) Indicar cul de las siguientes seales en tiempo discreto es peridica, y de la que sea peridica indicar el periodo. Explique su respuesta: a. 3cos(5t +pi/6) b. cos(n/8)cos(pi*n/8) c. cos(pi*n/2) - sen(pi*n/8) + 3cos(pi*n/4 +pi/3) 5) Considere la siguiente seal sinusoidal analgica: x(t) = 3sen(100*pi*t). a. Dibuje la seal x(t) para 0 t 30 ms (en Matlab) b. La seal x(t) se muestrea con una tasa Fs = 300 muestras/s. Determine la frecuencia de la seal en tiempo discreto y demuestre que es peridica. c. Calcule los valores de las muestras de un periodo de x(n). Dibuje x(n) en el mismo diagrama de x(t). (En Matlab)
16

6) Por un enlace de comunicaciones digitales se transmiten palabras codificadas en binario que representan muestras de la seal de entrada: x(t)=3cos600*pi*t+2cos1800*pi*t. El enlace trabaja a 10.000 bits/seg y cada muestra de entrada es cuantificada con 1024 niveles de tensin diferentes. a) Cul es la frecuencia de muestreo y la mxima que no produce ambigedad al recuperar la seal original? b) Cul es la tasa de Nyquist para la seal x(t)? c) Cules son las frecuencias de la seal resultante en tiempo discreto x(n)? d) Cul es la resolucin? 7) Modificar el programa, escrito en ensamblador para PIC, de la sesin 3, conjuntamente con el hardware de la fig 1-10 para producir simultneamente 2 ondas seno con la misma frecuencia y las siguientes diferencias de fase al oprimir las teclas 1,2,3 (de un teclado que debe adicionrsele al hardware): a) 30 grados (al oprimir tecla 1) b) 45 grados (al oprimir tecla 2) c) 60 grados (al oprimir tecla 3) Nota: El programa solo debe contener una nica tabla de valores.

17

S-ar putea să vă placă și