Está en la página 1de 29

PIC16F877 – Convertidor A/D

III parcial
Convertidor A/D
PIC16F877 – Convertidor A/D

Cronograma de microcontroladores 20192


Semana Fecha Actividad
14 Martes 18-02-2020 Clase III parcial (CAD)
15 Martes 25-02-2020 Carnaval
Viernes 28-02-2020 Examen II Parcial 08:00am
16 Martes 03-03-2020 Clase III Parcial
Miércoles 04-03-2020 Rezagado
17 Martes 10-03-2020 Defensa Proyecto
18 Martes 17-03-2020 Examen III Parcial
Jueves 19-03-2020 Sustitutiva
PIC16F877 – Convertidor A/D

Convertidor A/D
EL microcontrolador PIC6F87X posee un conversor A/D de 10bit de
resolución y 8 canales
PIC16F877 – Convertidor A/D

Registros asociados

El módulo de A/D tiene 11 registros asociados. Estos


registros son:

Pines de entrada:
TRISA – PORTA – TRISE – PORTE

Manejo de interrupciones:
INTCON – PIE1 – PIR1

Control del conversor A/D:


· ADCON0: Registro de Control 0
· ADCON1: Registro de Control 1

Resultado de la conversión:
ADRESH: Parte alta
ADRESL: Parte baja
PIC16F877 – Convertidor A/D

Tiempo de Adquisición (TACQ)

𝑇 𝐴𝑑𝑞𝑢𝑖𝑐𝑖𝑐𝑖 ó 𝑛 𝑜 𝑇𝑎𝑐𝑞 ≈ 𝟐𝟎 𝝁 𝒔
PIC16F877 – Convertidor A/D

Tiempo de conversión de cada bit

Seleccionable por Software.


PIC16F877 – Convertidor A/D

ADCON0
ADCS1 ADCS0 CH2 CH1 CH0 GO/#DONE - ADON

<7,6> ADCS1:ADCS0
Selección de la frecuencia de reloj para el Convertidor A/D.

00 = Fosc/2
01 = Fosc/8
10 = Fosc/32
11 = FRC (Procede del oscilador RC interno)

<5,3> CH2:CH0 Selección del canal de conversión

000 = Canal 0, (RA0/AN0) 100 = Canal 4, (RA5/AN4)


001 = Canal 1, (RA1/AN1) 101 = Canal 5, (RE0/AN5)
010 = Canal 2, (RA2/AN2) 110 = Canal 6, (RE1/AN6)
011 = Canal 3, (RA3/AN3) 111 = Canal 7, (RE2/AN7)
PIC16F877 – Convertidor A/D

ADCON0
ADCS1 ADCS0 CH2 CH1 CH0 GO/#DONE - ADON

<2> GO/#DONE Bit de estado de la conversión A/D Si ADON=1

1 = La conversión A/D está en marcha (mientras está a 1 se


está realizando la conversión)

0 = La conversión ha finalizado. (el bit se pone a cero


automáticamente por hardware la conversión A/D finaliza)
el resultado de la conversión aparece en ADRESH:ADRESL

<0> ADON Bit de encendido del convertidor A/D

1 = Módulo A/D encendido


0 = Módulo A/D apagado
PIC16F877 – Convertidor A/D

Ejemplo de selección de ADCS1:ADCS0 con el µC PIC16F877

selección de la frecuencia de reloj para el Convertidor A/D.


00 = Fosc/2 = 2*Tosc
01 = Fosc/8 = 8*Tosc
10 = Fosc/32 = 32*Tosc
11 = FRC(oscilador RC interno)
𝑇 𝐴𝐷 ≥1,6𝜇 𝑠
PIC16F877 – Convertidor A/D

ADCON1 (PIC16F877)
ADFM - - - PCFG3 PCFG2 PCFG1 PCFG0

ADFM: bit de selección del formato del resultado A/D

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

PCFG3:PCFG0 Configuración de las entradas al módulo A/D


PIC16F877 – Convertidor A/D

Configuración de las entradas al módulo A/D


PIC16F877 – Convertidor A/D

Formato del resultado A/D


PIC16F877 – Convertidor A/D

ADCON0
ADCS1 ADCS0 CH2 CH1 CH0 GO/#DONE - ADON

ADCS1:ADCS0: Selección del reloj para la conversión A/D


junto con ADCS2 que está en ADCON1.

ADCON1 (PIC16F877A)
ADFM ADCS2 - - PCFG3 PCFG2 PCFG1 PCFG0

ADCS2: Selección de reloj para conversión A/D junto con


ADCS1 y ADCS0 (solo para el PIC16F877A)

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
PIC16F877 – Convertidor A/D

Resolución

Si el voltaje de referencia es la fuente:


PIC16F877 – Convertidor A/D

Pasos en una conversión A/D

1. Configurar el módulo A/D.

 Configurar puertos como entrada. (TRISA, TRISE)


 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)

2. Configurar la interrupción del conversión A/D (opcional)

 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)
PIC16F877 – Convertidor A/D

Pasos en una conversión A/D

3. 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
 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.

4. 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.
PIC16F877 – Convertidor A/D

5. Leer el resultado de la conversión.

 Disponible en los registros ADRESH:ADRESL.


 Bajar el flag ADIF 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 interruptor de
captura se “cierra” en cuanto se obtiene el resultado).
TAD: Tiempo necesario para la conversión de un bit.
PIC16F877 – Convertidor A/D

CBLOCK 20H
RESULTADO_H, RESULTADO_L
ENDC

CONFIGURAR_PUERTOS
BCF STATUS,RP1
BSF STATUS,RP0

;CONF CANAL AN0 COMO ANALOGICO, JUSTIFICADO A LA DERECHA (ADFM=1)


MOVLW B'10001110’
MOVWF ADCON1
INICIAR_CAD
MOVLW B'00111111’
BSF ADCON0,GO
MOVWF TRISA
BTFSC ADCON0,GO
MOVLW B'00000111'
GOTO $-1
MOVWF TRISE
RETURN
BCF STATUS,RP0
RETURN
RESULTADO_CAD
BSF STATUS,RP0
CONFIGURAR_CAD
MOVF ADRESL,W
MOVLW B'10000001’ ; 20MHZ (10) PIC16F877
BCF STATUS,RP0
MOVWF ADCON0
MOVWF RESULTADO_L
CALL RETARDO_1MS
MOVF ADRESH,W
RETURN
MOVWF RESULTADO_H
RETURN
PIC16F877 – Convertidor A/D

Ejercicio: Se tiene un transmisor de temperatura de un rango de 0°C


a 120°C. dicho transmisor se conecta mediante dos hilos (Conexión a
dos hilos) y se comunica con una señal de corriente típica de 4mA a
20mA.

PIC16f877A
a) Seleccione la resistencia mas adecuada para la conversión
analógica para el PIC16F877A con la mayor precisión.

b) Diseñe un sistema de control de temperatura on/off que encienda en


40°C y apague en 45°C

c) Configure todos los registros y selección de puertos analógico


para que el micro realice la conversión. Utilice instrucciones en
código assembler.
PIC16F877 – Convertidor A/D

Solución: Parte a) Seleccione la resistencia mas adecuada para la


conversión analógica para el PIC16F877A con la mayor precisión.

se tiene que: si 4mA >> 0°C y 20mA >> 120°C


Para seleccionar la resistencia hacemos que: 120°C >> 5V
Por ley de ohm: 5V=20mA*R >> R= 250 ohm

Se selecciona una resistencia de 250 ohm

Luego: V=4mA*250 ohm >> V=1V


Por lo tanto: 4mA >> 0°C >> 1V 20mA >> 120°C >> 5V

Se selecciona una resolución de 10bit con los voltajes de referencia


de 5v y de 1V
Resolución = (5V-1V)/(1024-1) = 3,91mA
PIC16F877 – Convertidor A/D

Solución: Parte b) Diseñe un sistema de control de temperatura


on/off que encienda en 40°C y apague en 45°C

5V 120°C

1V

0°C
0°C 120°C 1v 5v

y 2− 𝑦 1=𝑚(𝑥 2 − 𝑥 1)
PIC16F877 – Convertidor A/D

Solución: Parte b) Diseñe un sistema de control de temperatura


on/off que encienda en 40°C y apague en 45°C

120°C
y 2− 𝑦 1=𝑚 ( 𝑥 2 − 𝑥 1 )
120° C − 0 ° 𝐶=𝑚 ( 5𝑉 − 1𝑉 )
120 ° C − 0 ° 𝐶   °𝐶
𝑚= =¿ 𝑚=30
( 5 𝑉 − 1𝑉 ) 𝑉

0°C
1v 5v
PIC16F877 – Convertidor A/D

Solución: Parte b) Diseñe un sistema de control de temperatura


on/off que encienda en 40°C y apague en 45°C

120°C
y 2− 𝑦 1=𝑚 ( 𝑥 2 − 𝑥 1 )

120° C − 40 ° 𝐶=𝑚 ( 5𝑉 − 𝑠𝑝1 )


45°C
120 ° C − 4 0 ° 𝐶  
sp 1=5 V − =¿ 𝑠𝑝 1=2,33 𝑣
𝐶
40°C 30 °
𝑉

0°C 1 20° C − 45 ° 𝐶=𝑚 ( 5𝑉 − 𝑠𝑝1 )


1v sp1 sp2 5v
120 ° C − 45 ° 𝐶  
sp 2=5 V − =¿ 𝑠𝑝 2=2,5 𝑣
𝐶
30 °
𝑉
PIC16F877 – Convertidor A/D

Solución: Parte b) Diseñe un sistema de control de temperatura


on/off que encienda en 40°C y apague en 45°C

1023
y 2− 𝑦 1=𝑚 ( 𝑥 2 − 𝑥 1 )
1 023 −0=𝑚 ( 5 𝑉 − 1𝑉 )
B
1023 − 0  
𝑚= =¿ 𝑚=255,75
( 5 𝑉 − 1𝑉 )
A

0
1 2,33 2,5 5 V
PIC16F877 – Convertidor A/D

Solución: Parte b) Diseñe un sistema de control de temperatura


on/off que encienda en 40°C y apague en 45°C

1023
y 2− 𝑦 1=𝑚 ( 𝑥 2 − 𝑥 1 )

1 023 − 𝐴=𝑚 ( 5 𝑉 − 2,33 𝑉 )


B
,1
A

0
1 2,33 2,5 5 V 1 023 − 𝐵=𝑚 (5 𝑉 −2,5 𝑉 )
B=1023 − 255,75 ( 5 𝑉 − 2,5𝑉 ) =¿ 𝐵=383,6
PIC16F877 – Convertidor A/D

Solución: Parte c) Configure todos los registros y selección de


puertos analógico para que el micro realice la conversión. Utilice
instrucciones en código assembler.

Con 40°C >> 340 = 01 01010100


= 84

Con 45°C >> 384 = 01 10000000


= 128

Justificado a la derecha ADFM=1


Voltaje de referencia 1V y 5V
PIC16F877 – Convertidor A/D

Solución: Parte c) Configure todos los registros y selección de


puertos analógico para que el micro realice la conversión. Utilice
instrucciones en código assembler.

INICIO
CALL CONFIGURAR_PUERTOS
CALL CONFIGURAR_CAD MOVLW .128
. SUBWF RESULTADO_L,W
. BTFSC STATUS,Z
. GOTO OFF
GOTO PROGRAMA GOTO convertir

PROGRAMA ON BSF PORT_


convertir CALL INICIAR_CAD GOTO convertir
CALL RESULTADO_CAD
OFF BCF PORT_
MOVLW .1 GOTO convertir
SUBWF RESULTADO_H,W
BTFSS STATUS,Z END
GOTO convertir

MOVLW .84
SUBWF RESULTADO_L,W
BTFSC STATUS,Z
GOTO ON
PIC16F877 – Convertidor A/D
PRACTICA 6
Objetivo: Implementar el modulo Conversión A/D
Puntaje: 2 puntos
Fecha: 03 de Marzo del 2020
 Conectar un Potenciómetro en AN4. (con un voltaje de
0V y 5V en sus extremos)
 Utilizar el CAD para convertir la variación de 1pt
voltaje del potenciómetro en digital.
 En una pantalla LCD se debe visualizar el valor
cuántico de los registros ADRESH:ADRESL

 En un display BCD 7 segmentos mostrar el voltaje (de


0v a 5v) en intervalos de 1V 1pt
 O en vez de usar display BCD mostrarlo en una LCD
pero con intervalos de 0,5V

Realizar los cálculos necesario, el programa en lenguaje


ensamblador y montaje del circuito en protoboar.
PIC16F877 – Convertidor A/D

BIBLIOGRAFÍA

 Data Sheet: PIC16F87X Microcontrollers.pdf

 Libro: 1ra parte Microcontroladores PIC - Diseño Práctico de


Aplicaciones.pdf

 Libro: 2da Parte Microcontroladores PIC, Diseño Práctico de


Aplicaciones 16F87x.pdf

 Libro: Fundamentos y Aplicaciones con PIC Valdez Pallas.pdf

También podría gustarte