21
PICmicro GAMA MEDIA: PIC16F87X Conversión A/D •Un sistema de conversión A/D hacer llegar al controlador digital la información suministrada por el proceso analógico que se desea controlar. Establece una relación biunívoca entre el valor de la señal en su entrada y la palabra digital obtenida en su salida. •La conversión A/D se fundamenta en la teoría de muestreo: “Si una señal continua, S(t) , tiene una banda de frecuencia en la que fm es la mayor frecuencia, dicha señal podrá reconstruirse sin distorsión a partir de muestras de la señal tomadas a una frecuencia de valor fs > 2·fm9 frecuencia de valor fs > 2·fm•Circuitos de captura y mantenimiento (S/H=Sample and hold): Muestrean la señal analógica (durante un intervalo de tiempo) y mantienen ese valor, generalmente en un condensador, durante el tiempo que dura la transformación A/D propiamente dicha.

conversor Analogo digital.pdf

Embed Size (px)

Citation preview

PICmicro GAMA MEDIA: PIC16F87X

Conversión A/D

•Un sistema de conversión A/D hacer llegar al controlador digital la informaciónsuministrada por el proceso analógico que se desea controlar. Establece una relaciónbiunívoca entre el valor de la señal en su entrada y la palabra digital obtenida en susalida.

•La conversión A/D se fundamenta en la teoría de muestreo: “Si una señal continua,S(t) , tiene una banda de frecuencia en la que fm es la mayor frecuencia, dicha señalpodrá reconstruirse sin distorsión a partir de muestras de la señal tomadas a unafrecuencia de valor fs > 2·fm”

9

podrá reconstruirse sin distorsión a partir de muestras de la señal tomadas a unafrecuencia de valor fs > 2·fm”

•Circuitos de captura y mantenimiento (S/H=Sample and hold): Muestrean la señalanalógica (durante un intervalo de tiempo) y mantienen ese valor, generalmente en uncondensador, durante el tiempo que dura la transformación A/D propiamente dicha.

PICmicro GAMA MEDIA: PIC16F87X

Conversión 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 más se aproxima a la tensiónanalógica a convertir.

10

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

2,5 < 3,2 → mitad superior

2) Prueba con 1100 (3,75V)

3,75 > 3,2 →mitad inferior

3) Prueba con 1010 (3,125V)

3,125 < 3,2 →mitad superior

4) Prueba con 1011 (3,4375V)3,4375 > 3,2 →valor inferior

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión A/D

– Convierte la señal analógica en un número 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 periférico.Definición de pines de entrada y señales aplicadas

TRISA – PORTA – TRISE - PORTEManejo de interrupciones

INTCON – PIE1 – PIR1Control del conversor A/D

ADCON0 – ADCON1 – ADRESH - ADRESL

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión A/D– Estructura Interna

12

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión A/D

– Registro ADCON0 (1Fh) [PIC16F87x]

bit 7-6 ADCS1:ADCS0: Selección del reloj para la conversión A/D00 = fOSC/2 01 = fOSC/8 10 = fOSC/32 11 = fRC

bit 5-3 CHS2:CHS0: Selección del canal de conversión000 = 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 conversiónSi ADON=1:1 = Conversión en progreso 0 = Conversión finalizada

bit 0 ADON: Bit de encendido del convertidor A/D1 = Módulo A/D encendido 0 = Módulo A/D apagado

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión A/D

– Registro ADCON1 (9Fh) [PIC16F87x]

bit 7 ADFM: Selección de formato del resultado

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

14

bit 3-0 PCFG3:PCFG0: Configuración de las entradas al módulo A/D

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión A/D

– Registro ADCON0 (1Fh) [PIC16F87xA]

bit 7-6 ADCS1:ADCS0: Selección del reloj para la conversión 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 = fRC

ADCS2=1 00 = fOSC/4 01 = fOSC/16 10 = fOSC/64 11 = fRC

– Registro ADCON1 (9Fh) [PIC16F87xA]

bit 6 ADCS2: Selección de reloj para conversión A/D junto con ADCS1 y ADCS0.

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión A/D

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

bit 7 GIE: Habilitación global de interrupciones

bit 6 PEIE: Habilitación de interrupciones de periféricos

– Registro PIE1 (8Ch)

16

bit 6 ADIE: Habilitación de la interrupción del convertidor A/D

– Registro PIR1 (0Ch)

bit 6 ADIF: Flag de la interrupción del convertidor A/D

1 = Conversión A/D completada. 0 = Conversión A/D aún no completada.

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión A/D

– Pasos en una conversión A/D

1. Configurar el módulo A/D.• Definir entradas analógicas y tensión de referencia. (ADCON1)• Seleccionar el canal de la conversión. (ADCON0)• Seleccionar el reloj de la conversión. (ADCON0)• Encender el módulo A/D. (ADCON0)

17

2. Configurar la interrupción por conversión A/D.• Bajar el flag ADIF. (PIR1).• Habilitar la interrupción del convertidor A/D. (PIE1).• Habilitar las interrupciones de los periféricos. (INTCON).• Habilitar la máscara global de interrupciones. (INTCON)

3. Esperar a que transcurra el tiempo de adquisición.• Tiempo necesario para capturar el valor analógico a convertir.• Los valores típicos del tiempo de adquisición son del orden de 20µs.

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión A/D

4. Comenzar la conversión.• 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 conversión A/D.• Controlando cuándo el bit GO/DONE se pone a “0”.• Esperando a que llegue la interrupción del convertidor.

6. Leer el resultado de la conversión.

18

6. Leer el resultado de la conversión.• Disponible en los registros ADRESH:ADRESL.• Bajar el flagADIF si se están usando interrupciones.

7. Llevar a cabo la siguiente conversión.• Volver al paso 1 ó 2, según convenga.• Espera mínima antes de empezar la siguiente adquisición: 2·TAD

(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 conversión de un bit.

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión A/D

– Tiempo de adquisición: tiempo necesario para cargar el condensador demantenimiento CHOLD

19

– Máxima impedancia recomendada para la fuente: Rs<10K.En estas condiciones, TACQ ≈ 20µS

– Hasta que no acabe la conversión, no empieza otra adquisición (SS abierto)Esperar TACQ : a) Tras una conversión;

b) tras seleccionar un nuevo canal;c) Tras encender el módulo AD

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión A/D

– Conversión A/D en el compilador C de CCS

• Configuración del módulo 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

• Definición de entradas analógicassetup_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 Conversión A/D

– Definición de entradas analógicas (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)

• Selección del canal analógicoset_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 Conversión A/D

– Lectura del resultado

valor = read_adc ();

valor: Entero de 16 bits según 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 información del tipo de conversor A/D. Por ello los ficheros Cque usen este módulo deberán comenzar por:

#device “16F876.h”

#device adc=10

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión 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 Conversión A/D

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

24

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión A/D

25

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión A/D

26

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión A/D

27

ad_fuente.h

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión A/D: ejemplo lectura de tensión canal0

OSC1/CLKIN9

OSC2/CLKOUT10

RB2 23RB1 22

RB0/INT 21

MCLR/Vpp/THV1

U1

D7

14D

613

D5

12D

411

D3

10D

29

D1

8D

07

E6

RW

5R

S4

VSS

1

VD

D2

VEE

3

LCD1LM016L

28

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN4/SS7

RC1/T1OSI/CCP2 12

RC2/CCP1 13

RC3/SCK/SCL 14

RB7/PGD 28RB6/PGC 27

RB5 26RB4 25

RB3/PGM 24RB2 23

RC7/RX/DT 18RC6/TX/CK 17

RC5/SDO 16RC4/SDI/SDA 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

PIC16F876

RV1

1k

BAT15

RV1(3)

lecturavalor

LSB

•=

=

1024

51024

51 COMPILAR (F9)

MONTARLO

PICmicro GAMA MEDIA: PIC16F87X

Modulo de Conversión A/D: lectura del valor max/min en canal0

OSC1/CLKIN9

OSC2/CLKOUT10

RB2 23RB1 22

RB0/INT 21

MCLR/Vpp/THV1

U1

D7

14D

613

D5

12D

411

D3

10D

29

D1

8D

07

E6

RW

5R

S4

VSS

1

VD

D2

VEE

3

LCD1LM016L

29

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN4/SS7

RC1/T1OSI/CCP2 12

RC2/CCP1 13

RC3/SCK/SCL 14

RB7/PGD 28RB6/PGC 27

RB5 26RB4 25

RB3/PGM 24RB2 23

RC7/RX/DT 18RC6/TX/CK 17

RC5/SDO 16RC4/SDI/SDA 15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI 11

MCLR/Vpp/THV1

PIC16F876

RV1

1k

BAT15

RV1(3)

Simular en ISIS