You are on page 1of 70

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

1. DATOS INFORMATIVOS
a. MATERIA / CTEDRA RELACIONADA: Procesamiento Digital de seales
b. No. DE PRCTICA: 1
c. NMERO DE ESTUDIANTES POR MDULO: 3
d. NOMBRE INSTRUCTOR:
e. TIEMPO ESTIMADO: 2 horas

2. DATOS DE LA PRCTICA
a. TEMA: Muestreador Retenedor
b. OBJETIVO GENERAL:
Implementar un muestreado y retenedor, que permita comprender la
diferencia entre una seal analgica con infinitas muestras y una seal
digital con un numero de muestras finito.
c. OBJETIVOS ESPECIFICOS
Observar la forma de onda de la seal que se obtiene al pasar por un
muestreador retenendor a diferentes frecuencias de muestreo
Observar el espectro de frecuencia de la seal muestreada a distintas
frecuencias.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

Pgina 1 de -

REVISION 1/1

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

d. MARCO TERICO
Las seales analgicas tienen un nmero infinito de muestras, los
procesadores sean estos computadoras personales, microcontroladores,
FPGA, no pueden procesar una seal con un nmero infinito de muestras
debido a que se necesitara una memoria infinita para almacenar todas las
muestras y lso clculos requeriran una fuente de energa muy grande.
EL muestreo resuelve este problema tomando un nmero de muestras
finito de una seal analgica que tiene un nmero infinito de muestras en
un intervalo de tiempo fijo, el intervalo de muestreo o periodo de muestreo
se denota como Ts ( time of sampling)
X(T)

2T

3T

4T

5T

6T

7T

8T

Nt

Cada muestra de la seal debe mantener su nivel durante un intervalo T de


muestreo para que el conversor analgico digital (ADC) pueda tomar el
valor de la muestra y convertirlo en un valor digital. Este proceso se conoce
como muestro retencin (simple & hold).

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

Pgina 1 de -

REVISION 1/1

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

x(t)

2T

3T

4T

5T

6T

7T

8T

nT

En la presente prctica se implementa un muestreador-retenedor, basado


en el trnasitor JFET canal N (BS170), el cual e sutilizado como un
conmutador, al recibir una seal cuadrada en la compuerta G, si el valor del
pulso es 1 lgico dejara pasar la seal que ingresa por el drenaje D, caso
contrario no existir seal en el source, para lograr mantener el nivel de la
seal se utiliza un capacitor en este caso de 0.1 uF, con el cual se mantiene
el nivel de voltaje hasta que el JFET permite el ingreso de otro valor de la
seal anloga muestreada, la resitencia de 10 kiloohms es utilizada para
proteger el amplificador operacional de la corriente de la seal
muestreada, se ha utilizado un circuito seguidor de tensin con
amplificador operacional (TL081) con esto se asegura que la seal
muestreada pueda ser observada mediante un osciloscopio en la resitencia
de 10 kiloohms.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

Pgina 1 de -

REVISION 1/1

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

e. MARCO PROCEDIMENTAL
1. Implementar en protoboard el siguiente circuito, la seal de entrada es
Vin = 5 sen(21000t).
VCC
15V

Q1
BS170

R1

10k
C1
0.1F

V1
5 Vpk
1kHz
0

V2

U1

3
6
2

TL081ACD

10V -10V
20kHz
VEE
-15V

2. Observar la seal de entrada V1 y la seal de salida Vo en el canal 1 y el canal 2 del


osciloscopio respectivamente para las siguientes frecuencias de muestreo utilizando el
generador V2 es :
a.
b.
c.
d.
e.

Fs= 1 Khz
Fs= 5 Khz
Fs= 10 Khz
Fs= 20 Khz
Fs = 50 Khz

3. Observar el espectro de frecuencia de la seal V1 y la seal Vo para todas las frecuencias


de muestreo del numeral 2. Utilizar el botn math y luego escoger la operacin
matemtica FFT.
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

R2
10k

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

4. Tomar fotografa de cada seal observada en el punto 2 y 3.

f. RECURSOS UTILIZADOS (EQUIPOS, ACCESORIOS Y MATERIAL CONSUMIBLE)


Osciloscopio, generador y fuente DC.
g. REGISTRO DE RESULTADOS
Seal de entrada

Seal de salida muestreada a f= 1 KHZ

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

Seal de salida muestreada a f= 5 KHZ

Seal de salida muestreada a f= 10 KHz

Seal de salida muestreada a f= 20 KHz

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

Seal de salida muestreada a f= 50 KHZ

Espectro de frecuencia seal muestreada a f= 1 khz

Espectro de frecuencia seal muestreada a f= 5 khz

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

Espectro de frecuencia seal muestreada a f= 10 khz

Espectro de frecuencia seal muestreada a f= 20 khz

Espectro de frecuencia seal muestreada a f= 50 khz

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

h. PREGUNTAS.
Que diferencia existe al muestrear las seales de 5Khz, 20Khz y
50Khz?
Que sucede si se reduce la frecuencia de muestreo a 5Khz?
Que funcin realiza el amplificador operacional?
Que funcin hace el capacitor en el circuito?
i.

ANEXOS

j.

BIBLIOGRAFA UTILIZADA
Mitra,S (2010).Digital Signal processing , 4/E.McGraw Hill.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

1. DATOS INFORMATIVOS
a. MATERIA / CTEDRA RELACIONADA: Procesamiento Digital de seales
b. No. DE PRCTICA: 2
c. NMERO DE ESTUDIANTES POR MDULO: 3
d. NOMBRE INSTRUCTOR:
e. TIEMPO ESTIMADO: 2 horas

2. DATOS DE LA PRCTICA
a. TEMA: Filtro Antialiasing
b. OBJETIVO GENERAL:
Implementar un filtro antialiasing que pueda ser utilizado a la entrada de
un sistema DSP para minimizar los efectos del aliasing por causa del
muestreo de la seal analgica.
c. OBJETIVOS ESPECIFICOS
Observar la forma de onda de la seal que se obtiene al pasar por un filtro
antialiasing a diferentes frecuencias de la seal de entrada
Medir los valores de voltaje pico de entrada y salida para distintas
frecuencias y con estas mediciones elaborar el diagrama de bode del filtro.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

d. MARCO TERICO
Las seales analgicas que van a ser convertidas en digitales tiene que
ingresar sin ruido provocado por seales de alta frecuecia, para satisfacer el
teorema del muestreo se utiliza un filtro antialiasing pasabajos.
Se recomienda utilizar un filtro antialiasing pasabajos cuya frecuencia de
corte sea mximo la mitad de la frecuencia de muestreo para adquirir la
seal y evitar los efectos del aliasing.
Al muestrear una seal peridica senoidal se puede producir el efecto que
se han tomado un nmero insuficiente de muestras, lo que al momento de
recosntruir la seal provoque que se genere una sela peridica senoidal
con una frecuencia menor a la de la sela muestreada, creando de esta
forma una seal alias de la seal original.

En la presente prctica se implementa un filtro de primer orden cuya


frecuencia de corte es de 1 Kilohertz, la seal de entrada que debe ser
aplicada es de 2.5 Vp y 2.5 voltios de offset, se debe medir el voltaje de
salida del filtro para las frecuencias: 100,200, 300, 400, 500, 1000, 2000,
3000, 4000, 5000, 10000 y 100000 Hertz, para obtener la seal de salida y
posteriormente generar el diagrama de bode. Se utiliza un amplificador
operacional TL081 para la implementacin del filtro.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

Para determinar la frecuencia del filtro se utiliza la siguiente ecuacin:


1
f=
2
Se asume el valor del capacitor en este caso de 100 nanofaradios y con la
frecuencia se calcula el valor de la resistencia, utilizar la Resistencia ms
cercana que existe en el mercado

e. MARCO PROCEDIMENTAL
1. Disear un filtro antialising de primer orden para una frecuencia de 2 Kilohertz, utilizando
un amplificador TL081.

2. Mediante el osciloscopio observar en el canal 1la seal del generador senoidal cuyo
voltaje es 2.5 Vp una frecuencia de 100 Hz.
3. Conectar la seal del generador a la entrada del filtro y observar la salida en el canal 2.
4. Repetir el paso 4, para las frecuencias de 200, 300, 400, 500, 1000, 2000, 3000, 4000,
5000, 10000 y 100000 Hz.
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

Pgina 1 de -

REVISION 1/1

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

f. RECURSOS UTILIZADOS (EQUIPOS, ACCESORIOS Y MATERIAL CONSUMIBLE)


Osciloscopio, generador y fuente DC.
g. REGISTRO DE RESULTADOS
Frecuencia (Hz)
100
200
300
400
500
1000
2000
3000
4000
5000
10000
100000

Vin (voltaje de entrada)

Vo (voltaje de salida)

h. PREGUNTAS
Disear un filtro antialising de primer orden pasa altos para una
frecuencia de 2Khz.
Cul debe ser el voltaje de salida para una atenuacin de -3db?
Qu pasa si se coloca una carga menor a 2 kilo ohmios?

i.

ANEXOS

j.

BIBLIOGRAFA UTILIZADA
Mitra,S (2010).Digital Signal processing , 4/E.McGraw Hill.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

3. DATOS INFORMATIVOS
a. MATERIA / CTEDRA RELACIONADA: Procesamiento Digital de seales
b. No. DE PRCTICA: 3
c. NMERO DE ESTUDIANTES POR MDULO: 3
d. NOMBRE INSTRUCTOR:
e. TIEMPO ESTIMADO: 2 horas

4. DATOS DE LA PRCTICA
a. TEMA: Adquision y reconstruccin de una seal con microcontrolador PIC
18F452
b. OBJETIVO GENERAL:
Implementar un sistema de adquisicin y reconstruccin de la seal con
microcntrolador PIC 18F452 .
c. OBJETIVOS ESPECIFICOS
Implementar un filtro antialiasing y antiimagen, que permitan adquirir una
seal analgica y luego reconstruirla.
Implementar un conversor digital anlogo (DAC) tipo R-2R de 10 bits.
Implementar el cdigo en el microcontrolador PIC 18f452 que permita
adquirir y reconstruir una seal anloga

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

d. MARCO TERICO
Una de las formas de implementacin de sistema de adquisicin y
reconstruccin de una seal es el uso de microcontroladores, en esta
prctica se utiliza el mcirocntrolador 18F452, por la velocidad que puede
alcanzar. La frecuencia de muestreo es de 1.2 kilohertz, aunque no es una
frecuencia de muestreo elevado, sin embargo para aplicaciones como
filtrado de seales biomdicas, por ejemplo la seal del electrocardiograma
(ECG) se encuentra en un rango entre 60 Hz y 100 Hz, es suficiente esta
frecuencia de muestreo.
Para su implementacin se debe utilizar un filtro antialiasing a la mitad de
la frecuencia de muestreo, por lo cual se implementara un filtro pasabajos
de primer orden con amplificador operacional a la frecuencia de 600 Hz.
Posteriormente se debe adaptar la seal para que pueda ingresar al
microncontrolador, debido a que el canal analgico del mcirocntrolador
18F452 solo acepta voltajes en el rango entre 0 voltios y 5 voltios.
A la salida del microcontrolador se implementara una red R-2R y se aadir
un filtro anti-imagen

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

U1(RA0/AN0)

10k

20k

R21

R13

10k

20k

20k

R12

R3

R2

10k

R1

10k

R14

20k

R4
20k

R5

10k

R15

20k

R6

10k

R16

33
34
35
36
37
38
39
40

2
3
4
5
6
7
14

20k

R7

10k

R17

PIC18F452

20k

R8

8
9
10

19
20
21
22
27
28
29
30

15
16
17
18
23
24
25
26

20k

R9

10k

R18

RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2A
RC2/CCP1
RA0/AN0
RC3/SCK/SCL
RA1/AN1
RC4/SDI/SDA
RA2/AN2/VREFRC5/SDO
RA3/AN3/VREF+
RC6/TX/CK
RA4/T0CKI
RC7/RX/DT
RA5/AN4/SS/LVDIN
RA6/OSC2/CLKO
RD0/PSP0
RD1/PSP1
RB0/INT0
RD2/PSP2
RB1/INT1
RD3/PSP3
RB2/INT2
RD4/PSP4
RB3/CCP2B
RD5/PSP5
RB4
RD6/PSP6
RB5/PGM
RD7/PSP7
RB6/PGC
RB7/PGD
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7

OSC1/CLKI
MCLR/VPP

U1

10k

R19

20k

R10

LM358N

U2:A

10k

R22

U2:A(V+)

10k

R20

20k

R11

LABORATORIO
CARRERA
SEDE

13
1

REVISION 1/1
Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS

Procesamiento Digital de seales


Ingeniera Electronica
Quito

e. MARCO PROCEDIMENTAL

1. Implementar un filtro antialiasing pasa bajo con frecuencia de 4 khz. A cual ingresa la seal

Vin=2.5sin(2ft)+2.5.

2. Conectar la salida del filtro con acoplamiento al siguiente circuito con microcontrolador

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

3. Observar la seal de entrada en el canal 1 y la seal de salida del amplificador operacional


LM358 ene l canal 2
4. Implementar un filtro RC a la salida del LM358 y observar la salida en el osciloscopio canal
2
5. Incrementar la frecuencia hasta detectar la mxima frecuencia que se puede reconstruir la
seal, esto ocurrir cundo Vo= 0.707 Vin

f. RECURSOS UTILIZADOS (EQUIPOS, ACCESORIOS Y MATERIAL CONSUMIBLE)


Osciloscopio, generador y fuente DC.
g. REGISTRO DE RESULTADOS
Imagen de la Seal de entrada a 100
Hz

Imagen de la Seal de salida a 100 Hz


A la salida del LM358

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

Imagen de seal a la salida del filtro


antiimagen RC

Imagen de la seal de entrada y


salida a la mxima frecuencia que
puede ser adquirida la seal

h. PREGUNTAS
Porque se puede obtener la seal de entrada con un generador?
A qu frecuencia se produce el aliasing?
Cul es la frecuencia mxima a la que se puede reconstruir la seal
adecuadamente?
i.

ANEXOS

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

5. Fusibles del proyecto

Cdigo del programa en Microc

// Programa ADC 10bits


// Declaracion de variables
//
float x0,y0;
unsigned int YY;
//Interupciones
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

void interrupt (void)


{
if (intcon.F2)
{
TMR0L=135; cambiar a 225
// Fs=1291.3
// adquisicion de muestra de 10 bits en x[0]
x0=(float)(ADC_Read(0)-512.0);
//
//
//Teimpo para el procesamiento
//recosntruccion de la seal
YY=(unsigned int) (x0+512);
PORTC=(YY>>8)&3;
PORTB=YY&255;
INTCON.F2=0;
}
}
void main() {
TRISB=0;
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

PORTB=0;
TRISC=0;
PORTC=0;
//Configuracin interrupcion TIMER0
INTCON=0b10100000;
T0CON=0b11000101;
while(1)
//Bucle infinito
{
//
}
}

a. BIBLIOGRAFA UTILIZADA
Mitra,S (2010).Digital Signal processing , 4/E.McGraw Hill.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

3. DATOS INFORMATIVOS
a. MATERIA / CTEDRA RELACIONADA: Procesamiento Digital de seales
b. No. DE PRCTICA: 4
c. NMERO DE ESTUDIANTES POR MDULO: 3
d. NOMBRE INSTRUCTOR:
e. TIEMPO ESTIMADO: 2 horas

4. DATOS DE LA PRCTICA
a. TEMA: Adquisicin y reconstruccin de seales utilizando un DSPIC
b. OBJETIVO GENERAL:
Implementar un sistema de adquisicin y reconstruccin de la seal con
microcntrolador DSPIC30F4013.
c. OBJETIVOS ESPECIFICOS
Implementar un filtro antialiasing y antiimagen, que permitan adquirir una
seal analgica y luego reconstruirla.
Implementar un conversor digital anlogo (DAC) tipo R-2R de 10 bits.
Implementar el cdigo en el microcontrolador DSPIC30F4013 que permita
adquirir y reconstruir una seal anloga

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

d. MARCO TERICO
Una de las formas de implementacin de sistema de adquisicin y
reconstruccin de una seal es el uso de microcontrolador DSP, en esta
prctica se utiliza el DSPIC30F4013, por la velocidad que puede alcanzar. La
frecuencia de muestreo es de 8000 muestras por segundo, aunque no es
una frecuencia de muestreo elevado, sin embargo para aplicaciones como
filtrado de seales de audio, por ejemplo la seal de la voz que estn entre
300 Hz y 3000 Hz, es suficiente esta frecuencia de muestreo.
Para su implementacin se debe utilizar un filtro antialiasing a la mitad de
la frecuencia de muestreo, por lo cual se implementara un filtro pasabajos
de primer orden con amplificador operacional a la frecuencia de 4000 Hz.
Posteriormente se debe adaptar la seal para que pueda ingresar al
microncontrolador, debido a que el canal analgico del DSPIC30F4013 solo
acepta voltajes en el rango entre 0 voltios y 1 voltios.
A la salida del DSPIC se utilizar el conversor digital anlogo I2C MCP4921,
con lo cual se lograr una mayor precisin de la seal reconstruida al
trabajar con 12 bits

e. MARCO PROCEDIMENTAL
1. Implementar un filtro antialiasing con acoplamiento a un microcontrolador para una
frecuencia de corte de 4000Hz.
2. Conectar la salida del filtro con acoplamiento al DSPIC como se observa en la figura.
3. Configurar el dspic para que muestre a 20khz.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

4. Observar la seal de entrada en el canal 1 y la seal de salida del DAC MCP4921.


5. Implementar un filtro RC a la salida del DAC MCP4921 y observar la salida en el
osciloscopio canal 2.
6. Incrementar la frecuencia hasta detectar la mxima frecuencia que se puede reconstruir la
seal, esto ocurrir cundo Vo= 0.707 Vin.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

f. RECURSOS UTILIZADOS (EQUIPOS, ACCESORIOS Y MATERIAL CONSUMIBLE)


Osciloscopio, generador y fuente DC.
g. REGISTRO DE RESULTADOS
Imagen de la Seal de entrada a
1000 Hz

Imagen de la Seal de salida a 1000


Hz a la salida del DAC MCP4921.

Imagen de seal a la salida del filtro


antiimagen RC

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

Imagen de la seal de entrada y


salida a la mxima frecuencia que
puede ser adquirida la seal

h. PREGUNTAS
Cul es la diferencia entre adquirir datos en 8 bits y 10 bits?
A qu frecuencia se produce el aliasing?
Cul es la frecuencia mxima a la que se puede reconstruir la seal
adecuadamente?

i.

ANEXOS

// This code was generated by filter designer tool by mikroElektronika


// Date/Time: 11/01/2014 15:25:37
// Support info: http://www.mikroe.com
// Device setup:
// Device name: P30F4013
// Device clock: 080.000000 MHz
// Dev. board: EasydsPic4A
// Sampling Frequency: 22050 Hz
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

// Filter setup:
// Filter kind: FIR
// Filter type: Lowpass filter
// Filter order: 5
// Filter window: Rectangular
// Filter borders:
//
Wpass:1000 Hz
const unsigned BUFFFER_SIZE = 32;
const unsigned FILTER_ORDER = 5;
const unsigned COEFF_B[FILTER_ORDER+1] = {
0x154E, 0x1685, 0x1724, 0x1724, 0x1685, 0x154E
};
sbit loadPin at LATF5_bit; // DAC load pin
sbit loadPinDir at TRISF5_bit; // DAC load pin
sbit csPin at LATF4_bit;
// DAC CS pin
sbit csPinDir at TRISF4_bit; // DAC CS pin

unsigned inext;
// Input buffer index
ydata unsigned input[BUFFFER_SIZE]; // Input buffer, must be in Y data space
/* This is ADC interrupt handler.
Analog input is sampled and the value is stored into input buffer.
Input buffer is then passed through filter.
Finally, the resulting output sample is sent to DAC.
*/
void ADC1Int() org IVT_ADDR_ADCINTERRUPT { // ADC interrupt handler
unsigned CurrentValue;
input[inext] = ADCBUF0;
// Fetch sample
CurrentValue = FIR_Radix(FILTER_ORDER+1,// Filter order
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

COEFF_B, // b coefficients of the filter


BUFFFER_SIZE, // Input buffer length
input,
// Input buffer
inext);
// Current sample
inext = (inext+1) & (BUFFFER_SIZE-1); // inext = (inext + 1) mod BUFFFER_SIZE;
csPin = 0;
// CS enable for DAC
SPI1BUF = 0x3000 | CurrentValue;
// Write CurrentValue to DAC (0x3 is required
by DAC)
while (SPITBF_bit)
// Wait for SPI module to finish write operation
asm nop;
loadPin = 0;
Delay_us(2);
loadPin = 1;

// Load data in DAC

csPin = 1;

// CS disable for DAC

ADIF_bit = 0;
}//~

// Clear AD1IF

/* This is Timer1 interrupt handler.


It is used to start ADC at periodic intervals.
*/
void Timer1Int() org IVT_ADDR_T1INTERRUPT { // Timer1 interrupt handler
if (DONE_bit){
// If ADC is not busy
SAMP_bit = 1;
// Start new sample
}
LATD = PORTD ^ 0xFFFF;
// You can put oscilloscope on PORTD
// to measure sampling frequency
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

T1IF_bit = 0;
}//~
/* The main program starts here.
Firstly, hardware peripherals are initialized and then
the program goes to an infinite loop, waiting for interrupts. */
void main() {
TRISD = 0;
// DAC setup
loadPinDir = 0;
// LOAD pin
csPinDir = 0;
// CS pin
csPin = 1;
// Set CS to inactive
loadPin = 1;
// Set LOAD to inactive
// SPI setup
SPI1_Init_Advanced(_SPI_MASTER, _SPI_16_BIT, _SPI_PRESCALE_SEC_1,
_SPI_PRESCALE_PRI_1,
_SPI_SS_DISABLE, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_HIGH,
_SPI_ACTIVE_2_IDLE);
inext = 0;
// Initialize buffer index
Vector_Set(input, BUFFFER_SIZE, 0); // Clear input buffer
TRISB = 0xFFFF;
ADCON1 = 0x00E2;
ADCON2 = 0x0000;
ADCON3 = 0x021A;
ADPCFG = 0x0000;
ADCHS = 0x000A;
ADCSSL = 0;
ADPCFG = 0x0000;

// Use PORTB for input signal


// Auto-stop sampling, unsigned integer out
// Sampling time= 3*Tad, minimum Tad selected
// Configure PORTB as ADC input port
// Sample input on RB10
// No input scan
// Configure PORTB as analog ADC input port

// Interrupts setup
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

IFS0 = 0;
IFS1 = 0;
IFS2 = 0;
NSTDIS_bit = 1;
INTCON2 = 0;
T1IE_bit = 1;
ADIE_bit = 1;
T1IP0_bit = 1;
ADIP1_bit = 1;
PR1
= 0x038B;
80MHz clock.
TON_bit = 1;
ADON_bit = 1;
SAMP_bit = 1;
while (1);

// Clear interrupt flags


// Clear interrupt flags
// Clear interrupt flags
// Nested interrupts DISABLED
// Other interrupt settings
// Timer1 and
// ADC interrupts ENABLED
// Timer1 interrupt priority level = 1
// ADC interrupt priority level = 1
// Sampling ~= 80 kHz. The value of 250 is calculated for
// Start Timer1, internal clock FCY, prescaler 1:1
// ADC On
// Start Sampling
// Infinite loop,
// wait for interrupts

}//~!

j.

BIBLIOGRAFA UTILIZADA
Mitra,S (2010).Digital Signal processing , 4/E.McGraw Hill.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

5. DATOS INFORMATIVOS
a. MATERIA / CTEDRA RELACIONADA: Procesamiento Digital de seales
b. No. DE PRCTICA: 5
c. NMERO DE ESTUDIANTES POR MDULO: 3
d. NOMBRE INSTRUCTOR:
e. TIEMPO ESTIMADO: 2 horas

6. DATOS DE LA PRCTICA
a. TEMA: Transformada rpida de Fourier.
b. OBJETIVO GENERAL:
Implementar la transformada rpida de Fourier mediante el DSPIC30F4013.
c. OBJETIVOS ESPECIFICOS
Adquirir una seal con el DSPIC30F4013 en el rango de las frecuencias de
voz.
Observar en una GLCD la amplitud del espectro de frecuencia de la seal
adquirida.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

d. MARCO TERICO
La transformada rpida de Fourier (FFT) es un algoritmo que permite
obtener la transformada discreta de Fourier (DFT) de una secuencia
muestreada, que se ha obtenido de una seal analgica peridica. Por
facilidad se analiza seales peridicas, por tanto este algoritmo no utiliza
ventanas para evitar el manchado espectral.
Dado que los componentes de la FFT son nmeros complejos, para
determinar la amplitud del espectro de la seal es necesario determinar el
valor absoluto de los coeficientes complejos adems que estos deben ser
divididos para el nmero de muestras que toma el microcontrolador
DSPIC30F4013.
En la figura se puede observar una seal en el dominio del tiempo y la
misma seal en el dominio de la frecuencia
V
A

t
f

En la presente prctica se toma una seal analgica sinodal de frecuencia 1


KHz, esta es adquirida y procesada por el microcontrolador DSPIC30F4013
para obtener la FFT de la seal y posteriormente la amplitud del espectro,
esta amplitud es graficad en un GLCD donde adems se puede observar al
frecuencia de las seal anlizada, esta prctica permite analizar seales de
voz, incrementando el cristal del DSPIC se puede analizar la amplitud del
espectro de seales de audio, con lo cual se comprueba la facilidad de
implementar con los DSPIC un analizador de espectros en un rango de
seales de voz.
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

e. MARCO PROCEDIMENTAL
1. Implementar el siguiente circuito

2. Mediante el generador se seales generar una onda triangular a la


frecuencia de 1KHz y observar la seal en el osciloscopio.
3. Conectar el generador de seales al DSPIC30F4013 y observar la
amplitud del espectro de frecuencia y la frecuencia de la seal en el
GLCD.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

f. RECURSOS UTILIZADOS (EQUIPOS, ACCESORIOS Y MATERIAL CONSUMIBLE)


Osciloscopio, generador y fuente DC.
g. REGISTRO DE RESULTADOS
Seal de entrada

Seal de salida que se observa en el GLCD.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

h. PREGUNTAS
Qu diferencia hay entre una transformada de Fourier senoidal y
triangular?
Explique cmo grafica las frecuencias el GLCD?
Grafique la seal cuya magnitud de frecuencia tenga un pico en 0 hz.

i.

ANEXOS

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

program FFT_123
dim Samples as word[256] absolute $0C00 ' Y data space for P30F4013- required by FFT routine
Ver la hojas de datos de nuestro DSPIC y vemos los Y limites espacios de memoria
freq as word ' Variables Auxiliares
txt as string[5]
Written as word[64]
Inicializacin del conversor AD
sub procedure InitAdc
ADPCFG = 0x00FF ' PORTB es la entrada anloga
ADCHS = 8 ' Conectar RBxx/Anxx como entrada CH8. RB8 es el pin de la entrada
ADCSSL = 0 '
Universidad Politcnica Salesiana
12
ADCON3 = $1F3F ' sample time = 31 Tad.
ADCON2 = 0
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

ADCON1 = $83E0 ' activar el ADC


TRISB.8 = 1 ' RB8 como pin de entrada AD
end sub
'Inicializar el GLCD para el programador EasydsPIC4
sub procedure InitGlcd
Glcd_Init_EasydsPIC4()
Glcd_Set_Font(@FontSystem5x8, 5, 8, 32)
Glcd_Fill(0xAA) ' Show stripes on GLCD to signalize startup
Delay_ms(500) ' Retardo
Glcd_Fill(0x00) ' Borrar la pantalla
end sub
' Iniciar Main
sub procedure MainInit
InitAdc
InitGlcd
Vector_Set(Written, 64, $FFFF) ' Llenar "Written" con $FFFF
Glcd_Write_Text(" Hz", 100, 0, 1)
end sub
Funcin auxiliar para convertir 1.15 en punto base de tipo float (necesita para sacar la raiz
cuadrada).
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

sub function Fract2Float(dim input_ as integer) as float


if (input_ < 0) then
input_ = - input_
end if
result = input_/32768.
end sub
' Datos de salida de la sub rutina . estos datos de la sub rutina sern dibujados en el GLCD.
'GLCD coordina el sistema y empieza en la esquina superior izquierda, Por tanto
'el dibujo de la lnea tuvo que ser modificada a fin de lograr
' un espectro visible en la pantalla
'Muestra en ese momento contiene DFT de la seal en la manera Re, Im, Re, Im...
sub procedure WriteData
dim Re, Im, tmpw,
j, k, l, max as word
Rer, Imr, tmpR as float
j = 0 ' Si desea omitir la componente DC luego hacer j> = 1
k=0
max = 0
freq = 0 ' Resetear la corriente mxima . Frecuencia para una nueva lectura
while k <= 63
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

Re = Samples[j] ' Parte real de la muestra de la TF


inc(j)
Im = Samples[j] ' Parte imaginaria de la m uestra de la TF
inc(j)
Rer = Fract2Float(Re) ' convertir a IEEE punto flotante
Imr = Fract2Float(Im) ' convertir a IEEE punto flotante
tmpR = Rer * Rer ' Re^2
Rer = tmpR
tmpR = Imr * Imr ' Im^2
Imr = tmpR
tmpR = sqrt(Rer + Imr) ' Amplitud de la corriente de la muestra de la TF
Rer = tmpR*256. ' DFT is scaled down by 1/N, we need to
' tomarlo de Nuevo a fin de tener componentes visibles
' en el GLCD
Re = Rer
if Re > 63 then
if k = 0 then
Re = 0
else
Re = Written[k-1] ' k = 0? tener cuidado con los saltos
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

end if
end if
if Re > max then ' Encuentra la maxima amplitud
max = Re
freq = k ' Esta debe ser la frecuencia central de la seal
end if
tmpw = Written[k]
if tmpw <> Re then ' Dibuja solo las componentes que son cambiadas
l = 64 - tmpw ' 64 lneas en el GLCD en el eje Y
while l <= 63 ' Limpiar la lnea del fondo de la pantalla
Glcd_Dot(k, l, 0)
inc(l)
wend
l = 64 - Re ' dibujar la lnea del fondo de la pantalla
while l <= 63
Glcd_Dot(k, l, 1)
inc(l)
wend
Written[k] = Re ' Marca que la muestra de la corriente ha sido dibujada
end if
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

inc(k) 'Mueve la corriente la coordenada X


inc(k) ' Dibuja en cada segundo la coordenada X
wend
' Escribe la frecuencia mxima de la muestra
freq = freq * 100
WordToStr(freq, txt)
Glcd_Write_Text(txt, 70, 0, 1)
end sub
' Toma la muestra de corriente
sub function ReadAdc as word
ADCON1.1 = 1 ' Inicia el conversor AD
while ADCON1.0 = 0 ' Espera hasta que termine el conversor AD
nop
wend
result = ADCBUF0 ' Obtiene el valor del ADC
end sub
'llena las muestras con muestras de entrada in la manera Re, Im, Re, Im... donde Im = 0
sub procedure SampleInput
dim i as integer
i =0
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

while i <= 255


Samples[i] = ReadAdc ' Re
inc(i)
Samples[i] = 0
inc(i) ' Im
wend
' "Muestra " ahora contiene 128 pares de <Re, Im>
end sub
' Main programa inicia aqui
main:
MainInit ' Iniciar todo
while true ' Lazo infinito
SampleInput ' Muestra de la seal de entrada
' Realizar FFT (DFT), 7 etapas, 128 muestras de pares de complejos
'Factores Twiddle son tomados de el <TwiddleFactors.dpas>
FFT(7, @TwiddleCoeff_128, Samples)
' DFT mariposa algoritmo de bits de salida se invierte muestras.
' Tenemos que restaurar en orden natural.
BitReverseComplex(7, Samples)
' Dibuja la TF en el GLCD
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

WriteData
wend
end.

j.

BIBLIOGRAFA UTILIZADA
Mitra,S (2010).Digital Signal processing , 4/E.McGraw Hill.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

7. DATOS INFORMATIVOS
a. MATERIA / CTEDRA RELACIONADA: Procesamiento Digital de seales
b. No. DE PRCTICA: 6
c. NMERO DE ESTUDIANTES POR MDULO: 3
d. NOMBRE INSTRUCTOR:
e. TIEMPO ESTIMADO: 2 horas

8. DATOS DE LA PRCTICA
a. TEMA: Filtro de respuesta de pulso infinito (FIR).
b. OBJETIVO GENERAL:
Implementar un filtro FIR con un DSPIC30F4013.
c. OBJETIVOS ESPECIFICOS
Observar la forma de onda de la seal que se obtiene al pasar por un filtro
FIR pasa bajos.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

Pgina 1 de -

REVISION 1/1

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

d. MARCO TERICO
Los filtros de respuesta de impulso finita (FIR), es un filtro digital que tiene
un numero finito de trminos no nulos, este filtro puede ser pasaaltos,
pasabajos, pasabanda o rechazabanda, es muy utilizado por su respuesta de
fase lineal en aplicaciones de audio.
La tcnica utilizada en esta prctica es de la ventana, en especficos e
escoge pro su mejor respuesta de frecuencia y fase la ventana de haming,
con la cual se obtien una filtro con excelente respuesta y pocos lobulos en
la zona rechazabanda del filtro.
La ecuacin del filtro FIR es:
1

() = (). ( )
=0

Donde N son los coeficientes del filtro, donde lso trminos bK= h(k), es decir
los coeficientes del filtro corresponden a la respuesta impulso.
La respuesta impulso de un filtro ideal pasabajo bien dada por
( )

H(n)=

n0

n=0

El DSPIC calculara los coeficientes del filtro los multiplicara por los
coeficientes de la ventana y los aplicara a las muestras de la seal
adquirida, si la frecuencia es inferior a 1000 Hz la seal de salida ser
idntica a la de entrada, posteriormente a la frecuencia de corte de la seal
de salida se ira atenaundo ecitando el paso de frecuencias mayores a 100
Hz.
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

e. MARCO PROCEDIMENTAL
1. Implementar un filtro antialliansing pasa bajos a una frecuencia de
5KHz.
2. Con el generador de seales generar una seal entre 0 y 1 voltios de
tipo senoidal.
3. Implementar el siguiente circuito con DSPIC30F4013

4. Implementar un filtro RC a la salida del DAC MCP4921.


5. Observar la seal de entrada y de salida del filtro para las frecuencias de
100 Hz, 200 Hz, 300 Hz, 400 Hz, 1000 Hz, 2000 Hz, 3000 Hz, 4000 Hz,
5000 Hz y 10000 Hz.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

f. RECURSOS UTILIZADOS (EQUIPOS, ACCESORIOS Y MATERIAL CONSUMIBLE)


Osciloscopio, generador y fuente DC.
g. REGISTRO DE RESULTADOS
Seal de entrada y salida a frecuencia de 100 Hz.

Seal de entrada y salida a frecuencia de 200 Hz.

Seal de entrada y salida a frecuencia de 300 Hz.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

Seal de entrada y salida a frecuencia de 400 Hz.

Seal de entrada y salida a frecuencia de 1000 Hz.

Seal de entrada y salida a frecuencia de 2000 Hz.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

Seal de entrada y salida a frecuencia de 3000 Hz.

Seal de entrada y salida a frecuencia de 4000 Hz.

Seal de entrada y salida a frecuencia de 5000 Hz.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

Seal de entrada y salida a frecuencia de 10000 Hz.

h. PREGUNTAS
Hasta que frecuencia funcionaria el filtro pasa bajo?
Que pasa con la respuesta de frecuenta cambiando el orden del filtro?
Qu pasa si la ventana es rectangular?

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

i.

Procesamiento Digital de seales


Ingeniera Electronica
Quito

ANEXOS

' This code was generated by filter designer tool by mikroElektronika


' Date/Time: 10/2/2014 12:32:05
' Support info: http://www.mikroe.com
' Device setup:
' Device name: P30F4013
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

' Device clock: 080.000000 MHz


' Dev. board: EasydsPic4A
' Sampling Frequency: 22050 Hz
' Filter setup:
' Filter kind: FIR
' Filter type: Lowpass filter
' Filter order: 6
' Filter window: Hamming
' Filter borders:
'
Wpass:1000 Hz
program FIR_Test
const BUFFFER_SIZE = 32
const FILTER_ORDER = 6
const COEFF_B as word [FILTER_ORDER+1] = (
0x01A4, 0x06D1, 0x11A3, 0x1738, 0x11A3, 0x06D1,
0x01A4)
dim
loadPin as sbit at LATF1_bit ' DAC load pin
loadPinDir as sbit at TRISF1_bit ' DAC load pin
csPin as sbit at LATF0_bit
' DAC CS pin
csPinDir as sbit at TRISF0_bit ' DAC CS pin
inext as word
' Input buffer index
input_ as word[BUFFFER_SIZE] ydata ' Input buffer
'*
' This is ADC interrupt handler.
' Analog input is sampled and the value is stored into input buffer.
' Input buffer is then passed through filter.
' Finally, the resulting output sample is sent to DAC.
'*
sub procedure ADC1Int() org IVT_ADDR_ADCINTERRUPT ' ADC interrupt handler
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

dim CurrentValue as word


input_[inext] = ADCBUF0

' Fetch sample

CurrentValue = FIR_Radix(FILTER_ORDER+1, ' Filter order


word(@COEFF_B),' B coefficients of the filter
BUFFFER_SIZE, ' Input buffer length
word(@input_), ' Input buffer
inext)
' Current sample
' CurrentValue = ADCBUF0
SPI/DAC)
' CurrentValue = 2048

' un-comment this to asub procedure filtering (test


' approx. mid-range of DAC.

inext = (inext+1) and (BUFFFER_SIZE-1) ' inext = (inext + 1) mod BUFFFER_SIZE


csPin = 0
' CS enable for DAC
SPI1BUF = 0x3000 or CurrentValue
' Write CurrentValue to DAC (0x3 is required by
DAC)
while (SPITBF_bit)
' Wait for SPI module to finish write operation
nop
wend
loadPin = 0
Delay_us(2)
loadPin = 1

' Load data in DAC

csPin = 1

' CS disable for DAC

ADIF_bit = 0
end sub

' Clear AD1IF

'*
' This is Timer1 interrupt handler.
' It is used to start ADC at periodic intervals.
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

'*
sub procedure Timer1Int() org IVT_ADDR_T1INTERRUPT ' Timer1 interrupt handler
if (DONE_bit)then
' If ADC is not busy
SAMP_bit = 1
' Start new sample
end if
LATD = PORTD xor 0xFFFF
' You can put oscilloscope on PORTD
' to measure sampling frequency
T1IF_bit = 0
end sub
'*
' The main program starts here.
' Firstly, hardware peripherals are initialized and then
' the program goes to an infinite loop, waiting for interrupts.
'*
main:
TRISD = 0
' DAC setup
loadPinDir = 0
' LOAD pin
csPinDir = 0
' CS pin
csPin = 1
' Set CS to inactive
loadPin = 1
' Set LOAD to inactive
' SPI setup
SPI1_Init_Advanced(_SPI_MASTER, _SPI_16_BIT, _SPI_PRESCALE_SEC_1,
_SPI_PRESCALE_PRI_1,
_SPI_SS_DISABLE, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_HIGH,
_SPI_ACTIVE_2_IDLE)
inext = 0
' Initialize buffer index
Vector_Set(input_, BUFFFER_SIZE, 0) ' Clear input buffer
'--- ADC setup
TRISB = 0xFFFF

' Use PORTB for input signal

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

ADCON1 = 0x00E2
ADCON2 = 0x0000
ADCON3 = 0x021A
ADPCFG = 0x0000
ADCHS = 0x000A
ADCSSL = 0
ADPCFG = 0x0000
' Interrupts setup
IFS0 = 0
IFS1 = 0
IFS2 = 0
NSTDIS_bit = 1
INTCON2 = 0
T1IE_bit = 1
ADIE_bit = 1
T1IP0_bit = 1
ADIP1_bit = 1
PR1
= 0x038B
80MHz clock.
TON_bit = 1
ADON_bit = 1
SAMP_bit = 1
while TRUE
nop
wend

' Auto-stop sampling, unsigned integer out


' Sampling time= 3*Tad, minimum Tad selected
' Configure PORTB as ADC input port
' Sample input on RB10
' No input scan
' Configure PORTB as analog ADC input port

' Clear interrupt flags


' Clear interrupt flags
' Clear interrupt flags
' Nested interrupts DISABLED
' Other interrupt settings
' Timer1 and
' ADC interrupts ENABLED
' Timer1 interrupt priority level = 1
' ADC interrupt priority level = 1
' Sampling ~= 80 kHz. The value of 250 is calculated for
' Start Timer1, internal clock FCY, prescaler 1as1
' ADC On
' Start Sampling
' Infinite loop,
' wait for interrupts

end.
j.

BIBLIOGRAFA UTILIZADA
Mitra,S (2010).Digital Signal processing , 4/E.McGraw Hill.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

1. DATOS INFORMATIVOS
a. MATERIA / CTEDRA RELACIONADA: Procesamiento Digital de seales
b. No. DE PRCTICA: 7
c. NMERO DE ESTUDIANTES POR MDULO: 3
d. NOMBRE INSTRUCTOR:
e. TIEMPO ESTIMADO: 2 horas
2. DATOS DE LA PRCTICA
a. TEMA: Filtro de respuesta de pulso infinito (IIR).
b. OBJETIVO GENERAL:
Implementar un filtro IIR con un DSPIC30F4013.
a. OBJETIVOS ESPECIFICOS
Observar la forma de onda de la seal que se obtiene al pasar por un filtro
iIR pasa bajos.
b. MARCO TERICO
Los filtros de respuesta de impulso infinita (IIR), es un filtro digital que tiene
un numero finito de trminos no nulos, es decir la seal no lelga la reposo
nunca, este filtro puede ser pasaaltos, pasabajos, pasabanda o
rechazabanda, existen algunos tipos de filtros IIR como: Butterworth,
Chebyshev.
La tcnica utilizada en esta prctica es aquella que en base a un filtro
anlogo se lo disea, se procede a aplicarle a la funcin de trasferencia
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

anloga la transformada bilineal obteniendo la funcin de trnasferencia


digital y posteriormente obteniendo los coeficientes.
La ecuacin del filtro IIR es:

() =

=0 .

=0

Un filtro IIR cumple con las especificaciones de diseo mucho ms fcil que
un filtro FIR utilizando un menor nmero de coeficientes, sin embargo la
respuesta de fase no es lineal. Uno de los mtodos ms sencillos es disear
un filtro IIR es disear un filtro anlogo para las especificaciones solicitadas
luego aplicar la transformada bilineal y obtener el filtro digital requerido. La
ecuacin de la transformada bilineal:
1 + /2
1 /2
El DSPIC calculara los coeficientes del filtro los multiplicara por los
coeficientes de la ventana y los aplicara a las muestras de la seal
adquirida, si la frecuencia es inferior a 1000 Hz la seal de salida ser
idntica a la de entrada, posteriormente a la frecuencia de corte de la seal
de salida se ira atenuando el paso de frecuencias mayores a 1000 Hz.
=

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

c. MARCO PROCEDIMENTAL
1. Implementar un filtro antialliansing pasa bajos a una frecuencia de
1KHz.
2. Con el generador de seales generar una seal entre 0 y 1 voltios de
tipo senoidal.
3. Implementar el siguiente circuito con DSPIC30F4013

4. Implementar un filtro RC a la salida del DAC MCP4921.


5. Observar la seal de entrada y de salida del filtro para las frecuencias de
100 Hz, 200 Hz, 300 Hz, 400 Hz, 1000 Hz, 2000 Hz, 3000 Hz, 4000 Hz,
5000 Hz y 10000 Hz.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

d. RECURSOS UTILIZADOS (EQUIPOS, ACCESORIOS Y MATERIAL CONSUMIBLE)


Osciloscopio, generador y fuente DC.
e. REGISTRO DE RESULTADOS
Seal de entrada y salida a frecuencia de 100 Hz.

Seal de entrada y salida a frecuencia de 200 Hz.

Seal de entrada y salida a frecuencia de 300 Hz.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

Seal de entrada y salida a frecuencia de 400 Hz.

Seal de entrada y salida a frecuencia de 1000 Hz.

Seal de entrada y salida a frecuencia de 2000 Hz.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

Seal de entrada y salida a frecuencia de 3000 Hz.

Seal de entrada y salida a frecuencia de 4000 Hz.

Seal de entrada y salida a frecuencia de 5000 Hz.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

Seal de entrada y salida a frecuencia de 10000 Hz.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

f. ANEXOS

' This code was generated by filter designer tool by mikroElektronika


' Date/Time: 10/2/2014 12:45:01
' Support info: http://www.mikroe.com
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

' Device setup:


' Device name: P30F4013
' Device clock: 080.000000 MHz
' Sampling Frequency: 22050 Hz
' Filter setup:
' Filter kind: IIR
' Filter type: Lowpass filter
' Filter order: 6
' Design method: Butterworth
program IIR_Test
const
BUFFER_SIZE = 8
FILTER_ORDER = 6
COEFF_B as word[FILTER_ORDER+1]=(0x0351, 0x13E6, 0x31BF, 0x4253, 0x31BF, 0x13E6,
0x0351)
COEFF_A as word[FILTER_ORDER+1]=(0x4000, 0x97AB, 0x7184, 0xBBD5, 0x1AB9,
0xFA3B, 0x0090)
SCALE_B
SCALE_A

=2
= -1

dim
loadPin as sbit at LATF1_bit
loadPinDir as sbit at TRISF1_bit
csPin as sbit at LATF0_bit
csPinDir as sbit at TRISF0_bit

' DAC load pin


' DAC load pin
' DAC CS pin
' DAC CS pin

inext as word
' Input buffer index
input_ as word[BUFFER_SIZE] ydata
' Input buffer, has to be in Y data space due to
DSP engine requirements
output as word[BUFFER_SIZE] ydata
' Output buffer, has to be in Y data space due to
DSP engine requirements
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

' This is ADC interrupt handler.


' Analog input is sampled and the value is stored into input buffer.
' Input buffer is then passed through filter.
' Finally, the resulting output sample is sent to DAC.
sub procedure ADC1Int() org IVT_ADDR_ADCINTERRUPT ' ADC interrupt handler
dim CurrentValue as word
input_[inext] = ADCBUF0

' Fetch sample

CurrentValue = IIR_Radix( SCALE_B,


'
SCALE_A,
'
@COEFF_B,
' b coefficients of the filter
@COEFF_A,
' a coefficients of the filter
FILTER_ORDER+1, ' Filter order + 1
@input_,
' Input buffer
BUFFER_SIZE, ' Input buffer length
@output,
' Input buffer
inext)
' Current sample
output[inext] = CurrentValue
inext = (inext+1) and (BUFFER_SIZE-1)

' inext = (inext + 1) mod BUFFER_SIZE

csPin = 0
' CS enable for DAC
SPI1BUF = 0x3000 or CurrentValue
' Write CurrentValue to DAC ($3 is required by
DAC)
while (SPITBF_bit)
' Wait for SPI module to finish write operation
nop
' Wait for SPI module to finish write
wend
loadPin = 0
delay_us(2)
loadPin = 1

' Load data in DAC

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

csPin = 1
ADIF_bit = 0
end sub

' CS disable for DAC


' Clear AD1IF

' This is Timer1 interrupt handler.


' It is used to start ADC at
' periodic intervals.
sub procedure Timer1Int() org IVT_ADDR_T1INTERRUPT ' Timer1 interrupt handler
if (DONE_bit) then
SAMP_bit = 1
end if
LATD = PORTD xor 0xFFFF
sampling frequency
T1IF_bit = 0
end sub

' If ADC is not busy


' Start new sample
' You can put oscilloscope on PORTD to measure

' Clear TMR1IF

' Main program starts here.


' Firstly, hardware peripherals are initialized and then
' the program goes to an infinite loop, waiting for interrupts.
main:
TRISD = 0
' DAC setup
loadPinDir = 0
' LOAD pin
csPinDir = 0
' CS pin
csPin = 1
' Set CS to inactive
loadPin = 1
' Set LOAD to inactive
' SPI setup
SPI1_Init_Advanced(_SPI_MASTER, _SPI_16_BIT,_SPI_PRESCALE_SEC_1,
_SPI_PRESCALE_PRI_1,
_SPI_SS_DISABLE, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_HIGH,
_SPI_ACTIVE_2_IDLE)
Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

inext = 0
' Initialize buffer index
Vector_Set(input_, BUFFER_SIZE, 0)
' Clear input buffer
Vector_Set(output, BUFFER_SIZE, 0)
' Clear output buffer
TRISB = 0xFFFF
ADCON1 = 0x00E2
ADCON2 = 0x0000
ADCON3 = 0x021A
ADPCFG = 0x0000
ADCHS = 0x000A
ADCSSL = 0
ADPCFG = 0x0000
' Interrupts setup
IFS0 = 0
IFS1 = 0
IFS2 = 0
NSTDIS_bit = 1
INTCON2 = 0
T1IE_bit = 1
ADIE_bit = 1
T1IP0_bit = 1
ADIP1_bit = 1
' Timer1 setup
PR1
= 0x038B
clock
TON_bit = 1
ADON_bit = 1
SAMP_bit = 1
while (TRUE)
nop
wend

' Use PORTB for input signal


' Auto-stop sampling, unsigned integer out
' Sampling time= 3*Tad, minimum Tad selected
' Configure PORTB as ADC input port
' Sample input on RB10
' No input scan
' Configure PORTB as analog ADC input port

' Clear interrupt flags


' Clear interrupt flags
' Clear interrupt flags
' Nested interrupts DISABLED
' Timer1 and
' ADC interrupts ENABLED
' Timer1 interrupt priority level = 1
' ADC interrupt priority level = 1

' Sampling ~= 22050 kHz. Value of PR1 is dependent on


' Timer1 ON, internal clock FCY, prescaler 1as1
' ADC On
' Start Sampling
' Infinite loop,
' wait for interrupts

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

REVISION 1/1

Pgina 1 de -

MANUAL DE PROCEDEMIENTOS DE PRCTICAS


LABORATORIO
CARRERA
SEDE

Procesamiento Digital de seales


Ingeniera Electronica
Quito

end.
g. PREGUNTAS
Qu diferencia hay entre un filtro FIR y filtro IIR?
Que diferencia hay en utilizar butterworth y chebyshev?
h. BIBLIOGRAFA UTILIZADA
Mitra,S (2010).Digital Signal processing , 4/E.McGraw Hill.

Elaborado por:
Ing. Luis Oate

Revisado por:

Aprobado por:

Fecha de Elaboracin
01-10-2013

Fecha de Revisin

Nmero de Resolucin Consejo de


Carrera:

You might also like