Utilizzare un AFE per sensori a basso consumo per implementare un sistema di rilevamento chimico o biologico ad alta precisione
Contributo di Editori nordamericani di DigiKey
2019-08-29
Di fronte alla crescente domanda di sensori biologici o elettrochimici più precisi, gli sviluppatori hanno trovato poche soluzioni efficaci per la catena di segnali in grado di fornire sia la precisione che la flessibilità per supportare esigenze diverse. La necessità di fornire queste caratteristiche in forma compatta e con bassi consumi complica ulteriormente le cose e compromette i tempi di progettazione.
Senza acquisizione e condizionamento accurato dei segnali dei sensori, la misurazione di sorgenti di segnali bassi e disturbati in applicazioni di rilevamento biologico e chimico può risultare inquinata da errori significativi. In applicazioni biologiche come il monitoraggio dei segni vitali umani o in applicazioni chimiche come il rilevamento di gas tossici, falsi positivi o falsi negativi dovuti a errori di misurazione possono avere conseguenze disastrose.
Questo articolo mostrerà che un front-end analogico (AFE) di precisione di Analog Devices costituisce una soluzione semplice ed efficace grazie al suo supporto per un'ampia gamma di applicazioni di rilevamento a 2, 3 e 4 fili. È sufficiente programmarne la configurazione e le capacità operative per poter utilizzare AD5940 al fine di implementare rapidamente progetti a bassissimo consumo in grado di soddisfare le diverse esigenze di rilevamento biologico o elettrochimico accurato.
Applicazioni per sistemi di rilevamento biologico e chimico
La misurazione delle variazioni di impedenza, tensione o corrente che attraversano il corpo umano o che provengono da una sorgente elettrochimica si è rivelata una capacità importante per molte applicazioni. La possibilità di identificare gli indicatori di stress attraverso la misurazione dell'attività elettrodermica (EDA), precedentemente chiamata risposta galvanica della pelle (GSR), fornisce agli operatori sanitari un importante indizio sugli stati psicofisiologici di un individuo. Se non trattati, lo stress cronico e l'ansia possono portare a problemi cardiaci e ad altre gravi patologie fisiologiche.
Anche altri tipi di misurazione, come l'analisi della bioimpedenza (BIA), stanno trovando una più ampia applicazione nei prodotti consumer per la salute e il fitness, nonché nelle analisi mediche. Utilizzata da anni nei dispositivi di misurazione della composizione corporea, la BIA sta riscuotendo il crescente interesse del settore medico come tecnica non invasiva per la misurazione della pressione sanguigna. Tramite un metodo correlato che misura le piccole variazioni di corrente nelle sorgenti elettrochimiche, gli specialisti dei dispositivi medicali si servono di queste misurazioni per realizzare glucometri e altri dispositivi più efficaci. Dal canto loro, gli ingegneri industriali possono utilizzare questi stessi metodi di misurazione elettrochimica in applicazioni come i rilevatori di gas tossici e gli apparecchi di test della qualità dell'acqua.
Queste e altre tecniche di misurazione hanno caratteristiche comuni, come l'uso di elettrodi posizionati sulla pelle o all'interno di un campione di liquido. I dettagli della loro implementazione sono però abbastanza diversi da costituire un ostacolo per l'individuazione di una singola soluzione in grado di coprire l'intero spettro dei requisiti.
La misurazione EDA, ad esempio, richiede una sorgente di eccitazione a bassa frequenza, solitamente non superiore a 200 (Hertz) Hz, progettata per limitare la penetrazione del segnale di eccitazione negli strati più profondi del tessuto umano. La tensione della sorgente attraverso un lembo di pelle tra una coppia di elettrodi, misurata in genere tramite un circuito a due fili, induce una piccola corrente che fluttua in base alle variazioni della conducibilità epidermica.
Una misurazione BIA, invece, richiede solitamente un circuito a quattro fili che combina l'eccitazione a bassa frequenza con quella ad alta frequenza (tipicamente 50 kilohertz (kHz)) per raggiungere gli strati tissutali profondi.
Le misurazioni elettrochimiche richiedono generalmente un'altra configurazione ancora: combinano un elettrodo di lavoro, interessato da una qualche reazione chimica, con un elettrodo di riferimento utilizzato per mantenere costante il potenziale e un controelettrodo che completa il circuito di corrente.
Nel corso degli anni sono emerse varie soluzioni per questi tipi differenti di misurazioni, ma sono poche le alternative efficienti in grado di supportare le diverse esigenze di queste tecniche. Utilizzando l'AFE AD5940BCBZ-RL7 di Analog Devices, gli sviluppatori possono implementare più facilmente sistemi di rilevamento biologico ed elettrochimico capaci di soddisfare contemporaneamente la domanda di alta precisione, dimensioni ridotte e basso consumo energetico.
AFE integrato
AD5940 è un AFE multifunzione a basso consumo configurabile tramite codice per supportare un'ampia gamma di applicazioni che richiedono misurazioni con sensori a 2, 3 o 4 fili. Combinando AD5940 con elettrodi adeguati, è possibile sviluppare rapidamente dispositivi di alta precisione in grado di soddisfare le diverse esigenze di misurazione delle applicazioni per i settori sanitario, medicale e industriale.
Oltre a configurabilità e precisione, AD5940 vanta anche consumi inferiori a 80 microampere (µA) a una velocità dei dati in uscita di 4 Hertz (Hz). Questo consente agli sviluppatori di inserire le sue capacità di misurazione in prodotti emergenti a bassissimo consumo, come gli indossabili e altri dispositivi alimentati a batteria. AD5940 semplifica la progettazione integrando anche una serie completa di sottosistemi necessari per misurazioni di tensione, corrente e impedenza di alta precisione (Figura 1).
Figura 1: AD5940 di Analog Devices combina una serie completa di sottosistemi necessari per generare sorgenti di eccitazione e misurare corrente, tensione e impedenza. (Immagine per gentile concessione di Analog Devices)
L'architettura funzionale di AD5940 comprende tre sottosistemi primari per l'uscita di eccitazione, la misurazione del segnale di ingresso e il controllo.
Come sorgente di eccitazione, AD5940 fornisce due anelli di eccitazione separati ad alta precisione. Per applicazioni come la BIA che richiedono eccitazione ad alta frequenza fino a 200 kHz, gli sviluppatori possono utilizzare un anello ad ampia larghezza di banda in grado di produrre un segnale di eccitazione alla frequenza e con la forma d'onda desiderate. All'interno di questo anello, un generatore di forme d'onda aziona un convertitore digitale/analogico (DAC) a 12 bit ad alta velocità, la cui uscita filtrata passa a sua volta attraverso un amplificatore a guadagno programmabile (PGA) che pilota l'amplificatore di uscita di eccitazione, combinando il segnale di eccitazione in c.a. con la tensione di polarizzazione in c.c. richiesta dal sensore (Figura 2).
Figura 2: Per le esigenze di eccitazione ad alta frequenza, gli sviluppatori possono utilizzare la catena di segnali ad alta velocità di AD5940 di Analog Devices per generare forme d'onda con forme e frequenze diverse fino a 200 kHz. (Immagine per gentile concessione di Analog Devices)
Per applicazioni come misurazioni EDA o elettrochimiche che richiedono un'eccitazione a bassa frequenza da c.c. fino a 200 Hz, gli sviluppatori possono utilizzare un anello di eccitazione a bassa larghezza di banda. In questo anello, un DAC a 12 bit a doppia uscita e a basso consumo pilota l'ingresso non invertente di un amplificatore potenziostato (PA) a basso rumore, collegato in genere al controelettrodo (CE) in una configurazione del sensore a 3 fili (Figura 3).
Per questa configurazione, l'anello di misurazione è completato dall'elettrodo di riferimento (RE) che pilota l'ingresso invertente del PA, mentre l'elettrodo di rilevamento (SE) pilota l'ingresso invertente di un amplificatore in transimpedenza (TIA) a basso consumo, il cui ingresso non invertente è pilotato dall'altro canale di uscita del DAC a doppia uscita.
Figura 3: Per le configurazioni di sensori a 3 fili che richiedono un'eccitazione a bassa frequenza, l'anello a bassa larghezza di banda di AD5940 di Analog Devices include un PA la cui uscita si collega al CE e il cui ingresso si collega al RE, mentre un amplificatore in transimpedenza a basso consumo (LPTIA) riceve l'ingresso dal SE. (Immagine per gentile concessione di Analog Devices)
Come l'anello a bassa larghezza di banda, quello ad alta larghezza di banda completa la sua catena di segnali di eccitazione ad alta frequenza con un TIA ad alta velocità per convertire in tensione la corrente di ingresso del SE. Entrambi gli anelli pilotano a loro volta le rispettive uscite al multiplexer analogico integrato di AD5940 che serve il sottosistema di misurazione del segnale di ingresso.
Il cuore del sottosistema di misurazione del segnale è costituito da una catena di segnali analogici ad alte prestazioni. Questa catena combina uno stadio di condizionamento del segnale che comprende un buffer, un PGA e un filtro di 2° ordine che alimenta un convertitore analogico/digitale (ADC) a 16 bit con registro ad approssimazioni successive (SAR) (Figura 4).
Figura 4: All'interno del sottosistema di misurazione del segnale di AD5940, un multiplexer analogico consente agli sviluppatori di pilotare sorgenti di tensione diverse attraverso uno stadio di condizionamento del segnale per la conversione da parte di un ADC a 16 bit ad alte prestazioni. (Immagine per gentile concessione di Analog Devices)
Utilizzando il moltiplicatore di ingresso analogico, gli sviluppatori possono alimentare la catena di segnali dell'ADC con diverse sorgenti di segnale, tra cui il sensore di temperatura interna, le tensioni di alimentazione e di riferimento e altre sorgenti esterne. Per un'applicazione tipica, le sorgenti primarie dei segnali per la raccolta dati dei sensori rimarranno le uscite del TIA a bassa potenza e del TIA ad alta velocità, rispettivamente dagli anelli a bassa e ad alta larghezza di banda.
Dopo la conversione, blocchi funzionali separati forniscono un'ulteriore post-elaborazione che comprende il filtraggio digitale e il calcolo automatico del valore medio, della media e della varianza da un set di campioni. Oltre a queste funzioni di base, l'hardware di post-elaborazione di AD5940 include un'unità DFT (trasformata discreta di Fourier). Grazie a questa capacità DFT, gli sviluppatori possono configurare AD5940 per il calcolo automatico dei valori di grandezza e di fase necessari per le misurazioni di impedenza.
Il terzo sottosistema principale controlla il funzionamento del dispositivo, compresa la generazione di sorgenti specifiche di eccitazione, la conversione di diverse sorgenti di tensione e l'esecuzione di funzioni di post-elaborazione. Alla base di questo sottosistema di controllo, un sequenziatore programmabile consente agli sviluppatori di generare eccitazione ed eseguire misurazioni dei sensori senza chiamare in causa il microprocessore o il microcontroller host.
Dopo aver usato il processore host per caricare una sequenza di comandi in AD5940, gli sviluppatori inviano semplicemente un comando per avviare il sequenziatore AD5940. Quindi, mettono subito il processore host in uno stato di sospensione a basso consumo utilizzando un'istruzione Wait for Interrupt (WFI) o un altro metodo. Da quel momento, il sequenziatore assume il controllo di AD5940, eseguendo in modo indipendente una serie di misurazioni e mettendo anche il dispositivo in modalità a basso consumo tra una misurazione e l'altra (Figura 5).
Figura 5: Gli sviluppatori possono programmare AD5940 affinché operi in modo indipendente anche dopo un reset all'accensione caricando i valori durante un processo di avvio, inizializzando il dispositivo, caricando una sequenza di comandi e infine eseguendo il sequenziatore. (Immagine per gentile concessione di Analog Devices)
Durante le operazioni autonome controllate dal sequenziatore, AD5940 legge i comandi da un buffer FIFO (first-in, first-out) e scrive i dati risultanti in un buffer di dati FIFO. I buffer FIFO di comandi e dati condividono lo stesso blocco di 6 kilobyte (kB) assegnati dalla memoria statica ad accesso casuale (SRAM) integrata in AD5940, ma dal punto di vista operativo rimangono separati. Mentre il buffer FIFO dei comandi si svuota o quello dei dati si riempie, AD5940 può essere programmato per generare un interrupt al processore host per caricare altre sequenze o scaricare i dati in base alle necessità.
Progettazione del sistema
AD5940 semplifica lo sviluppo, sia dal punto di vista hardware che da quello software.
Dato che integra completamente i sottosistemi hardware richiesti, AD5940 consente agli sviluppatori di implementare progetti complessi come gli anelli di misurazione BIA a 4 fili con un set minimo di componenti esterni. Gli sviluppatori possono configurare l'anello a bassa larghezza di banda di AD5940 per gestire le misurazioni a bassa frequenza richieste utilizzando due delle porte di ingresso analogico (AIN) del dispositivo, AIN2 e AIN3 (Figura 6). Allo stesso tempo, possono utilizzare le sue porte CE0 e AIN1 per implementare l'eccitazione e la misurazione ad alta frequenza anch'esse richieste per le applicazioni BIA.
Figura 6: Utilizzando AD5940 di Analog Devices, agli sviluppatori servono solo pochi componenti esterni per implementare le configurazioni a quattro fili con eccitazione sia a bassa che ad alta frequenza richieste nelle applicazioni di analisi dell'impedenza corporea. (Immagine per gentile concessione di Analog Devices)
Una serie di schede di valutazione di Analog Devices consente agli sviluppatori di saltare questa fase di progettazione dell'interfaccia hardware minima, accelerando così lo sviluppo di un progetto. La scheda base del kit di valutazione EVAL-ADICUP3029 di Analog Devices, progettata con il fattore di forma Arduino UNO, fornisce una piattaforma host basata sul microcontroller ADUCM3029 di Analog Devices. Collegando lo schermo bioelettrico di AD5940, gli sviluppatori possono iniziare da subito a utilizzare AD5940 per eseguire misurazioni biologiche come la BIA. In alternativa, possono collegare lo schermo elettrochimico di AD5940 e aggiungere sensori esterni come quelli del gas per eseguire analisi di gas tossici sulla base delle misurazioni elettrochimiche di AD5940.
Possono inoltre utilizzare altrettanto rapidamente le risorse disponibili per valutare le diverse applicazioni software basate su AD5940. Oltre alla libreria del firmware open-source di AD5490 in linguaggio C, Analog Devices mette a disposizione un repository open-source che contiene una serie di esempi di applicazioni in linguaggio C, tra cui un'applicazione di esempio di analisi dell'impedenza corporea (BIA).
Come mostrato nel Listato 1, la routine principale, AD5940_Main(), nel modulo BIA richiama una serie di funzioni di inizializzazione:
AD5940PlatformCfg()è una funzione della libreria del firmware di AD5490 che configura i sottosistemi hardware di AD5940, compresi FIFO, clock e GPIO.AD5940BIAStructInit()è una funzione dell'applicazione BIA che istanzia una struttura con valori che gli sviluppatori possono modificare per cambiare facilmente i parametri dell'applicazione, ad esempio la velocità dei dati in uscita del campione (BiaODR) in hertz (Hz) e il numero di campioni (NumOfData).AppBIAInit()è una funzione dell'applicazione BIA che resetta i parametri, esegue la calibrazione e inizializza il sequenziatore con una chiamata a un'altra routine dell'applicazione BIA,AppBIASeqCfgGen().
Copy
/* !!Change the application parameters here if you want to change it to none-default value */
void AD5940BIAStructInit(void)
{
AppBIACfg_Type *pBIACfg;
AppBIAGetCfg(&pBIACfg);
pBIACfg->SeqStartAddr = 0;
pBIACfg->MaxSeqLen = 512; /** @todo add checker in function */
pBIACfg->RcalVal = 10000.0;
pBIACfg->DftNum = DFTNUM_8192;
pBIACfg->NumOfData = -1; /* Never stop until you stop it mannually by AppBIACtrl() function */
pBIACfg->BiaODR = 20; /* ODR(Sample Rate) 20Hz */
pBIACfg->FifoThresh = 4; /* 4 */
pBIACfg->ADCSinc3Osr = ADCSINC3OSR_2;
}
void AD5940_Main(void)
{
static uint32_t IntCount;
static uint32_t count;
uint32_t temp;
AD5940PlatformCfg();
AD5940BIAStructInit(); /* Configure your parameters in this function */
AppBIAInit(AppBuff, APPBUFF_SIZE); /* Initialize BIA application. Provide a buffer, which is used to store sequencer commands */
AppBIACtrl(BIACTRL_START, 0); /* Control BIA measurment to start. Second parameter has no meaning with this command. */
while(1)
{
/* Check if interrupt flag which will be set when interrupt occured. */
if(AD5940_GetMCUIntFlag())
{
IntCount++;
AD5940_ClrMCUIntFlag(); /* Clear this flag */
temp = APPBUFF_SIZE;
AppBIAISR(AppBuff, &temp); /* Deal with it and provide a buffer to store data we got */
BIAShowResult(AppBuff, temp); /* Show the results to UART */
if(IntCount == 240)
{
IntCount = 0;
//AppBIACtrl(BIACTRL_SHUTDOWN, 0);
}
}
count++;
if(count > 1000000)
{
count = 0;
//AppBIAInit(0, 0); /* Re-initialize BIA application. Because sequences are ready, no need to provide a buffer, which is used to store sequencer commands */
//AppBIACtrl(BIACTRL_START, 0); /* Control BIA measurment to start. Second parameter has no meaning with this command. */
}
}
}
Listato 1: Nell'applicazione di esempio BIA (analisi dell'impedenza corporea) di Analog Devices, la routine principale mostra lo schema di progettazione di base per inizializzare AD5490, impostare parametri personalizzati, definire una sequenza di comandi e infine raccogliere i risultati delle misurazioni in un anello infinito che attende un interrupt da AD5490. (Codice per gentile concessione di Analog Devices)
Quando viene chiamato dalla funzione AppBIAInit(), AppBIASeqCfgGen() svolge il grosso del lavoro di configurazione dei sottosistemi AD5940 richiesto per eseguire la sequenza desiderata (in questo caso la misurazione dell'impedenza). Questa routine istanzia una serie di strutture definite nel file di intestazione della libreria del firmware di AD5940, ad5940.h, che imposta le configurazioni e i parametri specifici richiesti per ogni applicazione.
Infine, AD5940_Main() richiama AppBIACtrl() per avviare il processo di misurazione prima di entrare in un anello infinito usato per raccogliere i dati. Man mano che i dati diventano disponibili (condizione indicata da un segnale di interrupt), una chiamata ad AppBIAISR() li preleva dal dispositivo e richiama un'altra routine, AppBIADataProcess(), che elabora i dati grezzi per generare i risultati richiesti dall'applicazione (Listato 2). In un'applicazione di produzione, gli sviluppatori possono usare le estese funzioni di interrupt di AD5940 per creare metodi di raccolta dei dati più efficienti.
Copy
/* Depending on the data type, do appropriate data pre-process before return back to controller */
static AD5940Err AppBIADataProcess(int32_t * const pData, uint32_t *pDataCount)
{
uint32_t DataCount = *pDataCount;
uint32_t ImpResCount = DataCount/4;
fImpPol_Type * const pOut = (fImpPol_Type*)pData;
iImpCar_Type * pSrcData = (iImpCar_Type*)pData;
*pDataCount = 0;
DataCount = (DataCount/4)*4;/* We expect RCAL data together with Rz data. One DFT result has two data in FIFO, real part and imaginary part. */
/* Convert DFT result to int32_t type */
for(uint32_t i=0; i<DataCount; i++)
{
pData[i] &= 0x3ffff; /* @todo option to check ECC */
if(pData[i]&(1<<17)) /* Bit17 is sign bit */
{
pData[i] |= 0xfffc0000; /* Data is 18bit in two's complement, bit17 is the sign bit */
}
}
for(uint32_t i=0; i<ImpResCount; i++)
{
iImpCar_Type *pDftVolt, *pDftCurr;
pDftCurr = pSrcData++;
pDftVolt = pSrcData++;
float VoltMag,VoltPhase;
float CurrMag, CurrPhase;
VoltMag = sqrt((float)pDftVolt->Real*pDftVolt->Real+(float)pDftVolt->Image*pDftVolt->Image);
VoltPhase = atan2(-pDftVolt->Image,pDftVolt->Real);
CurrMag = sqrt((float)pDftCurr->Real*pDftCurr->Real+(float)pDftCurr->Image*pDftCurr->Image);
CurrPhase = atan2(-pDftCurr->Image,pDftCurr->Real);
VoltMag = VoltMag/CurrMag*AppBIACfg.RtiaCurrValue[0];
VoltPhase = VoltPhase - CurrPhase + AppBIACfg.RtiaCurrValue[1];
pOut[i].Magnitude = VoltMag;
pOut[i].Phase = VoltPhase;
}
*pDataCount = ImpResCount;
/* Calculate next frequency point */
if(AppBIACfg.SweepCfg.SweepEn == bTRUE)
{
AppBIACfg.FreqofData = AppBIACfg.SweepCurrFreq;
AppBIACfg.SweepCurrFreq = AppBIACfg.SweepNextFreq;
AD5940_SweepNext(&AppBIACfg.SweepCfg, &AppBIACfg.SweepNextFreq);
AppBIACfg.RtiaCurrValue[0] = AppBIACfg.RtiaCalTable[AppBIACfg.SweepCfg.SweepIndex][0];
AppBIACfg.RtiaCurrValue[1] = AppBIACfg.RtiaCalTable[AppBIACfg.SweepCfg.SweepIndex][1];
}
return AD5940ERR_OK;
}
Listato 2: La routine AppBIADataProcess() inclusa nell'applicazione di esempio BIA (analisi dell'impedenza corporea) di Analog Devices illustra come gli sviluppatori possono utilizzare i dati di misurazione di AD5940 in routine di post-elaborazione personalizzate come questa, che calcola l'ampiezza della tensione e la fase. (Codice per gentile concessione di Analog Devices)
Per una soluzione dotata di più funzioni per dispositivi indossabili per salute e fitness, ad esempio, gli sviluppatori possono combinare le capacità di misurazione dell'impedenza di AD5940 con il cardiofrequenzimetro AD8233 di Analog Devices (vedere "I CI specializzati per cardiofrequenzimetri vincono le sfide di potenza e rumore per applicazioni ECG").
Conclusione
Grazie al suo supporto per un'ampia gamma di applicazioni di rilevamento a 2, 3 e 4 fili, il front-end analogico (AFE) di precisione AD5940 di Analog Devices costituisce una soluzione semplice ed efficace al problema dell'accuratezza e della flessibilità per il rilevamento biologico ed elettrochimico di precisione. Programmando semplicemente le sue capacità di configurazione e operative, gli sviluppatori possono usare AD5940 per implementare rapidamente progetti a bassissimo consumo in grado di soddisfare le esigenze di diverse applicazioni.
Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.




