Casos de uso para un ADC externo

9

La mayoría de los microcontroladores (uC) tienen un convertidor de analógico a digital (ADC) como parte de su conjunto periférico, lo cual es fenomenal ya que integra dos componentes en un solo paquete. Por lo general, estos ADC también se mapean en registros, lo que permite que los datos se extraigan de manera rápida y fácil.

A pesar de esta estrecha integración, aún puede comprar ADC externos. Puedo ver varios casos para estos:

  • El ADC necesita estar aislado de la uC.
  • La profundidad de bits de las muestras de ADC debe ser mayor que la ADC de uC.
  • El voltaje a detectar está lejos del microcontrolador y las líneas analógicas largas no son aceptables.
  • El voltaje a detectar se encuentra en un entorno hostil que no es adecuado para la uC.
  • El ADC externo muestrea mucho más rápido que el ADC de uC.
  • El voltaje de referencia para algunas muestras es diferente al de otras, y requiere múltiples pines Vref (y, por lo tanto, múltiples ADC externos).
  • El uC actual no tiene suficientes canales de ADC y el costo de poner un nuevo uC es prohibitivo.
  • El ADC externo consume menos energía que el ADC de uC (necesitaría un ejemplo para creerlo).
  • Los canales ADC se deben muestrear simultáneamente (escenario raro).
  • El costo de la programación del firmware en el momento de la fabricación supera el costo de la parte ADC más costosa (poco probable).
  • El PCB tiene limitaciones de espacio y no puede caber uC (poco probable).

Todo esto está muy bien, pero lo que me parece extraño es que los ADC externos suelen ser un poco más caros que sus homólogos uC, pero proporcionan una funcionalidad equivalente. Por ejemplo, puede comprar una pieza EFM32Z con un ADC de 12 bits 1Msps (con referencia interna) por aproximadamente $ 1 , o puede comprar un ADC equivalente de 12 bits a 200kps por aproximadamente $ 3.50 (mismas velocidades (ish), números de potencia relativamente iguales, etc.) y realizar la misma tarea (extraer datos de ADC).

La pregunta es: ¿hay razones de peso para que un ingeniero favorezca un ADC externo sobre el ADC de un uC cuando este último puede realizar la misma funcionalidad?

TRISAbits
fuente
1
El muestreo simultáneo es en realidad un escenario bastante común en algunos espacios de aplicación, como el procesamiento de señales.
Jason R

Respuestas:

12

Si el ADC interno de su microcontrolador realiza el trabajo que necesita, entonces no, no hay necesidad de ADC externos. Pero entonces, ese no es a quién están dirigidos.

Usted ha cubierto la mayoría de las razones para un ADC externo, pero hay algunas más y, en mi opinión, son algunas de las razones más importantes:

  1. Necesita una tecnología de muestreo diferente; por ejemplo, el ADC interno es SAR, pero debe hacer Delta Sigma.
  2. El ADC interno, debido a que es interno y comparte el mismo dado que la MCU principal, nunca estará 100% libre del ruido del resto de la MCU, por lo que una externa podría hacer un ruido ultra bajo.
  3. Su microcontrolador / SoC / FPGA de elección no tiene ADC. Los dos últimos son los más probables: los SoC y FPGA más comunes no tienen ningún ADC. Sí, puede obtener los que sí, pero muchos no. Entonces agregas uno externo.

Para el punto 3, tome la Raspberry Pi por ejemplo. Eso no tiene ningún ADC disponible, debe agregar uno externo para hacer cualquier trabajo analógico.

Majenko
fuente
Eso sí que es interesante. Cuando se trata de ruido, en lugar de pagar para obtener un ADC externo, se lograría el mismo resultado al obtener un ADC uC de mayor profundidad de bits e ignorar los bits menos significativos del resultado muestreado (esto obviamente supone que el tiempo de conversión adicional de los bits adicionales no son un factor impedimento).
TRISAbits
3
El procesamiento de la señal después de los hechos solo puede ayudar con el ruido de los procesos que son independientes de la temporización de la muestra (y, por lo tanto, contribuyen con el ruido "aleatorio"). Gran parte del ruido en un sistema de procesador será el resultado de variaciones en la fuente de alimentación y la carga a tierra que están algo sincronizadas con el proceso de muestreo; la única forma de evitarlos es hacer que el ADC use sus propios rieles de suministro separados. Tenga en cuenta que el aislamiento total no es necesario, ya que muchos ADC pueden tolerar fácilmente 100mV más o menos entre VDD / VSS analógico y digital.
supercat
9

Otras razones para favorecer un ADC externo:

  1. Muchas partes externas de ADC incluyen entradas diferenciales, mientras que los convertidores integrados de microcontroladores a menudo no lo hacen. En los casos en que las entradas tienen mucho ruido de modo común, eso puede ser muy importante.

  2. Muchas partes externas de ADC incluyen una etapa de amplificador antes del convertidor en sí, permitiendo así que el convertidor mida directamente una señal de alta impedancia. En muchos microcontroladores, el acto de muestrear una señal de entrada puede perturbarla. Dependiendo de la naturaleza de la señal de entrada, esto puede aumentar enormemente el tiempo de adquisición necesario para realizar mediciones precisas.

  3. Incluso si un ADC interno tiene doce bits de ancho, eso generalmente no significa que tome lecturas precisas de una parte en 4096. Un ADC externo típico a menudo tendrá mejores especificaciones que uno interno, incluso cuando ambos tienen la misma profundidad de bits anunciada.

Integrar un ADC en un microcontrolador es fácil. Integrar un buen ADC es mucho más difícil. Adivina cuál es más común.

Super gato
fuente
1
Los ADC de SAR sufren un poco por la inyección de carga, porque conectar momentáneamente el conjunto de capacitores de muestreo a la entrada interrumpe lo que se está midiendo. Si la fuente de entrada no se recupera lo suficientemente rápido, esto causa un error de medición. Más resolución generalmente requiere una mayor capacidad de muestreo interno. La resolución Delta-sigma solo depende de extender un contador digital. (Aunque las buenas especificaciones INL / DNL de alta resolución no son triviales de lograr.)
MarkU
@supercat: nunca había considerado una etapa de amplificador como parte de la conversión. Esto abre interesantes circuitos de muestreo de avenidas.
TRISAbits
2
@ MarkU: He observado el problema de la inyección de carga en algunos circuitos. Curiosamente, algunos convertidores parecen intentar cargar la entrada hacia el valor muestreado anterior (de la entrada que se muestreó la última), algunos intentan cargarla hacia cero, y al menos uno parecía cargarla arbitrariamente ("al azar") hacia un valor más alto. o un voltaje más bajo que encontré bastante molesto. No entiendo por qué una parte haría lo último; incluso si tuviera que cargar hacia algo, cargar hacia cero consistentemente sería mejor que cargar hacia algún valor "aleatorio".
supercat
4

Otra razón para que existan algunos ADC externos: han existido mucho más tiempo que los micros con ADC internos, y se han diseñado en muchos productos. Posiblemente 20 o 30 años más. (Probablemente no sea el caso de la parte SOIC vinculada, aunque puede ser una variación modernizada y reducida de una parte clásica)

Cuando el ADC no tiene una resolución, precisión o velocidad estelares, pero tiene un precio superior, esta puede ser la razón.

Incluso para nuevos diseños, puede ser preferible reutilizar bloques que funcionen bien, en lugar de rediseñar una parte más nueva (incluso si la integración resultante reduce el costo de la lista de materiales). Esa reingeniería puede ser costosa; el proceso de aprobación de pruebas y reglamentaciones, aún más.

Ahora, si está comenzando desde cero, y su microcontrolador elegido tiene suficientes canales ADC que cumplen con sus requisitos, ninguno de los anteriores se aplica.

Brian Drummond
fuente
2

Me doy cuenta de que esta es una pregunta muy antigua, pero es una pregunta que debatimos internamente con bastante frecuencia.

Tiene razón, sería inusual elegir un ADC externo si la versión externa fuera exactamente funcionalmente equivalente. Sin embargo, en mi experiencia, los micros de bajo costo generalmente tienen ADC bastante pésimos con deriva de temperatura, bajo conteo de bits (10-12 bits) y ruido de VCC (+/- 20mV en algunos casos) ... aunque lo inverso puede ser cierto. .. puede mejorar S / N si sobremuestrea y tiene ruido presente. En nuestras actividades de desarrollo de productos, es bastante raro basar nuestra selección de MCU en la calidad de ADC presente dentro. Por lo general, se trata más de la cadena de herramientas, el costo, el firmware existente, etc. Los ADC internos generalmente se limitan a tareas no críticas como leer el voltaje de la batería.

Con varios micros, también puede haber problemas con los temporizadores compartidos que deben monopolizarse para tiempos de muestreo rápidos, pero que interfieren con otras cosas en la MCU (puertos serie de software, ISR, etc.) cuando están monopolizados para el ADC.

Además, ¿qué es VREF? Si está utilizando VCC como referencia en el firmware, incluso si calibra al VCC "real", ese valor puede fluctuar drásticamente durante las operaciones. Si tiene un dispositivo de alta corriente a bordo (radio, wifi, MCU, etc.) con un gran uso de corriente transitoria, VCC podría caer a 4.8 voltios durante una transmisión y si su muestra ocurre durante esa ventana, y convierte ingenuamente el 0-1023 Valor de lectura de ADC a voltaje con ADC_VAL / 1023 * 5.0: ha perdido la asombrosa precisión de 200 mV. O, si tiene diferentes modos de alimentación (USB, Wall Wart, batería): VCC en la MCU puede cambiar (especialmente con USB). Los ADC externos (incluso con el mismo número de bits) pueden proporcionar vref interno sólido como una roca bajo condiciones de VCC fluctuantes.

La resolución es muy importante. Me imagino que hay algún uso (en el mundo real) para 10-12 bits de resolución, pero para cualquier tipo de aplicación en el mundo real (detección de gas, medición acústica, medición de acelerómetro, medición de temperatura de precisión, etc.) 16 bits suele ser La resolución mínima para lograr una señal adecuada al ruido y las características de resolución. Incluso un MCU de 32 bits realmente agradable como el SAMD de Atmel está limitado a ADC internos de 12 bits.

La fluctuación del reloj también es un problema y también existe cierta imprecisión inherente cuando se requieren otros micros de 8 bits para proporcionar una lectura de 12 bits de ancho y necesita al menos 2 ciclos de reloj para manipular un valor de 12 bits, lo que puede no ser cierto con un ADC externo (ya que pueden tener osciladores internos).

También hay momentos en que la proximidad física a su transductor y el aislamiento de la MCU es importante. Algunos transductores muy sensibles requieren su propia potencia condicionada, planos de tierra aislados y amplificadores chopper de transimpedancia extremadamente sensibles con 0.01% de pasivos.

Sin embargo, a veces hay razones convincentes para usar los ADC internos. DMA es una razón ... la frecuencia de muestreo es otra. La facilidad de sobremuestreo es otra. La interfaz de los ADC externos a altas velocidades de datos puede consumir muchos pines de E / S multiplexados valiosos y crear un diseño más complicado. Además, muchos de los ADC que hemos utilizado están basados ​​en I2C, por lo que la velocidad de muestreo está muy limitada por la velocidad del bus I2C. Incluso a 1 mb / s, una lectura de 16 bits lleva mucho tiempo.

ElDuderino
fuente
Esta es una excelente idea! A medida que pasaron los años (y mi experiencia creció), tendría que estar de acuerdo: los ADC MCU internos pueden ser bastante malos.
TRISAbits