Usa casi per un ADC esterno


9

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à?


1
Il campionamento simultaneo è in realtà uno scenario abbastanza comune in alcuni spazi applicativi, come l'elaborazione del segnale.
Jason R,

Risposte:


12

Se l'ADC interno del microcontrollore esegue il lavoro necessario, quindi no, non sono necessari ADC esterni. Ma poi, non è a chi sono rivolti.

Hai coperto la maggior parte dei motivi di un ADC esterno, ma ce ne sono alcuni altri e, a mio avviso, sono alcuni dei motivi più importanti:

  1. È necessaria una tecnologia di campionamento diversa, ad esempio l'ADC interno è SAR, ma è necessario eseguire Delta Sigma.
  2. L'ADC interno, poiché è interno e condivide lo stesso die dell'MCU principale, non sarà mai libero al 100% dal rumore del resto dell'MCU, quindi sarebbe possibile uno esterno per rendere ultra-silenzioso
  3. Il microcontrollore / SoC / FPGA scelto non ha ADC. Gli ultimi due sono molto probabilmente: i SoC e gli FPGA più comuni non hanno alcun ADC. Sì, puoi procurartene uno, ma molti no. Quindi ne aggiungi uno esterno.

Per il punto 3, prendi ad esempio il Raspberry Pi. Che non ha alcun ADC disponibile, devi aggiungerne uno esterno per fare qualsiasi lavoro analogico.


Questo è interessante. Quando si tratta di rumore, invece di pagare per ottenere un ADC esterno, si otterrebbe lo stesso risultato ottenendo un ADC uC a profondità di bit maggiore e ignorando i bit meno significativi del risultato campionato (ciò presuppone ovviamente che il tempo di conversione aggiuntivo da i bit aggiuntivi non sono un fattore di impedimento).
TRISAbits

3
L'elaborazione del segnale post-fact può aiutare solo con il rumore proveniente da processi che sono indipendenti dalla temporizzazione del campione (e quindi contribuiscono al rumore "casuale"). Gran parte del rumore in un sistema di elaborazione sarà il risultato di variazioni dell'alimentazione e del carico al suolo che sono in qualche modo sincronizzate con il processo di campionamento; l'unico modo per evitarli è fare in modo che l'ADC utilizzi i propri binari di alimentazione separati. Si noti che non è necessario il completo isolamento, poiché molti ADC possono facilmente tollerare circa 100mV tra VDD / VSS analogico e digitale.
supercat

9

Altre ragioni per favorire un ADC esterno:

  1. Molte parti ADC esterne includono ingressi differenziali, mentre i convertitori integrati dei microcontrollori spesso no. Nei casi in cui gli ingressi hanno molto rumore di modo comune, questo può essere molto importante.

  2. Molte parti ADC esterne includono uno stadio amplificatore prima del convertitore stesso, consentendo così al convertitore di misurare direttamente un segnale ad alta impedenza. Su molti microcontrollori, l'atto di campionare un segnale di ingresso può disturbarlo. A seconda della natura del segnale di ingresso, ciò può aumentare notevolmente il tempo di acquisizione necessario per effettuare misurazioni accurate.

  3. Anche se un ADC interno ha una larghezza di dodici bit, ciò non significa in genere che le letture siano accurate per una parte nel 4096. Un tipico ADC esterno avrà spesso specifiche migliori di uno interno, anche quando entrambi hanno la stessa profondità di bit pubblicizzata.

L'integrazione di un ADC in un microcontrollore è semplice. Integrare un buon ADC è molto più difficile. Indovina quale è più comune.


1
Gli ADC SAR soffrono un po 'dell'iniezione di carica, poiché il collegamento momentaneo dell'array di condensatori di campionamento all'ingresso interrompe ciò che viene misurato. Se la sorgente di input non si ripristina abbastanza rapidamente, ciò causa un errore di misurazione. Una risoluzione maggiore richiede in genere una capacità di campionamento interna maggiore. La risoluzione delta-sigma dipende solo dall'estensione di un contatore digitale. (Anche se le buone specifiche INL / DNL ad alta risoluzione non sono banali da raggiungere.)
MarkU il

@supercat: non avevo mai considerato uno stadio amplificatore come parte della conversione. Questo apre interessanti percorsi di campionamento del circuito.
TRISAbits

2
@MarkU: ho riscontrato il problema dell'iniezione di carica in alcuni circuiti. Curiosamente, alcuni convertitori sembrano tentare di caricare l'input verso il precedente valore campionato (da qualunque input sia stato campionato per ultimo), alcuni cercano di caricarlo verso zero, e almeno uno sembrava caricarlo arbitrariamente ("casualmente") verso un valore più alto o tensione inferiore che ho trovato piuttosto fastidioso. Non capisco perché una parte farebbe la seconda; anche se dovesse caricare verso qualcosa, caricare costantemente verso lo zero sarebbe meglio che caricare verso un valore "casuale".
supercat

4

Un altro motivo per cui esistono alcuni ADC esterni: sono stati in giro molto più a lungo dei micro con ADC interni e progettati in molti prodotti. Forse 20 o 30 anni in più. (Probabilmente non è il caso della parte SOIC collegata, anche se può essere una variazione modernizzata fustellata di una parte classica)

Laddove l'ADC non ha una risoluzione, una precisione o una velocità stellari, ma richiede un prezzo premium, questo potrebbe essere il motivo.

Anche per i nuovi progetti potrebbe essere preferibile riutilizzare i blocchi che funzionano bene, piuttosto che riprogettare un nuovo pezzo (anche se l'integrazione risultante riduce il costo della distinta base). Quella riprogettazione può essere costosa; il processo di test e approvazioni normative, ancora di più.

Ora, se stai iniziando da zero e il microcontrollore scelto ha abbastanza canali ADC che soddisfano i tuoi requisiti, nessuna delle precedenti è valida.


2

Mi rendo conto che questa è una domanda molto antica, ma è una domanda di cui discutiamo internamente piuttosto frequentemente.

Hai ragione, sarebbe insolito scegliere un ADC esterno se la versione esterna fosse esattamente funzionalmente equivalente. Tuttavia, nella mia esperienza, i micro a basso costo di solito hanno ADC piuttosto scadenti con deriva della temperatura, conteggio di bit basso (10-12 bit) e rumore da VCC (+/- 20mV in alcuni casi) ... sebbene l'inverso possa essere vero. .. puoi migliorare S / N se esegui un campionamento eccessivo e hai del rumore presente. Nelle nostre attività di sviluppo del prodotto, è piuttosto raro basare la nostra selezione di MCU sulla qualità dell'ADC presente all'interno. Di solito si tratta più di toolchain, costi, firmware esistente ecc. Gli ADC interni sono generalmente limitati a compiti non critici come la lettura della tensione della batteria.

Con vari micro, possono esserci anche problemi con i timer condivisi che devono essere monopolizzati per tempi di campionamento rapidi, ma interferiscono con altre cose nell'MCU (porte seriali software, ISR ecc.) Quando sono monopolizzati per l'ADC.

Inoltre, cos'è VREF? Se si utilizza VCC come riferimento nel firmware, anche se si esegue la calibrazione al VCC "reale", tale valore può variare in modo piuttosto drammatico durante le operazioni. Se si dispone di un dispositivo ad alta corrente a bordo (radio, wifi, MCU ecc.) Con un elevato consumo di corrente transitoria, VCC potrebbe scendere a 4,8 volt durante una trasmissione e se il campione si verifica durante quella finestra e si converte ingenuamente lo 0-1023 ADC ha letto il valore in tensione con ADC_VAL / 1023 * 5.0 - hai perso una straordinaria precisione di 200mV. Oppure, se si dispone di diverse modalità di alimentazione (USB, verruca a muro, batteria) - VCC sull'MCU può cambiare (specialmente con USB). Gli ADC esterni (anche con lo stesso numero di bit) possono fornire vref interno solido come una roccia in condizioni VCC fluttuanti.

La risoluzione è piuttosto importante. Immagino che ci sia un certo uso (nel mondo reale) per 10-12 bit di risoluzione, ma per qualsiasi tipo di applicazione nel mondo reale (rilevamento di gas, misurazione acustica, misurazione dell'accelerometro, misurazione della temperatura di precisione, ecc.) Di solito a 16 bit la risoluzione minima per ottenere un segnale adeguato al rumore e caratteristiche di risoluzione. Anche un MCU a 32 bit davvero gradevole come il SAMD di Atmel è limitato agli ADC interni a 12 bit.

Anche il jitter dell'orologio è un problema e c'è anche qualche imprecisione inerente quando sono richiesti altri micros 8 bit per fornire una lettura ampia a 12 bit e sono necessari almeno 2 cicli di clock per manipolare un valore di 12 bit, il che potrebbe non essere vero con un ADC esterno (poiché possono avere oscillatori interni).

Ci sono anche momenti in cui la vicinanza fisica al trasduttore e l'isolamento dall'MCU sono importanti. Alcuni trasduttori molto sensibili richiedono la propria potenza condizionata, piani di massa isolati e ampli selettori di transimpedenza estremamente sensibili con passivi dello 0,01%.

A volte, tuttavia, esistono motivi validi per l'utilizzo degli ADC interni. Il DMA è un motivo ... la frequenza di campionamento è un altro. La facilità di sovracampionamento è un'altra. L'interfaccia di ADC esterni con elevate velocità di trasmissione dei dati può consumare molti preziosi pin I / O multiplexati e rendere più complicato il design. Inoltre, molti degli ADC che abbiamo usato sono basati su I2C, quindi la frequenza di campionamento è molto limitata dalla velocità del bus I2C. Anche a 1 mbit / sec, una lettura a 16 bit richiede molto tempo.


Questa è un'intuizione eccellente! Con il passare degli anni (e la mia esperienza è cresciuta) dovrei essere d'accordo: gli ADC interni alla MCU possono essere piuttosto scadenti.
TRISAbits
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.