Casos de uso para un ADC externo

8

La mayoría de los microcontroladores (uC) tienen un convertidor analógico a digital (ADC) como parte de su conjunto de periféricos, lo cual es fenomenal ya que integra dos componentes en un solo paquete. Estos ADC también suelen estar mapeados en el registro, lo que permite que los datos se extraigan de forma rápida y sencilla.

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

  • El ADC debe estar aislado de la unidad de control de datos.
  • La profundidad de bits de las muestras de ADC debe ser más alta que la ADC de la unidad 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 no adecuado para la unidad de usuario.
  • El ADC externo muestrea mucho más rápido que el ADC de la uC.
  • El voltaje de referencia para algunas muestras es diferente al de otras, ya que requieren múltiples pines Vref (y, por lo tanto, múltiples ADC externos).
  • El uC actual no tiene suficientes canales ADC y el costo de poner un nuevo uC es prohibitivo.
  • El ADC externo consume menos energía que el ADC de la 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 es mayor que el costo de la parte ADC más cara (poco probable).
  • El PCB tiene una restricción de espacio y no puede ajustarse ninguna unidad de usuario (improbable).

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 de uC, pero ofrecen una funcionalidad equivalente. Por ejemplo, puede comprar una pieza EFM32Z con un ADC de 12 bits 1Msps (con referencia interna) para aproximadamente $ 1 , o puede comprar un 12pz por un lado. mouser.in/aspiraciones_aspiración_servicio_completa_por_campo_por_campo_por_campo_glasero_por_cargos_aspiración_por_campo_por_cargos_aspiración_por_campo_por_cargo_cargos_aspiración_aspiración_por_campo_aspiración ish), números de potencia relativamente iguales, etc.) y realice la misma tarea (extrayendo datos de ADC).

La pregunta entonces es: ¿existen razones de peso por las que un ingeniero preferiría un ADC externo sobre el ADC de un uC cuando este último puede realizar la misma funcionalidad?

    
pregunta TRISAbits

4 respuestas

11

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 quien están dirigidos.

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 necesita hacer Delta Sigma.
  2. El ADC interno, debido a que es interno y comparte el mismo dado que el MCU principal, nunca estará 100% libre del ruido del resto del MCU, por lo que un externo sería posible hacer un ultra bajo ruido
  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í, puedes conseguir los que sí, pero muchos no. Así que agregas uno externo.

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

    
respondido por el Majenko
9

Otras pocas razones para favorecer un ADC externo:

  1. Muchas partes externas de ADC incluyen entradas diferenciales, mientras que los conversores incorporados de los 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 amplificación antes del convertidor, lo que permite 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 ADC bueno es mucho más difícil. Supongo que es más común.

    
respondido por el supercat
4

Otra razón para que existan algunos ADC externos: han existido por mucho más tiempo que los micros con ADC internos y se han diseñado para 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 de una parte clásica)

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

Incluso para los nuevos diseños, puede ser preferible reutilizar los bloques que funcionan bien, en lugar de volver a diseñ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 normativos, aún más.

Ahora, si está comenzando desde cero y el microcontrolador elegido tiene suficientes canales ADC que cumplen con sus requisitos, no se aplicará ninguna de las anteriores.

    
respondido por el Brian Drummond
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 usualmente tienen ADCs bastante maliciosos con variación de temperatura, bajo conteo de bits (10 - 12 bits) y ruido de VCC (+/- 20mV en algunos casos) ... aunque lo inverso puede ser cierto. .. usted puede mejorar S / N si sobre-muestra y tiene ruido presente. En nuestras actividades de desarrollo de productos, es bastante raro que nuestra selección de MCU se base en la calidad de ADC presente. Por lo general, es más sobre 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 ser monopolizados para tiempos de muestreo rápidos, pero 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 a VCC "real", ese valor puede fluctuar drásticamente durante las operaciones. Si tiene un dispositivo a bordo de alta corriente (radio, wifi, MCU, etc.) con un gran uso de corriente transitoria, VCC puede bajar a 4.8 voltios durante una transmisión y si su muestra ocurre durante esa ventana, y usted convierte ingenuamente el 0-1023 ADC lee el valor a voltaje con ADC_VAL / 1023 * 5.0 - ha perdido la friolera de 200 mV de precisión. 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 en condiciones VCC fluctuantes.

La resolución es bastante importante. Me imagino que hay algo de 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 gases, medición acústica, medición de acelerómetros, medición de temperatura de precisión, etc.) normalmente es de 16 bits La resolución mínima para lograr características adecuadas de señal a ruido y resolución. Incluso una MCU de 32 bits realmente agradable como el SAMD de Atmel está limitada a ADCs internos de 12 bits.

La fluctuación del reloj también es un problema y también hay 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, que puede No puede 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 de transimpedancia extremadamente sensibles con 0.01% de pasivos.

Sin embargo, a veces hay razones de peso para usar los ADC internos. DMA es una de las razones ... la tasa de muestreo es otra. La facilidad de sobremuestreo es otra. La interconexión de ADC externos a altas velocidades de datos puede consumir una gran cantidad de valiosos pines de E / S multiplexados y hacer que el diseño sea 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 1mbits / seg, una lectura de 16 bits lleva mucho tiempo.

    
respondido por el ElDuderino

Lea otras preguntas en las etiquetas