La maggior parte dei microcontrollori (uC) hanno un convertitore da analogico a digitale (ADC) come parte del loro set di periferiche, il che è fenomenale in quanto integra due componenti in un unico pacchetto. Questi ADC sono generalmente mappati anche sui registri, il che consente di estrarre i dati in modo rapido e semplice.
Nonostante questa stretta integrazione, è ancora possibile acquistare ADC esterni. Vedo diversi casi per questi:
- L'ADC deve essere isolato dall'UC.
- La profondità di bit dei campioni ADC deve essere superiore all'ADC dell'UC.
- La tensione da rilevare è lontana dal microcontrollore e le lunghe linee analogiche non sono accettabili.
- La tensione da rilevare è in un ambiente difficile non adatto all'UC.
- L'ADC esterno campiona molto più velocemente dell'ADC dell'UC.
- La tensione di riferimento per alcuni campioni è diversa rispetto ad altri, richiedendo più pin Vref (e quindi più ADC esterni).
- L'attuale UC non ha abbastanza canali ADC e il costo per inserire un nuovo UC è proibitivo.
- L'ADC esterno consuma meno energia dell'ADC dell'UC (avrei bisogno di un esempio per crederci).
- I canali ADC devono essere campionati simultaneamente (scenario raro).
- Il costo della programmazione del firmware in fase di produzione supera il costo della parte ADC più costosa (improbabile).
- Il PCB ha spazio limitato e nessun uC può adattarsi (improbabile).
Questo va bene e va bene, ma ciò che mi sembra strano è che gli ADC esterni sono generalmente un po 'più costosi rispetto alle loro controparti uC, ma forniscono funzionalità equivalenti. Ad esempio, è possibile acquistare una parte EFM32Z con un ADC a 12 bit 1Msps (con riferimento interno) per circa $ 1 , oppure è possibile acquistare un ADC a 12 bit 200ksps equivalente per circa $ 3,50 (stesse velocità (ish), numeri di potenza relativamente uguali, ecc.) E eseguire la stessa attività (estrazione dei dati ADC).
La domanda allora diventa: ci sono ragioni convincenti che un ingegnere favorirebbe un ADC esterno rispetto all'ADC di un uC quando quest'ultimo può eseguire la stessa funzionalità?