PIC 18F45XXEl mdulo ADC(Analog Digital Converter)
1. Caractersticas generalesEl mdulo conversor Analgico-Digital (ADC) del pic 18F4550 dispone de 13 entradas y es capaz de medir la tensin analgica en cada una de ellas y convertirla en un valor digital de 10bits.Los pines susceptibles de ser configurados como entradas analgicas 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:RE2Los registros asociados al conversor ADC son: ADRESH: Contiene la parte alta de la conversin ADRESL: Contiene la parte baja de la conversin ADCON0: Registro de control 0 del ADC ADCON1: Registro de control 0 del ADC ADCON2: Registro de control 0 del ADC
2. Diagrama de bloques del conversor
3. El registro de control ADCON0
4. El registro de control ADCON1El registro ADCON1 es el encargado de configurar las entradas como analgicas o digitales y fijar la tensin de referencia del conversor.Para configurar todas las entradas como analgicas:ADCON1=0x0F;Para configurar RA0 y RA1 como entradas analgicas y el resto digitales:ADCON1=0x0D;
5. El registro de control ADCON2ADFM: Justificacin del valor de la conversin Derecha/IzquierdaACQT2:ACQT0 Ajuste del tiempo de adquisicin.ADCS2:ADCS0Frecuencia de trabajo del conversor.
6. Funciones de configuracin del ADC en C18Para poder utilizar estas funciones hay que aadir en el programa principal la lnea: #include
7. La funcin OpenADC()Para configurar el ADC se utiliza la funcin:OpenADC(clk_source,result_justification,time_select,channel,int,vref,config_port);Donde:
7. Ejemplo de configuracin del ADC en C18 (I) Configurar el ADC como:* Seal de reloj del conversor FOSC/2* Justificacin de la conversin a la derecha* Tiempo de conversin de 2 veces el TAD (tiempo de adquisicin ~2,4us)* Canal de muestreo ‘0’* Deshabilitamos las interrupciones* Tensin de referencia Vdd/Vss* RA0/AN0 y RA1/AN1 como entradas analgicas. Configuracin 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 conversin: ConvertADC(); // Comienza la conversin while(BusyADC()); // Espera a que termine la conversin resultado= (unsigned int) ReadADC(); // Guardar resultado en la variable Cuando ya no se necesite el conversor: CloseADC();
7. Ejemplo de configuracin del ADC en C18 (II) Para realizar la lectura de dos entradas analgicas debemos fijar el canal SetChanADC(n) y realizar la conversin 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 funcin:SetChanADC(n); // Donde n puede ser: ADC_CH0, ADC_CH1,….. Tambin se puede utilizar una nica funcin para seleccionar el canal y realizar la conversin:SelChanConvADC(n); // Donde n puede ser: ADC_CH0, ADC_CH1,….. Cuando ya no se necesite el conversor:CloseADC();
8. Simulacin en Proteus En Proteus (Isis) podemos utilizar el componente potencimetro (POT-HG) que incluye:Editar el componente Conectar segn la figura
9. Programa de ejemploDisear un programa que configure como entrada analgica el pin RA0 y muestre en el lcd el valor ledo por el conversor y su valor en voltios.
Solucin en C18 (l)
Solucin en C18 (II)
Solucin en C18 (III)
Simulacin en ProteusPgina 1Pgina 2Pgina 3Pgina 4Pgina 5Pgina 6Pgina 7Pgina 8Pgina 9Pgina 10Pgina 11Pgina 12Pgina 13Pgina 14Pgina 15Pgina 16