Bruk en biodeteksjonsmodul for å utvikle kroppsbårne enheter til helse og trening
Bidrag fra DigiKeys nordamerikanske redaktører
2020-10-21
Delvis drevet av større helsebevissthet etter inntreden av COVID-19, driver interessen for kroppsbårne enheter (wearables) med biodeteksjon fram etterspørselen etter mer effektive løsninger som møter brukernes ønske om mer funksjonalitet og høyere nøyaktighet i mindre formater, samt forlenget batterilevetid og lavere kostnad. For utviklere byr dette på et sett med pågående utfordringer når de jobber for å møte trange tidsvinduer og budsjetter for å få ferdige produkter ut på markedet. Å jobbe til deres fordel er fremskritt innen enheter med biodeteksjon, inkludert høyere funksjonsintegrasjon og mer omfattende konstruksjonsløsninger.
Denne artikkelen tar for seg trender innen biosensorer og bærbare materialer, samt utfordringene utviklerne står overfor. Den introduserer deretter en biosensormodul for puls og perifer oksygenmetning (SpO2) fra Maxim Integrated, samt den viser hvordan utviklere kan bruke den til å implementere bærbare utstyr som kan levere nøyaktige pulsmålinger og andre målinger uten å gå på akkord med de stramme kravene til strømforbruk i batteridrevne mobilprodukter.
Konstruksjonskrav til biodeteksjon
Mens hjertefrekvensovervåking er et kjernekrav i et bredt utvalg av kroppsbårne enheter, fortsetter interessen for SpO2-måling å øke. Når SpO2-målingen er brukt stort sett av utøvere som ønsker å optimalisere treningsregimene sine, har den funnet mer utbredt anvendelse, spesielt i egenovervåking for tegn på redusert luftveisfunksjon forbundet med COVID-19-sykdom. For utviklere innebærer levering av egnede løsninger til en helsebevisst befolkning som er vant til kroppsbåren elektronikk betydelige utfordringer med hensyn til kostnader, effekt, formfaktor og vekt.
Mange biosensorer leveres nå med integrerte analoge undersystemer for fronten, slik at utviklere ikke trenger å bygge signalkjedene og etterbehandlingsdelsystemene som kreves for helse- og kondisjonsmålinger, men få av disse avanserte enhetene har den riktige blandingen av funksjoner for kroppsbårne enheter. Som et resultat løser de ikke utfordringene som oppstår når det gjelder å oppfylle brukernes forventninger til bittesmå kroppsbårne enheter med biodeteksjon som er like diskrete som andre typer ledende kroppsbårne enheter, inkludert smartklokker, treningbånd og ekte trådløse ørepropper, blant andre.
Ytterligere utfordringer knyttet til konstruksjonstegrasjon kan oppstå når utviklere må legge til en eller flere muligheteter for biodeteksjon til de populære typene kroppsbårne enheter. Som med alle andre typer mobile, batteridrevne personlige elektroniske produkter, krever forbrukerne implisitt lengre batterilevetid fra selv det minste produktet, og velger vanligvis disse produktene på grunnlag av batterilevetid like mye som på grunn av kostnader og funksjonalitet.
For å oppfylle disse kombinerte kravene kan utviklere benytte seg av seg til Maxim Integrated MAXM86146-biodeteksjonsmodul for å utforme tilpassede enheter og det MAXM86146-baserte MAXM86146EVSYS-evalueringssystemet for rask prototypebestemmelse.
Biodeteksjonsmodulen tilbyr drop-in-løsning
Tilgjengelig i en 38-pols kapsling på 4,5 x 4,1 x 0,88 mm er Maxim Integrated sin biodeteksjonsmodul MAXM86146 en ferdigløsning som er spesielt utviklet for å fremskynde utviklingen batteridrevne kroppsbårne enheter for helse og kondisjon som er mer kompakte. For å oppfylle kravene til både forlenget batterilevetid og biodeteksjon, minimerer modulen strømforbruket, samtidig som den opprettholder raske og nøyaktige målinger av puls og SpO2.
Sammen med to integrerte fotodioder, inkluderer modulen en Maxim Integrated MAX86141 med dobbeltkanals optisk, analog front (analog front-end – AFE), samt en Arm Cortex-M4-basert mikrokontroller, som er en variant av Maxim Integrated MAX32660-Darwin-mikrokontrolleren, som er optimalisert for biodeteksjon (figur 1).
Figur 1: Maxim Integrated MAX86146-biosensormodulen integrerer optisk AFE, mikrokontroller og fotodioder i en kompakt kapsling. (Bildekilde: Maxim Integrated)
Det integrerte MAX86141 forbruker bare 10 mikroampere (μA) ved 25 samplinger per sekund (sps), og gir et omfattende optisk AFE-delsystem designet for å styre de flere lysdiodene (lysdiodene) som brukes til måling av puls og SpO2. Optiske hjertefrekvensmålere bruker rutinemessig fotopletysmografi (PPG), som overvåker endringer i perifert blodvolum knyttet til hver puls i hjertet. For denne målingen bruker disse enhetene vanligvis grønt lys med en bølgelengde på 540 nanometer (nm), som absorberes av blod og resulterer i færre avtrykk, fordi grønt lys trenger mindre dypt inn i vevet enn mange andre bølgelengder. Optiske pulsoksimetre bruker både en rød LED (vanligvis 660 nm) og en infrarød (IR) LED (vanligvis 940 nm) for å måle absorpsjonsforskjellen mellom hemoglobin og deoksyehemoglobin - teknikken som ligger til grunn for optiske SpO2-målemetoder (se Konstruer et rimelig pulsoksymeter ved bruk av standardkomponenter som er «hyllevare» ).
For å utføre disse optiske målingene må utvikleren sikre at innhenting av fotodiodesignaler er synkronisert nøyaktig med lysutgangspulser fra de aktuelle lysdiodene. MAXM86146-modulens integrerte MAX86141 AFE gir separate signalkjeder for LED-styring, samt for innhenting av fotodiodesignal. På utgangssiden inkluderer AFE tre LED-drivere med høy strøm og lav støy, for å overføre pulser til grønne lysdioder for hjertefrekvensmåling, i tillegg til røde og infrarøde lysdioder for SpO2-måling. På inngangssiden leverer AFE to innhentingskanaler for fotodiodesignaler, hver med en dedikert 19-bits analog-til-digital-omformer (ADC). Disse to avlesningskanalene kan fungere separat eller brukes i kombinasjon for å gi et større stråleområde.
De styrer AFE-Led- og fotodiodesignalkjedene. Firmware som kjører på den innebygde mikrokontrolleren justerer AFE-innstillingene for å maksimere signal-til-støy-forholdet (SNR) og minimere strømforbruket. Etter hvert som omgivelseslyset endres, reagerer MAX86141 sine innebygde korreksjonskretsene for omgivelseslys (ALC) på gradvise endringer i lysforholdene. Omgivelseslys kan imidlertid endres raskt i noen situasjoner, for eksempel når brukeren passerer raskt mellom områder med skygge og sterkt sollys, noe som resulterer i ALC-feil. For å ta hensyn til denne vanlige situasjonen inkluderer MAX86141 en stakittgjerdefunksjon som oppdager og erstatter (picket fence detect-and-replace function). Her identifiserer enheten store utflukter i omgivelsesmålinger fra tidligere prøver og erstatter individuelle datasamplinger for eksternt lys med ekstrapolerte verdier som samsvarer med en relativt langsom endring i omgivelsesnivåene.
Ettersom modulens mikrokontroller bruker firmwaren sin til å styre AFE-drift, er de detaljerte operasjonene som kreves for å utføre nøyaktige HR og SpO2-målinger tydelige for utviklere. Ved hjelp av fastvareinnstillinger utfører modulen disse målingene automatisk, og lagrer rådata og beregnede resultater i en FIFO-buffert (først inn, først ut) for tilgang for systemvertsprosessoren gjennom modulens I2C-serielle grensesnitt.
Slik forenkler MAX86146 maskinvarekonstruksjon for kroppsbårne enheter
Med sin omfattende integrerte funksjonalitet krever biodeteksjonsmodulen MAX86146 relativt få tilleggskomponenter for å fullføre en konstruksjon som kan gi nøyaktige pulsmålinger og SpO2 -målinger. For samtidige HR og SpO2-målinger kan MAX86146 integreres med en ekstern analog multiplekser med lav støy, for eksempel Maxim Integrated MAX14689-bryteren som er koblet til diskrete grønne, røde og IR-lysdioder (figur 2).
Figur 2: For å utføre samtidige puls- og SpO2-målinger krever Maxim Integrated biodeteksjonsmodulen MAX86146 få ytterligere komponenter utover egnede lysdioder, en analog multiplekser (MAX14689, til venstre) og et akselerometer for å detektere bevegelse mens målingene utføres. (Bildekilde: Maxim Integrated)
I tillegg er MAXM86146 konstruert for å bruke bevegelsesdata fra et akselerometer med tre akser for å korrigere for brukerens bevegelse under pulsmålinger, samt for å detektere bevegelse under SpO2-målinger som krever at brukeren forblir i ro i den korte varigheten av målingen. Her kan utvikleren enten koble et fastvarestøttet akselerometer direkte til MAXM86146s SPI-porter eller koble et akselerometer for generelle formål til vertsprosessoren.
Vertstilkoblingsalternativet gir større fleksibilitet i enhetsvalg, og krever bare et akselerometer med tre akseler for generelle formål, for eksempel Memsics MC3630, som kan ta 25 samplinger per sekund (sps). Utviklere må likevel sørge for at akselerometerdata synkroniseres med samplinger av hjertefrekvens. For dette formålet, desimerer eller fletter den innebygde mikrokontrolleren inn (interpolerer) interne akselerometersamplinger etter behov for å kompensere for forskyvning mellom HR-data og akselerometerdata.
Få en rask start med MAXM86146-evaluering og rask prototyping
Selv om MAXM86146 forenkler systemmaskinvareutformingen, kan utviklere som ønsker å evaluere MAXM86146 eller prototypen raskt, hoppe over maskinvareutformingen og umiddelbart begynne å arbeide med enheten ved hjelp av MAXM86146EVSYS-evalueringssystemet. MAXM86146EVSYS, drevet av USB eller et 3,7 volts litiumpolymerbatteri (LiPo), omfatter et MAXM86146-basert MAXM86146_OSB optisk sensorkort (OSB) koblet med flex-kabel til et Bluetooth-aktivert MAXSensorBLE-hoveddatainnhentingskort (figur 3).
Figur 3: Maxim Integrated MAXM86146EVSYS-evalueringssystemet inkluderer et BLE-aktivert hovedprosessorkort og MAXM86146-basert sensorkort som er tilkoblet med flex-kabel . (Bildekilde: Maxim Integrated)
MAXSensorBLE-kortet integrerer en Maxim Integrated MAX32620 vertsmikrokontroller og Nordic Semiconductors NRF52832 Bluetooth-mikrokontroller. Faktisk fungerer MAXSensorBLE-kortet som en komplett referansekonstruksjon for en BLE-aktivert kroppsbåren konstruksjon. Sammen med støtte for aktive og passive komponenter leveres MAXSensorBLE-kortkonstruksjonen komplett med en integrert strømstyringsintegrert krets (PMIC) fra Maxim Integrated MAX20303, konstruert spesielt for å forlenge batterilevetiden til kroppsbårne enheter.
Det optiske sensorkortet MAXM86146_OSB kombinerer en biodeteksjonsmodulen MAXM86146 med den analoge bryteren MAX14689 og et komplett sett med lysdioder som kreves for å utføre samtidige HR og SpO2-målinger. I tillegg integrerer kortet et firmwarestøttet akselerometer med tre akseler koblet direkte til MAXM86146-modulen.
For å evaluere MAXM86146-modulen ved hjelp av MAXM86146EVSYS-evalueringssystemet, slår utviklere på systemet ved hjelp av USB-C eller et LiPo-batteri, og kobler om nødvendig en BLE USB-sender til en personlig datamaskin som kjører Maxim Integrated MAXM86146 EV Systemprogramvareapplikasjonen. Dette Windows-programmet gir et grafisk brukergrensesnitt (GUI) som gjør det mulig for utviklere enkelt å endre MAXM86146-innstillinger og umiddelbart observere resultatene som presenteres som dataplott. Sammen med tilgang til MAXM86146-registre gir GUI intuitive menyer for innstilling av forskjellige driftsmoduser og konfigurasjoner. Utviklere kan for eksempel bruke fanen GUI-modus til å angi forskjellige LED-sekvenser (figur 4, øverst), samt bruke GUI-konfigurasjonsfanen til å bruke disse LED-sekvensene for HR og SpO2-målinger (figur 4, nederst).
Figur 4: Maxim Integrated 's MAXM86146 EV System Software GUI lar utviklere evaluere MAXM86146 ytelse ved å definere forskjellige driftsmoduser som LED-sekvenser (øverst), og deretter bruke disse sekvensene (nederst) for pulsmåling og SpO2-måling. (Bildekilde: Maxim Integrated).
Maxim Integrated tilbyr sin programpakke-algoritme Wearable HRM & SpO2for MAXM86146 for utvikling av tilpasset programvare. Ettersom MAXM86146 leverer pulsmålinger og SpO2-målinger ved hjelp av den integrerte mikrokontrollerens firmware, er prosessen med å trekke ut data fra enheten enkel. Maxim Integrated-programvarepakken demonstrerer prosedyren for å nullstille enheten – og til slutt lese data fra MAXM86146 FIFO og analysere de enkelte dataelementene (oppføring 1).
Kopi
typedef struct{
uint32_t green_led_cnt;
uint32_t ir_led_cnt;
uint32_t red_led_cnt;
uint32_t hr;
uint32_t hr_conf;
uint32_t spo2;
uint32_t spo2_conf;
uint32_t scd_state;
} mes_repor_t;
typedef struct {
uint32_t led1;
uint32_t led2;
uint32_t led3;
uint32_t led4;
uint32_t led5;
uint32_t led6;
} max8614x_mode1_data;
typedef struct {
int16_t x;
int16_t y;
int16_t z;
} accel_mode1_data;
typedef struct __attribute__((packed)){
uint8_t current_operating_mode; // mode 1 & 2
// WHRM data
uint16_t hr; // mode 1 & 2
uint8_t hr_conf; // mode 1 & 2
uint16_t rr; // mode 1 & 2
uint8_t rr_conf; // mode 1 & 2
uint8_t activity_class; // mode 1 & 2
// WSPO2 data
uint16_t r; // mode 1 & 2
uint8_t spo2_conf; // mode 1 & 2
uint16_t spo2; // mode 1 & 2
uint8_t percentComplete; // mode 1 & 2
uint8_t lowSignalQualityFlag; // mode 1 & 2
uint8_t motionFlag; // mode 1 & 2
uint8_t lowPiFlag; // mode 1 & 2
uint8_t unreliableRFlag; // mode 1 & 2
uint8_t spo2State; // mode 1 & 2
uint8_t scd_contact_state;
} whrm_wspo2_suite_mode1_data;
void execute_data_poll( mes_repor_t* mesOutput ) {
[deleted lines of code]
status = read_fifo_data(num_samples, WHRMWSPO2_FRAME_SIZE, &databuf[0], sizeof(databuf));
if(status == SS_SUCCESS && num_samples > 0 && num_samples < MAX_WHRMWSPO2_SAMPLE_COUNT){
max8614x_mode1_data ppgDataSample;
accel_mode1_data accelDataSamp;
whrm_wspo2_suite_mode1_data algoDataSamp;
int sampleIdx = 0;
int ptr =0;
while( sampleIdx < num_samples ) {
ppgDataSample.led1 = (databuf[ptr+1] << 16) + (databuf[ptr+2] << 8) + (databuf[ptr+3] << 0);
ppgDataSample.led2 = (databuf[ptr+4] << 16) + (databuf[ptr+5] << 8) + (databuf[ptr+6] << 0);
ppgDataSample.led3 = (databuf[ptr+7] << 16) + (databuf[ptr+8] << 8) + (databuf[ptr+9] << 0);
ppgDataSample.led4 = (databuf[ptr+10] << 16)+ (databuf[ptr+11] << 8)+ (databuf[ptr+12] << 0);
ppgDataSample.led5 = (databuf[ptr+13] << 16)+ (databuf[ptr+14] << 8)+ (databuf[ptr+15] << 0);
ppgDataSample.led6 = (databuf[ptr+16] << 16)+ (databuf[ptr+17] << 8)+ (databuf[ptr+18] << 0);
accelDataSamp.x = (databuf[ptr+19] << 8) + (databuf[ptr+20] << 0);
accelDataSamp.y = (databuf[ptr+21] << 8) + (databuf[ptr+22] << 0);
accelDataSamp.z = (databuf[ptr+23] << 8) + (databuf[ptr+24] << 0);
algoDataSamp.current_operating_mode= (databuf[ptr+25]);
algoDataSamp.hr = (databuf[ptr+26] << 8) + (databuf[ptr+27] << 0);
algoDataSamp.hr_conf = (databuf[ptr+28]);
algoDataSamp.rr = (databuf[ptr+29] << 8) + (databuf[ptr+30] << 0);
algoDataSamp.rr_conf = (databuf[ptr+31]);
algoDataSamp.activity_class = (databuf[ptr+32]);
algoDataSamp.r = (databuf[ptr+33] << 8) + (databuf[ptr+34] << 0);
algoDataSamp.spo2_conf = (databuf[ptr+35]);
algoDataSamp.spo2 = (databuf[ptr+36] << 8) + (databuf[ptr+37] << 0);
algoDataSamp.percentComplete = (databuf[ptr+38]);
algoDataSamp.lowSignalQualityFlag = (databuf[ptr+39]);
algoDataSamp.motionFlag = (databuf[ptr+40]);
algoDataSamp.lowPiFlag = (databuf[ptr+41]);
algoDataSamp.unreliableRFlag = (databuf[ptr+42]);
algoDataSamp.spo2State = (databuf[ptr+43]);
algoDataSamp.scd_contact_state = (databuf[ptr+44]);
mesOutput->green_led_cnt = ppgDataSample.led1;
mesOutput->ir_led_cnt = ppgDataSample.led2;
mesOutput->red_led_cnt = ppgDataSample.led3;
mesOutput->hr = algoDataSamp.hr / 10;
mesOutput->hr_conf = algoDataSamp.hr_conf;
mesOutput->spo2 = algoDataSamp.spo2 / 10;
mesOutput->spo2_conf = algoDataSamp.spo2_conf;
mesOutput->scd_state = algoDataSamp.scd_contact_state;
/* printf(" greenCnt= %d , irCnt= %d , redCnt = %d ,"
" hr= %d , hr_conf= %d , spo2= %d , spo2_conf= %d , skin_contact = %d \r\n"
, mesOutput->green_led_cnt , mesOutput->ir_led_cnt , mesOutput->red_led_cnt
, mesOutput->hr , mesOutput->hr_conf , mesOutput->spo2 , mesOutput->spo2_conf , mesOutput->scd_state);
*/
[deleted lines of code]
Oppføring 1: Et utdrag fra Maxim Integrateds programvarepakke demonstrerer den grunnleggende teknikken for å hente ut målinger og andre data fra biodeteksjonsmodulen. (Bildekilde: Maxim Integrated)
Liste 1 illustrerer bruken av C-språkrutinen execute_data_poll () for å returnere en rekke puls- og SpO2-avlesninger fra MAXM86146. Her leser koden enhetens FIFO inn i en lokal databuffer, så tegnes innholdets forekomster inn i instanser av noen få forskjellige C-språkprogramvarestrukturer. Sammen med lagring av konfigurasjonsdata og andre metadata i disse strukturforekomstene, gir rutinen til slutt pulsmålinger og SpO2-målinger i mesOutput, en forekomst av mes_repor_t-strukturen. Utviklere kan ganske enkelt avkommentere den endelige utskriftsuttalelsen for å vise resultatet på konsollen.
For å implementere en kroppsbåren enhet for helse og trening, forenkler MAXM86146-programvaren og maskinvaren betydelig utviklingen av dette. For utstyr beregnet på å oppnå godkjenning av den amerikanske Food and Drug Administration (FDA), må imidlertid utviklere utføre hensiktsmessig testing for å verifisere sluttproduktenes FDA-nivåer. Selv om Maxim Integrated MAXM86146 og de innebygde algoritmene leverer FDA-gradert måleytelse, vil utviklere måtte sørge for at hele systemet deres – ikke bare sensoren – møter FDAs ytelseskrav.
Konklusjon
Interessen for bærbare utstyr som kan levere nøyaktige pulsmålinger og SpO2-målinger fortsetter å øke, senest drevet av SpO2-dataenes rolle i overvåkingen av symptomer på COVID-19-sykdommen. Selv om spesialiserte biosensorer kan levere disse målingene, er det få eksisterende løsninger som kan imøtekomme etterspørselen etter mindre enheter som kan forlenge batterilevetiden i multifunksjonelle, kompakte kroppsbårne enheter. Som vist tilbyr en liten biodeteksjonsmodul fra Maxim Integrated, støttet av et raskt prototypesett, et effektivt alternativ som leverer FDA-kvalitetsmålinger med minimalt strømforbruk.
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.




