You are on page 1of 22

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

Diseo de sistemas microprocesados


Semana 13: El mdulo Convertidor analgico digital del dsPIC30F3014 Profesor:
Mag. Ing. Sergio Salas Arriarn

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

Por qu es importante la digitalizacin de seales

USB/Bluetooth

Modem-Router

Paciente

Software de adquisicin RTC RTC Base de datos del Centro hospitalario

Modem-Router inalmbrico

INTERNE T

Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

El proceso de digitalizacin de una seal

Seal de ECG continua en el tiempo de 0.5 a 4mV

Amplificad or Ganancia G

Convertid or anlogo digital (ADC) C

Seal de ECG continua en el tiempo de 0.5xG a 4xGmV

Seal de ECG discreta en el tiempo

Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

Digitalizacin de una seal analgica

Niveles de cuantizacin = 2N (el nmero de puntos diferentes con el cual se representa la seal digital en amplitud ) V Resolucin = N bits 3 2 1
2.5V=Va

VRE FH

Precisin del ADC = (VREFH-VREFL) 2N VREFH VREFL

Vc Vb Vd

4 5 ADC Salida N bits

VREFL
Tc 2Tc 3Tc 4Tc 5Tc

t(seg .)

Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

La seal digitalizada
Supongamos N=8 bits, VREFH= 5 V y VREFL= 0V. Resolucin = 8 bits 4 5 Niveles de cuantizacin = 256 5V 19,5mV Precisin del ADC = = 256

valores discretos

11111111b

3 2 1

VREFH
11010010b

10010110b 10010101b 10000000b

00000001b 00000000b Tc 2Tc 3Tc 4Tc 5Tc

19,6mV

VREFL

Muestra 1 =

Va 2.5V = = 128 = 10000000b Resoluci 19.5m n V Mag. Ing. Sergio Sala

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

La frecuencia de muestreo

La frecuencia de muestreo depende de la naturaleza de la seal. Una seal de temperatura no es igual que una seal de voz o que una seal de ECG.

Para seales de ECG se establece una frecuencia de muestreo de 250 muestras/seg, para seales de voz de 8000 muestras /seg y para seales de temperatura de 1 muestra/seg Mag. Ing. Sergio Sala

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

El Aliasing

Toda seal no peridica presenta una caracterstica fundamental: El ancho de banda (BW). Este parmetro se mide en Hz y representa aquellos componentes de frecuencia que son ms importantes en la estructura de la seal. El teorema del muestreo indica que la frecuencia de muestreo de una seal debe de ser al menos el doble del ancho de banda para una correcta digitalizacin (Teorema de Nyquist). Si se digitaliza una seal por debajo de su frecuencia de muestreo recomendada se produce un fenmeno denominado Aliasing, en el cual la seal digitalizada resultante es diferente a la seal original.

Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

El Convertidor AD del dsPIC30F3014

El dsPIC30F3014 posee 13 canales multiplexados de entradas analgicas ubicados en los pines del Puerto B. El ADC soporta una resolucin mxima de 12 bits y una frecuencia de muestreo mxima de 100kHz. Posee 16 registros de resultados en los cuales se pueden ir acumulando las muestras generadas por cada canal de forma sucesiva. Entradas Analgicas Entradas Analgicas

Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

Pasos para la digitalizacin de seales analgicas

ar que la tensin mxima y mnima de la seal no supere los voltajes VREF+ y V urar los pines del Puerto B como analgicos y seleccione los voltajes de referenc ione el canal de entrada del A/D. ione la fuente de disparo de conversin. der el A/D. s, se requiere configurar la interrupcin: el bit ADIF (IFS0<11>, bandera de fin de conversin). cionar la prioridad del A/D. el bit ADIE en 1 y activar la interrupcin por fin de conversin (IEC0<11>) zar a muestrear. ar el tiempo de adquisicin. rar el fin de adquisicin, empezar la conversin. ar a que se complete la conversin, ya sea por espera de la interrupcin o por el l buffer de resultado y borrar el bit ADIF.

Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

Seleccin del reloj de conversin


TBUS TAD TAD = TBUS(ADCS+1) Reloj del A/D

ADCS <5 : 0> 2 000000 -> 2 TAD - 1 ADCS = TBUS*2 TBUS 000001 -> TBUS*4 000011 -> Para que el A/D de el resultado correcto se requiere TBUS*8 000111 -> 14 TAD. TBUS*16 001111 -> TBUS*32 011111 -> Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

El multiplexor analgico

s multiplexores (A y B) que permiten seleccionar el canal de entrada a tomar la m n del canal se realiza con los bits ADCHS<3:0> AN0 AN1 AN2 AN3 . . . . . Multiplexor A

AN12

Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

Configuracin de los pines

ro ADPCFG especifica el bit analgico ponindolo a 0. Por defecto todos los pin B estn configurados como analgicos. El TRISB debe configurarse como entrada vo pin que desea utilizarse para la lectura de la seal analgica.

el bit ADON (ADCON1<15>) se pone a 1 el A/D se alimenta y se vuelve activo. ASCON2<15:13> seleccionan el voltaje de referencia a configurar en el dsPIC.

Mag. Ing. Sergio Sala

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

Modos de muestreo (Modo manual)

ADCON1.SAMP=1 ADCON1.SAMP=0

ADCLK Conversin SAMP Muestreo

DONE

ADCBUF0

Mag. Ing. Sergio Sala

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

Modos de muestreo (Modo automtico)

odo automtico, el bit ASAM (ADCON1<2>) se pone a 1 as que el A/D comienc ar cuando la conversin previa se ha completado.
ADCON1.SAMP=0 ADCON1.SAMP=1 ADCON1.SAMP=0

ADCLK Conversin SAMP Muestreo Muestreo

ADCBUF0

Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

15 ADON

13 ADIDL

Registro ADCON1
9 8 7 3 2 ASAM 1 SAMP FORM<1:0>SSRC<2:0>

0 DONE

ADON: ADC ON/OFF ASAM: Bit de auto inicio ADIDL: Se detiene el A/D en modo IDLE (ADIDL = 1) SAMP: Bit habilitador del muestr FORM<1:0>: Formato de salida DONE: Bit de finalizacin de la 00 -> Entero conversin: 01 -> Entero con signo 1: finalizada 10 -> Fraccional 0: en progreso 11 -> Fraccional con signo SSRC<2:0> Seleccin del disparo de conversin 000 -> SAMP = 0 001 -> PIN INT0 inicia la conversin 010 -> Timer3 = PR3 finaliza el muestreo y empieza la conversin 011 -> Intervalo del PWM finaliza el muestreo y empieza la conversin 101..110 -> Reservados 111 -> Modo automtico

Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

Registro ADCON2
15 13 10 CSCNA 7 BUFS 5 4 3 2 1 0 VCFG<2:0> SMPI<3:0> BUFM ALTS

FG<2:0>: Referencia de voltaje BUFM: Modo del buffer. 000 -> VREFH = AVDD, VREFL = AVSS 1: Buffer se lee como 2 registros 001 -> VREFH = VREF+, VREFL = AVSS de 8 bits. 010 -> VREFH = AVDD, VREFL = VREF0: Buffer se lee como un solo 011 -> VREFH = VREF+, VREFL = VREFregistro. 1XX -> VREFH = AVDD, VREFL = AVSS ALTS: Alternar la muestra de entrada NA: Opcin de escaneo. 1: Alternancia habilitada FS: Bit de estado del buffer lleno (solo es vlido si BUFM = 1) 0: Alternancia desh 1: A/D usa los registros buffer 8 15. 0: A/D usa los registros buffer 0 - 7 PI <3:0> Secuencias por interrupcin: 0000 Interrupcin al completarse una secuencia de conversin. 0001 Interrupcin al completarse una secuencia de dos muestras. .. 1110 Interrupcin al completarse una secuencia de 15 muestras 1111 Interrupcin al completarse una secuencia de 16 muestras Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

Registro ADCON3
15 12 8 7 ADRC 5 ADCS<5:0> 0 SAMC<4:0>

SAMC<4:0>: Bits de tiempo de auto muestreo 00000 -> 0 00001 -> TBUS 00010 -> TBUS*2 . 11111 -> TBUS*31 ADRC: Fuente de reloj 1: Circuito RC. 0: Reloj del sistema. ADCS <5:0> Bits de seleccin del reloj de conversin: 000000 TBUS/2*(ADCS>5:0>+1) = TBUS*2 000001 TBUS/2*(ADCS>5:0>+1) = TBUS .. 111111 TBUS/2*(ADCS>5:0>+1) = 32xTBUS

Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

15

12

11

Registro ADCHS
8 4 CH0NA

3 CH0SA<3:0>

CH0NB CH0SB<3:0>

CH0NB ->: Canal 0 negativo para el mux B 1: Seleccin de AN1 0: VREF- seleccionado CH0SB<3:0> Selector de canal para el multiplexor B 0000 -> AN0 0001 -> AN1 1110 -> AN14 1111 -> AN15 CH0NA -> Canal 0 negativo para el mux A 1: Seleccin de AN1 0: VREF- seleccionado CH0SB<3:0> Selector de canal para el multiplexor B 0000 -> AN0 0001 -> AN1 1110 -> AN14 1111 -> AN15

Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

Librera ADC.h

void INICIA_ADC(unsigned char canal); unsigned int CONVERTIR_ADC(void);

Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

Librera ADC.c

#include "p30fxxxx.h" #include "ADC.h" #include "libpic30.h" void INICIA_ADC(unsigned char canal) { ADPCFG = 0xFFFE; ADPCFG <<=canal; //Configurar el pin respectivo como analgico ADCON1 = 0x0004; //ADC off, Formato de la muestra entero ADCHS = 0x0000 + canal; //Conectar RB0 a AN10 como entrada CH0 ADCSSL = 0; //Sin scan ADCON3 = 0x1003; //ADCS=3 (TAD minimo para 10MHz es 3*TCY=300ns) ADCON2 = 0; //Interrupcin al completarse una muestra ADCON1bits.ADON = 1; //ADC ON } unsigned int CONVERTIR_ADC(void) { ADCON1bits.SAMP = 0; //Borrar el bit SAMP while(ADCON1bits.SAMP == 0); //Esperar el fin de la conversin return(ADCBUF0); }

Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

#include #include #include #include

Programa de ejemplo del A/D (Parte 1)


"p30fxxxx.h" "LCD.h" "libpic30.h" "ADC.h"

//Macros para la configuracin de los fusibles _FOSC(CSW_FSCM_OFF & XT_PLL4); _FWDT(WDT_OFF); _FBORPOR(PBOR_OFF & PWRT_16 & MCLR_EN); _FGS(CODE_PROT_OFF); unsigned int muestra; unsigned char aux; void main() { TRISB = 0xFFFF; //Port B is input TRISD = 0; INICIA_ADC(0); __delay_ms(15); LCD_CONFIG(); ESCRIBE_MENSAJE("Muestra: ",9);

Mag. Ing. Sergio Sal

Facultad de Ingeniera Electrnica y Mecatrnica Carrera: Ingeniera Electrnica

Programa de ejemplo del A/D (Parte 2)


while(1) { __delay_ms(100); //retardo de 100ms (muetreando ...) muestra = CONVERTIR_ADC(); aux = muestra/1000; POS_CURSOR(1,9); ESCRIBE_CHAR(aux+'0'); aux = (muestra%1000)/100; ESCRIBE_CHAR(aux+'0'); aux = ((muestra%1000)%100)/10; ESCRIBE_CHAR(aux+'0'); aux = ((muestra%1000)%100)%10; ESCRIBE_CHAR(aux+'0'); } }

Mag. Ing. Sergio Sal

You might also like