Brug et biosenseringsmodul til at udvikle sundheds- og fitness wearables

Af Stephen Evanczuk

Bidraget af DigiKeys nordamerikanske redaktører

Drevet af større sundhedsbevidsthed fra COVID-19, fortsætter interessen for biosensing wearables fortsat med at skabe efterspørgsel efter mere effektive løsninger til at imødekomme brugernes behov for større funktionalitet og højere nøjagtighed i mindre formfaktorer med forlænget batterilevetid til lavere omkostninger. For designere præsenterer dette et sæt løbende udfordringer, når de arbejder på at imødekomme stramme tidsvinduer og budgetter. Arbejder til deres fordel er fremskridt inden for biosenseringsenheder, herunder højere funktionel integration og mere omfattende designløsninger.

Denne artikel diskuterer tendenser inden for biosensorer og wearables og de udfordringer designere står over for. Derefter introducerer det en puls og perifer iltmætning (SpO2) biosensormodul fra Maxim Integrated og viser, hvordan udviklere kan bruge det til mere effektivt at implementere wearables, der er i stand til at levere nøjagtig puls og andre målinger uden at gå på kompromis med de stramme strømbudgetter for batteridrevne mobile produkter.

Designkrav til biosensing

Mens pulsmåling er et kernekrav i en lang række forbrugsartikler, er interessen for SpO2 målingen fortsætter med at stige. En gang brugt i vid udstrækning af atleter, der ønsker at optimere deres fitnessregimer, SpO2 måling har fundet mere udbredt anvendelse, især i selvkontrol af tegn på nedsat luftvejsfunktion forbundet med COVID-19 sygdom. For udviklere giver levering af egnede løsninger til en sundhedsbevidst befolkning, der er vant til bærbar elektronik, betydelige udfordringer med hensyn til omkostninger, strøm, formfaktor og vægt.

Mange biosensorer leveres nu med integrerede analoge frontend-undersystemer, så udviklere ikke behøver at opbygge de signalkæder og undersystemer til efterbehandling, der kræves til sundheds- og fitnessmålinger, men få af disse avancerede enheder har den rigtige blanding af funktioner til bærbare enheder. Som et resultat løser de ikke de designudfordringer, der opstår for at imødekomme brugernes forventninger til små biosensing-wearables, der er lige så diskrete som andre typer førende wearables, herunder smartwatches, fitnessbånd og ægte trådløse øretelefoner.

Yderligere udfordringer forbundet med designintegration kan opstå, når udviklere har brug for at tilføje en eller flere biosenseringsfunktioner til de populære bærbare typer. Som med alle andre typer mobile, batteridrevne personlige elektroniske produkter kræver forbrugerne implicit forlænget batterilevetid fra selv det mindste produkt, idet de typisk vælger disse produkter på baggrund af batteriets levetid så meget som på omkostninger og funktionalitet.

For at imødekomme disse kombinerede krav kan udviklere henvende sig til Maxim Integrated MAXM86146 biosensing-modul til design af brugerdefinerede enheder og det MAXM86146-baserede MAXM86146EVSYS evalueringssystem til hurtig prototyping.

Biosensing-modul tilbyder drop-in-løsning

Fås i en 4,5 x 4,1 x 0,88 millimeter (mm) 38-benet pakke. Maxim Integrated MAXM86146 biosensing-modul er en drop-in-løsning designet specielt til at hjælpe med at udvikle kompakte batteridrevne wearables til sundhed og fitness. For at imødekomme kravene til både forlænget batterilevetid og biosenseringsfunktioner minimerer modulet strømforbruget, samtidig med at der opretholdes en hurtig og nøjagtig måling af puls og SpO2.

Sammen med to integrerede fotodioder inkluderer modulet en Maxim Integrated MAX86141 dual-channel optisk analog front-end (AFE) og en Arm Cortex-M4-baseret mikrokontroller, der er en biosensing-optimeret variant af Maxim Integrated MAX32660 Darwin mikrokontroller (figur 1).

Diagram over Maxim Integrated MAX86146 biosensing-modul (klik for at forstørre)Figur 1: Det Maxim Integrated MAX86146 biosensing-modul integrerer en optisk AFE, mikrokontroller og fotodioder i en kompakt pakke. (Billedkilde: Maxim Integrated)

Forbruger kun 10 mikroampere (μA) ved 25 prøver pr. Sekund (sps), giver det integrerede MAX86141 et omfattende optisk AFE-undersystem designet til at styre de multiple lysemitterende dioder (LED'er), der bruges til måling af puls og SpO2. Optiske hjertefrekvensmonitorer bruger rutinemæssigt fotoplethysmografi (PPG), som overvåger ændringer i perifert blodvolumen forbundet med hver hjertepuls. Til denne måling bruger disse enheder typisk grønt lys ved en bølgelængde på 540 nanometer (nm), som absorberes af blod og resulterer i færre artefakter, fordi grønt lys trænger mindre dybt ind i vævet end mange andre bølgelængder. Optiske pulsoximetre bruger både en rød LED (typisk 660 nm) og en infrarød (IR) LED (typisk 940 nm) til at måle forskellen i absorption mellem hæmoglobin og deoxyhemoglobin - den teknik, der ligger til grund for optisk SpO2 målemetoder (se Design et billig pulsoximeter ved hjælp af komponenter Off-the-Shelf).

For at udføre disse optiske målinger skal udvikleren sikre, at opsamling af fotodiodesignalet synkroniseres nøjagtigt med lysudgangspulser fra de relevante lysdioder. MAXM86146-modulets integrerede MAX86141 AFE leverer separate signalkæder til LED-styring og til fotodiodesignalopsamling. På udgangssiden inkluderer AFE tre højstrømsledende støjsvage LED-drivere til transmission af impulser til grønne lysdioder til pulsmåling samt røde og IR-lysdioder til SpO2 måling. På indgangssiden leverer AFE to opsamlingskanaler til fotodiodesignalet, hver med en dedikeret 19-bit analog-til-digital-konverter (ADC). Disse to udlæsningskanaler kan fungere separat eller bruges i kombination til at give et større strålingsområde.

Styring af AFE-LED- og fotodiodesignakæderne har firmware, der kører på den indbyggede mikrocontroller som justerer AFE-indstillingerne for at maksimere signal/støjforholdet (SNR) og minimere strømforbruget. Når omgivende lys ændres, reagerer ALC-kredsløb (omgivende lys), der er indbygget i den integrerede MAX86141, på gradvise ændringer i lysforholdene. Omgivende lys kan dog ændre sig hurtigt i nogle situationer, f.eks. Når brugeren passerer hurtigt mellem områder med skygge og stærkt sollys, hvilket resulterer i ALC-fejl. For at tage højde for denne almindelige situation inkluderer MAX86141 en picket fence detect-and-replace function. Her identificerer enheden store afvigelser i omgivende målinger fra tidligere prøver og erstatter individuelle udvendige omgivende lysdataprøver med ekstrapolerede værdier i overensstemmelse med en relativt langsom ændring i omgivelsesniveauer.

Fordi modulets mikrocontroller bruger sin firmware til at styre AFE-operation, kræves de detaljerede operationer for at udføre nøjagtig HR og SpO2 målinger er gennemsigtige for udviklere. Ved hjælp af firmwareindstillinger udfører modulet disse målinger automatisk og lagrer rådata og beregnede resultater i en first-in first-out (FIFO) buffer med adgang fra systemværtsprocessoren via modulets I2C seriel grænseflade.

Hvordan MAX86146 forenkler waerable hardwaredesign

Med sin omfattende integrerede funktionalitet kræver biosensing-modulet MAX86146 relativt få ekstra komponenter for at fuldføre design, der er i stand til at give nøjagtig hjerterytme og SpO2 målinger. Til samtidig HR og SpO2 målinger, kan MAX86146 integreres med en ekstern, støjsvag analog multiplexer som Maxim Integrated MAX14689 kontakten tilsluttet diskrete grønne, røde og IR-lysdioder (Figur 2).

Diagram over Maxim Integrated MAX86146 biosensing-modul (klik for at forstørre)Figur 2: At udføre samtidig puls og SpO2 målinger kræver Maxim Integrated MAX86146 biosensing-modulet få ekstra komponenter ud over egnede LED'er, en analog multiplexer (MAX14689, til venstre) og et accelerometer til at detektere bevægelse, mens målinger udføres. (Billedkilde: Maxim Integrated)

Derudover er MAXM86146 designet til at bruge bevægelsesdata fra et tre-akset accelerometer til at korrigere for brugerens bevægelse under pulsmålinger og til at detektere bevægelse under SpO2 målinger, der kræver, at brugeren forbliver i ro i den korte varighed af målingen. Her kan udvikleren enten forbinde et firmware-understøttet accelerometer direkte til MAXM86146's SPI-porte eller tilslutte et generelt accelerometer til værtsprocessoren.

Værtsforbindelsesmuligheden giver større fleksibilitet i valg af enhed, hvilket kun kræver et generelt tre-akset accelerometer som f.eks. Memsic's MC3630, i stand til 25 sps. Stadig skal udviklere sørge for, at accelerometerdata synkroniseres med pulsdataudtagning. Til dette decimerer eller interpolerer den indbyggede mikrocontroller internt accelerometerprøver efter behov for at kompensere for drift mellem HR-data og accelerometerdata.

Få en hurtig start med MAXM86146 evaluering og hurtig prototyping

Selvom MAXM86146 forenkler systemhardwaredesign, kan udviklere, der ønsker at evaluere MAXM86146 eller hurtigt prototype deres applikationer, springe hardwaredesign over og straks begynde at arbejde med enheden ved hjælp af MAXM86146EVSYS-evalueringssystemet. Drevet af USB eller en 3,7 volt lithium-polymer (LiPo) batteri omfatter MAXM86146EVSYS et MAXM86146-baseret MAXM86146_OSB optisk sensorkort (OSB) forbundet med flexkabel til et Bluetooth-lavenergi (BLE) -aktiveret MAXSensorBLE hoveddataopsamlingskort (figur 3).

Billede af Maxim Integrated MAXM86146EVSYS evalueringssystemFigur 3: Maxim Integrated MAXM86146EVSYS-evalueringssystem inkluderer et BLE-aktiveret hovedprocessorkort og et flexkabel-tilsluttet MAXM86146-baseret sensorkort. (Billedkilde: Maxim Integrated)

MAXSensorBLE-kortet integrerer en Maxim Integrated MAX32620-værtsmikrocontroller og Nordic Semiconductor's NRF52832 Bluetooth-mikrocontroller. Faktisk fungerer MAXSensorBLE-kortet som et komplet referencedesign til et BLE-aktiveret wearable design. Sammen med understøttende aktive og passive komponenter leveres MAXSensorBLE-kortdesignet komplet med en integreret Maxim Integrated MAX20303 Power Management Integrated Circuit (PMIC) designet specielt til at forlænge bærbarhedens levetid.

MAXM86146_OSB optisk sensorkort kombinerer et MAXM86146 biosensing modul med en MAX14689 analog switch og komplet sæt LED'er, der kræves for at udføre samtidig HR og SpO2 målinger. Derudover integrerer kortet et firmware-understøttet tre-akset accelerometer tilsluttet direkte til MAXM86146-modulet.

For at evaluere MAXM86146-modulet ved hjælp af MAXM86146EVSYS-evalueringssystemet, tænder udviklere systemet op ved hjælp af USB-C eller et LiPo-batteri og tilsluttet en BLE USB-dongle om nødvendigt til en personlig computer, der kører Maxim Integrated MAXM86146 EV-systemsoftware applikation. Denne Windows-applikation giver en grafisk brugergrænseflade (GUI), der gør det muligt for udviklere nemt at ændre MAXM86146-indstillinger og straks observere resultaterne præsenteret som dataplots. Ud over at give adgang til MAXM86146-registre giver GUI intuitive menuer til indstilling af forskellige driftstilstande og konfigurationer. For eksempel kan udviklere bruge fanen GUI-tilstand til at indstille forskellige LED-sekvenser (figur 4, øverst) og bruge fanen GUI-konfiguration til at anvende disse LED-sekvenser til HR og SpO2 målinger (figur 4, nederst).

Billede af Maxim Integrated's MAXM86146 EV System Software GUIFigur 4: Maxim Integrated's MAXM86146 EV System Software GUI giver udviklere mulighed for at evaluere MAXM86146 ydeevne ved at definere forskellige driftstilstande såsom LED-sekvenser (øverst) og derefter bruge disse sekvenser (nederst) til puls og SpO2 måling. (Billedkilde: Maxim Integrated).

Til tilpasset softwareudvikling leverer Maxim Integrated sin Wearable HRM & SpO2 Algoritme til MAXM86146 softwarepakke. Fordi MAXM86146 leverer puls og SpO2 målinger ved hjælp af sin integrerede mikrocontroller-firmware, er processen med at udtrække data fra enheden. Maxim Integrated softwarepakken demonstrerer proceduren til initialisering af enheden og endelig aflæsning af data fra MAXM86146 FIFO og parsering af de enkelte dataelementer (lister 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]

Liste 1: Et uddrag fra Maxim Integrateds softwarepakke viser den grundlæggende teknik til udtrækning af målinger og andre data fra biosensing-modulet. (Kildekilde: Maxim Integrated)

Liste 1 illustrerer brugen af C-sprog rutine execute_data_poll () for at returnere et antal puls og SpO2 aflæsninger fra MAXM86146. Her læser koden enhedens FIFO i lokal buffer databuf og mapper derefter indholdet af databuf ind i instanser af et par forskellige C-sprog-softwarestrukturer. Sammen med lagring af konfigurationsdata og andre metadata i disse strukturforer giver rutinen endelig puls og SpO2 målinger i mesOutput i en forekomst af mes_repor_t-strukturen. Udviklere kan simpelthen fjerne kommentar til den endelige printf-erklæring for at vise resultatet på konsollen.

For at implementere en sundheds- og fitness-wearables forenkler MAXM86146 software og hardware udviklingen betydeligt. For enheder der er beregnet til at opnå godkendelse fra US Food and Drug Administration (FDA) skal udviklere dog udføre passende test for at verificere FDA-niveauets ydeevne for deres slutprodukter. Selvom Maxim Integrated's MAXM86146 og dets indbyggede algoritmer leverer FDA-kvalitet måleydelse, skal udviklere sikre, at hele deres system - ikke kun sensoren - lever op til FDA's ydelseskrav.

Konklusion

Interesse for wearables, der er i stand til at levere nøjagtig puls og SpO2 målingerne fortsætter med at stige, drevet senest af rollen som SpO2 data til overvågning af symptomer på COVID-19 sygdommen. Selvom specialiserede biosensorer kan levere disse målinger, er det kun få eksisterende løsninger, der er i stand til at imødekomme efterspørgslen efter mindre enheder, der er i stand til at forlænge batteriets levetid i multifunktionelle, kompakte wearables. Som vist tilbyder et lille biosenseringsmodul fra Maxim Integrated understøttelse af et hurtigt prototypesæt, et effektivt alternativ, der leverer målinger af FDA-kvalitet med minimalt strømforbrug.

DigiKey logo

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.

Om denne forfatter

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk has more than 20 years of experience writing for and about the electronics industry on a wide range of topics including hardware, software, systems, and applications including the IoT. He received his Ph.D. in neuroscience on neuronal networks and worked in the aerospace industry on massively distributed secure systems and algorithm acceleration methods. Currently, when he's not writing articles on technology and engineering, he's working on applications of deep learning to recognition and recommendation systems.

Om udgiveren

DigiKeys nordamerikanske redaktører