SlideShare una empresa de Scribd logo
IUT Cumaná




  MICROCONTROLADORES II
        MÓDULO A/D
(Convertidor Analógico/Digital)

        PROF. LUIS ZURITA
IUT Cumaná



                    RESOLUCIÓN




Prof. Luis Zurita                Microcontroladores II
VOLTAJES DE REFERENCIA EXTERNOS                                        IUT Cumaná




   • El convertidor A/D puede seleccionar como tensión de
     referencia la interna VDD y Tierra.
   • Para referencias externas, se introducen por:
       • RA3/AN3/VREF+ y RA2/AN2/VREF-
       • Las siguientes limitaciones aplican:
                – El máximo voltaje aplicado a VREF+ (RA3/AN3) será
                  VDD+0,3V y el mínimo VDD-2,5V.
                – Sobre el voltaje aplicado a VREF- (RA2/AN2) la
                  mínima tensión será VSS-0,3V y la máxima (VREF+) -
                  2V.
                – Por ejemplo, si la tensión de alimentación es de 5V, la
                  tensión en RA3/AN3 no podrá exceder de 5V. Por lo
Prof. Luis Zurita
                  que el máximo voltaje en VREF- será de 3V.     Microcontroladores II
IUT Cumaná



           REGISTROS RELACIONADOS AL MÓDULO A/D


       • ADCON0: Registro de control 0. (Banco 0).
       • ADCON1: Registro de control 1. (Banco 1).
       • ADRESH: Guarda la parte alta del Resultado de
         la conversión. (Banco 0).
       • ADRESL: Guarda la parte baja del Resultado de
         la conversión. (Banco 1).



Prof. Luis Zurita                               Microcontroladores II
• Selección del reloj de conversión A/D                       IUT Cumaná




         El tiempo de conversión A/D por bit se define como
         TAD. La conversión A/D requiere mínimo 12TAD por
         10-bits de conversión.
       • La fuente del reloj de conversión A/D es seleccionado
         por software, mediante los bits ADCON0 <7:6>. Las
         cuatro opciones posibles para TAD son:

                    ADCS 1:0        PERÍODO
                    0 0             2TOSC
                    0 1             8TOSC
                    1 0             32TOSC
                    1 1             RC interno (2-6 μs)
Prof. Luis Zurita                                         Microcontroladores II
Tiempo de adquisición (TACQ)                IUT Cumaná




       • Es el tiempo necesario para que se cargue el
         condensador de retención interno, con la tensión de
         entrada. Este proceso de carga del condensador
         depende de distintos factores, entre otros, la
         impedancia de la fuente de tensión de entrada (el
         fabricante recomienda que se sitúe por debajo de 10
         kohm.
       • El tiempo de adquisición dentro de los márgenes
         típicos es de aproximadamente 20μs.
       • La adquisición no comienza hasta que no acabe la
         conversión. Por lo que se debe esperar un TACQ tras
         una conversión , para seleccionar un nuevo canal o
         luego de encender el módulo AD.
Prof. Luis Zurita                                    Microcontroladores II
IUT Cumaná



                    Tiempo de conversión (TAD)

       • Es el tiempo necesario para obtener el valor digital
         de la tensión analógica de entrada. Este tiempo
         depende de la fuente de reloj que se seleccione para
         la conversión.




Prof. Luis Zurita                                     Microcontroladores II
IUT Cumaná


       • Para un control adecuado de conversiones A/D, el reloj
       de conversión A/D (TAD) deben ser seleccionados para
       asegurar un tiempo mínimo TAD de 1,6 μs.
       •La siguiente tabla muestra los tiempos de TAD derivada
       de las frecuencias de funcionamiento del dispositivo y de
       la fuente de reloj A/D de reloj seleccionado.




Prof. Luis Zurita                                      Microcontroladores II
IUT Cumaná



                    CICLOS DE CONVERSIÓN




Prof. Luis Zurita                          Microcontroladores II
IUT Cumaná



                    FORMATO DE RESULTADOS




Prof. Luis Zurita                           Microcontroladores II
IUT Cumaná




Prof. Luis Zurita   Microcontroladores II
IUT Cumaná




Prof. Luis Zurita   Microcontroladores II
IUT Cumaná




Prof. Luis Zurita   Microcontroladores II
IUT Cumaná



                PASOS PARA REALIZAR UNA CONVERSIÓN

       1. Configurar el módulo conversor A/D
       · Configurar los pines que actúan como entradas
          analógicas, las señales que harán de tensión de
          referencia y las que trabajarán como E/S digitales.
          (ADCON1).
       · Seleccionar el canal de entrada. A/D (ADCON0).
       · Seleccionar la fuente de la señal de reloj para la
          conversión A/D (ADON0).
       · Activar el módulo de conversión A/D (ADCON0)

Prof. Luis Zurita                                     Microcontroladores II
IUT Cumaná



                PASOS PARA REALIZAR UNA CONVERSIÓN

       2. Activar si, se desea, la interrupción. del módulo
          conversor A/D:
       · Poner a cero el bit ADIF
       · Poner a uno el bit ADIE
       · Poner a uno los bits habilitadores GIE y PEIE
       3. Esperar el tiempo requerido para la adquisición.
       4. Inicio de la conversión:
       · Poner a 1 el bit GO/#DONE (ADCON0)


Prof. Luis Zurita                                   Microcontroladores II
IUT Cumaná



                PASOS PARA REALIZAR UNA CONVERSIÓN

       5. Tiempo de espera para terminar la conversión A/D
          que puede detectarse Por:
       · Exploración de bit GO/DONE# , que al finalizar la
          conversión toma el valor “0”
       · Esperar que se produzca una interrupción si se ha
          programado al finalizar la conversión.
       · Aunque no se autorice la interrupción el flag ADIF se
          pone a “ 1 “ al finalizar la interrupción.



Prof. Luis Zurita                                      Microcontroladores II
IUT Cumaná



                PASOS PARA REALIZAR UNA CONVERSIÓN

       6. Leer el par de registros ADRESH:ADRESL donde se
          encuentran los 10 bits que resultan de la conversión
          y poner a cero el flag ADIF.
       7. Para una nueva conversión volver a los pasos 1 y 2, el
          tiempo de conversión por bit está definido por TAD,
          se exige un mínimo de 2*TAD para realizar una nueva
          conversión.




Prof. Luis Zurita                                        Microcontroladores II
A/D en C                                  IUT Cumaná


   • En el compilador C las funciones para manejar el
     convertidor A/D son las siguientes:
   setup_adc(modo);
     Donde modo, determina la configuración del módulo
     A/D correspondiente a los bits 7:6 del ADCON0.
           setup_adc(modo);              ADCON0(1Fh)
           ADC_OFF                       00000000
           ADC_CLOCK_INTERNAL            11000000
           ADC_CLOCK_DIV_2               00000000
           ADC_CLOCK_DIV_8               01000000
           ADC_CLOCK_DIV_32              10000000
       setup_adc_ports(valor);
       Valor: definición de las entradas analógicas
Prof. Luis Zurita correspondiente a los bits 3:0 del ADCON1.Microcontroladores II
PCFG3   AN7   AN6   AN5   AN4   AN3     AN2     AN1   AN0   setup_adc_ports(valor);
        RE2   RE1   RE0   RA5   RA3     RA2     RA1   RA0
PCFG0
0000    A     A     A     A     A       A       A     A     ALL_ANALOG
0001    A     A     A     A     VREF+   A       A     A     AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF

0010    D     D     D     A     A       A       A     A     AN0_AN1_AN2_AN3_AN4
0011    D     D     D     A     VREF+   A       A     A     AN0_AN1_AN2_AN4_VSS_VREF
0100    D     D     D     D     A       D       A     A     AN0_AN1_AN3
0101    D     D     D     D     VREF+   D       A     A     AN0_AN1_VSS_VREF
011X    D     D     D     D     D       D       D     D     NO_ANALOGS
1000    A     A     A     A     VREF+   VREF-   A     A     AN0_AN1_AN4_AN5_AN6_AN7_VREF_VREF

1001    D     D     A     A     A       A       A     A     AN0_AN1_AN2_AN3_AN4_AN5
1010    D     D     A     A     VREF+   A       A     A     AN0_AN1_AN2_AN4_AN5_VSS_VREF
1011    D     D     A     A     VREF+   VREF-   A     A     AN0_AN1_AN4_AN5_VREF_VREF
1100    D     D     D     A     VREF+   VREF-   A     A     A_ANALOG_RA3_RA2_REF
1101    D     D     D     D     VREF+   VREF-   A     A     AN0_AN1_VREF_VREF
1110    D     D     D     D     D       D       D     A     AN0
1111    D     D     D     D     VREF+   VREF-   D     A     AN0_VREF_VREF
A/D en C                          IUT Cumaná




       set_adc_channel(canal)
       Canal: selección del canal analógico correspondiente a
         los bits 5:3 del ADCON0.

                    0(AN0)   1(AN1)   2(AN2)   3(AN3)
                    4(AN4)   5(AN5)   6(AN6)   7(AN7)




Prof. Luis Zurita                                       Microcontroladores II
A/D en C                          IUT Cumaná




       valor= read_adc();
       Lectura del resultado donde valor es un enterio de 16
         bits, según la directiva #DEVICE ADC= empleada. Esta
         directiva trabaja según la tabla:

                    DEVICE    8 bit    10 bit    11 bit   16 bit
                    ADC=8     00-FF     00-FF    00-FF    00-FF
                    ADC=10      x       0-3FF       x        x
                    ADC=11      x         x      0-7FF       x
                    ADC=16   0-FF00    0-FFC0    0-FFE0   0-FFFF


Prof. Luis Zurita                                            Microcontroladores II
A/D en C                                    IUT Cumaná




       • Por ejemplo, el fichero 16F877.h incluye como
         primera directiva #device PIC16F877. Para incluir la
         información del tipo de conversor A/D se debe
         añadir #device adc=10.

       READ_ADC() admite tres modos de funcionamiento:

    ADC_START_AND_READ       Si no se indica nada es la opción por
                             defecto.
                             Permite iniciar y leer el convertidor.
    ADC_START_ONLY           Sólo inicia la conversión.
    ADC_READ_ONLY            Sólo lee los registros del convertidor.


Prof. Luis Zurita                                            Microcontroladores II
A/D en C. Ejercicio 1. Lectura de un canal.                          IUT Cumaná




       En el siguiente ejercicio, se    setup_adc(ADC_CLOCK_INTERNAL);
          medirá un canal analógico setup_adc_ports(ALL_ANALOG);
          que ingresa por RA0 y se          lcd_init();
          muestra su valor en digital y
          en voltaje en una pantalla        while(TRUE){
          LCD.                                set_adc_channel(0);
       #include <16f877a.h>                   delay_ms(100);
       #device ADC=10                         valor=read_adc();
       #fuses                                 p=0.004883*valor;
          XT,NOWDT,NOPROTECT,NOLVP            lcd_gotoxy(1,1);
       #use delay(clock=4000000)        printf(lcd_putc,"fA/DValor=%4LUn",valor);
       #use fast_IO(c)                  printf(lcd_putc,"Voltaje=%g",p);
       #include <lcd.c>                       }
       int16 valor=0;                    }
       float p;

       void main(){
Prof. Luis Zurita                                                         Microcontroladores II
A/D en C. Ejercicio 1. Lectura de un canal.        IUT Cumaná




Prof. Luis Zurita                                       Microcontroladores II
A/D en C. Ejercicio 2. Lectura de dos canales.           IUT Cumaná




       En el siguiente ejercicio, se medirán dos canales
          analógicos (RA0 y RA1), el primero será el valor de
          una variable que se desea medir y el segundo será el
          set point.
       Si la variable está por encima del set point se activa un
          led rojo. En caso contrario se activa un led verde.




Prof. Luis Zurita                                        Microcontroladores II
A/D en C. Ejercicio 2. Lectura de dos canales.      IUT Cumaná




       #include <16f877.h>
       #device ADC=10
       #fuses XT,NOWDT,NOPROTECT,NOLVP
       #use delay(clock=4000000)
       #use fast_IO(C)
       #include <lcd.c>
       int16 valor=0;
       long     setpoint=0;
       float p;
       float psp;

       void main(){
          set_tris_c(0);
          setup_adc(ADC_CLOCK_INTERNAL);
          setup_adc_ports(ALL_ANALOG);
          lcd_init();
          output_C(0);
Prof. Luis Zurita                                   Microcontroladores II
A/D en C. Ejercicio 2. Lectura de dos canales.
                                    Continuación.
                                                                           IUT Cumaná


       while (TRUE){
                set_adc_channel(0);
                delay_ms(10);
                valor=read_adc();
                p=0.004883*valor;
                printf(lcd_putc,"fSENSOR=%gn",p);
                set_adc_channel(1);
                delay_ms(10);
                setpoint=read_adc();
                psp=0.004883*setpoint;
                printf(lcd_putc,"SPOINT=%gn",psp);
                if(p>=psp){
                          output_high(PIN_C0);
                          output_low(PIN_C1);}
                else{
                          output_low(PIN_C0);
                          output_high(PIN_C1);
                }
                delay_ms(50);
         }
       }
Prof. Luis Zurita                                               Microcontroladores II
A/D en C. Ejercicio 2. Lectura de dos canales.      IUT Cumaná




Prof. Luis Zurita                                   Microcontroladores II
A/D en C. Ejercicio 2. Lectura de dos canales.      IUT Cumaná




Prof. Luis Zurita                                   Microcontroladores II
A/D en C. Ejercicio 3. Termómetro con una NTC                    IUT Cumaná

                     NTSA0WB203

                 En este ejercicio se plantea diseñar un
             termómetro basado en una NTC modelo
             NTCSA0WB203, con una beta de 4050 y una
             resistencia a 25°C de 20 kΩ.
                 Estas características se pueden ajustar así como
             la temperatura a medir en el menú de edición del
             componente.




Prof. Luis Zurita                                         Microcontroladores II
Modificación de los valores de la NTC en              IUT Cumaná



                                   Proteus




                                            Cambiar por 25°C




Prof. Luis Zurita                                              Microcontroladores II
A/D en C. Ejercicio 3. Termómetro con una NTC                IUT Cumaná

                     NTSA0WB203

        La NTC se linealiza mediante una resistencia R1 de 10
          kΩ, el valor de la tensión de la NTC(VT) se puede
          obtener mediante las siguientes ecuaciones
          (temperatura en °k):




Prof. Luis Zurita                                     Microcontroladores II
A/D en C. Ejercicio 3. Termómetro con una NTC                             IUT Cumaná

                     NTSA0WB203
       #include "16f877.h"
       #device adc=10
       #fuses XT,NOWDT
       #use delay(clock=4000000)
       #include <math.h>       //Se incluye para los cálculos matemáticos
       #include <lcd.c>

       void main() {
        float tv,tr,temp,y;   //Variables de ecuación
        int16 value;
        lcd_init();
        setup_port_a( ALL_ANALOG );
        setup_adc( ADC_CLOCK_INTERNAL );
        set_adc_channel( 0 );
        delay_us(10);

Prof. Luis Zurita                                                  Microcontroladores II
A/D en C. Ejercicio 3. Termómetro con una NTC         IUT Cumaná

                     NTSA0WB203
while(true) {
    value = Read_ADC();
    tv = 5.0 * value / 1024.0;
    tr = tv * 10000.0 / (5.0 - tv);
    A = log(tr/20000.0);
    y = (1.0/298.15) + (A *(1.0/4050.0));
    temp=1.0/y;
    temp = temp -273.15;
    printf(lcd_putc,"fTEMPERATURAn");
     printf(lcd_putc,"nT = %04.2fC", temp);
  }
}
Prof. Luis Zurita                              Microcontroladores II
A/D en C. Ejercicio 3. Termómetro con una NTC       IUT Cumaná

                     NTSA0WB203




Prof. Luis Zurita                            Microcontroladores II

Más contenido relacionado

PPT
Curso Micro Tema 3 2
PDF
Micro2 tema 3
PDF
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
PDF
Micro2 tema 2
PPTX
MICROCONTROLADORES II EN C. TEMA 2
PDF
Micro2 tema 5
PDF
MICROCONTROLADORES II EN C. TEMA 5
PPT
Curso Micro Tema 3
Curso Micro Tema 3 2
Micro2 tema 3
EJERCICIOS TEMA 1. MICROCONTROLADORES II EN C
Micro2 tema 2
MICROCONTROLADORES II EN C. TEMA 2
Micro2 tema 5
MICROCONTROLADORES II EN C. TEMA 5
Curso Micro Tema 3

La actualidad más candente (20)

PPT
Ccp2009170309
PDF
Micro2 tema 4
PPT
Curso Micro Tema 5
PDF
Guía de ejercicios resueltos tema 2
PDF
EJERCICIO ADICIONAL 1ER EXAMEN
PPT
Curso Micro Tema 1
PDF
Guía de ejercicios resueltos y propuestos tema 4
PDF
Uso de las tablas en lenguaje ensamblador
PDF
Clase 2
PPT
Curso Micro Tema 2
PDF
MICROCONTROLADORES II EN C. TEMA 3
PDF
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
PDF
Presentacion proyecto final micro2
PDF
Micro2 tema 1
PPT
Curso Micro Tema 4
PPT
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
PDF
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
DOC
Ejemplos 4to Examen Mci
PDF
UNIDAD IV
PDF
Curso de microcontroladores capitulo 05
Ccp2009170309
Micro2 tema 4
Curso Micro Tema 5
Guía de ejercicios resueltos tema 2
EJERCICIO ADICIONAL 1ER EXAMEN
Curso Micro Tema 1
Guía de ejercicios resueltos y propuestos tema 4
Uso de las tablas en lenguaje ensamblador
Clase 2
Curso Micro Tema 2
MICROCONTROLADORES II EN C. TEMA 3
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
Presentacion proyecto final micro2
Micro2 tema 1
Curso Micro Tema 4
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
GUÍA DE EJERCICIOS RESUELTOS TEMA 4
Ejemplos 4to Examen Mci
UNIDAD IV
Curso de microcontroladores capitulo 05
Publicidad

Destacado (17)

PPTX
PWM con PIC16F877A: Modulos y Registros Involucrados
PPTX
MICROCONTROLADORES II EN C. TEMA 1
PDF
Manejo de perifericos para microcontroladore
PDF
Manual pic 16..
PPTX
Palmira industria cultural pic
PDF
Fundamentos de robotica barrientos, peñin, balaguer y aracil
PDF
Microcontrolador 16f84 X
PPT
Microcontroladores en robtica mvil
PDF
El PIC16F84
PPT
FAMILIA MICROCONTROLADORES
DOCX
Plan De Evaluacion
PDF
Clase 4 pro
PPTX
Clase 5 cdii
PPTX
Clase 3 cdii
PPT
Aprendizaje Significativo
PPTX
Clase 4 cdii
PWM con PIC16F877A: Modulos y Registros Involucrados
MICROCONTROLADORES II EN C. TEMA 1
Manejo de perifericos para microcontroladore
Manual pic 16..
Palmira industria cultural pic
Fundamentos de robotica barrientos, peñin, balaguer y aracil
Microcontrolador 16f84 X
Microcontroladores en robtica mvil
El PIC16F84
FAMILIA MICROCONTROLADORES
Plan De Evaluacion
Clase 4 pro
Clase 5 cdii
Clase 3 cdii
Aprendizaje Significativo
Clase 4 cdii
Publicidad

Similar a Microcontroladores ii en c. tema 4 (20)

PPT
Compilador CCS.ppt
PPTX
Tema3 Microii
PPTX
Tema3 Microii
PDF
PDF
S14_s2 - Conversor analógico digital ADC (1).pdf
PDF
Control nivel luz
PDF
Módulo ADC del PIC16F887
PDF
Adc y usart pic16 f887
PDF
Curso de microcontroladores capitulo 08
PDF
ARDUINO - METODOLOGÍA PARA TRADUCIR AL LENGUAJE PROCESSING UN CIRCUITO E...
DOCX
Diseño de un inclinometro para la aplicación de una mesa
PDF
Manual de practicas de Electrónica de potencia
PDF
Ejercicio 07 Timers
PDF
Microprogramacion - Interrupciones y timers
PDF
2. soft starter monofasico
PDF
Guia Rapida - Reconectador NOJA (1).pdf
DOCX
Pic 16 F877XA A/D
Compilador CCS.ppt
Tema3 Microii
Tema3 Microii
S14_s2 - Conversor analógico digital ADC (1).pdf
Control nivel luz
Módulo ADC del PIC16F887
Adc y usart pic16 f887
Curso de microcontroladores capitulo 08
ARDUINO - METODOLOGÍA PARA TRADUCIR AL LENGUAJE PROCESSING UN CIRCUITO E...
Diseño de un inclinometro para la aplicación de una mesa
Manual de practicas de Electrónica de potencia
Ejercicio 07 Timers
Microprogramacion - Interrupciones y timers
2. soft starter monofasico
Guia Rapida - Reconectador NOJA (1).pdf
Pic 16 F877XA A/D

Más de Luis Zurita (20)

PDF
TALLER NORMAS APA
PDF
PROTOCOLO MODBUS
PDF
Guía rápidalcd y teclado
PDF
Pevmicroi ieo
PDF
Pevmicroii13 2
PDF
Pevmicro1 t2 13
PDF
Pev electronica
PDF
Grupos micro2 13
PDF
Pevmicro1 t2 13
PDF
Pevmicroii13 2
PDF
Notas def electronica
PDF
Notas proyecto3 iyc
PDF
Notas definitivas iyc2013
PDF
Proyecto 2 electronica
PDF
Acumuladas electronica
PDF
Pevmicro2013
PDF
Proyecto2 notas iyc2013
PDF
Acumuladas iyc2013
PDF
TMR0 Y RB0_INT
PDF
Guía rápida tmr0 e interrupciones
TALLER NORMAS APA
PROTOCOLO MODBUS
Guía rápidalcd y teclado
Pevmicroi ieo
Pevmicroii13 2
Pevmicro1 t2 13
Pev electronica
Grupos micro2 13
Pevmicro1 t2 13
Pevmicroii13 2
Notas def electronica
Notas proyecto3 iyc
Notas definitivas iyc2013
Proyecto 2 electronica
Acumuladas electronica
Pevmicro2013
Proyecto2 notas iyc2013
Acumuladas iyc2013
TMR0 Y RB0_INT
Guía rápida tmr0 e interrupciones

Último (20)

PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
DOCX
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
PDF
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
PDF
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
PDF
Fundamentos_Educacion_a_Distancia_ABC.pdf
DOCX
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias
PDF
biología es un libro sobre casi todo el tema de biología
PDF
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
PDF
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
PDF
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
DOCX
2 GRADO UNIDAD 5 - 2025.docx para primaria
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
PDF
Tomo 1 de biologia gratis ultra plusenmas
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
Escuela Sabática 6. A través del Mar Rojo.pdf
Unidad de Aprendizaje 5 de Matematica 1ro Secundaria Ccesa007.pdf
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
Fundamentos_Educacion_a_Distancia_ABC.pdf
PROYECTO DE APRENDIZAJE para la semana de fiestas patrias
biología es un libro sobre casi todo el tema de biología
Habitos de Ricos - Juan Diego Gomez Ccesa007.pdf
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
Punto Critico - Brian Tracy Ccesa007.pdf
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
Escuelas Desarmando una mirada subjetiva a la educación
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
2 GRADO UNIDAD 5 - 2025.docx para primaria
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Lección 6 Escuela Sab. A través del mar rojo.pdf
Tomo 1 de biologia gratis ultra plusenmas
V UNIDAD - PRIMER GRADO. del mes de agosto
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf

Microcontroladores ii en c. tema 4

  • 1. IUT Cumaná MICROCONTROLADORES II MÓDULO A/D (Convertidor Analógico/Digital) PROF. LUIS ZURITA
  • 2. IUT Cumaná RESOLUCIÓN Prof. Luis Zurita Microcontroladores II
  • 3. VOLTAJES DE REFERENCIA EXTERNOS IUT Cumaná • El convertidor A/D puede seleccionar como tensión de referencia la interna VDD y Tierra. • Para referencias externas, se introducen por: • RA3/AN3/VREF+ y RA2/AN2/VREF- • Las siguientes limitaciones aplican: – El máximo voltaje aplicado a VREF+ (RA3/AN3) será VDD+0,3V y el mínimo VDD-2,5V. – Sobre el voltaje aplicado a VREF- (RA2/AN2) la mínima tensión será VSS-0,3V y la máxima (VREF+) - 2V. – Por ejemplo, si la tensión de alimentación es de 5V, la tensión en RA3/AN3 no podrá exceder de 5V. Por lo Prof. Luis Zurita que el máximo voltaje en VREF- será de 3V. Microcontroladores II
  • 4. IUT Cumaná REGISTROS RELACIONADOS AL MÓDULO A/D • ADCON0: Registro de control 0. (Banco 0). • ADCON1: Registro de control 1. (Banco 1). • ADRESH: Guarda la parte alta del Resultado de la conversión. (Banco 0). • ADRESL: Guarda la parte baja del Resultado de la conversión. (Banco 1). Prof. Luis Zurita Microcontroladores II
  • 5. • Selección del reloj de conversión A/D IUT Cumaná El tiempo de conversión A/D por bit se define como TAD. La conversión A/D requiere mínimo 12TAD por 10-bits de conversión. • La fuente del reloj de conversión A/D es seleccionado por software, mediante los bits ADCON0 <7:6>. Las cuatro opciones posibles para TAD son: ADCS 1:0 PERÍODO 0 0 2TOSC 0 1 8TOSC 1 0 32TOSC 1 1 RC interno (2-6 μs) Prof. Luis Zurita Microcontroladores II
  • 6. Tiempo de adquisición (TACQ) IUT Cumaná • Es el tiempo necesario para que se cargue el condensador de retención interno, con la tensión de entrada. Este proceso de carga del condensador depende de distintos factores, entre otros, la impedancia de la fuente de tensión de entrada (el fabricante recomienda que se sitúe por debajo de 10 kohm. • El tiempo de adquisición dentro de los márgenes típicos es de aproximadamente 20μs. • La adquisición no comienza hasta que no acabe la conversión. Por lo que se debe esperar un TACQ tras una conversión , para seleccionar un nuevo canal o luego de encender el módulo AD. Prof. Luis Zurita Microcontroladores II
  • 7. IUT Cumaná Tiempo de conversión (TAD) • Es el tiempo necesario para obtener el valor digital de la tensión analógica de entrada. Este tiempo depende de la fuente de reloj que se seleccione para la conversión. Prof. Luis Zurita Microcontroladores II
  • 8. IUT Cumaná • Para un control adecuado de conversiones A/D, el reloj de conversión A/D (TAD) deben ser seleccionados para asegurar un tiempo mínimo TAD de 1,6 μs. •La siguiente tabla muestra los tiempos de TAD derivada de las frecuencias de funcionamiento del dispositivo y de la fuente de reloj A/D de reloj seleccionado. Prof. Luis Zurita Microcontroladores II
  • 9. IUT Cumaná CICLOS DE CONVERSIÓN Prof. Luis Zurita Microcontroladores II
  • 10. IUT Cumaná FORMATO DE RESULTADOS Prof. Luis Zurita Microcontroladores II
  • 11. IUT Cumaná Prof. Luis Zurita Microcontroladores II
  • 12. IUT Cumaná Prof. Luis Zurita Microcontroladores II
  • 13. IUT Cumaná Prof. Luis Zurita Microcontroladores II
  • 14. IUT Cumaná PASOS PARA REALIZAR UNA CONVERSIÓN 1. Configurar el módulo conversor A/D · Configurar los pines que actúan como entradas analógicas, las señales que harán de tensión de referencia y las que trabajarán como E/S digitales. (ADCON1). · Seleccionar el canal de entrada. A/D (ADCON0). · Seleccionar la fuente de la señal de reloj para la conversión A/D (ADON0). · Activar el módulo de conversión A/D (ADCON0) Prof. Luis Zurita Microcontroladores II
  • 15. IUT Cumaná PASOS PARA REALIZAR UNA CONVERSIÓN 2. Activar si, se desea, la interrupción. del módulo conversor A/D: · Poner a cero el bit ADIF · Poner a uno el bit ADIE · Poner a uno los bits habilitadores GIE y PEIE 3. Esperar el tiempo requerido para la adquisición. 4. Inicio de la conversión: · Poner a 1 el bit GO/#DONE (ADCON0) Prof. Luis Zurita Microcontroladores II
  • 16. IUT Cumaná PASOS PARA REALIZAR UNA CONVERSIÓN 5. Tiempo de espera para terminar la conversión A/D que puede detectarse Por: · Exploración de bit GO/DONE# , que al finalizar la conversión toma el valor “0” · Esperar que se produzca una interrupción si se ha programado al finalizar la conversión. · Aunque no se autorice la interrupción el flag ADIF se pone a “ 1 “ al finalizar la interrupción. Prof. Luis Zurita Microcontroladores II
  • 17. IUT Cumaná PASOS PARA REALIZAR UNA CONVERSIÓN 6. Leer el par de registros ADRESH:ADRESL donde se encuentran los 10 bits que resultan de la conversión y poner a cero el flag ADIF. 7. Para una nueva conversión volver a los pasos 1 y 2, el tiempo de conversión por bit está definido por TAD, se exige un mínimo de 2*TAD para realizar una nueva conversión. Prof. Luis Zurita Microcontroladores II
  • 18. A/D en C IUT Cumaná • En el compilador C las funciones para manejar el convertidor A/D son las siguientes: setup_adc(modo); Donde modo, determina la configuración del módulo A/D correspondiente a los bits 7:6 del ADCON0. setup_adc(modo); ADCON0(1Fh) ADC_OFF 00000000 ADC_CLOCK_INTERNAL 11000000 ADC_CLOCK_DIV_2 00000000 ADC_CLOCK_DIV_8 01000000 ADC_CLOCK_DIV_32 10000000 setup_adc_ports(valor); Valor: definición de las entradas analógicas Prof. Luis Zurita correspondiente a los bits 3:0 del ADCON1.Microcontroladores II
  • 19. PCFG3 AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 setup_adc_ports(valor); RE2 RE1 RE0 RA5 RA3 RA2 RA1 RA0 PCFG0 0000 A A A A A A A A ALL_ANALOG 0001 A A A A VREF+ A A A AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF 0010 D D D A A A A A AN0_AN1_AN2_AN3_AN4 0011 D D D A VREF+ A A A AN0_AN1_AN2_AN4_VSS_VREF 0100 D D D D A D A A AN0_AN1_AN3 0101 D D D D VREF+ D A A AN0_AN1_VSS_VREF 011X D D D D D D D D NO_ANALOGS 1000 A A A A VREF+ VREF- A A AN0_AN1_AN4_AN5_AN6_AN7_VREF_VREF 1001 D D A A A A A A AN0_AN1_AN2_AN3_AN4_AN5 1010 D D A A VREF+ A A A AN0_AN1_AN2_AN4_AN5_VSS_VREF 1011 D D A A VREF+ VREF- A A AN0_AN1_AN4_AN5_VREF_VREF 1100 D D D A VREF+ VREF- A A A_ANALOG_RA3_RA2_REF 1101 D D D D VREF+ VREF- A A AN0_AN1_VREF_VREF 1110 D D D D D D D A AN0 1111 D D D D VREF+ VREF- D A AN0_VREF_VREF
  • 20. A/D en C IUT Cumaná set_adc_channel(canal) Canal: selección del canal analógico correspondiente a los bits 5:3 del ADCON0. 0(AN0) 1(AN1) 2(AN2) 3(AN3) 4(AN4) 5(AN5) 6(AN6) 7(AN7) Prof. Luis Zurita Microcontroladores II
  • 21. A/D en C IUT Cumaná valor= read_adc(); Lectura del resultado donde valor es un enterio de 16 bits, según la directiva #DEVICE ADC= empleada. Esta directiva trabaja según la tabla: DEVICE 8 bit 10 bit 11 bit 16 bit ADC=8 00-FF 00-FF 00-FF 00-FF ADC=10 x 0-3FF x x ADC=11 x x 0-7FF x ADC=16 0-FF00 0-FFC0 0-FFE0 0-FFFF Prof. Luis Zurita Microcontroladores II
  • 22. A/D en C IUT Cumaná • Por ejemplo, el fichero 16F877.h incluye como primera directiva #device PIC16F877. Para incluir la información del tipo de conversor A/D se debe añadir #device adc=10. READ_ADC() admite tres modos de funcionamiento: ADC_START_AND_READ Si no se indica nada es la opción por defecto. Permite iniciar y leer el convertidor. ADC_START_ONLY Sólo inicia la conversión. ADC_READ_ONLY Sólo lee los registros del convertidor. Prof. Luis Zurita Microcontroladores II
  • 23. A/D en C. Ejercicio 1. Lectura de un canal. IUT Cumaná En el siguiente ejercicio, se setup_adc(ADC_CLOCK_INTERNAL); medirá un canal analógico setup_adc_ports(ALL_ANALOG); que ingresa por RA0 y se lcd_init(); muestra su valor en digital y en voltaje en una pantalla while(TRUE){ LCD. set_adc_channel(0); #include <16f877a.h> delay_ms(100); #device ADC=10 valor=read_adc(); #fuses p=0.004883*valor; XT,NOWDT,NOPROTECT,NOLVP lcd_gotoxy(1,1); #use delay(clock=4000000) printf(lcd_putc,"fA/DValor=%4LUn",valor); #use fast_IO(c) printf(lcd_putc,"Voltaje=%g",p); #include <lcd.c> } int16 valor=0; } float p; void main(){ Prof. Luis Zurita Microcontroladores II
  • 24. A/D en C. Ejercicio 1. Lectura de un canal. IUT Cumaná Prof. Luis Zurita Microcontroladores II
  • 25. A/D en C. Ejercicio 2. Lectura de dos canales. IUT Cumaná En el siguiente ejercicio, se medirán dos canales analógicos (RA0 y RA1), el primero será el valor de una variable que se desea medir y el segundo será el set point. Si la variable está por encima del set point se activa un led rojo. En caso contrario se activa un led verde. Prof. Luis Zurita Microcontroladores II
  • 26. A/D en C. Ejercicio 2. Lectura de dos canales. IUT Cumaná #include <16f877.h> #device ADC=10 #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(clock=4000000) #use fast_IO(C) #include <lcd.c> int16 valor=0; long setpoint=0; float p; float psp; void main(){ set_tris_c(0); setup_adc(ADC_CLOCK_INTERNAL); setup_adc_ports(ALL_ANALOG); lcd_init(); output_C(0); Prof. Luis Zurita Microcontroladores II
  • 27. A/D en C. Ejercicio 2. Lectura de dos canales. Continuación. IUT Cumaná while (TRUE){ set_adc_channel(0); delay_ms(10); valor=read_adc(); p=0.004883*valor; printf(lcd_putc,"fSENSOR=%gn",p); set_adc_channel(1); delay_ms(10); setpoint=read_adc(); psp=0.004883*setpoint; printf(lcd_putc,"SPOINT=%gn",psp); if(p>=psp){ output_high(PIN_C0); output_low(PIN_C1);} else{ output_low(PIN_C0); output_high(PIN_C1); } delay_ms(50); } } Prof. Luis Zurita Microcontroladores II
  • 28. A/D en C. Ejercicio 2. Lectura de dos canales. IUT Cumaná Prof. Luis Zurita Microcontroladores II
  • 29. A/D en C. Ejercicio 2. Lectura de dos canales. IUT Cumaná Prof. Luis Zurita Microcontroladores II
  • 30. A/D en C. Ejercicio 3. Termómetro con una NTC IUT Cumaná NTSA0WB203 En este ejercicio se plantea diseñar un termómetro basado en una NTC modelo NTCSA0WB203, con una beta de 4050 y una resistencia a 25°C de 20 kΩ. Estas características se pueden ajustar así como la temperatura a medir en el menú de edición del componente. Prof. Luis Zurita Microcontroladores II
  • 31. Modificación de los valores de la NTC en IUT Cumaná Proteus Cambiar por 25°C Prof. Luis Zurita Microcontroladores II
  • 32. A/D en C. Ejercicio 3. Termómetro con una NTC IUT Cumaná NTSA0WB203 La NTC se linealiza mediante una resistencia R1 de 10 kΩ, el valor de la tensión de la NTC(VT) se puede obtener mediante las siguientes ecuaciones (temperatura en °k): Prof. Luis Zurita Microcontroladores II
  • 33. A/D en C. Ejercicio 3. Termómetro con una NTC IUT Cumaná NTSA0WB203 #include "16f877.h" #device adc=10 #fuses XT,NOWDT #use delay(clock=4000000) #include <math.h> //Se incluye para los cálculos matemáticos #include <lcd.c> void main() { float tv,tr,temp,y; //Variables de ecuación int16 value; lcd_init(); setup_port_a( ALL_ANALOG ); setup_adc( ADC_CLOCK_INTERNAL ); set_adc_channel( 0 ); delay_us(10); Prof. Luis Zurita Microcontroladores II
  • 34. A/D en C. Ejercicio 3. Termómetro con una NTC IUT Cumaná NTSA0WB203 while(true) { value = Read_ADC(); tv = 5.0 * value / 1024.0; tr = tv * 10000.0 / (5.0 - tv); A = log(tr/20000.0); y = (1.0/298.15) + (A *(1.0/4050.0)); temp=1.0/y; temp = temp -273.15; printf(lcd_putc,"fTEMPERATURAn"); printf(lcd_putc,"nT = %04.2fC", temp); } } Prof. Luis Zurita Microcontroladores II
  • 35. A/D en C. Ejercicio 3. Termómetro con una NTC IUT Cumaná NTSA0WB203 Prof. Luis Zurita Microcontroladores II