Conversion Analogica Digital y Digital A
Conversion Analogica Digital y Digital A
Conversion Analogica Digital y Digital A
Junior Figueroa
1. INTRODUCCIÓN
El desarrollo de los microprocesadores, microcontroladores y procesadores digitales de
señal (DSP), han permitido realizar tareas que durante años fueron hechas por sistemas
electrónicos analógicos. Por otro lado, como el mundo real es análogo, una forma de enlazar
las variables analógicas con los procesos digitales es a través de los sistemas llamados
conversores de analógico – digital (ADC – Analogue to Digital Converter) y conversores
digital – analógico (DAC – Digital to Analoque Converter).
Un conversor, (o convertidor) de señal analógica a digital (ADC), es un dispositivo
electrónico capaz de convertir una señal analógica de voltaje en una señal digital con un
valor binario. La señal analógica, que varía de forma continua en el tiempo, se conecta a la
entrada del dispositivo y se somete a un muestreo a una velocidad fija, obteniéndose así
una señal digital a la salida del mismo.
2.1. Resolución
En la figura 1 se muestra el símbolo del circuito del DAC de 4 bits, así como sus
características de entrada-salida. Hay cuatro entradas digitales, lo que indica que se trata
de una DAC de 4 bits. Por cada entrada digital se requiere una señal eléctrica que represente
ya sea un 1 lógico o un 0 lógico. es el bit menos significativo (least significant bit, LSB).
es el bit más significativo (most significant bit, MSB). En la figura 1(b), se grafica el voltaje
de salida analógico en función de 16 posibles palabras de entrada digitales. También se
muestra el valor de � correspondiente a diversas palabras digitales.
1
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
2
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
Ejemplo 1
Un DAC de 8 bits tiene un rango de voltaje de salida de 0-2.55 V. Defina de dos
maneras su resolución.
Solución: (a) De la ecuación (1):
8
� ���ó : = =
El voltaje de salida puede tener 256 valores distintos (incluido el cero).
� , � . � �
� ���ó = = 8
= =
− − �
Ejemplo 2
Suponga que la palabra de entrada digital de una DAC de 4 bits cambia de 0000 a
0110. Calcule el voltaje de salida final del DAC.
Solución: El valor decimal de 0110 es 6. Este valor representa a D, la palabra de
entrada digital. De la explicación anterior, cuando = , � = �. Aplicando
la ecuación (2) se obtiene:
� �
� ���ó = =
− �
Utilizando ahora la ecuación (3), se obtiene:
� = �/� � = �
3
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
Ejemplo 3
Un DAC de 8 bits tiene una resolución de 10 mV/LSB. Calcule: a) � ; b) � . En
ambos casos el código de entrada es de 10000000.
Solución: (a) � se presenta cuando la palabra digital es 11111111. El numero
11111111 tiene un valor decimal de 255. Por lo tanto, D = 255 y aplicando la
ecuación (3) se obtiene:
�
� = � ��� = � = . �
�
(b) El valor decimal equivalente a 10000000 es 128. Por lo tanto D = 128 y
�
� = � ��� = � = . �
�
La resolución también se define como la relación del cambio necesario en el valor del voltaje
de entrada, �� , para producir un cambio en la salida digital de 1 LSB. Si se conoce el valor
del voltaje de entrada a escala total, �� , necesario para producir una salida digital en la
que todos los dígitos sean 1, la resolución se calcula de la siguiente manera:
�� �
� ���ó = �− (5)
4
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
5
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
Ejemplo 4
La salida de un ADC de 8 bits está formada totalmente por unos cuando �� = 2.55 V.
Calcule: (a) su resolución; (b) su salida digital. En ambos casos, ��= 1.28 V
Solución: (a) De la ecuación (4)
8
� ���ó = =
Y de la ecuación (5):
. � �
� ���ó = 8
=
− �
(b) De la ecuación (7):
. �
= �
�/�
De la ecuación (6):
código de salida digital = equivalente binario de 128 = 10000000
Ejemplo 5
¿Cuánto vale el error de cuantización del ADC del ejemplo 4?
Solución: En el ejemplo 4 se calculó el valor de la resolución como 10 mV por LSB. El
error de cuantización es de ± 1/2LSB o ± 5 mV.
6
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
7
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
Varias configuraciones son posibles, pero en este documento sólo se estudiará una red
escalera R-2R con salida de voltaje.
Para simplificar el análisis y explicación del funcionamiento de un red de escalera R-2R
considere el DAC de 3 bits mostrado en la figura 4.a. El circuito consta de una red de
interruptores ( , ), una referencia estable de tensión (� ) y la red de escalera R-
2R de precisión. La salida (� ) se conecta a un circuito aislador (amplificador operacional)
que permite conectarlo sin carga a la siguiente etapa. El valor de � puede variar bajo el
rango máximo de voltaje del amplificador. El valor típico de R está en el rango de . Ω a
Ω.
Figura 4: Circuito de un DAC de 3 bits (a) Red de escalera R-2R con posición de los interruptores en
100 (b) Circuito equivalente de a (c) Circuito equivalente de b.
8
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
� �
� = = (8)
+
Una nueva posición de los interruptores del DAC de 3 bits se muestra en la figura 6.a., que
corresponden al código binario 001 (D=1). El circuito puede ser simplificado a la forma
equivalente mostrada en la figura 6.b. Los voltajes de los nodos (A, B, C) formados por las
ramas de resistencias pueden ser fácilmente calculados de una manera similar y la salida de
voltaje se convierte en
− � � � (10)
� = � =− ( ) = −( ) = −( )
9
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
Figura 6: Circuito de un DAC de 3 bits (a) Red de escalera R-2R con posición
de los interruptores en 001 (b) Circuito equivalente de a.
De una manera similar, se pueden calcular las restantes salidas de voltaje para un DAC de 3
bits ingresando todas las posibles combinaciones binarias. En forma general y en términos
del circuito real, la salida de voltaje � para cualquier DAC está dada por
� (11)
� = −( )
Donde D es igual al valor decimal de la entrada digital y la resolución del DAC está dada por
� (12)
� ���ó =
10
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
Ejemplo 6
Las resistencias que forman parte de la red de escalera R-2R de un DAC de 4 bits tienen
valo es de R = kΩ y de 2R = 20 kΩ. � vale 10 V. Calcular: (a) la resolución de la
escalera; (b) su ecuación de entrada-salida; (c) � correspondiente a una entrada digital
dc 1111.
Solución: (a) De la ecuación (12):
� �
� ���ó = = = . �
� =− . �
(c) El valor decimal correspondiente al número binario 1111 es 15; por lo tanto, D = 15
� =− . � =− .
11
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
12
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
13
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
Según la ecuación 13 el tiempo de conversión será tato más largo cuanto mayor sea ,
si se mantiene la entrada de reloj constante.
Ejemplo 7
Mediante un reloj de 1 MHz se excita un ADC de aproximaciones sucesivas de 8 bits.
Calcule su tiempo de conversión.
Solución: El tiempo correspondiente a un pulso de reloj es μs. De la e ua ió ):
= � + = �
14
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
15
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
16
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
CHS2:CHS0 CANAL
000 Canal 0, (RA0/AN0)
001 Canal 1, (RA1/AN1)
010 Canal 2, (RA2/AN2)
011 Canal 3, (RA3/AN3)
100 Canal 4, (RA5/AN4)
101 Canal 5, (RE0/AN5)
110 Canal 6, (RE1/AN6)
111 Canal 7, (RE2/AN7)
Tabla 1: Bits de selección del canal
17
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
de esta forma si la lectura hecha por el microcontrolador es de D = 512 LSB (valor decimal
de la salida digital del ADC), la tensión analógica leída es:
�
�� = � ���ó = . � = . �
�
Las tensiones a convertir siempre son positivas.
Como ya se mencionó los bits PCFG3:PCFG0 configuran los terminales del microcontrolador
utilizados por el módulo de conversión A/D como entradas analógicas del módulo o como
terminales digitales de los puertos paralelos correspondientes. A modo de ejemplo, la tabla
3 muestra los valores que toman los bits en un PIC16F877A.
Después de un reset, los bits PCFG3:PCFG0 quedan en el valor 0, por lo que los terminales
del puerto A y E están asignados al módulo de conversión A/D y la tensión de referencia se
toma de la alimentación de microcontrolador. Para asignar como digitales los terminales de
estos puertos, hay que programar la opción correspondiente en el registro ADCON1.
Las conversiones A/D se realizan en sincronismo con una señal de reloj. Este reloj se obtiene
o bien del oscilador principal del microcontrolador ( ) mediante un divisor programable,
o bien de un oscilador RC interno de frecuencia de fija ( , entre 167 kHz a 500 kHz), no
representado en la figura 10. Con los bits ADCS1y ADCS0 del registro ADCON0 junto con el
18
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
bit ADCS2 del registro ADCON1 se selecciona la fuente del reloj y se programa el divisor de
frecuencia si la fuente es el oscilador principal del microcontrolador. Para que el ADC
funcione mientras el microcontrolador está en modo de bajo consumo (sleep), hay que
seleccionar el oscilador RC interno. En el tabla 3 se presentan las posibles configuraciones
para la selección de la señal de reloj.
ADCON1 ADCON0
FRECUENCIA DEL RELOJ
ADCS2 ADCS1:ADCS0
0 00 /
0 01 /
0 10 /
0 11
1 00 /
1 01 /
1 10 /
1 11
Tabla 3: Selección de la frecuencia del reloj para la conversión A/D.
Para iniciar una conversión A/D hay que activar el bit del control GO. Cuando ha terminado
la conversión, se activa el bit del estado ̅̅̅̅̅̅̅̅ . En realidad, GO y ̅̅̅̅̅̅̅̅ están realizados
en un mismo bit: el bit /̅̅̅̅̅̅̅̅ del registro ADCON0 (figura 10). El programador debe
poner a 1 ese bit para iniciar una conversión A/D y cuando este bit toma el valor de 0, el
resultado de la conversión está disponible en ADRESH y ADRESL. Cuando finaliza una
conversión A/D, se activa también el bit ADIF del registro PIR para solicitar interrupción. Si
el bit ADIE del registro PIE está activo y el sistema de interrupción del microcontrolador está
habilitado (el bit GIE del registro INTON es 1), la solicitud de interrupción se hace efectiva.
Resumen
En canal de la entrada analógica se selecciona con los bits CHS2, CHS1 y CHS0 del
registro ADCON0 (ver tabla 1).
Los bits PCFG3:PCFG0 del registro ADCON1 permiten configurar los terminales del
microcontrolador utilizados por el módulo de conversión A/D como entradas
analógicas del módulo o como terminales digitales de los puertos paralelos A y E (ver
tabla 2)
19
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
Según el fabricante, el tiempo de adquisición en los PIC de gama media está entre 10 µs y
20 µs, es decir,
µs ≤ � ≤ µs (15)
20
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
La falta del seguidor de tensión de entrada mostrado en la figura 9 hace que � dependa
mucho de la resistencia de la salida ( ) de la fuente de tensión de entrada. El fabricante de
los PIC recomienda que sea siempre menor que 10 kΩ. “i = Ω, resulta que
� = µ , y para = 50 Ω se obtiene � = µ .
En el convertidor A/D de 10 bits de los PIC de gama media, según el fabricante, el tiempo
de conversión de un dato de 10 bits es 11.5 veces el tiempo de conversión de un bit:
� = . × � (16)
� > . µ (17)
21
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
ANCON1 Y ANCON0 �
� �
ADCS2:ADSCS1:ADCS0 (para � = �. � �� )
000 / � / � 1.25 MHz
100 / � / � 2.5 MHz
001 / � / � 5 MHz
101 / � / � 10 MHz
010 / � / � 20 MHz
110 / � / � 20 MHz
X11 � a � (Nota 1) (Nota 1)
Tabla 4: Valor (máximo) que debe tener la frecuencia ( � ) del oscilador principal
del PIC16F877A para que el tiempo de adquisición (mínimo) por bit ( � ) sea de 1.6
µs, en las diferentes configuraciones.
Puede calcularse que, en los PIC, el menor valor de está entre 20.4 µs y 38.4 µs.
Si una señal analógica se digitaliza periódicamente con un periodo , denominado periodo
de muestreo, la frecuencia de muestreo es = . debe ser mayor o igual que la
�
duración del proceso de digitalización. Se recomienda esperar un tiempo igual a �
segundos antes de comenzar una nueva conversión A/D. Por tanto:
+ � (19)
En términos de la frecuencia de muestreo, esta expresión se convierte en
(20)
� + �
22
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
Ejemplo 8
Calcule del tiempo de digitalización para una conversión A/D de 10 bits en un
PIC16F877A con un oscilador principal de 4 MHz
Solución: Si la frecuencia del oscilador principal es OSC = MHz , teniendo en cuenta
la tabla 4, se selecciona la configuración dada por los bits ADCS2:ADCS0 = 001, con lo
8 8
cual resulta � = = = . µ que cumple con la condición expresada en la
�� �
expresión 17. El tiempo de una conversión A/D de 10 bits es entonces
� = . × � = . × . µ = µ
Si se considera el peor tiempo de adquisición, es decir, � = µ , que corresponde
al aso ue la esiste ia de salida del siste a edio sea la ás alta posi le kΩ , el
tiempo de muestreo resultante es
= � + � = µ + µ = µ
23
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
b. Configurar el formato del resultado de la conversión A/D con el bit ADFM del
registro ADCON1.
c. Seleccionar la procedencia del reloj del módulo de conversión A/D y el valor
apropiado del tiempo de conversión por bit ( � ) mediante los bits
ADSC1:ADSC0 de ADCON0 y el bit ADSC2 del registro ADCON1.
d. Seleccionar el canal analógico de entrada mediante los bits CHS2:CHS0 de
ADCON0.
e. Activar el modulo A/D mediante el bit ADON del registro ADCON0.
24
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
ADCON1 ADCON0
FRECUENCIA DEL RELOJ setup_adc (modo)
ADCS2 ADCS1:ADCS0
0 00 / ADC_CLOCK_DIV_2
0 01 / ADC_CLOCK_DIV_8
0 10 / ADC_CLOCK_DIV_32
0 11 ADC_CLOCK_INTERNAL
1 00 / ADC_CLOCK_DIV_4
1 01 / ADC_CLOCK_DIV_16
1 10 / ADC_CLOCK_DIV_64
1 11 ADC_CLOCK_INTERNAL
También existe la opción ADC_OFF para indicar que no se utilizará el módulo ADC del
microcontrolador.
setup_adc_ports (valor);
Esta función configura los pines del ADC para que sean analógicos, digitales o alguna
combinación de ambos. Las combinaciones permitidas varían, dependiendo del
microcontrolador.
valor: definición de las entradas analógicas correspondiente a los bits PCFG3:PCFG0 del
ADCON1 de acuerdo a la tabla 6.
25
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
set_adc_channel (canal);
Especifica el canal a utilizar por la función read_adc ( ).
canal: selección del canal analógico correspondiente a los bits CHS2:CHS0 de ADCON0 (ver
tabla 7). El número de canal empieza en 0. Es preciso esperar un corto espacio de tiempo
(generalmente � ) después de cambiar el canal de adquisición, antes de que se puedan
obtener lecturas de datos válidos.
26
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
27
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
PROGRAMA:
28
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
El LM35 está diseñado para funcionar en un rango de temperatura de -55° a +150 °C. En el
LM35 se obtiene una tensión de salida de 10 mV por cada grado centígrado, es decir, 10
mV/°C lo que da un rango de -0.55 V para los -55 °C hasta los 1.5 V para los 150 °C.
Según se muestra en la figura 14, el voltaje de alimentación � del sensor LM35 puede tener
un rango de variación entre 4 V a 20 V. El valor de la resistencia se elige en función de la
ecuación = � / � , por ejemplo, para una fuente de alimentación de 5 V se tendría
un valor de = �/ � = Ω.
El sensor LM35 está disponible en varios tipos de encapsulados herméticos, uno de los más
utilizado es el paquete TO-92 que se muestra en la figura 15.
Figura 15: Sensor LM35 a) Distribución de los pines, vista inferior b) Apariencia física
Junto con el sensor LM35 se suele utilizar una etapa de adaptación para obtener un rango
de salida 0 a 5 V para poder ingresarlos al microcontrolador, este circuito está formado por
un inversor de ganancia unidad y un sumador (figura 16).
29
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
� = � − �
� debe ser 0 V para una entrada de -0.55 V y de 5 V para una entrada de 1.5 V. La tensión
de polarización (� ) del sumador es de -5 V. Con estos datos los valores si se selecciona
= Ω son = Ωy = Ω (estas dos últimas se pueden estandarizar
a = Ω y = Ω). De esta forma se obtienen 0.109 V para -55 °C y 4.888 V para
150 °C. Para la se elige una función de lo señalado por el fabricante del LM35, tal y como
se ha indicado anteriormente.
La salida de la etapa de adaptación se puede conectar al PIC y tan sólo es necesario aplicar
el escalado en el software para determinar la temperatura (ver figura 17).
30
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
31
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
PROGRAMA:
32
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
�� = � ���ó + .
Ejemplo 3: Realizar la lectura de una señal analógica que oscila entre 1.5 V y 1.7 V. Realizar
las conexiones mostradas en la figura 19 con la finalidad de mejorar la resolución del
conversor A/D. Utilizar el canal AN0 para el proceso de adquisición y mostrar en un LCD el
valor de la tensión medida.
La fuente PULSE está ubicada en la opción Generator Mode al lado izquierdo de la ventana
principal del ISIS de Proteus. Para configurar los valores de tensiones mínima y máxima en
la fuente PULSE se da doble clic sobre el ícono del circuito y se colocan los valores mostrados
en la figura 20.
33
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
PROGRAMA:
34
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
Ejemplo 4: Realizar la Conversión Digital Analógica (señal de -1.5 V a 1.5 V) haciendo uso de
un DAC externo de 8 bits. (figura 21).
35
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
Figura 21: Uso de un DAC externo para generar un señal de -1.5 V a 1.5 V.
El DAC utilizado es un modelo genérico de ISIS, tan solo hay que fijar las tensiones de
referencia e introducir el dato por el puerto paralelo. En este caso se obtiene una señal de
-1.5V a +1.5 V utilizando un dato de 8 bits (de 0 a 255). En este DAC se puede modificar la
conversión mediante el menú de la figura 22.
36
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
Los resultados según el tipo de conversión se muestran en la siguiente tabla (para una
referencia de ±1,5 V).
Tabla 7: Posibles valores de salida del DAC externo en función del modo de salida configurado.
PROGRAMA:
37
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
del convertidor R-2R, es de fácil desarrollo dado que consiste en un arreglo de conexiones
de resistencias, donde una es el doble de la otra, de ahí su nombre R-2R.
Cabe resaltar que cuantos más bits, posea la conversión mayor será su resolución y por
consiguiente mayor la calidad de la señal reconstruida. Las desventajas notables de este
arreglo son, el incremento del hardware requerido y el uso de una cantidad mayor de pines
de los puertos. En la siguiente gráfica se puede apreciar la configuración de las resistencias
para una conversión de 8 bits:
Este arreglo puede ser expandido con la misma arquitectura para conseguir hacer un
convertidor de mayor resolución, aumentando el número de entadas D, o lo que es igual el
número de bits. Otra característica de este tipo de conversión es que no requiere de
librerías especializadas, solo basta con colocar el valor numérico a convertir en un puerto,
y el valor análogo hará presencia en la salida.
El valor de R se fija a 10 kΩ y las resistencias de 2R a 20 kΩ. El programa de prueba puede
ser el del ejemplo anterior.
38
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
Figura 24: Uso de una red R-2R para generar un señal de 0 V a 1.5 V.
PROGRAMA
39
Sistemas Microprocesados I UPS Autor: Ing. Junior Figueroa
9. BILIOGRAFÍA
[1] R. COUGHLIN, F. DRISCOLL, Amplificadores operacionales y circuitos integrados
lineales , Editorial Prentice Hall, Quinta Edición, México, 1999, 552 páginas.
[2] F. VALDÉS, R. PALLÁS, MICROCONTROLADORES FUNDAMENTOS Y APLICACIONES CON
PIC , Editorial Marcombo, Primera Edición, España, 2007, 340 páginas.
[3] E. GARCÍA, Co pilador C CC“ y “i ulador Proteus para Microco troladores PIC ,
Editorial Marcombo, Segunda Edición, México, 2012, 340 páginas.
[4] CCS C, CC“ C Co piler Ma ual , Edición noviembre del 2013, 403 páginas.
40