Vous êtes sur la page 1sur 19

EL mdulo conversor A/D

(c) Domingo Llorente 2010

Caractersticas del conversor A/D


Ocho entradas de seal analgica. (5 para el 16F876x) Resolucin de la conversin de 10 bits. (0-1024) Distintas fuentes de tensin de referencia seleccionadas por software. Capacidad para operar en el modo Sleep. Los registros asociados al mdulo son: PORTA,TRISA,PORTE y TRISE: Definicin de pines de entrada INTCON,PIE1 y PIR1: Manejo de interrupciones ADCON0,ADCON1,ADRESH y ADRESL: Control del conversor

(c) Domingo Llorente 2010

Registros asociados al conversor A/D (I)


El registro ADCON0 sirve para: a) Seleccionar la seal de reloj del conversor, en funcion de Fosc

El tiempo empleado en la Conversion viene dado por la expresion: TACQ= TAMP+TC+TCOFF Tiempo empleado en la conversin ~= 20us (*)

Nota: Fosc = Frecuencia del oscilador.

(*) Dato del datasheet de Microchip para el pic 16F877x 3

(c) Domingo Llorente 2010

Registros asociados al conversor A/D (II)


b) Seleccionar el canal analgico para realizar la conversin c) Iniciar/parar la conversin d) Encender/Apagar el conversor b

d
(c) Domingo Llorente 2010 4

Registros asociados al conversor A/D (III)


El registro ADCON1 sirve para: a) Seleccionar la justificacin del resultado de la conversin.
ADFM = 1 : Los seis bits ms significativos del registro ADRESH se leen como 0. ADFM = 0 : Los seis bits menos significativos del registro ADRESL le leen como 0

(c) Domingo Llorente 2010

Registros asociados al conversor A/D (IV)


b) Configurar las entradas analgicas

(c) Domingo Llorente 2010

Interrupcin del conversor (I)


Para habilitar la interrupcin del conversor hay que: a) Poner a uno los bits GIE y PEIE del registro INTCON

(c) Domingo Llorente 2010

Interrupcin del conversor (II)


b) Poner a uno el bit ADIE del registro PIE1 c) Cada vez que se finalice una conversin se pondr a uno la bandera ADIF del registro PIR1.

(c) Domingo Llorente 2010

Conexin de las entradas analgicas en la placa de ampliacin


Para usar la entrada analgica de RA0 hay que poner el puente JP9 en pos. ANL0. Para usar la entrada analgica de RA3 hay que poner el puente JP8 en pos. ANL3.
JP8 JP9 ANL0 ANL3

(c) Domingo Llorente 2010

Configuracin del conversor en CCS (I)


Para configurar la entrada del conversor se utilizan la funcin: setup_adc_ports( VALOR );
Donde VALOR puede ser: NO_ANALOG, Ninguna entrada analgica ALL_ANALOGS, Todas las entradas analgicas AN0, Configura RA0 como nica entrada analgica AN0_AN1_AN3, Configura RA0, RA1 y RA3 como entradas analgicas

Para fijar la seal de reloj utilizada en la conversin se utiliza: setup_adc(ADC_CLOCK_INTERNAL); // Reloj interno para la conv.
Otros valores posibles son: ADC_OFF, Para parar el conversor ADC_CLOCK_DIV_32, Utiliza un divisor por 32 de la Fosc.
Nota: La lista completa de valores se puede consultar en el archivo: 16F877A.h (c) Domingo Llorente 2010 10

Configuracin del conversor en CCS (II)


Para leer el valor analgico hay seguir los siguientes pasos: 1) Fijar el canal a leer: set_adc_channel(0); // Canal AN0 seleccionado 2) Esperar, al menos 20us: delay_us(20); // Retardo para asegurar la conversin 3) Guardar el valor ledo en una variable de 16 bits: valor_leido=read_adc();
Adicionalmente, si queremos pasar a voltios la lectura obtenida:

voltios=5.0*valor_leido/1024.0;

Nota: No olvidar declarar las variables: int16 valor_leido; float voltios; (c) Domingo Llorente 2010 11

Ejemplo de programa
Disear un programa que est, constantemente leyendo la entrada analgica ANL0 y mostrando en el LCD de la placa el valor ledo y su valor en voltios.

(c) Domingo Llorente 2010

12

Solucin en CCS (I)


Comenzamos utilizando el asistente PIC Wizard

Luego creamos la carpeta para nuestro proyecto y damos un nombre al archivo con extensin .pjt

(c) Domingo Llorente 2010

13

Solucin en CCS (II)


Elegir: Pic: PIC17F877A Frecuencia del oscilador: 4Mhz Fuses: Crystal osc <=4Mhz Memoria de programa: No protegida

(c) Domingo Llorente 2010

14

Solucin en CCS (III)


En la pestaa de Analog configurar: Resolucin: 1024 (10bits). Fuente de reloj para la conversin: Internal La entrada analgica: A0

(c) Domingo Llorente 2010

15

Solucin en CCS (IV)


En la pestaa Code podemos ver el cdigo que se aadir en nuestro programa.

(c) Domingo Llorente 2010

16

Solucin en CCS (V)


El compilador nos genera la siguiente plantilla.

(c) Domingo Llorente 2010

17

Solucin:

(c) Domingo Llorente 2010

18

Resumen
Para realizar un programa con la interrupcin externa habilitada: 1.- Antes de la funcin main(); declarar una varialbe de 16bits. int16 valor_leido; 2.- En la funcin main() configurar el conversor: setup_adc_ports( AN0 ); setup_adc(ADC_CLOCK_INTERNAL); 3.- Seleccionar la entrada y hacer la lectura: set_adc_channel(0); // Canal AN0 seleccionado delay_us(20); // Retardo para asegurar la conversin valor_leido=read_adc(); // Lectura del conversor

(c) Domingo Llorente 2010

19

Vous aimerez peut-être aussi