Elementi essenziali di progettazione quando si lavora con ADC a 12 bit


11

Attualmente sto progettando una scheda che sta collegando un ADC a 12 bit (MCP3208) a un Raspberry Pi (oltre ad alcune altre cose relative agli I / O a bassa velocità). Sarà per lo più collegato a sensori analogici (sensori di temperatura, sensori di distanza IR e cose simili, anche se non sempre necessitano di una risoluzione a 12 bit, ci sono casi in cui sarebbe davvero bello avere quel pezzo extra di informazioni).

Non ho molta esperienza con i circuiti analogici e non ho una buona comprensione della matematica e della fisica sottostanti coinvolte.

Sto leggendo diverse guide di progettazione relative agli ADC e spesso leggo cose come filtri anti aliasing, driver ADC per segnali ad alta impedenza, piani di massa analogici, tracciamento di tracce in determinati schemi per ridurre il rumore, mantenendo l'elettronica digitale ad alta velocità separata quanto possibile dall'ADC per ridurre il rumore di commutazione, i riferimenti di tensione di precisione e molte altre cose che non capisco ancora del tutto.

Quindi quello che ho iniziato a chiedermi era se per me ha senso usare un ADC a 12 bit, se non ho l'esperienza per implementarlo correttamente perché potrei perdere 2 LSB comunque a causa della progettazione del circuito non ottimale e dovrei piuttosto andare con un ADC a 10 bit. Oppure la progettazione ottimale dei circuiti non è cruciale nel regno dei 12 bit come credo.

Quali sono le cose che dovrebbero essere sempre implementate per ridurre il rumore (ad esempio l'evidente limite di bypass)? Quali sono le principali cause di rumore in un'applicazione di segnale misto come la mia (con un processore GHz che parla con l'ADC)? Quali sono le cose che sono effettivamente necessarie solo in applicazioni con maggiore precisione (14-16 bit +)?

Mi piacerebbe davvero sapere quali sono le cose sensate ed essenziali che dovrei cercare.


2
Inizia con ciò che stai cercando di misurare e che tipo di risoluzione ti serve, quindi decidi quale tipo di elaborazione ADC e analogica ti serve. A parte, leggi la scheda tecnica ADC. Perdi bit anche se lo usi perfettamente. Cerca "ENOB"
Scott Seidman,

Il problema è che le cose che dovrò misurare cambieranno costantemente. A volte ho bisogno di vedere ogni possibile variazione di tensione, a volte bastano anche 8 bit. Vorrei avere una soluzione in grado di soddisfare il maggior numero possibile di applicazioni.
PTS

Quanto velocemente devi essere in grado di vedere i cambiamenti? (ovvero quale frequenza di campionamento stai
cercando

2
"A volte ho bisogno di vedere ogni possibile blip di tensione, a volte bastano anche 8 bit." Quindi i tuoi requisiti devono essere in grado di "vedere ogni possibile blip di tensione". Se hai bisogno di una risoluzione di 12 bit anche solo occasionalmente, devi progettare con 12 bit. Se vai a 10 bit, non ne avrai 12 quando ne avrai bisogno.
WhatRoughBeast

Sarebbe preferibile una frequenza di campionamento di 1Khz +. Anche se penso che nella maggior parte delle applicazioni 120Hz sarebbe abbastanza buono. Tuttavia, tale frequenza di campionamento dovrebbe essere possibile per 8 canali alla volta (non allo stesso clock ma devono essere tutti campionati consecutivamente). @WhatRoughBeast Sì, ecco qual è stata la mia ragione per decidere di andare con 12 bit. Anche se ho bisogno di consigli con l'implementazione qui.
PTS

Risposte:


19

Per un'applicazione a segnale misto di media precisione e bassa frequenza di campionamento come la vostra, i problemi principali che si incontrano sono avere un riferimento sufficientemente accurato e mantenere il rumore di commutazione digitale fuori dall'ADC. Ci sono diversi passaggi per questo, a partire dalla fase di progettazione e proseguendo attraverso il layout della scheda.

Durante la progettazione del circuito

Innanzitutto, in fase di progettazione, è necessario fornire all'ADC un riferimento adeguato, un corretto disaccoppiamento e un'unità di segnale a bassa impedenza affinché si verifichino le conversioni corrette. Inoltre, il segnale deve essere filtrato (filtro passa-basso in un'app di strumentazione come la tua) per impedire all'ADC di convertire in modo efficace le frequenze più alte in banda base (le app RF possono utilizzare un filtro frontend ADC + passa-banda lento in Nyquist-down-convertire un segnale, salvando su un mixer dedicato e LO).

Stabilizzare il tuo riferimento

I riferimenti vanno dal banale e patetico (un discreto Zener gelatinoso, buono a oh, 4 bit) al folle (Zeners sepolti in circuiti integrati, usato in applicazioni di strumentazione ad alte prestazioni) - e le specifiche spesso non sono chiare, mescolando unità in modi che confondono i principianti. Il grafico in LTC AN82 è un antidoto utile per questo - data la tua applicazione, in cui il tuo ADC è un'unità a 12 bit in grado di 11+ ENOB dato un riferimento stabile e un'alimentazione a 5 V, specificherei che il riferimento deve essere accurato allo 0,02% o meglio nell'intervallo di temperatura di interesse e il rumore RMS non è un problema in quanto si tratta di un ordine di grandezza inferiore alle specifiche di precisione.

Sfortunatamente, la precisione iniziale dello 0,02% senza un trim riguarda il punto in cui le cose iniziano a diventare piuttosto ... difficili. L'uso di un riferimento a 4.096 V dato che le prestazioni ENOB desiderate significano che voglio eseguire l'ADC su un alimentatore a 5 V silenzioso con un traduttore a livello logico sul 3.3VI / O del Pi e che 4.096 V ti danno un piacevole, pratico Rapporto 1mV / conteggio, siamo limitati a ADR4540 , X60003 , MAX6126AASA o forse LTC6655Banche se l'ultima parte la chiude in quanto ha un'accuratezza iniziale dello 0,025%. Mentre tempco e isteresi non sono problemi in quanto si tratta di un'applicazione da banco, presumo, e la regolazione della linea e del carico non sono problemi importanti in quanto è alimentata dalla stessa alimentazione a 5 V regolata dell'ADC e guida solo il pin Vref dell'ADC, deriva a lungo termine è anche una preoccupazione qui a causa della mancanza di un trim - per questo, ADR4540 e MAX6126AASA sono i chiari vincitori a 25ppm / root-khr e 20ppm / root-khr tipici, rispettivamente - circa al rapporto 10-1 necessario considerare insignificante la deriva a lungo termine. (Le altre due parti hanno una deriva a lungo termine intorno a 50-60 ppm / radice-khr tipica).

Disaccoppiare tutto

Il datasheet MCP3208 raccomanda un condensatore da 1 µF minimo per il disaccoppiamento, collegato da Vdd al sistema di terra: anche AGND e DGND devono essere collegati allo stesso sistema di terra. Sul binario da 5 V della scheda deve essere usato anche un disaccoppiatore di massa al tantalio in ceramica o polimero da 10µF / 10V minimo.

Inoltre, il riferimento dovrebbe essere disaccoppiato secondo il foglio dati - questo è spesso 100nF sull'uscita con 100nF sull'ingresso oltre a qualsiasi capacità di disaccoppiamento di massa presente, ma l'LTC6655 richiede un condensatore di uscita molto più grande (usando lo stesso P / N come funziona il disaccoppiatore di massa) e X60003 è schizzinoso nella direzione opposta a causa del suo design a bassa potenza.

Ingresso unità / buffering / filtro

Questo, per fortuna, non è difficile: l'accuratezza dello 0,02% si traduce in 800 µV dell'offset massimo in ingresso e posso ottenere un paio di ordini di grandezza meglio di quello con GBW nella gamma MHz mentre sono in esecuzione sulla singola alimentazione a 5 V disponibile con lo zero di oggi - amplificatori di deriva e assettati internamente. L' AD8630 offre un'opzione di zero automatico a basso rumore, mentre gli amplificatori a basso offset con taglio interno veloce includono OPA4350 e OPA4192 . In entrambi i casi, è possibile utilizzare il filtro antialiasing Sallen a due poli e chiave passa-basso chiave dal foglio dati MCP3208, con la frequenza dell'angolo impostata a circa 5kHz o giù di lì - possono funzionare anche altri modelli di filtro.

Alimentatore e interfaccia digitale

La specifica ENOB (numero effettivo di bit) dell'MCP3208 dipende dall'alimentazione - funziona meglio con un'alimentazione a 5 V rispetto a una 2,7-3,3 V; deve anche essere a corto di 5V per usare un riferimento a 4.096V. Ciò solleva il problema che il Pi utilizza una logica a 3,3 V e non è tollerante a 5 V, richiedendo un IC di traduzione a livello logico come TXB0104 - il lato A va al Pi mentre il lato B va all'ADC.

Inoltre, l'alimentazione a 5 V dovrebbe essere ragionevolmente pulita: dovrebbe essere utilizzato un regolatore lineare per generarlo a bordo da una tensione di alimentazione più elevata. Se non è disponibile una tensione di alimentazione superiore nell'applicazione, è possibile utilizzare una guida a 5 V esistente a condizione che venga utilizzata una rete di disaccoppiamento LC per mantenere grandi quantità di rumore digitale dall'ADC e dalla guida di alimentazione dell'amplificatore operazionale.

Tempo di layout

Esistono due chiavi per un efficace layout a segnali misti: partizionamento e layout di fornitura / ritorno . Toccerò quelli a loro volta.

Innanzitutto, dividerei ordinatamente il layout della scheda in due lati: un lato digitale e un lato analogico. Tutte le tracce digitali (l'interfaccia SPI, nel caso dell'MCP3208 che si sta utilizzando) vanno sul lato digitale della scheda: questo lato della scheda contiene anche il chip traduttore a livello logico e il connettore I / O sul Pi. Il lato analogico della scheda contiene tutte le tracce e i circuiti analogici: il riferimento di tensione va qui, così come i filtri di ingresso, la protezione di ingresso e i connettori di ingresso analogico. L'ADC (e l'induttore di filtro se si utilizza 5 V dal Pi) è l'unico componente che colma questa lacuna - in effetti,

Si noti, inoltre, che tutte le parti che ho collegato sono disponibili in pacchetti SMT a passo grosso - si consiglia vivamente un layout a un lato con la parte posteriore come piano GND continuo se si desidera utilizzare qui una scheda a doppia faccia. Se il costo non è un'obiezione, una scheda a quattro strati fornirà un piano Vdd analogico continuo oltre al piano di massa, nonché spazio per una "pozza di potenza" per il lato logico 3.3V del traduttore IC di livello logico. Tuttavia, non è necessario dividere il piano di massa in questa applicazione: il corretto instradamento delle tracce del segnale manterrà le correnti di ritorno a cui appartengono .

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.