Utilizarea unui senzor AFE cu consum redus de putere pentru implementarea unui sistem de măsurători chimice sau biologice de înaltă precizie

by donpedro

Fără achiziția și condiționarea precisă a semnalului provenit de la senzor, eforturile de a măsura surse de semnal mic și zgomotoase, asociate aplicațiilor de detecție în domeniul biologic și chimic, pot duce la erori semnificative. În aplicații biologice, cum ar fi monitorizarea semnelor umane vitale sau aplicații chimice, precum detectarea gazelor toxice, semnalele fals-pozitive sau fals-negative datorate erorilor de măsurare pot avea consecințe dezastruoase.

Acest articol vă prezintă modul prin care un circuit de precizie de condiționare a semnalelor analogice (AFE – Analog front-end) de la Analog Devices, destinat unei game largi de aplicații de detecție cu 2, 3 și 4 fire, oferă o soluție simplă și eficientă. Prin simpla programare a configurației și capabilităților sale operaționale, dezvoltatorii pot utiliza circuitul AD5940 pentru a implementa rapid dispozitive cu consum de putere foarte scăzut, capabile să îndeplinească cerințe diverse pentru o măsurare biologică sau electrochimică precisă.

Aplicații pentru sisteme de detecție biologică și chimică

Măsurarea vârfurilor de impedanță, tensiunii sau curentului (precum și variația acestora) din corpul uman sau dintr-o sursă electrochimică a devenit un element cheie pentru multe aplicații. Abilitatea de a identifica semne de stres prin măsurarea activității electrodermice (EDAelectrodermal activity), numită anterior răspuns galvanic al pielii (GSRGalvanic skin response), oferă un indiciu important pentru profesioniștii din domeniul sănătății despre stările psihofiziologice ale unei persoane. Dacă sunt lăsate netratate, stresul și anxietatea cronică pot duce la probleme cardiace și alte patologii fiziologice grave.

Alte tipuri de măsurători, cum ar fi analiza bio-impedanței (BIABioimpedance analysis) se regăsesc cu precădere în aplicații destinate atât produselor de larg consum pentru sănătate și fitness, cât și analizelor de tip medical. Folosită de ani buni în dispozitivele pentru determinarea compoziției corpului uman, analiza BIA stârnește un interes din ce în ce mai mare din partea experților medicali pentru utilizarea sa ca tehnică non-invazivă pentru măsurarea tensiunii arteriale. Folosind o metodă înrudită care măsoară variații mici de curent în surse electrochimice, specialiștii în dispozitive medicale utilizează aceste măsurători pentru a oferi o monitorizare mai eficientă a glicemiei. În mod similar, inginerii din industrie pot utiliza aceeași metodă de măsurare electrochimică în aplicații precum monitorizarea gazelor toxice și testarea calității apei.

Aceste tehnici de măsurare, precum și altele împărtășesc caracteristici comune, cum ar fi utilizarea electrozilor plasați pe piele sau într-un eșantion fluid. Totuși, detaliile de implementare ale acestora sunt suficient de diferite pentru a complica abilitatea dezvoltatorilor de a găsi o soluție aptă să răspundă întregii cerințe.

Măsurarea EDA, de exemplu, necesită o sursă de excitație de frecvență joasă – tipic, nu mai mult de 200 Hz – creată pentru a limita penetrarea semnalului de excitație în straturile mai adânci ale țesutului uman. De obicei, se utilizează un circuit cu două fire, iar tensiunea aplicată pe un plasture de piele între o pereche de electrozi induce un curent slab care variază odată cu modificările conductivității epidermice.

În schimb, o măsurare BIA necesită de obicei, un circuit cu patru fire care combină excitația de joasă frecvență cu excitația de înaltă frecvență (de obicei 50 kHz) pentru a ajunge la straturile de țesut adânc.

Măsurările electrochimice necesită încă o configurație. Aceste măsurători combină un electrod de lucru care este implicat într-o reacție chimică de interes, cu un electrod de referință utilizat pentru a menține un potențial constant și un contra-electrod care completează bucla de reglare în curent.

De-a lungul anilor au apărut diverse soluții pentru aceste tipuri de măsurători, însă doar câteva oferă capabilitatea de a susține varietatea de cerințe ale acestor tehnici. Utilizând dispozitivul AD5940BCBZ-RL7 AFE de la Analog Devices, dezvoltatorii pot implementa mai ușor sisteme biologice și electrochimice de detecție și măsurare capabile să combine cererea de precizie înaltă cu dimensiuni de gabarit mici și cu un consum redus de putere.

Figura 1: Analog Devices AD5940 combină un set complet de subsisteme necesare pentru a genera semnale de excitație și pentru a măsura curentul, tensiunea și impedanța. (Sursa imaginii: Analog Devices)

Circuitul integrat AFE

AD5940 este un AFE multifuncțional cu consum redus de putere, ce poate fi configurat prin programare pentru a suporta o mare varietate de aplicații care necesită măsurători cu senzori cu 2, 3 sau 4 fire. Prin combinarea unui circuit AD5940 cu un complement adecvat de electrozi, rezultă dispozitive de înaltă precizie ce pot fi dezvoltate rapid și care sunt capabile să răspundă diverselor cerințe de măsurare existente în aplicațiile din domeniul medical și industrial.

Pe lângă configurabilitatea și acuratețea sa, AD5940 consumă mai puțin de 80µA la o viteză de transfer a datelor de 4 Hz, permițând dezvoltatorilor să integreze capabilitățile sale de măsurare în produse care necesită un consum ultra-redus de putere, precum sunt dispozitivele purtabile și alte dispozitive alimentate de la baterii. În același timp, AD5940 simplifică proiectarea prin integrarea unor subsisteme complementare necesare pentru măsurarea de înaltă precizie a tensiunii, curentului și impedanței (Figura 1).

Arhitectura funcțională a circuitului AD5940 cuprinde trei subsisteme primare: pentru ieșirea de excitație, pentru măsurarea semnalului de intrare, precum și pentru control.

Figura 2: Pentru cerințe de excitație de înaltă frecvență, dezvoltatorii pot utiliza lanțul de semnal de mare viteză AD5940 de la Analog Devices pentru a genera forme de undă cu configurații diferite și frecvențe de până la 200 kHz. (Sursa imaginii: Analog Devices)

Figura 3: Pentru configurațiile de senzori cu 3 fire care necesită excitație de frecvență joasă, bucla cu lățime mică de bandă a AD5940 de la Analog Devices include un PA a cărui ieșire se conectează la CE și a cărei intrare se conectează la RE, în timp ce un amplificator trans-impedanță cu consum redus de putere (LPTIA) primește un semnal de intrare de la SE. (Sursa imaginii: Analog Devices)

Ca sursă de semnale de excitație, AD5940 oferă două bucle separate de excitație de înaltă precizie. Pentru aplicații precum BIA, care necesită excitație de înaltă frecvență de până la 200 kHz, dezvoltatorii pot utiliza o buclă cu lățime mare de bandă, capabilă să producă un semnal de excitație la frecvența și forma de undă dorită. În această buclă, un generator de formă de undă comandă un convertor digital-analogic (DAC) pe 12-biți, de mare viteză, a cărui ieșire, filtrată la rândul său, trece printr-un amplificator cu câștig programabil (PGA – Programmable Gain Amplifier). Acesta generează semnalul de excitație prin combinarea semnalului de excitație AC cu tensiunea de polarizare DC necesară senzorului (Figura 2).

Pentru aplicații precum EDA sau măsurători electrochimice care necesită excitație de frecvență joasă de la DC, de până la 200 Hz, dezvoltatorii pot utiliza o buclă de excitație cu lățime de bandă mică. În această buclă, un DAC pe 12-biți cu consum de putere redus, cu două ieșiri, controlează intrarea ne-inversoare a unui amplificator cu potențiostat (PA) cu zgomot redus, conectat, tipic, la electrodul numărător (CE – Contor Electrode) într-o configurație de senzor cu 3 fire (Figura 3).

În această configurație, bucla de măsurare se completează cu electrodul de referință (RE), care comandă intrarea inversoare a PA-ului, în timp ce electrodul de măsurare (SE) comandă intrarea inversoare a unui amplificator trans-impedanță cu consum energetic redus (TIA). Intrarea ne-inversoare a acestuia din urmă este controlată de către celălalt canal de ieșire al DAC-ului cu dublă ieșire.

Ca și bucla cu lățime mică de bandă, bucla cu lățime mare de bandă își completează lanțul de semnal de excitație de înaltă frecvență cu un TIA de mare viteză pentru a converti curentul de intrare al SE în tensiune. Ambele bucle conduc ieșirile lor la multiplexorul analogic integrat al AD5940, care constituie subsistemul de măsurare al semnalului de intrare.

Figura 4: În cadrul subsistemului de ‘măsurare semnal’ al circuitului AD5940, un multiplexor analogic permite dezvoltatorilor să comande surse diferite de tensiune printr-un etaj de condiționare a semnalului și un ADC pe 16-biți de înaltă performanță. (Sursa imaginii: Analog Devices)

În inima subsistemului de măsurare a semnalului, un lanț de semnal analogic de înaltă performanță combină un etaj de condiționare a semnalului (care include un registru tampon), un PGA și un filtru de ordinul 2 care alimentează un registru de aproximări succesive (SAR) al unui convertor analog-digital (ADC) pe 16-biți (Figura 4).

Folosind intrarea multiplicatorului analogic, dezvoltatorii pot alimenta lanțul de semnal ADC cu diferite surse de semnal, inclusiv senzorul de temperatură intern, tensiunile de alimentare și de referință și alte surse externe. Pentru o aplicație obișnuită, sursele de semnal primare pentru colectarea datelor senzorilor vor rămâne ieșirile LP-TIA (Low-Power TIA) și TIA de mare viteză de la buclele cu lățime mică de bandă și, respectiv, cu lățime mare de bandă.

După conversie, post procesarea este asigurată de blocuri funcționale separate, inclusiv filtrarea digitală și calcularea automată a mediei și variației de la un set de probe. Dincolo de aceste funcții de bază, hardware-ul post-procesare al AD5940 include o unitate pentru Transformata Fourier Discretă (DFT). Cu această capabilitate DFT, dezvoltatorii pot configura circuitul AD5940 pentru a calcula automat valorile de magnitudine și fază, necesare în măsurători de impedanță.

Al treilea subsistem major controlează funcționarea dispozitivului, inclusiv generarea de surse de excitație specifice, conversia diferitelor surse de tensiune și efectuarea funcțiilor de post-procesare. La baza acestui subsistem de control, un secvențiator programabil le permite dezvoltatorilor să genereze un semnal de excitație și să efectueze măsurători ale senzorului fără să implice microcontrolerul sau microprocesorul gazdă.

Figura 5: Dezvoltatorii pot programa AD5940 să opereze independent chiar și după o pornire/resetare prin încărcarea valorilor în timpul procesului de pornire, inițializarea dispozitivului, încărcarea unei secvențe de comenzi și, în final, executarea secvențiatorului. (Sursa imaginii: Analog Devices)

După ce au folosit procesorul gazdă pentru a încărca o secvență de comenzi în AD5940, dezvoltatorii pur și simplu emit o comandă pentru a porni secvențiatorul AD5940 și apoi comută imediat procesorul principal într-o stare de repaus, cu un consum de putere redus, folosind o instrucțiune WFI (Wait for Interrupt) sau alte metode. Din acel moment, secvențiatorul preia controlul lui AD5940, efectuând independent o serie de măsurători și chiar plasând dispozitivul într-un mod de putere redusă între măsurători (Figura 5).

În timpul operațiunilor autonome controlate de secvențiator, AD5940 citește comenzi dintr-un registru tampon de comandă FIFO (first-in, first-out) și scrie datele rezultate într-un registru tampon de date FIFO. Atât regiștrii tampon FIFO de comandă, cât și cei de date partajează același bloc de 6 kB alocat din memoria cu acces aleatoriu (SRAM) integrată a circuitului AD5940, dar cele două buffere FIFO rămân separate operațional. Pe măsură ce comenzile din registrul tampon FIFO sunt executate sau se umple registrul tampon de date FIFO, AD5940 poate fi programat pentru a genera o întrerupere la procesorul gazdă pentru a încărca secvențe suplimentare sau, după caz, pentru a descărca date.

Proiectarea sistemului

Din perspectiva hardware și software, dezvoltarea cu AD5940 este simplă.

Figura 6: Utilizând circuitul AD5940 de la Analog Devices, dezvoltatorii au nevoie de doar câteva componente externe pentru a implementa configurații cu patru fire, atât cu excitație de frecvență joasă, cât și de frecvență înaltă, necesare în aplicațiile de analiză a impedanței corporale. (Sursa imaginii: Analog Devices)

Deoarece integrează cu succes subsistemele hardware necesare, AD5940 le permite dezvoltatorilor să implementeze modele complexe, precum bucle de măsurare BIA cu 4 fire, cu doar un minim necesar de componente externe. Dezvoltatorii pot configura bucla AD5940 cu lățime mică de bandă pentru a gestiona măsurătorile de frecvență joasă necesare, folosind două dintre porturile de intrare analogică (AIN) ale dispozitivului, AIN2 și AIN3 (figura 6). În același timp, pot utiliza porturile CE0 și AIN1 ale dispozitivului pentru a implementa excitația și măsurarea la frecvență înaltă, de asemenea, necesare în aplicațiile BIA.

Analog Devices vine în ajutorul dezvoltatorilor, care, pentru a trece peste acest pas minim de proiectare a interfeței hardware, pentru o dezvoltare mai rapidă a proiectelor, pot apela la un set de plăci de evaluare. Proiectată cu același factor de formă ca Arduino UNO, placa de bază a kitului de evaluare de la Analog Devices, EVAL-ADICUP3029 oferă o platformă gazdă bazată pe microcontrolerul ADUCM3029 de la Analog Devices. Prin atașarea extensiei de placă pentru aplicații bio-electrice, pentru AD5940, dezvoltatorii pot începe imediat utilizarea acestuia pentru a efectua măsurători biologice, precum BIA. În mod alternativ, dezvoltatorii pot să atașeze extensia de placă pentru aplicații electrochimice și să adauge senzori externi, cum ar fi senzori de gaz, pentru a efectua analize de gaze toxice bazate pe măsurătorile electrochimice efectuate de AD5940.

Dezvoltatorii pot utiliza la fel de rapid resursele disponibile pentru a evalua diferite aplicații software bazate pe AD5940. Împreună cu biblioteca gratuită pentru AD5490 firmware, în limbaj C, Analog Devices oferă un portofoliu gratuit ce conține o serie de exemple de aplicații, inclusiv o aplicație de analiză a impedanței corporale.

După cum se arată în programul listat mai jos (Program 1), rutina principală, AD5940_Main (), din modulul BIA apelează o serie de funcții de inițializare:

  • AD5940PlatformCfg () este o funcție din biblioteca AD5490 firmware care stabilește subsistemele hardware AD5940, inclusiv FIFO, ceas-ul și GPIO.
  • AD5940BIAStructInit () este o funcție pentru aplicația BIA care apelează o structură cu valori pe care dezvoltatorii le pot modifica pentru a schimba cu ușurință parametrii aplicației, cum ar fi frecvența de eșantionare a datelor de ieșire (BiaODR) în Hertz (Hz) și numărul de eșantioane (NumOfData).
  • AppBIAInit () este o funcție pentru aplicația BIA care resetează parametrii, efectuează calibrarea și inițializează secvențiatorul cu un apel către o altă rutină din aplicația BIA, AppBIASeqCfgGen ().

Copiere program

/* !! Modificați parametrii aplicației aici dacă doriți să o schimbați la o valoare implicită */
void AD5940BIAStructInit(void)
{
AppBIACfg_Type *pBIACfg;

AppBIAGetCfg(&pBIACfg);

pBIACfg->SeqStartAddr = 0;
pBIACfg->MaxSeqLen = 512; /** @todo adaugă verificator în funcție */
pBIACfg->RcalVal = 10000.0;
pBIACfg->DftNum = DFTNUM_8192;
pBIACfg->NumOfData = -1;      /* Nu se oprește decât manual de către funcția AppBIACtrl() */
pBIACfg->BiaODR = 20;         /* ODR(frecvența de eșantionare) 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(); /* Configurarea parametrilor doriți în această funcție */

AppBIAInit(AppBuff, APPBUFF_SIZE);    /* Inițializarea aplicației BIA. Furnizează un registru tampon, care este utilizat pentru a stoca comenzile secvențiatorului */
AppBIACtrl(BIACTRL_START, 0);         /* Comandă măsurarea BIA pentru a începe. Al doilea parametru nu are nicio semnificație cu această comandă.
while(1)

{

/* Verifică dacă indicatorul de întrerupere va fi activat atunci când a avut loc întreruperea. */
if(AD5940_GetMCUIntFlag())

{

IntCount++;
AD5940_ClrMCUIntFlag(); /* eliberează indicatorul de intrerupere */
temp = APPBUFF_SIZE;
AppBIAISR(AppBuff, &temp); /* Atribuie un registru tampon pentru a stoca datele obținute */
BIAShowResult(AppBuff, temp); /* Afișează rezultatele pe UART */

if(IntCount == 240)

{

IntCount = 0;
//AppBIACtrl(BIACTRL_SHUTDOWN, 0);

}

}

count++;
if(count > 1000000)

{

count = 0;
//AppBIAInit(0, 0);    /* Reinițializează aplicația BIA. Deoarece secvențele sunt gata, nu este necesară furnizarea unui registru tampon, care este utilizat pentru a stoca comenzile secvențiatorului */
//AppBIACtrl(BIACTRL_START, 0);          /* Comandă măsurarea BIA pentru a începe. Al doilea parametru nu are importanța în această comandă. */

}

}

}

Program 1: În aplicația de analiză a impedanței corporale (BIA) de la Analog Devices, rutina principală demonstrează modelul de bază de proiectare pentru inițializarea AD5490, configurarea parametrilor personalizați, definirea unei secvențe de comandă și, în final, colectarea rezultatelor măsurătorilor într-o buclă infinită, care așteaptă o întrerupere de la AD5490. (Sursa programului: Analog Devices)

Când este apelată de funcția AppBIAInit (), AppBIASeqCfgGen () preia sarcinile complexe de configurare a subsistemelor AD5940, necesare pentru a efectua secvența dorită (măsurarea impedanței în acest caz). Această rutină inițiază o serie de structuri definite în fișierul antet al bibliotecii firmware-ului AD5940, ad5940.h, care stabilește configurațiile specifice și parametrii necesari pentru fiecare aplicație.

În cele din urmă, AD5940_Main () apelează AppBIACtrl () pentru a începe procesul de măsurare înainte de intra într-o buclă nesfârșită folosită pentru colectarea datelor. Pe măsură ce datele devin disponibile (așa cum este indicat de un semnal de întrerupere), un apel către AppBIAISR () descarcă datele, dacă sunt disponibile, de pe dispozitiv și apelează o altă rutină, AppBIADataProcess (), care procesează datele brute pentru a genera rezultatele cerute de aplicație (Program 2). Într-o aplicație de producție, dezvoltatorii pot utiliza funcțiile extinse de întrerupere ale AD5940 pentru a crea metode de colectare a datelor mai eficiente.

Copiere program

/* În funcție de tipul de date, efectuați pre-procesarea corespunzătoare a datelor înainte de a fi primite la controler */
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;/* Așteptăm datele RCAL împreună cu datele Rz. Un rezultat DFT are două date în partea FIFO, partea reală și partea imaginară.  */

/* Convert DFT result to int32_t type */
for(uint32_t i=0; i<DataCount; i++)

{

pData[i] &= 0x3ffff; /* opțiune @todo pentru verificare ECC */
if(pData[i]&(1<<17)) /* Bit17 este un bit de semn */

{

pData[i] |= 0xfffc0000; /* Datele sunt pe 18 biți în complement față de doi, Bit17 este un bit de semn */

}

}

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;
/* Calculează punctul de frecvență următor */
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;

}

Program 2: Inclusă în exemplul de aplicație de analiză a impedanței corporale (BIA) de la Analog Devices, rutina AppBIADataProcess () ilustrează modul în care dezvoltatorii pot utiliza datele de măsurare de la AD5940 în rutine post-procesare personalizate, cum ar fi aceasta, care calculează magnitudinea tensiunii și faza. (Sursa programului: Analog Devices)

Pentru o soluție mai elaborată în caracteristici în cazul dispozitivelor purtabile (ca accesorii pentru sănătate și fitness), dezvoltatorii pot combina capabilitățile de măsurare a impedanțelor oferite de AD5940 cu monitorul de frecvență cardiacă AD8233 de la Analog Devices (vezi articolul “Specialty Heart-Rate Monitor ICs Overcome ECG Noise and Power Challenges” – www.digikey.com).

Concluzii

Suportând o gamă largă de aplicații de măsurare cu 2, 3 și 4 fire, AD5940 AFE de la Analog Devices este capabil să ofere o soluție simplă și eficientă în ceea ce privește precizia și flexibilitatea măsurătorilor biologice sau electrochimice. Prin simpla programare a configurației și capabilităților sale operaționale, dezvoltatorii pot utiliza AD5940 pentru a implementa rapid modele cu consum de putere foarte redus, capabile să răspundă nevoilor diverse ale aplicațiilor actuale.

Autor: Rich Miron – Inginer de aplicații

Rich Miron, Inginer de aplicații la Digi-Key Electronics, face parte din grupul de autori care crează articole tehnice (Technical Content Group) din 2007, având res­ponsabilitatea principală de a scrie și edita articole, bloguri și module de instruire pentru cunoașterea produselor.
Înainte de Digi-Key, el a testat și calificat sisteme de control și instrumentare pentru submarine nucleare. Rich deține o diplomă în inginerie electrică și electronică de la Universitatea de Stat din North Dakota din Fargo, ND.

Digi-Key Electronics   |   https://www.digikey.ro

S-ar putea să vă placă și