Autor Tema: Conversor Digital - Analógico (DAC) tipo R-2R de 6bit para el PIC  (Leído 8278 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
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 BIT

Salidas utilizadas: 6
Resolució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.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re: Conversor Digital - Analógico (DAC) tipo R-2R de 6bit para el PIC
« Respuesta #1 en: 17 de Junio de 2012, 11:30:18 »
¿Cómo mejorar la resolución del conversor?


Primer Método: Más salidas digitales
Consiste en añadir más salidas digitales y más resistencias. A medida que se añaden resistencias, los errores se acumulan y la resolución aumenta, por lo que va siendo más difícil conseguir el objetivo.
Más allá de 8 bits no es práctico intentar aumentar la resolución.



Segundo Método: PWM
Si la velocidad no es importante, una forma de mejorar la resolución consiste en acoplar al bit menos significativo (el más lejano a la señal de salida) una salida de tipo PWM.
De esta forma la tensión de salida se puede modular entre dos valores cercanos entre sí mediante la señal PWM, filtrando la salida con un condensador adecuado.
Con este sistema se pueden añadir bits de resolución con facilidad.
En este método es importante que la red original tenga poco error de linealidad, para que la mayor resolución de bits vaya acompañada también de la misma exactitud.

En caso de que no sea posible mejorar la exactitud de la red R-2R, se puede corregir la señal de salida mediante tablas de corrección.


Saludos.


Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re: Conversor Digital - Analógico (DAC) tipo R-2R de 6bit para el PIC
« Respuesta #2 en: 19 de Junio de 2012, 18:29:48 »
Y he montado la placa con resistencias R=2200 ohmios.

Edito: Resistencias de 2200 ohmios SMD 1206 del 1%

Este valor es en la práctica el mínimo que acepta un PIC para que el error de linealidad no sea demasiado grande. Los resultados son los siguientes:

Código: [Seleccionar]
N = valor digital de entrada al DAC (6 bits)
Vo = valor analógico de salida (voltios)

N Vo
0 0,000
1 0,086
2 0,166
3 0,249
4 0,324
5 0,407
6 0,488
7 0,571
8 0,636
9 0,718
10 0,799
11 0,882
12 0,958
13 1,041
14 1,122
15 1,205
16 1,249
17 1,332
18 1,412
19 1,495
20 1,571
21 1,654
22 1,735
23 1,818
24 1,884
25 1,967
26 2,05
27 2,13
28 2,21
29 2,29
30 2,37
31 2,46
32 2,46
33 2,54
34 2,63
35 2,71
36 2,78
37 2,87
38 2,95
39 3,03
40 3,10
41 3,18
42 3,26
43 3,34
44 3,42
45 3,51
46 3,59
47 3,67
48 3,72
49 3,80
50 3,88
51 3,97
52 4,04
53 4,12
54 4,21
55 4,29
56 4,36
57 4,44
58 4,52
59 4,61
60 4,68
61 4,77
62 4,85
63 4,93



Linealidad (en Rojo: señal teórica. Azul: Señal real):






Error de linealidad (en porcentaje):





Esquema eléctrico (pinchar para ver completo):





Página web del conversor DAC tipo R-2R de 6 bits


Saludos.
« Última modificación: 19 de Junio de 2012, 18:51:38 por Picuino »

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Conversor Digital - Analógico (DAC) tipo R-2R de 6bit para el PIC
« Respuesta #3 en: 19 de Junio de 2012, 18:34:15 »
Para la gráfica presentada, que % error tienen las resistencias. Sino queda ambiguo  ;-)


Salupos!
No contesto mensajes privados, las consultas en el foro

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2059
Re: Conversor Digital - Analógico (DAC) tipo R-2R de 6bit para el PIC
« Respuesta #4 en: 19 de Junio de 2012, 18:36:16 »
Segun veo son del 1% Suky  :mrgreen:
Pero seria bueno que el amigo picuino lo aclarara.  ;-)
« Última modificación: 19 de Junio de 2012, 18:39:18 por RALF2 »

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Conversor Digital - Analógico (DAC) tipo R-2R de 6bit para el PIC
« Respuesta #5 en: 19 de Junio de 2012, 18:39:54 »
Segun veo son del 1% Suky  :mrgreen:
Pero seria bueno que el amigo picuino lo aclarara.  ;-)

Donde dice?  :undecided:
No contesto mensajes privados, las consultas en el foro

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re: Conversor Digital - Analógico (DAC) tipo R-2R de 6bit para el PIC
« Respuesta #6 en: 19 de Junio de 2012, 18:43:02 »
En el esquema eléctrico está, pero lo aclaro de todas formas. He utilizado valores del 1%.

En cualquier caso el mayor error se debe a que la resistencia a nivel bajo de las salidas del PIC es diferente a la resistencia a nivel alto.
Concretamente se diferencian 40 Ohmios.

Diferencia ZoL - ZoH del PIC =  40 ohmios

R = 2200 ohmios

Error de resistencia debido a la impedancia de salida del PIC = 40/2200 = 1.8 %


Como puede verse, no es importante el error de las resistencias, sino el error de impedancia de salida del PIC.


Saludos.
« Última modificación: 19 de Junio de 2012, 18:52:18 por Picuino »

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re: Conversor Digital - Analógico (DAC) tipo R-2R de 6bit para el PIC
« Respuesta #7 en: 19 de Junio de 2012, 19:01:30 »
Dejo un tema pendiente para futuras mejoras:

De qué forma se podrían utilizar los tres estados de las salidas del PIC (Estado alto, estado bajo y estado de alta impedancia o desconectado)
para producir una salida de tensión.

En teoría con 4 salidas y 3 estados en cada salida, hay un total de 81 estados que podrían producir otros tantos niveles de tensión.

Con los conversores R-2R y 2 estados de salida (alto y bajo) se necesitan 6 salidas para producir 64 niveles de tensión de salida.



Otro tema para el estudio:
¿Cómo se puede mejorar la precisión del conversor R-2R utilizando la desconexión (nivel de alta impedancia) de una salida?



Otro tema para el estudio:
¿Cómo optimizar el conversor para que no sea lineal y se adapte mejor a la producción de ondas senoidales?



Otro tema más:
¿Qué precisión se puede lograr con resistencias de 10Kohm y 1%


Saludos

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Conversor Digital - Analógico (DAC) tipo R-2R de 6bit para el PIC
« Respuesta #8 en: 19 de Junio de 2012, 20:31:31 »
 Una forma de generar tres niveles de tensión sobre el pin de un pic es como se muestra en la imagen.

  Cuando el pin está en 1, R1 queda en paralelo (aproximadamente) a R2
  Cuando el pin está en 0, R1 queda en paralelo (aproximadamente) a R3
  Y cuando está en alta impedancia, el divisor queda formado sólo por R2 y R3
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re: Conversor Digital - Analógico (DAC) tipo R-2R de 6bit para el PIC
« Respuesta #9 en: 20 de Junio de 2012, 10:04:57 »
Se consiguen 1.67, 2.5 y 3.33 voltios.

El reto es conseguir más niveles con más salidas. Por ejemplo 27 niveles con 3 salidas.

Saludos.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Conversor Digital - Analógico (DAC) tipo R-2R de 6bit para el PIC
« Respuesta #10 en: 20 de Junio de 2012, 10:23:02 »
  Habría que probar colocando distintas ternas de resistencias en pines distintos y luego unir todos... o ver si se puede utilizar dicho terna y luego mandarlo a un DAC R-2R. En lugar de mandar directamente el pin del PIC.


  También existe la posibilidad de utilizar un PWM para generar niveles de tensión.
  Si mal no recuerdo en el sitio de microchip había una apnote para utilizar PWM como generador de señales analógicas o algo así.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re: Conversor Digital - Analógico (DAC) tipo R-2R de 6bit para el PIC
« Respuesta #11 en: 20 de Junio de 2012, 11:33:42 »
Si, se puede añadir PWM al pin menos significativo de un conversor R-2R y conseguir más precisión y rapidez

R-2R  es muy rápido, pero poco preciso
PWM  es lento         , pero muy preciso

Si combinamos los dos, se puede conseguir un conversor rápido y preciso.
PWM de 4 bit + DAC R-2R de 4 bit = 8 bit de precisión 16 veces más rápido que un PWM de 8 bit.

Saludos.


 

anything