PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic...

16
PIC 18F45XX El módulo ADC (Analog Digital Converter)

Transcript of PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic...

Page 1: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

PIC 18F45XX

El módulo ADC(Analog Digital Converter)

Page 2: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

1. Características generales

➔El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone de 13 entradas y es capaz de medir la tensión analógica en cada una de ellas y convertirla en un valor digital de 10bits.

➔Los pines susceptibles de ser configurados como entradas analógicas son: PORTA(5)=> AN0:RA0, AN1:RA1, AN2:RA2, AN3:RA3,AN4:RA5 PORTB(5)=> AN8:RB2, AN9:RB3, AN10:RB1, AN11:RB4, AN12:RB0 PORTE(3)=> AN5:RE0, AN6:RE1, AN7:RE2

➔Los registros asociados al conversor ADC son: ADRESH: Contiene la parte alta de la conversión ADRESL: Contiene la parte baja de la conversión ADCON0: Registro de control 0 del ADC ADCON1: Registro de control 0 del ADC ADCON2: Registro de control 0 del ADC

Page 3: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

2. Diagrama de bloques del conversor

Page 4: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

3. El registro de control ADCON0

Page 5: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

4. El registro de control ADCON1

➔El registro ADCON1 es el encargado de configurar las entradas como analógicas o digitales y fijar la tensión de referencia del conversor.

➔Para configurar todas las entradas como analógicas:ADCON1=0x0F;

➔Para configurar RA0 y RA1 como entradas analógicas y el resto digitales:ADCON1=0x0D;

Page 6: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

5. El registro de control ADCON2

ADFM: Justificación del valor de la conversión Derecha/Izquierda

ACQT2:ACQT0 Ajuste del tiempo de adquisición.

ADCS2:ADCS0Frecuencia de trabajo del conversor.

Page 7: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

6. Funciones de configuración del ADC en C18

Para poder utilizar estas funciones hay que añadir en el programa principal la línea: #include <adc.h>

Page 8: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

7. La función OpenADC()

➔Para configurar el ADC se utiliza la función:OpenADC(clk_source,result_justification,time_select,channel,int,vref,config_port);

Donde:

Page 9: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

7. Ejemplo de configuración del ADC en C18 (I) ➔ Configurar el ADC como:

* Señal de reloj del conversor FOSC/2* Justificación de la conversión a la derecha* Tiempo de conversión de 2 veces el TAD (tiempo de adquisición ~2,4us)* Canal de muestreo '0'* Deshabilitamos las interrupciones* Tensión de referencia Vdd/Vss* RA0/AN0 y RA1/AN1 como entradas analógicas. ➔ Configuración en C18: unsigned char config1=0,config2=0,configport=0; config1 = ADC_FOSC_2 & ADC_RIGHT_JUST & ADC_2_TAD ; config2 = ADC_CH0 & ADC_INT_OFF & ADC_REF_VDD_VSS ; portconfig = ADC_2ANA ; OpenADC(config1,config2,portconfig);

➔ Una vez configurado el ADC para realizar la conversión: ConvertADC(); // Comienza la conversión while(BusyADC()); // Espera a que termine la conversión resultado= (unsigned int) ReadADC(); // Guardar resultado en la variable

➔ Cuando ya no se necesite el conversor: CloseADC();

Page 10: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

7. Ejemplo de configuración del ADC en C18 (II)

➔ Para realizar la lectura de dos entradas analógicas debemos fijar el canal “SetChanADC(n)” y realizar la conversión “ConvertADC()”. Para cada uno de los canales. ➔ Una vez conseguido el valor del canal seleccionado es posible cambiar el canal para obtener otro valor con la función:SetChanADC(n); // Donde “n” puede ser: ADC_CH0, ADC_CH1,.....

➔ También se puede utilizar una única función para seleccionar el canal y realizar la conversión:SelChanConvADC(n); // Donde “n” puede ser: ADC_CH0, ADC_CH1,.....

➔ Cuando ya no se necesite el conversor:CloseADC();

Page 11: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

8. Simulación en Proteus

En Proteus (Isis) podemos utilizar el componente potenciómetro (POT-HG) que incluye:

Editar el componente Conectar según la figura

Page 12: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

9. Programa de ejemplo

Diseñar un programa que configure como entrada analógica el pin RA0 y muestre en el lcd el valor leído por el conversor y su valor en voltios.

Page 13: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

Solución en C18 (l)

Page 14: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

Solución en C18 (II)

Page 15: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

Solución en C18 (III)

Page 16: PIC 18F45XX - IES LUIS DE LUCENA€¦ · El módulo conversor Analógico-Digital (ADC) del pic 18F4550 dispone ... * Señal de reloj del conversor FOSC/2 ... para obtener otro valor

Simulación en Proteus