Está en la página 1de 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

S E G UNDO S

0.005

0.006

0.007

0.008

0.009

0.01

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

V O LTIO S

0.2
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

O NDA S E NO + RUIDO

1.5
1
0.5
0
-0.5
-1
-1.5
-2
-2.5

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

V O LTIO S

0.5

-0.5

-1

-1.5

-2

0.01

0.02

0.03

0.04
S E G UNDO S

0.05

0.06

0.07

0.08

0.07

0.08

FIG 1-5

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

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

-0.5

-1

-1.5

-2

0.01

0.02
0.03
S E G UNDO S

0.04

0.05

0.06

FIG 1-6

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

M UE S TRA S

Figura 1-7

10

FIG URA 2

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.

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

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

-8

-6

-4

-2

M UE S TRA S

10

F IG 1-8

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

V
O
L
T

4.5
4
3.5
3
2.5
2
1.5
1
0.5
0

10

15

20

25

M UE S TRA S

30

35

40

45

50

F IG 1-9

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

.131
.125
.119
.113
.106
.100
.94
.87
.81
.75
.69

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

.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

INICIO:

RETLW
RETLW
RETLW
RETLW
RETLW
RETLW
RETLW

.57
.63
.69
.75
.81
.87
.94

MOVLW
MOVWF
BSF
MOVLW
MOVWF
CLRF
BCF
MOVLW
MOVWF
CLRF

0A0H
INTCON
STATUS,RP0
1
TMR0
PTOB
STATUS,RP0
.231
TMR0
APUNT

ESPERE: NOP
NOP
NOP
GOTO
END

; INICIALIZANDO INTERRUPCIONES
; CAMBIANDO PAGINA1
; TIMER 1:4
; PTOS SALIDA
;INICIALIZANDO TIMER
;APUNTA INICIO TABLA
;ESPERANDO 100 MICROSEG.

ESPERE

**********************************
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

También podría gustarte