Vous êtes sur la page 1sur 15

06/10/2014

Programacin en
lenguaje C para
Microcontroladores
PIC18FXXXX

ADC
Ing. Germn Jess Pereira Muoz

20/08/10

Ing. Germn Jess Pereira Muoz

Proceso de convercion

20/08/10

Ing. Germn Jess Pereira Muoz

06/10/2014

Sample &
Hold

La solucin es que la seal analgica est "congelado" durante la transformacin.


La conversin AD empieza a tomar una muestra de la seal con un interruptor de
y la almacena en un condensador.
el PIC, el muestreo tiene una capacitancia de 120 pF.
20/08/10

Ing. Germn Jess Pereira Muoz

Tiempo de adquisicion tACQ

Cada vez que se ha seleccionado un canal de convercion para cambiarlo


se debe tomar en cuenta el tiempo Chold para subir a la tensin
analgica.
20/08/10

Ing. Germn Jess Pereira Muoz

06/10/2014

Esquema de convercion

20/08/10

Ing. Germn Jess Pereira Muoz

Caractersticas
El mdulo conversor de analgico a digital (A/D) tiene
10 entradas con los dispositivos de 28 pines y 13 en los
de 40/44 pines.
Este mdulo permite la conversin de una seal de
entrada analgica a un nmero digital de 10bits.
Seal de reloj de conversin configurable
Tiempo de adquisicin programable (0 a 20TAD)
Posibilidad de establecer el rango de tensiones de
conversin mediante tensiones de referencia externas

20/08/10

Ing. Germn Jess Pereira Muoz

06/10/2014

Modulo ADC

20/08/10

Ing. Germn Jess Pereira Muoz

Ing. Germn Jess Pereira Muoz

Modulo ADC

20/08/10

06/10/2014

ADCON0 REGISTER 0

BIT 5-2 CHS3:CHS0: Bits selectores del canal analgico


BIT 1 GO/DONE*: Bit A/D del estado de la conversin
Cuando ADON=1:
1 = conversin A/D en marcha
0 = A/D en reposo
BIT 0 ADON: Bit de permiso del A/D
1 = mdulo A/D permitido
0 = mdulo A/D no permiido

Nota 1: Estos canales no se implementan en los dispositivos de


28pines.
2: La ejecucin de una conversin en los canales no implementados
devolver una medida flotante de la entrada.

20/08/10

CHS3:CHS0

0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1

0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

= canal 0 (AN0)
= canal 1 (AN1)
= canal 2 (AN2)
= canal 3 (AN3)
= canal 4 (AN4)
= canal 5 (AN5)(1,2)
= canal 6 (AN6)(1,2)
= canal 7 (AN7)(1,2)
= canal 8 (AN8)
= canal 9 (AN9)
= canal 10 (AN10)
= canal 11 (AN11)
= canal 12 (AN12)
= No implementado(2)
= No implementado(2)
= No implementado(2)

Ing. Germn Jess Pereira Muoz

ADCON1 REGISTER 1 (Part I)

VCFG1: Bit de configuracin de la tensin de referencia VREF-:


* VCFG1=0: VREF- se conecta a VSS
* VCFG1=1: VREF- se conecta a la lnea fsica RA2

VCFG0: Bit de configuracin de la tensin de referencia VREF+:


* VCFG1=0: VREF+ se conecta a VDD
* VCFG1=1: VREF+ se conecta a la lnea fsica RA3

PCFG3..PCFG0: Bits configuracin de los puertos de conversin A/D.


Mediante estos bits se establecen las lneas fsicas (RA5..RA0, RB4..RB0, RE2..RE0)
que van a trabajar como entradas del convertidor A/D.

20/08/10

Ing. Germn Jess Pereira Muoz

10

06/10/2014

ADCON1 REGISTER 1 (Part II)

Nota 1: El valor de POR de los bits PCFG depende del valor del bit de configuracin PBADEN. Cuando
PBADEN=1, PCFG<3: 0>=0000; cuando PBADEN=0, PCFG<3: 0>=0111.
2: AN5 con AN7 estn disponibles solamente en los dispositivos 40/44pines.
20/08/10
Ing. Germn Jess Pereira Muoz

11

ADCON1 REGISTER 1 (Part III)


Rango tensiones de conversin:
Por defecto el rango de tensiones de conversin del convertidor A/D del PIC18F4550
es de 0V a 5V. Sin embargo puede modificar este rango para aumentar la resolucin
de la conversin acercando las tensiones de referencia mxima y mnima VREF+ y VREFa los limites de variacin de la seal que se desea digitalizar.

Esto se puede conseguir configurando las lneas RA2/AN2/VREF- y RA3/AN3/VREF+


como tensiones de referencia del convertidor A/D (poniendo a 1 los bits VCFG1 y
VCFG0 del registro ADCON1). De esta forma el rango de tensiones de conversin
vendr determinado por las tensiones que se conecten en dichas lneas.

06/10/2014

ADCON2 REGISTER 2 (Part I)

ADFM: Bit de configuracin del tipo de almacenamiento del resultado de la conversin en


los registros ADRESH y ADRESL:
* ADFM=0: El resultado de la conversin se almacena con justificacin a
izquierdas
* ADFM=1: El resultado de la conversin se almacena con justificacin a
derechas

ACQT2..ACQT0 : Bits de configuracin del tiempo de adquisicin


ADCS2..ADCS0: Bits seleccin de la seal de reloj del convertidor A/D

20/08/10

Ing. Germn Jess Pereira Muoz

13

ADCON2 REGISTER 2 (Part II)

Seal de reloj de conversin:


Se define TAD como el tiempo de conversin de 1 bit. Una operacin completa de
conversin requiere un total de 11 TAD para 10 bits.
La seal de reloj que genera las temporizaciones TAD puede ser establecida mediante
los bits ADCS2..ADCS0.
Existen dos fuentes para dicha seal de reloj:

El oscilador principal
Una red RC interna que incorpora el propio convertidor A/D.

Puede utilizarse para realizar conversiones en modos de bajo consumo.

Permite que se puedan llevar a cabo conversiones con el oscilador principal


desactivado.

20/08/10

Ing. Germn Jess Pereira Muoz

14

06/10/2014

ADCON2 REGISTER 2 (Part III)

Seal de reloj de conversin:


El valor de TAD debe ser lo menor posible pero siempre superior al TAD mnimo indicado
en las hojas de datos de PIC18F4550: 0,7us.
Ejemplo:
Se elige el oscilador principal como fuente de reloj y FOSC=10MHz:
Si configuramos ADCS2..ADCS0=000 => T AD=2*(1/10106)=0,2us=> demasiado pequeo.
Si configuramos ADCS2..ADCS0=001 => T AD=8*(1/10106)=0,7us=> OK
Si configuramos ADCS2..ADCS0=100 => T AD=4*(1/10106)=0,4us=> demasiado pequeo

Cuando se elige el oscilador RC interno el TAD viene prefijado internamente y


siempre cumple con la condicin del valor mnimo.
20/08/10

Ing. Germn Jess Pereira Muoz

15

ADCON2 REGISTER 2 (Part IV)


Establecimiento del tiempo de adquisicin (Sample&Hold):
Antes de realizar una conversin se tiene que asegurar que el
condensador de HOLD ha sido totalmente cargado a la tensin del canal
seleccionado.
Para realizar un cambio de canal de convercion se debe esperar un
tiempo que depender de la impedancia de entrada del convertidor A/D y
de la impedancia de salida del circuito sobre el que se est haciendo la
conversin.
Existen dos opciones para generar este retardo antes de comenzar la
conversin:

Por programa: se implementa un retardo software entre la seleccin del


nuevo canal y el inicio de la conversin.
Estableciendo un tiempo de adquisicin automtico: se programa un
tiempo de adquisicin que se establecer de forma automtica entre la
orden de inicio de conversin y el muestreo de la seal para iniciar la
conversin. Dicho tiempo puede ser programado mediante los bits
ACQT2..ACQT0 del registro ADCON2.

Este tiempo puede tener unos valores que oscilan entre 2*TAD y 20*TAD.

06/10/2014

ADCON2 REGISTER 2 (Part V)

20/08/10

Ing. Germn Jess Pereira Muoz

17

ADCON2 REGISTER 2 (Part VI)

La conversin A/D da el resultado (un valor de 10 bits) que queda


almacenado en los registros ADRESH y ADRESL.
Existen dos posibles formas de almacenar el resultado en estos registros
dependiendo del valor del bit ADFM del registro ADCON2:

06/10/2014

Proceso completo de conversin A/D


(sin utilizar interrupcin)
1 PASO: Configuracin del convertidor A/D:

Configuracin como canales A/D de las lneas que vayan a ser utilizadas (bits PCFG3..PCFG0
del registro ADCON1)
Configuracin de las tensiones de referencia VREF+ y VREF- (bits VCFG0 y VCFG1 del registro
ADCON1)
Configuracin del reloj de conversin TAD (bits ADCS2..ADCS0 del registro ADCON2)
Configuracin del tiempo de adquisicin (bits ACQT2..ACQT0 del registro ADCON2)
Configuracin del modo de almacenamiento de la conversin (bit ADFM del registro ADCON2)
Activacin del conversor (bit ADON del registro ADCON0)

2 PASO: Seleccin del canal (bits CHS3..CHS0 del registro ADCON0)


3 PASO: Retardo de espera del tiempo de adquisicin (solo en caso de no hacer
uso del tiempo de adquisicin automtico)
4 PASO: Inicio de la conversin poniendo a 1 el bit GO/DONE del registro
ADCON0
5 PASO: Bucle de espera del final de conversin (comprobacin del bit
GO/DONE hasta que se ponga a 0)
6 PASO: Lectura del resultado de la conversin de los registros ADRESH y
ADRESL

Proceso completo de conversin A/D


(utilizando interrupcin)
1 PASO: Configuracin del convertidor A/D:

Configuracin como canales A/D de las lneas que vayan a ser utilizadas (bits PCFG3..PCFG0 del
registro ADCON1)
Configuracin de las tensiones de referencia VREF+ y VREF- (bits VCFG0 y VCFG1 del registro
ADCON1)
Configuracin del reloj de conversin TAD (bits ADCS2..ADCS0 del registro ADCON2)
Configuracin del tiempo de adquisicin (bits ACQT2..ACQT0 del registro ADCON2)
Configuracin del modo de almacenamiento de la conversin (bit ADFM del registro ADCON2)
Activacin del conversor (bit ADON del registro ADCON0)

2 PASO: Habilitacin de la interrupcin del convertidor A/D:

Habilitacin de la interrupcin del convertidor A/D (bit ADIE del registro PIE1)
Habilitacin de las interrupciones de perifricos y de las interrupciones a nivel general (bits PEIE y
GIE del registro INTCON)

3 PASO: Seleccin del canal (bits CHS3..CHS0 del registro ADCON0)


4 PASO: Retardo de espera del tiempo de adquisicin (solo en caso de no hacer
uso del tiempo de adquisicin automtico)
4 PASO: Inicio de la conversin poniendo a 1 el bit GO/DONE del registro
ADCON0
5 PASO: El uC sigue ejecutando cdigo hasta que se produzca la interrupcin
6 PASO: Cuando se produce la interrupcin: puesta a 0 del bit ADIF del registro
PIR1 y lectura del resultado de la conversin de los registros ADRESH y ADRESL

10

06/10/2014

ADC(funciones)
Adc_Read

20/08/10

Ing. Germn Jess Pereira Muoz

21
21

Adc_Read
Descripcin: ADC (Analog to Digital Converter) .
La funcin Adc_Read esta incluida para entregar el dato
resultan de la convercion ADC de un canal espeficico
unsigned Adc_Read(unsigned short channel);
Ejemplo:
unsigned tmp;
tmp = Adc_Read(0); // lectura del canal 0

20/08/10

Ing. Germn Jess Pereira Muoz

22
22

11

06/10/2014

ADC (problema)
Se desea un programa mostar la conversin Adc en dos
puertos.

20/08/10

Ing. Germn Jess Pereira Muoz

23
23

ADC (algoritmo)

2008/10
20/08/10

1 Configuracin de puertos (ADC).


2 Lectura de ADC
3 Envo a los leds
4 Regresar a 2

Ing. Germn Jess Pereira Muoz

24
24

12

06/10/2014

ADC(esquemtico)
20/08/10
20/0/10
20/08/10

Ing. Germn Jess Pereira Muoz

25
25

ADC (programa )

20/8/10
20/08/10

Ing. Germn Jess Pereira Muoz

26
26

13

06/10/2014

Ejercicio propuesto I

20/08/10
20/08/0
20/08/10

Realizar un programa para realizar la conversin


ADC del canal 0 y enviarla por el puerto serial

Ing. Germn Jess Pereira Muoz

27
27

Ejercicio propuesto II

20/08/10
20/0/10
20/08/10

Realizar un programa para realizar la conversin


ADC del canal 0 mostrarla en el LCD

Ing. Germn Jess Pereira Muoz

28
28

14

06/10/2014

Ejercicio propuesto III


Disear Hardware y software que tenga las
siguientes caracteristicas:
Teclado matricial 4*4
LCD de 2 filas y 16 columnas
En el LCD debe mostrarse un solo canal ADC, el canal
ADC a desplegarse en el LCD debe ser seleccionado
por el teclado.

20/08/10
20/8/10
20/08/10

Ing. Germn Jess Pereira Muoz

29
29

15

Vous aimerez peut-être aussi