He estado estudiando la manera de implementar un conversor digital-analógico de tipo R-2R con precisión en torno a 6 bits para implementar con un PIC.
El conversor utiliza una red de resistencias en escalera con el siguiente esquema general:
El problema consiste en calcular las resistencias de manera que el error de la tensión de salida sea lo menor posible.
Las principales fuentes de error son las siguientes:
1.- El error de valor de las resistencias.
2.- La impedancia añadida por la salida del circuito digital.
1.- El primer problema se puede solucionar utilizando resistencias de precisión del 1%. El mayor problema está en que las resistencias sean diferentes entre sí. Si todas las resistencias varían a la vez el error se cancela. Por lo tanto a la hora de elegir resistencias habrá que comprar valores del 1% y utilizar todas las resistencias de la misma serie. Con frecuencia la diferencia de valor entre resistencias de la misma serie no es mayor del 0.1%.
En la mayoría de tiendas pequeñas de electrónica las resistencias más baratas del 1% son las de montaje superficial (SMD). El tamaño más común es el 1206, que es el que voy a utilizar.
2.- La salida digital de los PIC a 5 voltios tiene una impedancia aproximada de:
Zo_L = 20 ohm
Zo_H = 60 ohm
Como puede verse la impedancia de salida no es igual a nivel alto que a nivel bajo. Esto se debe a que el nivel alto lo provoca un transistor de canal P que tiene menor conductividad.
Con una hoja de cálculo he calculado los errores producidos por las diferencias de impedancia y en todos los casos el mayor error se encuentra cuando el bit de mayor valor está a nivel uno y el resto de bits a nivel cero.
CONVERSOR DAC R-2R DE 6 BITSalidas utilizadas: 6Resolución:
64 pasos. desde 0 hasta 63
78 milivoltios por paso
Resistencias utilizada: 1000 ohm 1% SMD Se ha simulado una escalera formada por resistencias de R=1000 ohmios. Para conseguir el valor de 2R se colocan dos resistencias de 1K en serie.
La variación de valor entre resistencias se ha simulado en un +-0.2%, mayor o igual que la variación usual de valor en series de resistencias del 1% de tipo smd.
Con un polímetro se pueden medir los valores para que estén acotados dentro de este límite. La exactitud del polímetro no es importante, sólo la precisión que debe ser de 4 cifras decimales.
Los valores deben estar entre 998 y 1002 ohmios o cualquier otra combinación que tenga esa diferencia entre resistencias. Por ejemplo también serían válidos los valores desde 1000 hasta 1005.
Los valores que se salgan de escala se pueden asociar en serie de forma que se cancelen las variaciones, a la hora de formar las resistencias 2R.
Por ejemplo si los valores deben estar entre 998 y 1002 ohmios, se puede asociar un valor de 1005 en serie con otro de 998 para dar una resistencia de 2003 ohmios, que entra dentro del rango de +-0.2%.
Error en la tensión de salida: El error de la tensión de salida está por debajo de la resolución del circuito. El error siempre es negativo (la tensión de salida es menor que la esperada) y está acotado entre el -1.20% y el -1.45%en el -1.5%
Los mayores errores se deben a los bits de mayor valor (los más cercanos a la tensión de salida), disminuyendo el error hasta el bit de menor valor.
Rango de tensiones de salida:De forma ideal el rango de tensiones de salida será desde cero hasta cinco voltios (la tensión de alimentación del PIC) menos un paso:
Tensión mínima = 0.000 voltios
Tensión de salida máxima = 4.922 voltios
En la práctica y debido a los errores, la tension de salida será algo menor en todos los valores del rango.
Impedancia de salida:En este caso la impedancia de salida es igual a la resistencia de base, es decir 1000 ohmios. Es suficiente para atacar directamente el circuito de aplicación sin necesidad de añadir un amplificador operacional.
Aumentando la resistencia de la escalera, se mejoran los datos de error a costa de tener una mayor impedancia de salida.
Adjunto la hoja Excel utilizada para realizar los cálculos.
Saludos.