conversor analogo digital.pdf

Download conversor Analogo digital.pdf

Post on 22-Oct-2015

20 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • PICmicro GAMA MEDIA: PIC16F87X

    Conversin A/D

    Un sistema de conversin A/D hacer llegar al controlador digital la informacinsuministrada por el proceso analgico que se desea controlar. Establece una relacinbiunvoca entre el valor de la seal en su entrada y la palabra digital obtenida en susalida.

    La conversin A/D se fundamenta en la teora de muestreo: Si una seal continua,S(t) , tiene una banda de frecuencia en la que fm es la mayor frecuencia, dicha sealpodr reconstruirse sin distorsin a partir de muestras de la seal tomadas a unafrecuencia de valor fs > 2fm

    9

    podr reconstruirse sin distorsin a partir de muestras de la seal tomadas a unafrecuencia de valor fs > 2fm

    Circuitos de captura y mantenimiento (S/H=Sample and hold): Muestrean la sealanalgica (durante un intervalo de tiempo) y mantienen ese valor, generalmente en uncondensador, durante el tiempo que dura la transformacin A/D propiamente dicha.

  • PICmicro GAMA MEDIA: PIC16F87X

    Conversin A/D

    Tipos de convertidores: Directo, Aproximaciones sucesivas, de simple rampa, de doblerampa, de paso intermedio a frecuencia.

    Aproximaciones Sucesivas: es el implementado en los PICs, se basa en ir eliminandomitades de tabla hasta quedarse con el valor que ms se aproxima a la tensinanalgica a convertir.

    10

    Sea u=3,2V1) Prueba con 1000 (2,5V)

    2,5 < 3,2 mitad superior2) Prueba con 1100 (3,75V)

    3,75 > 3,2 mitad inferior3) Prueba con 1010 (3,125V)

    3,125 < 3,2 mitad superior4) Prueba con 1011 (3,4375V)

    3,4375 > 3,2 valor inferior

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    Convierte la seal analgica en un nmero digital de 10 bits.

    Los 16F876/873 tienen 5 canales (en puerto A) y los 16F877/874 tienen 8 canales(5 en el puerto A y 3 en el puerto E).

    Tienen tensiones de referencia VREF+ y VREF- seleccionables por software.Pueden ser VDD y VSS o las tensiones aplicadas en los pines RA3 / RA2 .

    11

    Puede seguir funcionando cuando el PIC est en modo SLEEP ya que dispone deun oscilador RC interno propio.

    Hay 11 registros asociados a este perifrico.Definicin de pines de entrada y seales aplicadas

    TRISA PORTA TRISE - PORTEManejo de interrupciones

    INTCON PIE1 PIR1Control del conversor A/D

    ADCON0 ADCON1 ADRESH - ADRESL

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D Estructura Interna

    12

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    Registro ADCON0 (1Fh) [PIC16F87x]

    bit 7-6 ADCS1:ADCS0: Seleccin del reloj para la conversin A/D00 = fOSC/2 01 = fOSC/8 10 = fOSC/32 11 = fRC

    bit 5-3 CHS2:CHS0: Seleccin del canal de conversin000 = Canal 0 001 = Canal 1 010 = Canal 2 011 = Canal 3

    13

    000 = Canal 0 001 = Canal 1 010 = Canal 2 011 = Canal 3100 = Canal 4 101 = Canal 5 110 = Canal 6 111 = Canal 7

    bit 2 GO/DONE: Estado de la conversinSi ADON=1:1 = Conversin en progreso 0 = Conversin finalizada

    bit 0 ADON: Bit de encendido del convertidor A/D1 = Mdulo A/D encendido 0 = Mdulo A/D apagado

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    Registro ADCON1 (9Fh) [PIC16F87x]

    bit 7 ADFM: Seleccin de formato del resultado

    1 = Ajuste a la derecha 0 = Ajuste a la izquierda

    14

    bit 3-0 PCFG3:PCFG0: Configuracin de las entradas al mdulo A/D

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    Registro ADCON0 (1Fh) [PIC16F87xA]

    bit 7-6 ADCS1:ADCS0: Seleccin del reloj para la conversin A/D junto con ADCS2que est en ADCON1.

    ADCS2=0 00 = fOSC/2 01 = fOSC/8 10 = fOSC/32 11 = fRC

    15

    ADCS2=0 00 = fOSC/2 01 = fOSC/8 10 = fOSC/32 11 = fRCADCS2=1 00 = fOSC/4 01 = fOSC/16 10 = fOSC/64 11 = fRC

    Registro ADCON1 (9Fh) [PIC16F87xA]

    bit 6 ADCS2: Seleccin de reloj para conversin A/D junto con ADCS1 y ADCS0.

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    Registro INTCON (0Bh , 8Bh , 10Bh , 18Bh)

    bit 7 GIE: Habilitacin global de interrupciones

    bit 6 PEIE: Habilitacin de interrupciones de perifricos

    Registro PIE1 (8Ch)

    16

    bit 6 ADIE: Habilitacin de la interrupcin del convertidor A/D

    Registro PIR1 (0Ch)

    bit 6 ADIF: Flag de la interrupcin del convertidor A/D

    1 = Conversin A/D completada. 0 = Conversin A/D an no completada.

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    Pasos en una conversin A/D

    1. Configurar el mdulo A/D. Definir entradas analgicas y tensin de referencia. (ADCON1) Seleccionar el canal de la conversin. (ADCON0) Seleccionar el reloj de la conversin. (ADCON0) Encender el mdulo A/D. (ADCON0)

    17

    2. Configurar la interrupcin por conversin A/D. Bajar el flag ADIF. (PIR1). Habilitar la interrupcin del convertidor A/D. (PIE1). Habilitar las interrupciones de los perifricos. (INTCON). Habilitar la mscara global de interrupciones. (INTCON)

    3. Esperar a que transcurra el tiempo de adquisicin. Tiempo necesario para capturar el valor analgico a convertir. Los valores tpicos del tiempo de adquisicin son del orden de 20s.

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    4. Comenzar la conversin. Poner a 1 el bit GO/DONE. (ADCON0)

    No activar este bit a la vez que se enciende el convertidor A/D

    5. Esperar a que se complete la conversin A/D. Controlando cundo el bit GO/DONE se pone a 0. Esperando a que llegue la interrupcin del convertidor.

    6. Leer el resultado de la conversin.

    18

    6. Leer el resultado de la conversin. Disponible en los registros ADRESH:ADRESL. Bajar el flagADIF si se estn usando interrupciones.

    7. Llevar a cabo la siguiente conversin. Volver al paso 1 2, segn convenga. Espera mnima antes de empezar la siguiente adquisicin: 2TAD

    (Esta espera no es necesaria en el caso de los PIC16F87xA porque el interruptorde captura se cierra en cuanto se obtiene el resultado).TAD: Tiempo necesario para la conversin de un bit.

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    Tiempo de adquisicin: tiempo necesario para cargar el condensador demantenimiento CHOLD

    19

    Mxima impedancia recomendada para la fuente: Rs

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    Conversin A/D en el compilador C de CCS

    Configuracin del mdulo conversor A/Dsetup_adc (modo);

    modo: ADC_OFF (ADCON0 00h)ADC_CLOCK_DIV_2 (ADCON0 01h)ADC_CLOCK_DIV_8 (ADCON0 41h)ADC_CLOCK_DIV_32 (ADCON0 81h)ADC_CLOCK_INTERNAL (ADCON0 C1h)

    20

    Definicin de entradas analgicassetup_adc_ports (valor);

    valor: NO_ANALOGS (ADCON1 86h)ALL_ANALOG (ADCON1 80h)ANALOG_RA3_REF (ADCON1 81h)A_ANALOG (ADCON1 82h)A_ANALOG_RA3_REF (ADCON1 83h)RA0_RA1_RA3_ANALOG (ADCON1 84h)RA0_RA1_ANALOG_RA3_REF (ADCON1 85h)

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    Definicin de entradas analgicas (cont.)setup_adc_ports (valor);

    valor: ANALOG_RA3_RA2_REF (ADCON1 88h)ANALOG_NOT_RE1_RE2 (ADCON1 89h)ANALOG_NOT_RE1_RE2_REF_RA3 (ADCON1 8Ah)ANALOG_NOT_RE1_RE2_REF_RA3_RA2 (ADCON1 8Bh)A_ANALOG_RA3_RA2_REF (ADCON1 8Ch)RA0_RA1_ANALOG_RA3_RA2_REF (ADCON1 8Dh)

    21

    RA0_RA1_ANALOG_RA3_RA2_REF (ADCON1 8Dh)RA0_ANALOG (ADCON1 8Eh)RA0_ANALOG_RA3_RA2_REF (ADCON1 8Fh)

    Seleccin del canal analgicoset_adc_channel (canal);

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

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    Lectura del resultado

    valor = read_adc ();

    valor: Entero de 16 bits segn la directiva #device adc= empleada.

    La influencia de dicha directiva se recoge en la siguiente tabla

    22

    El fichero 16f876.h incluye como primera directiva #device PIC16F876. Esnecesario incluir informacin del tipo de conversor A/D. Por ello los ficheros Cque usen este mdulo debern comenzar por:

    #device 16F876.h

    #device adc=10

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    setup_adc_ports (A_ANALOG);

    setup_adc (ADC_CLOCK_INTERNAL);

    set_adc_channel (3);

    delay_us (20);

    W 10000010Banco 1ADCON1 WBanco 0

    W ADCON0W W & 00111000W W | 11000001ADCON0 W

    W ADCON0W W & 11000111

    23

    delay_us (20);

    valor = read_adc ();

    setup_adc (ADC_OFF);

    W W & 11000111W W | 00011000ADCON0 W

    GO/DONE 1Espera a GO/DONE=0W ADRESHTEMP WBanco 1W ADRESLBanco 0REGL WW TEMPREGH W

    W ADCON0W W & 00111000ADCON0 W

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    Project >> New >> Pic Wizard >> nombre fichero y guardar

    24

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    25

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    26

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D

    27

    ad_fuente.h

  • PICmicro GAMA MEDIA: PIC16F87X

    Modulo de Conversin A/D: ejemplo lectura de tensin canal0

    OSC1/CLKIN9OSC2/CLKOUT10

    RB2 23RB1 22

    RB0/INT 21

    MCLR/Vpp/THV1

    U1

    D

    7

    1

    4

    D

    6

    1

    3

    D

    5

    1

    2

    D

    4

    1

    1

    D

    3

    1

    0

    D

    2

    9

    D

    1

    8

    D

    0

    7

    E

    6

    R

    W

    5

    R

    S

    4

    V

    S

    S

    1

    V

    D

    D

    2

    V

    E

    E

    3

    LCD1LM016L

    28

    RA0/AN02

    RA1/AN13RA2/AN2/VREF-4

    RA4/T0CKI6

    RA5/AN4/SS7

    RC1/T1OSI/CCP2 12RC2/CCP1 13

    RC3/SCK/SCL