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?