ADC ad alta risoluzione per sensori rumorosi in condizioni variabili


9

Intro

In risposta a questa domanda sugli amplificatori adattivi , è stato raccomandato che per gestire le condizioni variabili, potrebbe essere più economico usare semplicemente un ADC con una risoluzione più alta, quindi non devo preoccuparmi dell'amplificazione e posso fare il ridimensionamento nel software.

Panoramica

Sto cercando di progettare un circuito di acquisizione dati per sensori di allungamento basati su tessuto montati sul corpo. Il tessuto varia la resistenza quando viene allungato (circa 1 ordine di grandezza, 10k -100k con allungamento del 30%). Le gamme esatte cambieranno a seconda di come viene tagliato il tessuto, se è bagnato di sudore, la temperatura, quanti anni ha il materiale, come è montato, ecc. L'intera cosa deve essere il più piccola possibile perché è montata sulla mano , quindi ridurre al minimo il numero di componenti è un grande vantaggio.ΩΩΩ

Inoltre, vorrei che il circuito fosse riutilizzabile per altre applicazioni che potrebbero avere prestazioni peggiori. Ad esempio, se uso una versione più economica del tessuto, la mia gamma di resistenza potrebbe essere inferiore a 100 a 300 .ΩΩΩ

Percorso del segnale

[tessile] -> [Wheatstone bridge] -> [passa-basso] -> [ampli strumentazione] -> [ADC] -> [AVR]

Requisiti

Quindi, sto cercando un ADC che soddisfi i miei requisiti. L'ADC dovrebbe essere:

  1. 16 bit +
  2. Il più semplice possibile: molto meglio se esiste già un codice di interfaccia scritto per AVR / Arduino ...
  3. ... ma allo stesso tempo il più completo possibile: ho visto alcuni ADC con filtri passa-basso e PGA integrati - tanto meglio se non rendono la configurazione un problema
  4. 8+ canali o, se è abbastanza facile da implementare, 2x 4+ canali. EDIT: Se sto usando un bridge Wheatstone, forse voglio 8 canali di input differenziali (quindi 16 canali) ...
  5. Non penso che la tensione di funzionamento sia importante ... (meglio se non al di sopra di 5 V)
  6. Montaggio superficiale
  7. Non ha bisogno di essere economico (è una tantum)
  8. SPI vs. I2C non importa, penso ...
  9. 100+ Hz

Ricerca

Finora tramite Google ho trovato i seguenti chip:

e i seguenti tutorial:

Riferimento di tensione?

Infine, alcune persone hanno raccomandato un riferimento di tensione di precisione, come la serie Analog Devices REF19x . Pensi che sia necessario? La risoluzione è sicuramente importante per me.

Conclusione

Fammi sapere se hai qualche consiglio! Inoltre, non sono sicuro di cosa stia cercando, quindi anche i suggerimenti su come decidere sono apprezzati.


Spero di evitare questo tipo di storia: arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1264346368
terrazza

@msutherl - Sarebbe un grosso problema se dovessi usare un mux per connetterti a questo ADC? Avrai difficoltà a trovare un ADC a 16 canali, 16+ bit, ma le parti a 1 o 2 canali sono abbastanza facili ...
Kevin Vermeer

1
I bit da soli non determinano l'intervallo dinamico. In teoria i convertitori a 24 bit potrebbero avere una gamma dinamica di 144 dB, ma i convertitori reali sono circa 100-120 dB o giù di lì. Sei sicuro di aver bisogno di così tanta risoluzione per un sensore di allungamento? Stai cercando di gestire molti sensori di allungamento diversi con valori diversi? Sarebbe meglio usare solo un amplificatore a guadagno variabile, penso, e regolarlo per ognuno. Dovrai comunque fare quella calibrazione da qualche parte.
endolith

1
Hai bisogno di 100Hz + per ciascun sensore o per tutti? Con gli ADC multicanale ottieni spesso 1 ADC e un mux, quindi dovrai dividere l'SPS per il conteggio dei canali (o più se la coppia mux / adc non può cambiare canale molto velocemente).
jpc

1
@msutherl Sì, un potenziometro a guadagno manuale o un amplificatore a guadagno programmabile. Qualcosa come un PGA116 potrebbe gestire il campionamento di tutti i sensori in modo round robin con guadagni diversi per ciascuno, con tutto ciò che è fatto nel software?
endolito il

Risposte:


7

ADS1256 di TI ha otto canali single-ended a 24 bit con buffer di ingresso ad alta impedenza e PGA. Il progetto OpenEXG ha un codice PIC per interfacciarlo (usano la versione a due canali ADS1255, ma dovrebbe essere lo stesso).

Se vuoi ingressi differenziali, allora c'è ADS1298 , con 8 canali, PGA e A / D, riferimento interno, oltre a circuiti ECG / EEG che puoi ignorare. Non sono sicuro che puoi trovare un codice di esempio per questo, però.

Se stai cercando una risoluzione, è necessario un riferimento preciso e a basso rumore.


5

Un'idea forse non convenzionale, sono curioso di sapere cosa ne pensate voi ragazzi:

Un ordine di grandezza sembra un cambiamento abbastanza grande da misurarlo direttamente in un circuito divisore di tensione.

È quindi possibile utilizzare un ADC più piccolo e variare la corrente attraverso il sensore. Una sorgente di tensione PWM filtrata + un follower di tensione (può essere un transistor NPN se si ha una coscia nello spazio) può migliorare drasticamente la gamma dinamica.

È possibile utilizzare uno o due di questi e cambiare la tensione quando si misurano sensori diversi.


Per nulla non convenzionale. Infatti, se desidera utilizzare un piccolo microcontrollore a 8 bit, in questo modo può evitare di gestire valori a 24 bit e la complessità potrebbe essere inferiore rispetto all'interfaccia di questi sofisticati ADC. La gamma dinamica può essere la somma delle gamme dinamiche di ADC e PWM nel caso ideale. D'altra parte, sembra che per molte persone i progetti analogici siano più difficili del digitale, quindi usare ADC a 24 bit potrebbe essere più semplice. Inoltre, la gamma dinamica di ADC può essere aumentata mediante sovracampionamento e filtro digitale ... beh, non è più semplice.
Jaroslav Cmunt,

@Jaroslav Thanks. 1. Ha già un bridge Wheatstone quindi immagino che non abbia paura della parte analogica. :) 2. 1 o 2 bit di risoluzione aggiuntiva dovrebbero essere ottenibili con un semplice filtro di somma in esecuzione.
jpc

1
Infatti! Ecco un link per OP: http://www.dspguide.com/ch15.htm
Jaroslav Cmunt

3

Se la tua preoccupazione principale è avere un ampio range dinamico per un dato "sensore", potresti prendere in considerazione l'uso di DAC (o anche solo fonti di tensione controllate da pin MPU) per regolare l'offset / guadagno dell'amplificatore per alterare le prestazioni del sistema per materiali diversi.

È inoltre possibile seguire questa fase di guadagno variabile con un circuito di integrazione della carica in modo da poter ottenere la sensibilità del segnale di regolazione fine regolando il periodo di "esposizione".


0

Se hai abbastanza potenza di calcolo per la frequenza di campionamento di cui hai bisogno, considera il filtro digitale. Un filtro Savitzky-Golay , f / ex.

  • Puoi modificare gli algoritmi più facilmente di quanto puoi cambiare parti;
  • Spingendo parte del filtro sul software, è possibile probabilmente utilizzare una parte di specifica inferiore rispetto a se la parte stessa dovesse essere più tollerante al rumore o fare tutto il filtro;
  • Imparerai un po 'di più sui tuoi input e su ciò di cui hai bisogno e potrai fare una scelta delle parti meglio informata, se in realtà hai bisogno di una parte di specifica superiore.
  • Il software e le competenze vengono prontamente trasferiti ad altre tue applicazioni!

tutto il filtraggio verrà eseguito su un PC in un ambiente di elaborazione del segnale in tempo reale.
terrazza

0

Perché non alzare fino a 11 e usare semplicemente TI ADS1262 . È un ADC a 32 bit, con 11 ingressi e un PGA!

ADS1262

Con 32 bit, puoi praticamente campionare qualsiasi cosa. E non è nemmeno così costoso. Inoltre, se stai realizzando solo uno di questi, ottieni un campione gratuito .


Un'altra opzione è quella di utilizzare un PSoC. Si tratta di microcontrollori contenenti blocchi analogici e digitali riconfigurabili, che è possibile utilizzare per creare tutti i tipi di funzioni. Puoi sceglierne uno con un ADC a 16 bit, un PGA, un DAC e un filtro digitale, per creare il tuo auto-range, auto-trimming, over-sampling, filtro digitale, ADC!

PSoC38xx

Programmare queste cose è un gioco da ragazzi, mentre si disegna semplicemente lo schema desiderato, scegliendo le funzioni predefinite da un elenco. Quindi scrivi un codice C e sei via.

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.