Autor Tema: Teoria sobre ADC (Analog to Digital Conversor)  (Leído 11658 veces)

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

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Teoria sobre ADC (Analog to Digital Conversor)
« en: 24 de Diciembre de 2010, 17:06:04 »
Quiero compartir con todos un articulo que acabo de terminar de escribir y que hace parte de un Libro en el que estoy trabajando. Lo comparto pues son conceptos básicos que se deben tener en cuenta para usar los Conversores Análogo a Digital. Ademas, para programar microcontroladores con ADC incorporado es fundamental tenerlos claros.



2.3.2.   Analog to Digital Conversor (ADC).

Como su nombre lo dice, un dispositivo ADC fue creado para representar en una palabra digital el nivel de voltaje existente a la entrada de este. En otras palabras, para tomar una muestra de una señal análoga en un instante de tiempo, cuantificarla y darle un código digital (comúnmente binario) que representa la cantidad de niveles a los cuales pertenece la muestra.
En la imagen No1 se podrá ver de forma general los bloques mínimos que hacen parte de un ADC.
  
Imagen No1. Diagrama de bloques de un ADC.


En la actualidad existen diferentes técnicas para cuantificar y codificar la señal análoga de entrada, hay de conversión directa, tipo SAR (Successive-approximation-register), también los SD (Sigma-Delta), comparador en rampa, y la lista continua, pero no es intención de esta publicación profundizar sobre todos los que existen, solo se pretende dar los conceptos básicos que debe conocer una persona.


Para el ejercicio de entender un poco mas cada uno de los componentes de un ADC, se usara como referencia los conversores análogo a digital tipo SAR, ademas es importante aclarar que es de los mas usados en módulos internos para microcontroladores, pues son ideales para trabajar con velocidades de operación de hasta 5 Millones de muestras por segundo y con resolución de 8 a 16 bits.


Conversor Analogo a Digital tipo SAR.

El nombre da una pequeña guía de su funcionamiento, pues físicamente se trata de un registro digital de n bits y un modulo llamado lógica digital SAR que va gestionando todo el proceso hasta completar y obtener el resultado que es directamente la salida del registro.  A pesar de muchas variantes que existen en los ADC tipo SAR, en la imagen No2 se pueden ver los componentes básicos de esta arquitectura.

Imagen No2. Diagrama de bloques de un ADC tipo SAR.

Cada vez que que quiere quiere tomar una muestra de la señal análoga y conocer el valor digital que lo representa, siempre se siguen los siguientes pasos:

Tomar una muestra de la señal.
La manera mas fácil de verlo es como un interruptor electrónico cuya única función es dejar pasar la señal análoga a convertir, este paso sera por un pequeño instante de tiempo, solo lo necesario para que el retenedor quede cargado al mismo nivel de voltaje de la señal de entrada.

Cuantificar y Codificar
Una vez que la señal esta lista en el retenedor, el modulo de control SAR inicia el proceso de cuantificacion y codificación directa. Para explicarlo mejor, sigamos con un ejemplo paso a paso este procedimiento.

Ejemplo: Se desea convertir 1.6V a su equivalente digital con un ADC tipo SAR  de 4 bits de resolución con un VREF+ de 5Vdc y VREF- de 0V:

El nivel máximo de conversión esta determinado por el voltaje en el pin VREF+ y el valor mínimo por VREF-. Desde VREF- hasta VREF+  es dividido en porciones iguales y la cantidad de veces dadas por la resolución ((2^n)-1). Como n es 4 bits para este ejercicio, entonces, ((2^4)-1) = 15 partes iguales).

En el primer flanco de subida de la señal de RELOJ, el controlador SAR, lleva el BIT MSB del registro binario a 1.  (bit 3 para este ejercicio obteniendo a la salida del registro el dato 1000). La razón de este primer paso es forzar la salida del DAC interno a VREF+/2. Es decir:


Si a 4 bits el numero binario máximo es 1111 que corresponde a 15 decimal la salida del DAC sera también el máximo que es VREF+.

Cuando el controlador SAR coloca 1000 a la salida del registro este valor binario corresponde a 8 decimal que seria de cierta manera la mitad del valor máximo posible, definitivamente a la salida del DAC también se tendrá la mitad del voltaje máximo, es decir, VREF+/2.

VREF+/2 a la salida del DAC es comparado con VIN presente en el retenedor. Si es mayor VIN que la salida del DAC este bit es ajustado a 1 de forma permanente durante la conversión, si es menor, el bit es ajustado en 0. Luego repite uno a uno para todos los bits que indican la resolución de conversión.

En la imagen No3 se puede ver el procedimiento paso a paso para obtener la conversión de análogo a digital con la técnica SAR.

Imagen No3. Procedimiento ADC tipo SAR con resolución de 4 bits.

De lo anterior podemos concluir que para n bits de resolución se necesitan mínimo n ciclos de reloj para finalizar su proceso. Esta es la razón fundamental por lo que es difícil encontrar ADCs tipo SAR que combinen alta resolución con alta velocidad de operación, ademas se deben tener en cuenta tiempos críticos que se van sumando, haciendolos mas lentos frente a otras arquitecturas. Uno de estos es el tiempo que tarda el comparador en obtener una salida estable después de cada cambio, otro es el tiempo que tarda el bloque lógico SAR en leer la respuesta del comparador y realizar sus operaciones internas, ademas del tiempo de muestreo y retención de la señal a convertir.

Por lo anterior el Comparador debe ser lo mas rápido y con la mayor resolución posible, pues tiene que ser tan preciso como el sistema en general. Para los fabricantes es preocupante el ruido que pueda presentarse en la fuente del ADC, en VREF+ y VREF- afectando el resultado de la comparación. Es por ello que hay variantes según cada fabricante.


Es importante resaltar que la resolución del Conversor Analogo-Digital (ADC) esta dada por la cantidad de bits del registro, ademas el Conversor Digital-Analogo (DAC) que esta interno tiene la misma resolución.  

El resultado en el ejemplo nos dio 0101 en binario que corresponde a 5/16 del VREF+... Si hiciéramos el calculo para saber a cuando voltaje equivaldría este dato binario, seria de (5Vdc)*(5/16)=1.5625Vdc, es decir, tendríamos un error del 3.75%. Para reducir este error tendríamos que hacer mas divisiones entre VREF- y VREF+, así los pasos entre un nivel y otro seria mas cercanos. Para lograrlo solo queda incrementar el numero de bits de resolución del ADC. Claro esta que no se puede incrementar la resolución del ADC por capricho y simplemente seleccionar siempre el que mas tenga pues a mayor numero de bits, mas ciclos de reloj se necesitan para completar la operación, haciéndolo mas lento. Y si se incrementa la velocidad del reloj para compensar, el consumo de energía también aumenta. Hay un punto de equilibrio que lo dará la aplicación que se quiera desarrollar con el ADC.

Entre las ventajas de los ADCs tipo SAR están su implementacion en encapsulados pequeños, algo que interviene en gran medida para la selección de su uso en microcontroladores.  El consumo de energía es directamente proporcional a la velocidad de operación y para sistemas embebidos esta característica es fundamental ya que controlando la frecuencia de la señal de reloj en el ADC, se controla el consumo de este. En general son de resolución aceptable y como decía inicialmente estos ADCs tipo SAR son la selección ideal hasta el momento para ser incorporados en microcontroladores.


Imagen No4. Comportamiento lineal en un ADC.


Teniendo en cuenta el comportamiento lineal de los ADCs, y la ecuación característica que se pueden observar en la Imagen No4, es posible predecir el resultado digital binario que se obtendría con un ADC para una resolución y voltajes de referencia dados. Aunque la linealidad de un ADC es relativa y puede ser discutida debido a un error intrínseco en el procedimiento de cuantificación de la señal análoga de entrada.

Para ver como usar estas formulas, se puede intentar predecir el resultado del ADC para el ejemplo propuesto antes

Ejemplo: Se desea convertir 1.6V a su equivalente digital con un ADC tipo SAR  de 4 bits de resolución con un VREF+ de 5Vdc y VREF- de 0V:

Doutput=((Vinput+ - VREF-)/(VREF+ - VREF-))(n^2-1) = ((1.6V - 0)/(5-0))(15) = 4.8

Doutput = 4.8... Pero un ADC entrega resultados enteros, es por ello que se debe aproximar por encima al valor mas cercano.(A este error que se genera por esta aproximación se le denomina error de cuantización).

Doutput =  5 base10, pasamos a binario y obtendríamos :  Doutput = 0101 base 2.


Sobre VREF+ y VREF-
Estos dos pines que están presente en casi todos los ADC que existen, incluyendo los que están incorporados en los microcontroladores, merecen ser tenidos en cuenta con mucho detenimiento y cuidado.

  • Es muy importante la estabilidad y filtrado de los voltajes aplicados por estos dos pines. Variaciones de estos voltajes en la mitad de un conversión AD, puede generar resultados no predecibles. Por lo anterior como mínimo se recomienda colocar capacitores de 0.1uF tantalio muy cerca de estos pines.
  • VREF+ máximo no es el mismo para todos los ADCs. Cada fabricante ofrece diferentes ADCs con rangos diferentes, es por ello que se hace imprescindible revisar la hoja de datos correspondiente al ADC a usar. En la mayoría de los microcontroladores es común encontrar que VREF+ máximo es el mismo VCC que se le esta aplicando al microcontrolador, por ejemplo, si el MCU esta a 3.3V, este sera el voltaje máximo aplicable en VREF+.
  • VREF- muchas veces es mal interpretado. No siempre se puede aplicar voltajes negativos en este pin, es muy importante revisar hoja de datos para tener muy claro esta información. En muchos de los microcontroladores VREF- minimo es de 0V.

La función principal de estos pines, es definir el rango de voltaje dentro del cual la señal análoga de entrada estará cambiando.  Esto es de gran importancia si se quiere aprovechar en su totalidad la resolucion del ADC.

Ejercicio: Se desea leer con un ADC a 8 bits de resolución una señal análoga que varia de 0 a 1.5Vdc.  Seleccione VREF+ y VREF- para el ADC.

Solución:
Se deben revisar los 2 valores extremos que podrá tener la señal análoga de entrada. Vmínimo seria de 0V y Vmáximo seria de 1.5v. VREF- debería ser conectado a GND y VREF+ debería conectarse a un voltaje de 1.5V, pero se recomienda por protección subir este voltaje a 1.6Vdc. Ahora si predecimos cual seria el valor binario que representaría la señal análoga cuando este en su máximo valor obtendríamos:

Doutput=((Vinput+ - VREF-)/(VREF+ - VREF-))(n^2-1) = ((1.5V - 0)/(1.6-0))(255) = 239.0625

Doutput= 240 base 10.  Pasado a binario obtendríamos:

Doutput=11110000 base 2.


Cuando se usan microcontroladores con ADC interno, es común usar VREF- de GND y VREF+ de 5V que es el mismo VCC, esto para evitar el uso de reguladores especiales solo para el ADC. Si intentamos convertir a digital la misma señal del ejercicio anterior con estos datos de VREF+ y VREF-, encontraríamos que:

Doutput=((Vinput+ - VREF-)/(VREF+ - VREF-))(n^2-1) = ((1.5V - 0)/(5-0))(255)=76.5


Doutput = 78 base 10.  Pasado a binario obtendríamos:

Doutput=1001110 base 2.

De este resultado podemos recalcar que al máximo voltaje en la señal de entrada, solo se usarían 7 bits para representar la señal, mientras que el ADC es de 8 bits, lo que se puede llamar perdida de resolución.

Imagen No5. Muestreo de señales análogas,.

En la imagen No5 podemos observar lo importante que tiene la velocidad de muestreo de una señal análoga que varia en el tiempo. Cuanto mas muestras por segundo se tienen de dicha señal con mas fidelidad podrá ser recreada para su procesamiento. Pero esta velocidad de muestreo esta limitada por el tiempo mínimo que tarda el ADC en tomar la muestra, ademas del tiempo que tarda el controlador digital en almacenar dicha muestra y dar la orden al ADC para una nueva lectura, a esta se debe sumar que a mas muestras por segundo mas datos deberán ser almacenados y procesados por segundo, lo que agrega ahora la limitación en memoria del controlador digital. El punto de equilibrio lo dará la aplicación que se esta desarrollando.

El tiempo mínimo requerido por el ADC para tomar una muestra es inversamente proporcional a la frecuencia señal de reloj usada para el ADC. Cada fabricante en la hoja de datos del dispositivo ADC, indicad cual es la frecuencia máxima de reloj que se puede aplicar y así la velocidad máxima de muestreo.

Existe el teorema de Nyquist que recalca cual debe ser la velocidad de muestreo mínima para la digitalización de señales periódicas. Según Harry Nyquist, para poder reconstruir una señal periódica que ha sido digitalizada, esta debió ser maestreada a una frecuencia mínima de 2 veces la frecuencia de la señal a procesar. Aunque es un error pensar que con solo cumplir con este requisito se va a lograr un resultado perfecto en el procedimiento pues no hay que olvidarse de los errores que se suman a la señal digitalizada, entre ellos el error de cuantización que ocasiona una perdida de información muestra tras muestra. Ademas hay que combinar el teorema de Nyquist con técnicas de eliminación de ruido y demás para así obtener resultados aceptables en la señal recreada después de su procesamiento digital.

continuara...


Referencias:
MAXIM APPLICATION NOTE 1080: Understanding SAR ADCs: their architecture and comparison with other ADCs.
MAXIM APPLICATION NOTE 1870: Demystifying Sigma-Delta ADCs
   



Si encuentran que hay algo mal planteado o que no es correcto por favor hacérmelo saber pues la intención es mejorar cada vez mas.

Espero sea de su agrado y FELIZ NAVIDAD  :-/!
« Última modificación: 28 de Junio de 2011, 11:40:36 por un Moderador »

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5470
    • Electrónica Didacta
Re: Teoria sobre: Analog to Digital Conversor (ADC).
« Respuesta #1 en: 24 de Diciembre de 2010, 17:11:35 »
las imágenes están excelente, muy descriptiva.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1696
Re: Teoria sobre: Analog to Digital Conversor (ADC).
« Respuesta #2 en: 24 de Diciembre de 2010, 17:34:13 »
gracias. Muy bueno, mas claro que el agua no podía :mrgreen:
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4917
Re: Teoria sobre: Analog to Digital Conversor (ADC).
« Respuesta #3 en: 24 de Diciembre de 2010, 18:34:48 »
Muchas gracias Ernesto, se  te agradece muchos la explicacion.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: Teoria sobre: Analog to Digital Conversor (ADC).
« Respuesta #4 en: 25 de Diciembre de 2010, 04:30:55 »
Grande, Ernesto.

Ya estoy deseando ver ese libro que dices.

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4917
Re: Teoria sobre: Analog to Digital Conversor (ADC).
« Respuesta #5 en: 25 de Diciembre de 2010, 05:53:28 »
Amigos Moderadores del Foro Tecnico os pido por favor ponerle una Chincheta a este Tema.
 y a ser posible dejarlo blokeados, que solo  nuestros amigo Ernesto pueda seguir con su  teoria .

 es posible??
venga ya decir que si  :mrgreen:


Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4032
Re: Teoria sobre: Analog to Digital Conversor (ADC).
« Respuesta #6 en: 25 de Diciembre de 2010, 09:31:40 »
Muchas gracias Ernesto.
Muy buena explicacion, clara y concisa.
Todos los días se aprende algo nuevo.

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Teoria sobre: Analog to Digital Conversor (ADC).
« Respuesta #7 en: 25 de Diciembre de 2010, 19:27:01 »
Hola amigo,
Muchas gracias por los comentarios. Esta época de navidad me gusta mucho, pero porque quedo mas liberado de trabajo y puedo dedicarme a las cosas que me gustan, entre ellas escribir.

Pronto sacaremos otro articulo.

FELIZ NAVIDAD A TODOS!    :P
« Última modificación: 25 de Diciembre de 2010, 19:37:37 por LABmouse »

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Teoria sobre: Analog to Digital Conversor (ADC).
« Respuesta #8 en: 25 de Diciembre de 2010, 19:41:32 »
Amigos Moderadores del Foro Tecnico os pido por favor ponerle una Chincheta a este Tema.
 y a ser posible dejarlo blokeados, que solo  nuestros amigo Ernesto pueda seguir con su  teoria .

 es posible??
venga ya decir que si  :mrgreen:
Hola amigo STK, gracias por el interés en dejar fijo este tema. Quiero apoyar la petición de dejarlo fijo, pero no cerrarlo, me gusta que las personas opinen en el y dejen comentario, así hay retroalimentacion y mejoramos todos.

La motivación de este trabajo que emprendí escribiendo el libro es ver que una y otra vez hay que responder preguntas que son fundamentos básicos. Lo que respondemos hoy a una persona, simplemente mañana llega otro nuevo y toca repetir una vez mas. Pueda que exista mucha información en internet sobre el tema, pero pocas veces se llega a ellos con un buscador de manera rápida, hay que dedicar tiempo a ello y con los afanes de hoy en día casi nadie lo dedica.  Por eso me decidi crear un compendio de informacion que todos deben saber sobre Electronica para microcontroladores.


Por acá la tabla de contenidos...
« Última modificación: 25 de Diciembre de 2010, 21:53:52 por LABmouse »

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Teoria sobre ADC (Analog to Digital Conversor)
« Respuesta #9 en: 27 de Diciembre de 2010, 17:15:50 »
Hay una actualización en el primer post Teoría ADC.   :P

SALUDOS!
« Última modificación: 27 de Diciembre de 2010, 17:19:22 por LABmouse »

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Teoria sobre ADC (Analog to Digital Conversor)
« Respuesta #10 en: 27 de Diciembre de 2010, 22:08:52 »
El post esta muy bueno.

 :? Supongo que sería bueno que pongas algo sobre DAC ya que es un poco necesario a la hora de explicar el funcionamiento del ADC.

Felicidades.
 :-/
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: Teoria sobre ADC (Analog to Digital Conversor)
« Respuesta #11 en: 27 de Diciembre de 2010, 23:45:10 »
Hay una actualización en el primer post Teoría ADC.   :P

SALUDOS!
Tremendo regalo de Navidad...  :-/

Espero con ansias ese libro y ahora que tengo iPad estoy que me leo todos los libros que salgan de pic...

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Teoria sobre ADC (Analog to Digital Conversor)
« Respuesta #12 en: 28 de Diciembre de 2010, 08:34:24 »
Si necesitas material para la parte de CAN, y no lo encuentras en el hilo, pidemelo nomas y te lo envio...

Abrazo y fantastico este capitulo!!
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Teoria sobre ADC (Analog to Digital Conversor)
« Respuesta #13 en: 28 de Diciembre de 2010, 11:47:08 »
El post esta muy bueno.

 :? Supongo que sería bueno que pongas algo sobre DAC ya que es un poco necesario a la hora de explicar el funcionamiento del ADC.

Felicidades.
 :-/

Hola, creo que sólo falta entender al DAC si se está explicando un ADC del tipo aproximaciones sucesivas (SAR).