View
92
Download
0
Category
Preview:
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
– 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: 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
Recommended