ADC en Microcontrolador
ADC en Microcontrolador
ADC en Microcontrolador
3.9 Módulos Analógicos
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 1/20
3/30/22, 11:31 PM modulos-analogicos - MikroElektronika
CONVERTIDOR A/D
Aunque a primera vista parece muy complicado utilizar un convertidor A/D, en realidad es muy
simple. De hecho resulta más simple utilizar un convertidor A/D que los temporizadores o módulos de
comunicación serie.
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 2/20
3/30/22, 11:31 PM modulos-analogicos - MikroElektronika
El funcionamiento del convertidor A/D está bajo el control de los bits de cuatro registros:
ADRESH Registro alto del resultado de la conversión A/D;
ADRESL Registro bajo del resultado de la conversión A/D;
ADCON0 Registro de control 0; y
ADCON1 Registro de control 1.
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 3/20
3/30/22, 11:31 PM modulos-analogicos - MikroElektronika
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 4/20
3/30/22, 11:31 PM modulos-analogicos - MikroElektronika
FUENTE DE
PRODUCTS SHOP APPLICATIONS SUPPORT SERVICES
FRECUENCIA DE DISPOSITIVO (FOSC)
NEWS
Fosc/32 1 0 1.6 uS 4 uS 8 uS 32 uS
Frc 1 1 2 - 6 uS 2 - 6 uS 2 - 6 uS 2 - 6 uS
Al leer el estado de puerto con las entradas analógicas, el estado de los bits
correspondientes PRODUCTS SHOP APPLICATIONS SUPPORT SERVICES NEWS
se leerá como cero lógico (0), sin reparar en el valor del
voltaje real en el pin; y
Hablando en términos generales, la medición de voltajeen el convertidor
está
basado en comparar voltaje de entrada con una escala interna que tiene 1023
grados (210 - 1 =1023). El grado más bajo de esta escala representa el voltaje
Enter search here
Vref-, mientras que el grado más alto se refiere al voltaje Vref+. La siguiente
figura muestra los voltajes de referencia seleccionables así como sus valores
máximos y mínimos.
Registro ADCON0
ADCS1, ADCS0 - A/D Conversion Clock Select bits (bits de selección de reloj de conversión A/D)
selecciona la frecuencia de reloj utilizada para sincronización interna del convertidor A/D. Asimismo
By using our site you agree with our Privacy Policy.
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 6/20
3/30/22, 11:31 PM modulos-analogicos - MikroElektronika
PRODUCTS SHOP
ADCS1
APPLICATIONS SUPPORT
ADCS2 RELOJ
SERVICES
NEWS
0 0 Fosc/2
0 1 Fosc/8
Enter search here
1 0 Fosc/32
1 1 RC *
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 7/20
3/30/22, 11:31 PM modulos-analogicos - MikroElektronika
CHS3 CHS2
PRODUCTS SHOP APPLICATIONS
CHS1 CHS0 CANAL PIN
SUPPORT SERVICES
NEWS
0 0 0 0 0 RA0/AN0
0 0 0 1 1 RA1/AN1
Enter search here
0 0 1 0 2 RA2/AN2
0 0 1 1 3 RA3/AN3
0 1 0 0 4 RA5/AN4
0 1 0 1 5 RE0/AN5
0 1 1 0 6 RE1/AN6
0 1 1 1 7 RE2/AN7
1 0 0 0 8 RB2/AN8
1 0 0 1 9 RB3/AN9
1 0 1 0 10 RB1/AN10
1 0 1 1 11 RB4/AN11
1 1 0 0 12 RB0/AN12
1 1 0 1 13 RB5/AN13
1 1 1 0 CVref
1 1 1 1 Vref = 0.6V
GO/DONE - A/D
Conversion Status bit (bit de estado de la conversión A/D) determina el estado actual de de la
conversión:
1 - La conversión A/D está
By using enyou
our site progreso.
agree with our Privacy Policy.
0 - La conversión
A/D ha finalizado. El bit se pone a cero automáticamente por
#include <built_in.h>
Enter search here
unsigned int adc_rd;
void main() {
do {
PORTC = temp_res >> 2; // Enviar los 2 bits más significativos a los RC7, RC6
Registro ADCON1
ADFM - A/D Result Format Select bit (bit de selección del formato del resultado de la conversión
A/D)
1 - Resultado de conversión está justificado a la derecha. No se utilizan los seis
bits más significativos del registro ADRESH.
0 - Resultado de conversión está justificado a la izquierda. No se utilizan los seis
bits menos significativos del registro ADRESL.
VCFG1 - Voltage Reference bitour
By using (bitsite
de you
configuración
agree with de
ourvoltaje
Privacyde referencia) selecciona la fuente de
Policy.
voltaje de referencia bajo que se necesita para el funcionamiento del convertidor A/D.
VCFG0 - Voltage Reference bit (bit de configuración de voltaje de referencia) selecciona la fuente de
voltaje de referencia alto que se necesita para el fucionamiento del convertidor
A/D.
1 - Voltaje de referencia alto se aplica al pin Vref+.
0 - Voltaje de alimentación Vdd se utiliza
Enter como
search una
here fuente de voltaje de
referencia alto.
Para medir el voltaje en un pin de entrada por medio del convertidor A/D, se debe realizar lo
siguiente:
Paso 1 - Configuración del puerto:
Escribir un uno lógico (1) a un bit del registro TRIS, lo que resulta en configurar
el pin apropiado como una entrada.
Escribir un uno lógico (1) a un bit del registro ANSEL, lo que resulta en
configurar el pin apropiado como una entrada analógica.
Paso 2 - Configuración del módulo de la conversión A/D:
Configurar voltaje de referencia en el registro ADCON1.
Seleccionar una señal de reloj de la conversión A/D en el registro ADCON0.
Seleccionar uno de los canales de entrada CH0-CH13 del registro ADCON0.
Seleccionar el formato de dato por medio de ADFM del registro ADCON1.
Habilitar el convertidor A/D al poner a uno el bit ADON del registro ADCON0.
Paso 3 - Configuración de la interrupción (opcionalmente):
Poner a cero el bit ADIF.
Poner a uno los bits ADIE, PEIE y GIE.
Paso 4 - Tiempo de espera para que transcurra el tiempo de adquisición (aproximadamente 20uS).
Paso 5 - Inicio de la conversión poniendo a uno el bit GO/DONE del reg istro ADCON0.
Paso 6 -
Esperar a que la conversión A/D finalice.
Es necesario comprobar en el bucle de programa si el bit GO/DONE está a cero
o esperar que se produzca una interrupción (deberá estar anteriormente
habilitada).
Paso 7 - Lectura del resultado de la conversión A/D:
Leer los registros ADRESH y ADRESL.
COMPARADOR ANALÓGICO
By using our site you agree with our Privacy Policy.
Aparte del convertidor A/D, hay otro módulo, que hasta hace poco ha sido incorpodo sólo en los
integrados que pertenecen
circuitos “componentes analógicos”.
a los llamados Debido al hecho de
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 10/20
3/30/22, 11:31 PM modulos-analogicos - MikroElektronika
que casi no hay ningún dispositivo automático complejo que en cierto modo no utilice estos circuitos,
dos comparadores de altaPRODUCTS SHOP
calidad, junto con APPLICATIONS
los componentes SUPPORT
adicionales SERVICES
están integrados
en el NEWS
microcontrolador y conectados a sus pines.
¿Cómo funciona un comparador? Básicamente, el
comparador analógico es un amplificador que compara la magnitud de voltajes en dos entradas.
Dispone de dos entradas y una salida. Dependiendo de cuál voltaje de entrada es más alto (valor
analógico), un cero lógico (0) o un uno lógico (1) (valores digitales) será la salida.
Enter search here
Cuando el voltaje analógico en Vin - es más alto que el voltaje análogo en Vin+,
la salida del comparador estará a un nivel digital bajo.
Cuando el voltaje analógico en Vin+ es más alto que el voltaje análogo en Vin-,
la salida del comparador estará a un nivel digital alto.
El microcontrolador PIC16F887 dispone de dos de estos comparadores de voltaje cuyas entradas
están conectadas a los pines de E/S RA0-RA3, mientras que las salidas están conectadas a los pines
RA4 y RA5. Además, hay una fuente de voltaje de referencia interna en el chip mismo, la que vamos a
discutir más tarde.
Estos dos circuitos están bajo el control de los bits almacenados en los siguientes
registros:
CM1CON0 está en control del comparador C1;
CM2CON0 está en control del comparador C2;
CM2CON1 está en control del comparador C2;
El voltaje de referencia del comparador dispone de dos gamas con 16 diferentes niveles de voltaje
cada una. La selección de gama es controlada por el bit VRR del registro VRCON. El voltaje de
referencia seleccionado CVref puede ser la salida al pin RA2/AN2 si el bit VROE se pone a uno.
Aunque
la idea principal era obtener el voltaje de referencia variable para el funcionamiento de módulos
analógicos, de ese modo se obtiene un simple convertidor A/D. Este convertidor es muy útil en
algunas situaciones. Su funcionamiento está bajo el control del registro VRCON.
COMPARADORES E INTERRUPCIÓN
Siempre que haya un cambio del estado lógico en la salida de un comparador, el bit de bandera CMIF
del registro PIR se pone a uno. Ese cambio también causará una interrupción si los siguientes bits se
ponen a uno:
El bit CMIE del registro PIE = 1;
El bit PEIE del registro INTCON = 1; y
El bit GIE del registro INTCON = 1.
Si una interrupción está habilitada, un cambio en la salida de un comparador cuando el
microcontrolador está en modo de reposo, puede causar que el microcontrolador salga de reposo y
vuelva a funcionar en modo normal.
By using our site you agree with our Privacy Policy.
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 12/20
3/30/22, 11:31 PM modulos-analogicos - MikroElektronika
Registro CM1CON0
Los bits de este registro están en control del comparador C1. Eso afecta principalmente a la
configuración de las entradas. Para explicarlo con más claridad, vea la siguiente figura en la que se
muestran sólo los componentes directamente afectados por los bits de este registro.
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 13/20
3/30/22, 11:31 PM modulos-analogicos - MikroElektronika
C1ON - Comparator C1 Enable bit (bit de habilitación del comparador C1) habilita al comparador C1.
1 - Comparador C1 PRODUCTS SHOP APPLICATIONS SUPPORT SERVICES NEWS
está habilitado.
0 - Comparador C1 está deshabilitado.
C1OUT - Comparator C1 Output bit (bit de salida del comparador C1) esla salida
del comparador
C1.
Si C1POL = 1 (salida del comparador está invertida)
1 - Voltaje de entrada C1Vin+ es más bajo
Enterque el voltaje
search here de entrada C1Vin-.
0 - Voltaje de entrada C1Vin+ es más alto que el voltaje de entrada C1Vin-.
If C1POL = 0 (salida del comparador no está invertida)
1 - Voltaje de entrada C1Vin+ es más alto que el voltaje de entrada C1Vin-.
0 - Voltaje de entrada C1Vin+ es más bajo que el voltaje de entrada C1Vin-.
C1OE Comparator C1 Output Enable bit (bit de habilitación de salida del comparador C1)
1 - Salida del comparador C1OUT está conectada al pin C1OUT *.
0 - Salida del comparador se utiliza internamente.
* Para habilitar que el bit C1OUT aparezca en el pin, se deben cumplir dos condiciones: C1ON =
1 (el comparador debe estar activado) y el bit correspondiente TRIS = 0 (pin se debe configurar
como salida).
C1POL - Comparator C1 Output Polarity Select bit (bit de selección de polaridad de salida del
comparador C1) habilita la inversión del estado de la salida del comparador C1.
1 - Salida del comparador C1 está invertida.
0 - Salida del comparador C1 no está invertida.
C1R - Comparator C1 Reference Select bit (bit de selección de la fuente de voltaje de referencia del
comparador C1)
1 - Entrada no invertida C1Vin+ está conectada a la fuente de voltaje de
referencia C1Vref.
0 - Entrada no invertida C1Vin+ está conectada al pin C1IN+.
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 14/20
3/30/22, 11:31 PM modulos-analogicos - MikroElektronika
C1CH1, C1CH0 - Comparator C1 Channel Select bit (bit de selección de canal del comparador C1)
Registro CM2CON0
Los bits de este registro están en control del comparador C2. Similar al caso anterior, la siguiente
figura muestra un esquema simplificado del circuito afectado por los bits de este registro.
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 15/20
3/30/22, 11:31 PM modulos-analogicos - MikroElektronika
C2ON - Comparator C2 Enable bit (bit de habilitación del comparador C2) habilita el comparador C2.
1 - Comparador C2 está habilitado.
0 - Comparador C2 está deshabilitado.
C2OUT - Comparator C2 Output bit (bit de salida del comparador C2) es la salida del comparador C2.
If C2POL = 1 (salida del comparador está invertida)
1 - Voltaje de entrada C2Vin+ es más bajo que el voltaje de entrada C2Vin-.
0 - Voltaje de entrada C2Vin+ es más alto que el voltaje de entrada C2Vin-.
If C2POL = 0 (salida del comparador no está invertida)
1 - Voltaje de entrada C2Vin+ es más alto que el voltaje de entrada C2Vin-.
0 - Voltaje de entrada C2Vin+ es más bajo que el voltaje de entrada C2Vin-.
C2OE - Comparator C2Output Enable bit (bit de habilitación de salida del comparador C2)
1 - Salida del comparador C2OUT está conectada al pin C2OUT*.
0 - Salida del comparador se utiliza internamente.
* Para habilitar que el bit C2OUT aparezca en el pin, se deben cumplir dos condiciones: C2ON
= 1 (el comparador debe estar activado) y el bit correspondiente TRIS = 0 (pin se debe
configurar como salida).
C2POL - Comparator C2 Output Polarity Select bit (bit de selección de polaridad de salida del
comparador C2) habilita la inversión del estado de la salida del comparador C2.
1 - Salida del comparador C2you
By using our site está invertida.
agree with our Privacy Policy.
0 - Salida del comparador C2 no está invertida.
C2R - Comparator C2 Reference Select bit (bit de selección de la fuente de voltaje de referencia del
C2)
comparador
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 16/20
3/30/22, 11:31 PM modulos-analogicos - MikroElektronika
ENTRADA C2VIN-
Enter DEL
search here
C2CH1 C2CH0
COMPARADOR
Registro CM2CON1
MC1OUT Mirror Copy of C1OUT bit es una copia del bit C1OUT
MC2OUT Mirror Copy of C2OUT bit
es una copia del bit C2OUT
C1RSEL Comparator C1 Reference Select bit (bit de selección de la
fuente de voltaje de referencia del comparador C1)
By using our site you agree with our Privacy Policy.
1 - Voltaje seleccionable
CVref se utiliza en la fuente de voltaje de referencia
C1Vref.
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 17/20
3/30/22, 11:31 PM modulos-analogicos - MikroElektronika
C2RSEL - Comparator C2 Reference Select bit (bit de selección de la fuente de voltaje de referencia
del comparador C2)
1 - Voltaje seleccionable CVref se utiliza en la fuente de voltaje de referencia
C2Vref. Enter search here
0 - Voltaje de referencia fijo de 0,6V se utiliza en la fuente de voltaje de
referencia C2Vref.
T1GSS - Timer1 Gate Source Select bit (bit de selección de la fuente de la compuerta del
temporizador Timer1)
1 - Compuerta del temporizador Timer1 utiliza señal del pin T1G.
0 - Compuerta del temporizador Timer1 utiliza señal SYNCC2OUT.
C2SYNC - Comparator C2 Output Synchronization bit (bit de sincronización de salida del
comparador C2)
1 - Salida del comparador C2 está sincronizada con un flanco ascendente de
señal de reloj del temporizador Timer1
0 - Salida del comparador es una señal asíncrona.
Registro VRCON
VREN Comparator C1 Voltage Reference Enable bit (bit de habilitación de la fuente de voltaje de
referencia del comparador C1)
1 - Fuente de voltaje de referencia CVref está encendido.
0 - Fuente de voltaje de referencia CVref está apagado.
VROE Comparator C2 Voltage Reference Enable bit (bit de habilitación de la fuente de voltaje de
referencia del comparador C2)
1 - Fuente de voltaje de referencia CVref está conectada al pin.
0 - Fuente de voltaje de referencia CVref no está conectada al pin.
By usingbit
VRR - CVref Range Selection our site
(bit deyou agree with
selección our Privacy
de gama Policy.de referencia Vref)
de voltaje
1 - Fuente de voltaje de referencia se ajusta a producir baja gama de voltaje.
0 - Fuente de voltaje de referencia se ajusta a producir alta gama de voltaje.
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 18/20
3/30/22, 11:31 PM modulos-analogicos - MikroElektronika
VRSS - Comparator Vref Range selection bit (bit de selección de gama de voltaje de referencia Vref
del comparador) PRODUCTS SHOP APPLICATIONS SUPPORT SERVICES NEWS
1 - Voltaje de referencia está en la gama de Vref+ a Vref-.
0 - Voltaje de referencia está en la gama de Vdd a Vss. (voltaje
de
alimentación).
VR3 - VR0 CVref Value Selection (selección de valor de voltaje
Enter searchde referencia)
If VRR = 1 (gama baja)
El
here
voltaje de referencia se calcula por medio de la fórmula: CVref = ([VR3:VR0]/24)Vdd.
If VRR = 0 (gama
alta)
El voltaje de referencia se calcula por medio de la fórmula CVref = Vdd/4 + ([VR3:VR0]/32)Vdd.
Pasos a seguir para utilizar apropiadamente los comparadores integrados:
Paso 1 - Configuración del
módulo:
Para seleccionar el modo apropiado, se deben configurar los estados de los bits
de los registros CM1CON0 y CM2CON0. La interrupción debe estar
deshabilitada durante el cambio de modo.
Paso 2 - Configurar la fuente de voltaje de referencia Vref interna (sólo si se utiliza). En el registro
VRCON es necesario realizar lo siguiente:
Seleccionar una de dos gamas de voltaje por medio del bit VRR.
Configurar el voltaje de referencia Vref necesario por medio de los bits VR3 -
VR0.
Poner a uno el bit VROE si es necesario.
Habilitar la fuente de voltaje de referencia Vref al poner a uno el bit VREN.
Fórmula utilizada para calcular el voltaje de referencia
VRR = 1 (gama baja)
CVref =
([VR3:VR0]/24)VLADDER
VRR = 0 (gama alta)
CVref = (VLADDER/4) + ([VR3:VR0]VLADDER/32)
Vladder =
Vdd or ([Vref+] - [Vref-]) or Vref+
Paso 3 - Inicio del funcionamiento:
Habilitar una interrupción al poner a uno los bits CMIE (registro PIE), PEIE y GIE
(registro INTCON ).
Leer los bits C1OUT y C2OUT del registro CMCON.
Leer la bandera de bit CMIF del registro PIR. Después de haber sido puesto a
uno, este bit se pone a cero por software.
Para sincronizar todos los procesos que se llevan a cabo dentro del microcontrolador, se debe utilizar
una señal de reloj, mientras que para generar una señal de reloj, se debe utilizar un oscilador. Así de
simple. El microcontrolador dispone de varios osciladores capaces de funcionar en modos diferentes.
Y aquí es donde viene lo interesante...
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 19/20
3/30/22, 11:31 PM modulos-analogicos - MikroElektronika
PRODUCTS SHOP APPLICATIONS SUPPORT SERVICES
NEWS
JOIN US
Careers Internship
https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-c-con-ejemplos/modulos-analogicos 20/20