Documentos de Académico
Documentos de Profesional
Documentos de Cultura
dsPIC Practicas - Abril2013 - VF PDF
dsPIC Practicas - Abril2013 - VF PDF
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
)
)
)
)
)
)
)
FACULTAD DE CIENCIAS
UASLP
Abril/2013
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
CONTENIDO(
)
INTRODUCCIN ............................................................................................................ 1)
CARACTERSTICAS GENERALES DEL dsPIC33FJ128GP802).......................................)2)
ARQUITECTURA)DEL)dsPIC33FJ128GP802).............................................................................)3)
CREAR NUEVO PROYECTO EN MPLAB IDE)................................................................)4)
SISTEMA MNIMO DE CONEXIN).................................................................................)8)
PROGRAMACIN DE dsPIC)..............................................................................................)8)
Programador MINIPROG+)............................................................................................)8)
PICkit 2 v2.61)................................................................................................................)9)
RESULTADOS)...................................................................................................................)10)
BIBLIOGRAFA).................................................................................................................)11)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
INTRODUCCIN
Los DSC (Controladores Digitales de Seales) son dispositivos dotados de recursos
fsicos y lgicos necesarios para el tratamiento digital de seales. La empresa Microchip
ha unido las caractersticas esenciales de un microcontrolador y un procesador digital de
seales (DSP, por sus siglas en ingls) en un dispositivo llamado dsPIC, el cual combina
las funciones tpicas de los microcontroladores con las del procesamiento digital de
seales. Los DSC se utilizan en una amplia gama de aplicaciones, en las cuales
podemos encontrar: telecomunicaciones, procesamiento de seales, control de motores,
convertidores de energa, instrumentacin biomdica, etc.
Existen dos familias de DSC por parte de Microchip, las series dsPIC30F y dsPIC33F.
El diseo de cada una de las prcticas de este manual se basa en el
dsPIC33FJ128GP802, el cual es un dispositivo de 16 bits que posee convertidores A/D
y D/A integrados, los cuales sern vitales para las tareas de procesamiento digital. En
las secciones subsecuentes se listarn sus caractersticas generales, y el esquema
mnimo de conexin.
Las prcticas siguientes se componen de dos partes: (i) la construccin del hardware, y
(ii) la implementacin del software. Para el hardware, se describe el material a utilizar y
los esquemas de conexin en cada prctica, y para el desarrollo del software, se
implementan los programas que estn codificados en lenguaje C. Con este fin, se
emplean los programas MPLAB IDE v8.89, Compilador c30 y PICkit2, todas estas
herramientas de software necesarias para la programacin del dsPIC33F. Todos estos
programas los facilita libremente el fabricante, las cuales aparecen en la bibliografa
para ser descargados desde la pgina de Microchip. En la siguiente seccin se describe
la creacin, compilacin y programacin del dsPIC.
Dada la similitud entre los microcontroladores PIC y los Controladores digitales de
seales dsPIC, en cuanto a arquitectura y conjunto de instrucciones, los estudiantes que
hayan tenido algn acercamiento con los PIC, se les facilitar la programacin de estos
nuevos dispositivos.
1)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
Arquitectura Harvard.
Ncleo de 16 bits.
Circuito integrado de 28 pines
Operacin de 3.0 3.6 Volts.
Operacin de hasta 40 MIPS.
Memoria de programa de 128kb.)
5 Temporizadores de 16 bits.
Puertos con 21 entradas/salidas.
10/12 bits ADC con 1.1 Msps/500 ksps.
16 bits DAC (Audio).
Comunicacin USART.)
Comunicacin I2C.
Interrupciones externas.
Rango de temperatura de -40C a 85C.
Optimizado para programar en lenguaje C.
Para conocer todas las especificaciones tcnicas se recomienda ver la hoja de datos
proporcionada por el fabricante, la cual se puede ser descargada desde el sitio oficial de
Microchip (ver bibliografa).
2)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
)
dsPIC33FJ32GP302/304, dsPIC33FJ64GPX02/X04, AND dsPIC33FJ128GPX02/X04
ARQUITECTURA(DEL(dsPIC33FJ128GP802(
FIGURE 1-1:
Y Data Bus
X Data Bus
Interrupt
Controller
16
PORTA
16
16
16
Data Latch
Data Latch
X RAM
Y RAM
Address
Latch
Address
Latch
DMA
RAM
23
PCU PCH PCL
Program Counter
Loop
Stack
Control
Control
Logic
Logic
23
PORTB
16
DMA
23
16
Controller
16
Address Latch
Remappable
Program Memory
Pins
EA MUX
Data Latch
ROM Latch
24
Control Signals
to Various Blocks
16
Divide Support
16 x 16
W Register Array
16
Oscillator
Start-up Timer
FRC/LPRC
Oscillators
Power-on
Reset
Precision
Band Gap
Reference
16-bit ALU
Watchdog
Timer
16
Brown-out
Reset
Voltage
Regulator
VCAP/VDDCORE
Note:
16
DSP Engine
Power-up
Timer
Timing
Generation
Instruction Reg
Literal Data
16
Instruction
Decode and
Control
OSC2/CLKO
OSC1/CLKI
PORTC
VDD, VSS
MCLR
PMP/
EPSP
Comparator
2 Ch.
ECAN1
Timers
1-5
UART1, 2
ADC1
OC/
PWM1-4
RTCC
DAC1
SPI1, 2
IC1, 2, 7, 8
CNx
I2C1
DCI
Not all pins or features are implemented on all device pinout configurations. See pinout diagrams for the specific pins and features present on each device.
DS70292D-page 16
Preliminary
3)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
4)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
" Se elige el nombre del proyecto y la ruta donde se guardaran los archivos. En
este ejemplo se llamar P1.
" Se muestran las carpetas y los archivos del nuevo proyecto, y seleccionar
Siguiente >.
5)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
" La ltima ventana nos muestra el modelo de dsPIC que se utilizar, compilador
y la ruta donde se guardaran los archivos del proyecto.
" Una vez finalizado la creacin del nuevo proyecto, se crea un nuevo archivo.
(File New).
" En esta nueva ventana se escribir el cdigo de nuestro programa, el cual coloca
en un valor alto los bits 0 y 1 del puerto A. El cdigo se describe a continuacin:
#include <p33FJ128GP802.h>
// CONFIGURACION DE BITS
_FBS ( RBS_NO_RAM & BSS_NO_FLASH & BWRP_WRPROTECT_OFF );
_FSS ( RSS_NO_RAM & SSS_NO_FLASH & SWRP_WRPROTECT_OFF );
_FGS ( GSS_OFF & GWRP_OFF );
_FOSCSEL ( IESO_OFF & FNOSC_PRIPLL );
_FOSC ( FCKSM_CSDCMD & IOL1WAY_OFF & OSCIOFNC_OFF & POSCMD_XT );
_FPOR ( ALTI2C_OFF & FPWRT_PWR128 );
_FICD ( JTAGEN_OFF & ICS_PGD1 );
// PROGRAMA PRINCIPAL
int main(void){
TRISA=0X0000;
LATAbits.LATA0=1;
6)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
)
LATAbits.LATA1=1;
}
7)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
PROGRAMACIN DE dsPIC
Una vez realizado el esquema mnimo de conexin, se proceder a grabar el dispositivo,
lo cual se realiza a travs de la conexin entre el software PICkit 2 y el programador
universal MINIPROG+, ya que a travs de estas herramientas se grabar en el dsPIC el
programa realizado (archivo .HEX).
Programador MINIPROG+
El programador MINIPROG+ (Figura 2), soporta diversas series de dispositivos PIC y
dsPIC para su programacin. Para la serie dsPIC33F la programacin se realiza a travs
del puerto ICSP+.
8)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
PICkit 2 v2.61
)
Con el software PICkit 2, podemos programar el dsPIC, conectando a travs del puerto
USB el programador MINIPROG+. En las siguientes imgenes se muestra el
procedimiento para cargar el programa al dsPIC.
9)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
Una vez conectado el puerto ICSP+ a los pines correspondientes del dsPIC, se ejecutar
el programa PICkit 2. Si se realiza correctamente la conexin entre programador y
dsPIC, nos mostrar la siguiente imagen.
Adems de mostrar las caractersticas del dispositivo, aparecen las opciones de leer,
borrar y programar el dispositivo, cabe mencionar que el software automticamente
asigna el valor de voltaje de programacin, que como se ha mencionado anteriormente
ser de 3.3 Volts. En el men File Import Hex File, se selecciona el archivo .HEX
que se gener al compilar el programa. Una vez seleccionado el programa se ejecuta la
opcin write para que sea cargado el programa al dsPIC.
RESULTADOS
Para verificar los resultados de este ejemplo, se conectarn diodos emisores de luz
(LED) en los bits 0 y 1 del puerto A (pin 2 y 3). El resultado obtenido se puede
visualizar en la figura 5.
10)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
BIBLIOGRAFA
A continuacin se listan los enlaces de donde se pueden descargar de manera gratuita
los diversos programas y manuales necesarios para la programacin del
dsPIC33FJ128GP802.
Pickit2 v2.61
Datasheet dsPIC33FJ128GP802
Manual de PICkit 2
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocNa
me=en023073
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocNa
me=en536656
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocNa
me=en023805
http://ww1.microchip.com/downloads/en/devicedoc/70292d.pdf
http://ww1.microchip.com/downloads/en/devicedoc/c30_users_guide_51284f.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/51553B.pdf
11)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
)
)
El programa consiste en leer el bit 0 del puerto A, cuando est a 0 lgico, estarn
activados los bits 11 y 12 del puerto B, de lo contrario, los bits 11 y 12 tendrn un 0
lgico.
#include <p33FJ128GP802.h>
// * * * * BITS DE CONFIGURACION * * * * * * *
_FGS ( GSS_OFF & GWRP_OFF );
_FOSCSEL ( IESO_OFF & FNOSC_PRIPLL );
_FOSC ( FCKSM_CSDCMD & IOL1WAY_OFF & OSCIOFNC_OFF & POSCMD_XT );
_FPOR ( ALTI2C_OFF & FPWRT_PWR128 );
_FICD ( JTAGEN_OFF & ICS_PGD1 );
// * * * * * * * P R O G R A M A * * * * * * * * *
int main(void){
TRISA=0XFFFF;
// Configuracin de los puertos
TRISB=0X0000;
// Puerto A como entradas y B como salidas
AD1PCFGL=0XFFFF;
// Configuracin de las entradas digitales
while(1) {
if(PORTAbits.RA0==0){
// Si bit 0 del puerto A=0
LATBbits.LATB11=1;
// Pone a '1' bits 11 y 12
LATBbits.LATB12=1;
// del puerto B
}
else
{LATBbits.LATB11=0;
// Si bit 0 de puerto A=1
12)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
)
LATBbits.LATB12=0;
}
}
Al sistema mnimo de conexin del dsPIC, se deben agregar los componentes mostrados
en la figura 6.
RESULTADOS
Las figura 7 nos muestra la conexin completa para la realizacin de esta prctica.
13)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
BIBLIOGRAFA
Enseguida se presentan enlaces donde el estudiante puede encontrar diversos
ejemplos de aplicaciones para entradas/salidas del dsPIC.
1. http://www.microchip.com/TechDoc.aspx?type=CodeExamples
2. http://ww1.microchip.com/downloads/en/DeviceDoc/70193c.pdf
3. http://isa.uniovi.es/~fernando/Programa_II_EUITI_archivos/Practica%20tablero%20P
uertos%20ES.pdf
4. http://www.ate.uniovi.es/8693/documentos/LECC7ce.pdf
5. http://ww1.microchip.com/downloads/en/DeviceDoc/70190C.pdf
6. http://www.mikroe.com/chapters/view/4/
14)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
!!"#
2
!"!!"#
!
= 10!!"#
Prescaler: 256
!!!" = 39,062.5!"
Por lo que podemos calcular el valor deseado del temporizador de la siguiente manera:
1,000!!" 39, 062.5
!!!20!!" ! ! !!!!!"#. !"
El valor de 781.25, se cargar en el temporizador, para qu una vez que haya llegado a
este valor se emitir una alarma.
Para la configuracin de la frecuencia de oscilacin, se dividi mediante el prescaler,
pero cabe hacer mencin que existe dentro del dsPIC un multiplicador (PLL) que
tambin permite incrementar la frecuencia de oscilacin.
15)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
MATERIAL
1 dsPIC33FJ128GP802.
1 Resistencia de 10 k.
1 Cristal de 20MHz.
2 Capacitores de 30F (cermicos).
1 Capacitor de 4.7 F (tantalio de preferencia).
1 Protoboard.
1 Osciloscopio
1 Fuente de CD de 3.3Volts
ACTIVIDADES
1.
2.
3.
4.
// * * * * BITS DE CONFIGURACION * * * * * * *
_FBS ( RBS_NO_RAM & BSS_NO_FLASH & BWRP_WRPROTECT_OFF );
_FSS ( RSS_NO_RAM & SSS_NO_FLASH & SWRP_WRPROTECT_OFF );
_FGS ( GSS_OFF & GWRP_OFF );
_FOSCSEL ( IESO_OFF & FNOSC_PRI );
_FOSC ( FCKSM_CSDCMD & IOL1WAY_OFF & OSCIOFNC_OFF & POSCMD_XT );
_FPOR ( ALTI2C_OFF & FPWRT_PWR128 );
_FICD ( JTAGEN_OFF & ICS_PGD1 );
void retardo_ms (void);
int main (void);
// * * * P R O G R A M A * * *
int main(void) {
TRISB=0B1101111111111111;
while(1){
LATB=0B0010000000000000;
retardo_ms();
LATB=0X0000;
retardo_ms();
}
}
//**** Funcin Retardo ****************
void retardo_ms( void ){
T1CON = 0;
TMR1 = 0;
// Funcin de retardo
// Resetear el timer
16)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
)
IPC0bits.T1IP = 1;
PR1 = 781.25;
IFS0bits.T1IF = 0;
IEC0bits.T1IE = 0;
T1CON = 0X8030;
while(IFS0bits.T1IF==0);
RESULTADOS
En la figura 9, se puede visualizar la salida del dsPIC (RB13) y la generacin del tiempo
muerto en el osciloscopio, el cual se defini de 20 ms para la parte alta de la onda
cuadrada (3.3 V), y otros 20 ms para la parte baja (0 V).
BIBLIOGRAFA
En los siguientes enlaces, se presenta teora, prctica y configuracin de los
temporizadores. Cabe mencionar que el dsPIC33FJ128GP802 tiene 5 temporizadores de
16 bits.
1. http://galeon.com/leo-tronics/TutorialTimer0.pdf
2. ftp://193.170.235.123/Lernbehelfe/PIC%20Handb%FCcher/dsPIC33F_Reference_Man
ual/9_Watch_Dog_Timer.pdf
3. http://www.mikroe.com/chapters/view/52/chapter-4-timers/#ch4.1.1
4. http://www.todopic.com.ar/foros/index.php?topic=15200.0
17)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
)
)
DIAGRAMA ESQUEMTICO
Para la realizacin de la prctica, al sistema mnimo de conexiones del dsPIC agregar
los siguientes componentes:
18)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
led)10)mm)
led)5mm)
// Declaracin de funciones
// / / / / / / PROGRAMA PRINCIPAL / / / / / / / / / / /
int main(void){
while(1){
TRISB=0x5FFF;
LATBbits.LATB13=1;
retardo_ms(1200);
LATBbits.LATB13=0;
retardo_ms(1200);
interrupcion();
}
}
void __attribute__((__interrupt__)) _INT0Interrupt(void){
LATBbits.LATB15=1;
retardo_ms(2000);
retardo_ms(2000);
retardo_ms(2000);
//Proceso de interrupcin
// '1' en RB15
// Retardo
19)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
)
LATBbits.LATB15=0;
IFS0bits.INT0IF = 0;
}
void interrupcion( void ) {
// '0' en RD3
// Salida de la funcin
// Configuracin de la interrupcin
INTCON2bits.INT0EP = 1;
IPC0bits.INT0IP = 4;
IEC0bits.INT0IE = 1;
}
void retardo_ms( unsigned int ms ){
unsigned int periodo=0;
T1CON =0;
TMR1 = 0;
IPC0bits.T1IP =1;
periodo= (( fcy/256)*ms)/1000;
PR1= periodo;
IFS0bits.T1IF=0;
IEC0bits.T1IE=0;
T1CON=0x8030;
while(IFS0bits.T1IF==0);
}
// Habilita Interrupcin
// Timer comienza en 0
RESULTADOS
En la figura 11, se puede observar las conexiones necesarias para la realizacin de la
prctica. Los leds nos permitirn visualizar la ejecucin del programa principal (led de
5mm, RB13) y cuando se ejecute la interrupcin se visualizar mediante el led de
10mm, conectado a RB15.
20)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
BIBLIOGRAFA
Para ms aplicaciones, niveles de interrupcin y ejemplos de programacin, se
proporciona la siguiente lista de pginas electrnicas donde el estudiante podr
consultar los ejemplos.
1. http://ww1.microchip.com/downloads/en/DeviceDoc/70189c.pdf
2. http://ww1.microchip.com/downloads/en/DeviceDoc/70214C.pdf
3. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2573
4. http://batchloaf.wordpress.com/2012/04/12/simple-timer-1-interrupt-example-for-thedspic30f4011/
21)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
)
)
!!"#!! !!"#!
2! 1
ACTIVIDADES
1. Al sistema mnimo, agregar las conexiones mostradas en la figura 14.
22)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
23)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
)
int main(void);
void retardo_ms( unsigned int ms );
void adc (void);
// Declaracin de funciones
// / / / / / / PROGRAMA PRINCIPAL / / / / / / / / / / /
int main(void){
TRISB=0X0000;
adc();
AD1CON1bits.ADON = 1;
while(1){
AD1CON1bits.SAMP = 1;
retardo_ms(3);
AD1CON1bits.SAMP = 0;
while(!AD1CON1bits.DONE);
//Se ha realizado la conversin?
PORTB=ADC1BUF0;
// Datos se guardan en ADC1BUF0 y se enva al puerto B
}
}
// / / / / / / CONFIGURACION DEL ADC / / / / / / / / /
void adc (void){
TRISA = 0x0001;
AD1PCFGL = 0x0000;
AD1CON1bits.AD12B=1;
AD1CON1bits.ASAM=0;
AD1CON1bits.SSRC=0;
AD1CHS0bits.CH0NA =0;
AD1CHS0bits.CH0SA =0;
AD1CON2bits.CSCNA =0;
AD1CON2bits.VCFG =0;
AD1CON2bits.BUFM =0;
AD1CON2bits.SMPI =0;
AD1CON2bits.ALTS =0;
AD1CON3bits.ADRC =0;
AD1CON3bits.ADCS =21;
}
void retardo_ms( unsigned int ms ){
unsigned int periodo=0;
T1CON =0;
TMR1 = 0;
IPC0bits.T1IP =1;
periodo=((fcy/256)*ms)/1000;
PR1= periodo;
IFS0bits.T1IF=0;
IEC0bits.T1IE=0;
T1CON=0x8030;
while(IFS0bits.T1IF==0);
// Reset Timer
24)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
RESULTADOS
En la figura 14, se muestra el esquema completo de conexin con una entrada analgica
de 0 volts.
La figura 15 muestra el valor digitalizado cuando se tiene una entrada analgica de 0.5
Volts, cabe mencionar que el bit menos significativo est en el lado izquierda de la
figura.
25)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
Finalmente, la figura 16 muestra una entrada analgica de 1.6 Volts en RA0, y la figura
17 cuando se tienen la mxima entrada aceptada en RA0 (3.3 Volts).
26)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
BIBLIOGRAFA
En los siguientes enlaces se presenta la teora y prcticas acerca de la conversin
analgica/digital. Como tema importante se describe el Criterio de Nyquist que es
fundamental para la digitalizacin de seales.
1. http://redwood.berkeley.edu/bruno/npb261/aliasing.pdf
2. http://www.princeton.edu/~achaney/tmve/wiki100k/docs/Nyquist%E2%80%93Shannon
_sampling_theorem.html
3. http://www.cursomicros.com/avr/conversor-adc/conversor-adc-delavr.html#resolucion-voltajes-referencia
4. http://isa.uniovi.es/~fernando/Programa_II_EUITI_archivos/Practica%20tablero%20C
onversorAD.pdf
5. http://www.ucontrol.com.ar/forosmf/programacion-en-c/conversor-ad-dspic30f/?wap2
6. http://www.microchip.com/TechDoc.aspx?type=CodeExamples
)
)
)
)
27)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
se
la
la
la
x(t)
x[-2]
x[-1]
x[0]
x(T)=x[1]
x(2T)=x[2]
x[3]
x[4]
t
0
T=Tiempo de muestreo
TEOREMA DE NYQUIST
El teorema de Nyquist establece que la reconstruccin de una seal x(t) a partir de sus
muestras x[k], es posible si la seal es muestreada al doble de su ancho de banda (al
menos). Por ejemplo, Si la frecuencia ms alta contenida en la seal analgica !(!) es
!!"# , entonces para recuperar la seal !(!) debemos de muestrear a una tasa Fs que
cumpla !! 2!!"# .
Cuando la frecuencia de muestreo no cumple el criterio de Nyquist, se produce el
fenmeno conocido como aliasing o traslape, a travs del cual una seal de alta
frecuencia es interpretada como una seal de baja frecuencia.
28)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
)
1
x2(t)
x1(t)
0.8
0.6
0.4
0.2
0.2
x[k]
0.4
T=0.1 seg
Fs=10 Hz
0.6
0.8
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
tiempo (seg)
Figura 19. Seales muestredas que describen el fenmeno de traslape: x1(t) # 3 Hz, x2(t) # 13 Hz, y
Fs=10 Hz.
MATERIAL
1 dsPIC33FJ128GP802.
1 Resistencia de 10 k.
1 Cristal de 20MHz.
2 Capacitores de 30F (cermicos).
1 Capacitor de 4.7 F (tantalio de preferencia).
1 Protoboard.
1 Generador de funciones.
1 Osciloscopio.
1 Fuente variable de CD de 3.3Volts.
ACTIVIDADES
1. Al sistema mnimo, agregar las conexiones mostradas en la figura 20.
2. Cargar al dsPIC el programa proporcionado en la prctica.
3. Configurar la seal de entrada por medio del generador de funciones,
para establecer una seal senoidal positiva con amplitud de 3Vpp (0.15
Volts a 3.15 Volts) y f = 1KHz. Esta seal se introduce en la entrada
analgica del dsPIC (AN4).
4. En el osciloscopio visualizar la seal de entrada, as como la salida
(DAC1RP).
5. Visualizar la salida cuando se realiza un barrido de frecuencia en la seal
de entrada desde 100 Hz hasta 1MHz.
6. Conclusiones.
DIAGRAMA ESQUEMTICO
Para la realizacin de la prctica, al sistema mnimo de conexiones del dsPIC agregar
los siguientes componentes:
29)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
initAdc();
initDac();
initDma0();
initTmr3();
// Inicializa funciones
30)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
)
extern fractional BufferA[NUMSAMP];
extern fractional BufferB[NUMSAMP];
extern unsigned int DmaBuffer;
extern int flag;
int i;
// Configura buffer A
// Configura buffer B
// Habilita DMA
// Bandera de DMA
// Declara variable i
while (1) {
if(flag) {
for(i = 0; i < NUMSAMP; i++){
while(DAC1STATbits.REMPTY != 1);
// Espera la conversion D/A.
if(DmaBuffer == 0)
DAC1RDAT = BufferA[i];
// Carga dato al registro
else
DAC1RDAT = BufferB[i];
// Carga dato al registro
}
flag = 0;
}
}
return 0;
}
fractional BufferA[NUMSAMP] __attribute__((space(dma)));
// Modo de salida al buffer A
fractional BufferB[NUMSAMP] __attribute__((space(dma)));
// Modo de salida al buffer
void initAdc(void)
{
AD1CON1bits.FORM = 3;
AD1CON1bits.SSRC = 2;
AD1CON1bits.ASAM = 1;
AD1CON1bits.AD12B = 1;
AD1CON2bits.CHPS = 0;
AD1CON3bits.ADRC = 0;
AD1CON3bits.ADCS = 3;
AD1CON1bits.ADDMABM = 1;
AD1CON2bits.SMPI = 0;
AD1CHS0bits.CH0SA = 4;
AD1CHS0bits.CH0NA = 0;
AD1PCFGL=0xFFFF;
AD1PCFGLbits.PCFG4 = 0;
IFS0bits.AD1IF = 0;
IEC0bits.AD1IE = 0;
AD1CON1bits.ADON = 1;
}
void initDac(void) {
ACLKCONbits.SELACLK = 0;
ACLKCONbits.AOSCMD = 0;
ACLKCONbits.ASRCSEL = 0;
ACLKCONbits.APSTSCLR = 7;
DAC1STATbits.ROEN = 1;
DAC1DFLT = 0x0000;
DAC1CONbits.DACFDIV = 5;
DAC1CONbits.FORM = 1;
DAC1CONbits.AMPON = 0;
DAC1CONbits.DACEN = 1;
}
void initTmr3() {
TMR3 = 0x0000;
PR3 = SAMPPRD;
IFS0bits.T3IF = 0;
// Funcin ADC
// Formato de salida.
// ADC convierte despus del muestreo
// Resolucin de 12 bits
// Canal CH0
// reloj del ADC derivado del sistema
// Tad=Tcy*(ADCS+1)= (1/40M)*4 = 100ns
// Tc=14*Tad = 1.4us
// Funcin DAC
// Configuracin de reloj
// Salida DAC1RP
// Valor de referencia de la conversin
// Formato del dato
// Habilita DAC
// Funcin Timer
// Reset TMR3
// carga valor al timer
31)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
)
IEC0bits.T3IE = 0;
T3CONbits.TON = 1;
// Habilita Timer 3
}
void initDma0(void){
DMA0CONbits.AMODE = 0;
// Configuracin DMA
DMA0CONbits.MODE = 2;
DMA0PAD = (int)&ADC1BUF0;
DMA0CNT = (NUMSAMP-1);
DMA0REQ = 13;
DMA0STA = __builtin_dmaoffset(BufferA);
DMA0STB = __builtin_dmaoffset(BufferB);
IFS0bits.DMA0IF = 0;
IEC0bits.DMA0IE = 1;
DMA0CONbits.CHEN = 1;
// Habilita canal DMA
}
unsigned int DmaBuffer = 0;
int flag = 0;
void __attribute__((interrupt, no_auto_psv)) _DMA0Interrupt(void){
DmaBuffer ^= 1;
flag = 1;
IFS0bits.DMA0IF = 0;
}
void __attribute__((interrupt, no_auto_psv)) _DAC1RInterrupt(void)
{
IFS4bits.DAC1RIF = 0;
}
RESULTADOS
En las siguientes figuras se observa el proceso de conversin ADC - DAC cuando se
tiene una entrada senoidal, triangular y cuadrada con frecuencias de 1KHz en las 3
seales. Cul sera la frecuencia de muestreo que se mide experimentalmente al variar
la frecuencia de entrada de 100 Hz a 1 MHz?
Salida)
Entrada)
32)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
)
Salida)
Entrada)
Salida)
Entrada)
BIBLIOGRAFA
En los siguientes enlaces se presenta la teora del criterio de Nyquist, ejemplos de
programacin y referencia de los registros utilizados para la realizacin de esta prctica.
1. http://tintoretto.ucsd.edu/jorge/teaching/mae143a/lectures/8sampling.pdf
33)
)
Prcticas)de)Laboratorio)
Procesamiento)Digital)de)Seales)
Facultad)de)Ciencias,)UASLP)
)
2. http://embeddedcodesource.com/developer/microchip_technology/ce154__adc_to_dac_
loopback
3. http://www.dspguide.com/ch3/2.htm
4. http://es.wikipedia.org/wiki/Teorema_de_muestreo_de_Nyquist-Shannon
5. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824
&appnote=en539328
6. http://www.microchip.com/TechDoc.aspx?type=CodeExamples
7. http://ww1.microchip.com/downloads/en/DeviceDoc/70183D.pdf
8. http://www.element14.com/community/solutions/2622
34)
)