La mayoría de los microcontroladores (uC) tienen un convertidor 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. Estos ADC también suelen estar registrados en mapas, 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 para estos:
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 y 1 Msps (con referencia interna) por alrededor de $ 1 , o puede comprar un ADC equivalente de 12 bits y 200 ksps por alrededor de $ 3.50 (mismas velocidades, números de potencia relativamente iguales, etc.) y realizar la misma tarea (extracción de datos ADC).
Entonces, la pregunta es: ¿existen razones convincentes por las que un ingeniero preferiría un ADC externo sobre un ADC de uC cuando este último puede realizar la misma funcionalidad?
Si el ADC interno de su microcontrolador realiza el trabajo que necesita, entonces no, no hay necesidad de ADC externos. Pero entonces, eso no es a lo que están dirigidos.
Ha cubierto la mayoría de las razones de un ADC externo, pero hay algunas más y, en mi opinión, son algunas de las razones más importantes:
Para el punto 3, tome el Raspberry Pi por ejemplo. Eso no tiene ADC disponible en absoluto, debe agregar uno externo para hacer cualquier trabajo analógico.
Otras pocas razones para favorecer un ADC externo:
Muchas partes externas de ADC incluyen entradas diferenciales, mientras que los convertidores 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.
Muchas partes externas del ADC incluyen una etapa de amplificación antes del propio 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. Según la naturaleza de la señal de entrada, esto puede aumentar enormemente el tiempo de adquisición necesario para realizar mediciones precisas.
Incluso si un ADC interno tiene doce bits de ancho, eso generalmente no significa que toma lecturas con una precisión 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.
La integración de 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.
Otra razón para que existan algunos ADC externos: han existido durante mucho más tiempo que los micros con ADC internos y están diseñados 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 encogida 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 diseños nuevos, puede ser preferible reutilizar bloques que funcionan bien, en lugar de volver a diseñar en torno a una pieza 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 pruebas y aprobaciones regulatorias, aún más.
Ahora, si está comenzando desde cero y su microcontrolador elegido tiene suficientes canales ADC que cumplen con sus requisitos, nada de lo anterior se aplica.
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 equivalente funcionalmente. Sin embargo, en mi experiencia, los micros de bajo costo generalmente tienen ADC bastante malos con deriva de temperatura, conteo de bits bajo (10 - 12 bits) y ruido de VCC (+/- 20mV en algunos casos)... aunque lo contrario puede ser cierto. .. puede mejorar S/N si realiza un muestreo excesivo y tiene ruido presente. En nuestras actividades de desarrollo de productos, es bastante raro basar nuestra selección de MCU en la calidad del ADC presente en su interior. 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 interfieren con otras cosas en la MCU (puertos serie de software, ISR, etc.) cuando están monopolizados por 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 bastante dramáticamente durante las operaciones. Si tiene un dispositivo de alta corriente a bordo (radio, wifi, MCU, etc.) con un gran uso de corriente transitoria, VCC puede 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 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 una vref interna sólida como una roca en condiciones de VCC fluctuantes.
La resolución es bastante 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 del 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 las características de señal/ruido y resolución adecuadas. Incluso un MCU de 32 bits realmente bueno 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 hay cierta imprecisión inherente cuando se requieren otros micros de 8 bits para proporcionar una lectura de 12 bits de ancho y se necesitan 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 los que es importante la proximidad física a su transductor y el aislamiento de la MCU. Algunos transductores muy sensibles requieren su propia potencia acondicionada, 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 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 usado están basados en I2C, por lo que la frecuencia de muestreo está muy limitada por la velocidad del bus I2C. Incluso a 1 Mbits/seg, una lectura de 16 bits lleva mucho tiempo.
jason r