Använd en biosensormodul för att utveckla bärbar elektronik för hälsa och träning

Av Stephen Evanczuk

Bidraget med av DigiKeys nordamerikanska redaktörer

Intresset för bärbar elektronik med biosensorer, vilket delvis är grundat på en högre hälsomedvetenhet kring Covid-19, fortsätter att driva en efterfrågan på effektivare lösningar för att fylla användarnas behov av fler funktioner och högre precision i mindre format, med längre batterilivslängd till lägre kostnad. För utvecklare är detta en ständig utmaning när de arbetar för att hinna med snabba marknadslanseringar och snäva budgetar. Som tur är för dem blir biosensorkomponenter allt mer avancerade, bl.a. i form av större funktionsintegration och mer omfattande konstruktioner.

Denna artikel går igenom trender inom biosensorer och bärbara produkter och de utmaningar som utvecklarna står inför. Sedan introduceras en biosensormodul för hjärtfrekvens och perifer syremättnad (SpO2) frånMaxim Integrated som visar hur utvecklare kan använda denna för att effektivare konstruera bärbara produkter som kan avläsa exakt hjärtfrekvens och göra andra mätningar utan att kompromissa med de snäva strömförbrukningskraven för batteridrivna mobila produkter.

Konstruktionskrav för bioavkänning

Pulsmätning har länge varit en central funktion i många olika konsumentprodukter, men intresset för SpO2-mätning växer. Tidigare användes det till stor del av idrottare som ville optimera sina träningssprogram, men SpO2-mätning har nu funnit en mer spridd tillämpning, särskilt för självövervakning vid tecken på nedsatt andningsfunktion associerad med Covid-19-sjukdom. För utvecklare är utmaningarna att leverera attraktiva lösningar med avseende på kostnad, prestanda, storlek och vikt till en hälsomedveten befolkning som är van vid bärbara elektronikprodukter.

Många biosensorer har nu integrerade analoga användargränssnittssystem så att utvecklare inte behöver bygga de subsystem för signalkedjor och efterprocssning som krävs för hälso- och fitnessmätningar, men få av dessa avancerade produkter har rätt mix av funktioner för bärbara produkter. Därför erbjuder dessa inte en lösning på de konstruktionsutmaningar som finns för att uppfylla användarnas förväntningar på små bärbara produkter med biosensorer som är lika diskreta som andra typer av kända bärbara produkter, inklusive smarta klockor, fitnessband och helt trådlösa hörlurar.

Fler utmaningar i samband med konstruktionsintegration kan uppstå när utvecklare vill lägga till en eller flera biosensorfunktioner till de populära bärbara typerna. Som med alla andra typer av mobila, batteridrivna personliga elektronikprodukter har användarna en outtalad förväntan om lång batteritid även för de minsta produkterna, och dessa produkter graderas ofta lika mycket utifrån batteritid som från kostnad och funktioner.

För att klara dessa kombinerade krav, kan utvecklarna titta närmare på Maxim Integrateds MAXM86146 biosensormodul för att utveckla egna produkter och det MAXM86146-baserade utvärderingssystemet MAXM86146EVSYS för snabb prototyputveckling.

Biosensormodul med plug in-funktion

Maxim Integrateds biosensormodul MAXM86146 har en 38-pinnars kapsling i formatet 4,5 x 4,1 x 0,88 mm, och är en plug-in-lösning konstruerad speciellt för att underlätta utveckling av kompakta batteridrivna bärbara datorer för hälsa och träning. För att klara kraven på både lång batteritid och biosensorfunktioner, minimerar modulen strömförbrukningen samtidigt som den behåller snabb och exakt mätning av hjärtfrekvens och SpO2.

Tillsammans med två integrerade fotodioder innehåller modulen en MAX86141 dubbelkanalig optisk analog front-end (AFE) från Maxim Integrated och en Arm Cortex-M4-baserad microcontroller som är en biosensoroptimerad variant av Darwin-microcontrollern MAX32660 från Maxim Integrated (figur 1).

Diagram över biosensormodulen MAX86146 från Maxim Integrated (klicka för att förstora)Figur 1: Maxim Integrateds biosensormodul MAX86146 integrerar en optisk AFE, microcontroller och fotodioder i ett kompakt format. (Bildkälla: Maxim Integrated)

Med endast 10 μA förbrukning vid 25 samples/sekund, erbjuder den integrerade MAX86141 ett omfattande optiskt AFE-subsystem som är utformat för att styra de lysdioder som används för att mäta hjärtfrekvens och SpO2. Optiska hjärtfrekvensmätare använder rutinmässigt fotopetysmografi (PPG), som övervakar förändringarna i perifer blodvolym som är associerad med varje hjärtpuls. För denna mätning använder dessa enheter vanligtvis grönt ljus med en våglängd på 540 nm, vilket absorberas av blod och därför ger mindre avtryck eftersom grönt ljus tränger mindre djupt in i vävnaden än många andra våglängder. Optiska pulsoximetrar använder både en röd lysdiod (typiskt sett på 660 nm) och en infraröd (IR) lysdiod (typiskt sett 940 nm) för att mäta skillnaden i absorption mellan hemoglobin och deoxihemoglobin - tekniken som ligger bakom optiska mätmetoder för SpO2 (seKonstruera en billig pulsoximeter med hjälp av standardkomponenter).

För att utföra dessa optiska mätningar måste utvecklaren se till att signalregistreringen från fotodioden synkroniseras exakt med ljuspulserna från respektive lysdioder. MAXM86146-modulens integrerade MAX86141 AFE ger separata signalkedjor för LED-styrning och för signalregistreringen från fotodioden. På utgångssidan innehåller AFE:n tre lågbrusiga högströmsdrivkretsar för lysdioder för överföring av pulser till de gröna lysdioderna för pulsmätning samt röda och IR-lysdioder för SpO2-mätning. På ingångssidan tillhandahåller AFE:n två signalregistreringskanaler för fotodioder, var och en med en dedikerad 19-bitars A/D-omvandlare (ADC). Dessa två avläsningskanaler kan fungera separat eller användas i kombination för att ge ett större strålande område.

Genom att styra signalkedjorna för AFE-lysdioden och fotodioden, kommer firmware som körs på den inbyggda microcontrollern justera AFE-inställningarna för att maximera signal/brus-förhållandet (SNR) och minimera strömförbrukningen. När omgivningsljuset förändras, reagerar korrigeringskretsarna för omgivningsljuset som är inbyggda i den integrerade MAX86141 på gradvisa förändringar av ljusförhållandena. Omgivningsljuset kan dock förändras snabbt i vissa situationer, till exempel när användaren passerar snabbt mellan områden med skugga och starkt solljus, vilket resulterar i ett korrigeringsfel. För att kompensera för denna vanliga situation, innehåller MAX86141 en funktion för att detektera ljus i spjälat mönster. Enheten identifierar då stora avvikelser i omgivningsmätningar från de tidigare värdena och ersätter enskilda externa ljusdatasamplingar med extrapolerade värden som överensstämmer med en relativt långsam förändring av omgivningsnivåerna.

Eftersom modulens microcontroller använder sin firmware för att hantera AFE-funktionerna, är de detaljerade operationer som krävs för att utföra korrekt HR- och SpO2-mätningar tydliga för utvecklarna. Med hjälp av firmware-inställningar utför modulen dessa mätningar automatiskt och lagrar rådata och framräknade resultat i en FIFO-buffert (först in, först ut) som används av systemets värdprocessor via modulens seriella I2C-gränssnitt.

Hur MAX86146 förenklar konstruktionen av bärbar hårdvara

Med sina många integrerade funktioner kräver biosensormodulen MAX86146 relativt få ytterligare komponenter för att få en färdig konstruktion som kan ge exakt hjärtfrekvens och SpO2-mätningar. För samtidiga HR- och SpO2-mätningar kan MAX86146 integreras med en extern lågbrusig analog multiplexer som Maxim Integrateds MAX14689-switch som är ansluten till diskreta gröna, röda och IR-lysdioder (figur 2).

Diagram över Maxim Integrated MAX86146 biosensormodul (klicka för att förstora)Figur 2: För att utföra samtidiga hjärtfrekvens- och SpO2-mätningar, behöver Maxim Integrateds biosensormodul MAX86146 få ytterligare komponenter utöver passande lysdioder, en analog multiplexer (MAX14689 till vänster) och en accelerometer för att upptäcka rörelser medan mätningarna görs. (Bildkälla: Maxim Integrated)

Dessutom är MAXM86146 konstruerad för att använda rörelsesdata från en treaxlig accelerometer för att korrigera för användarens rörelser under hjärtfrekvensmätningar och för att upptäcka rörelser under SpO2-mätningar som kräver att användaren vilar under den korta tid som mätningen tar. Här kan utvecklaren antingen ansluta en firmware-stödd accelerometer direkt till SPI-portarna på MAXM86146:an eller ansluta en universell accelerometer till värdprocessorn.

Värdanslutningsalternativet ger större flexibilitet i komponentval, då det endast kräver en generell treaxlig accelerometer, såsom Memsics MC3630, vilken klarar 25 samples/sek. Utvecklare måste fortfarande se till att accelerometerdatan synkroniseras med datainhämtningen av hjärtfrekvensen. Därför decimerar eller interpolerar microcontrollern internt accelerometersamplingarna efter behov för att kompensera för förskjutningar mellan HR-data och accelerometerdata.

Kom igång snabbt med MAXM86146 för utvärdering och snabb prototyputveckling

Även om MAXM86146 förenklar utveckling av systemhårdvara, kan utvecklare som vill utvärdera MAXM86146 eller snabbt prototyputveckla sina applikationer hoppa över hårdvarukonstruktionen och omedelbart börja arbeta med enheten genom att använda utvärderingssystemet MAXM86146EVSYS. MAXM86146EVSYS drivs med USB eller 3,7 voltlitiumpolymerbatteri (LiPo) och innefattar ett MAXM86146-baserat MAXM86146_OSB optiskt sensorkort anslutet med flexkabel till ett Bluetooth Low Energy-huvudkortet för datainsamling, MAXSensorBLE (figur 3).

Bild på Maxim Integrateds utvärderingssystem MAXM86146EVSYSFigur 3: Maxim Integrateds utvärderingssystem MAXM86146EVSYS innehåller ett BLE-aktiverat huvudprocessorkort och ett MAXM86146-baserat sensorkort anslutet med flexkabel. (Bildkälla: Maxim Integrated)

MAXSensorBLE-kortet integrerar en MAX32620-värdmicrocontroller från Maxim Integrated ochNordic SemiconductorsBluetooth-microcontroller NRF52832. Faktum är att MAXSensorBLE-kortet fungerar som en komplett referenskonstruktion för en BLE-aktiverad bärbar konstruktion. Tillsammans med stödjande aktiva och passiva komponenter levereras MAXSensorBLE-kortkonstruktionen med en Maxim Integrated MAX20303 PMIC (Power Management Integrated Circuit) konstruerad speciellt för att förlänga batteritiden för bärbara datorer.

Det optiska sensorkortet MAXM86146_OSB kombinerar en MAXM86146-biosensormodul med en MAX14689 analog switch och komplett uppsättning lysdioder som krävs för att utföra samtidiga HR- och SpO2-mätningar. Dessutom integrerar kortet en firmware-stödd treaxlig accelerometer ansluten direkt till MAXM86146-modulen.

För att utvärdera MAXM86146-modulen med MAXM86146EVSYS-utvärderingssystemet startar utvecklarna systemet med USB-C eller ett LiPo-batteri och ansluter en BLE USB-dongel om det behövs till en persondator som kör Maxim Integrateds MAXM86146 EV-systemmjukvara. Denna Windows-applikation erbjuder ett grafiskt användargränssnitt (GUI) som gör det möjligt för utvecklare att enkelt ändra MAXM86146-inställningarna och omedelbart observera resultaten som presenteras som datagrafer. Förutom med att ge åtkomst till MAXM86146-register, erbjuder gränssnittet intuitiva menyer för att ställa in olika driftlägen och konfigurationer. Exempelvis kan utvecklare använda mode-fliken för att ställa in olika LED-sekvenser (figur 4, överst) och använda konfigurationsfliken för att tillämpa dessa LED-sekvenser för HR- och SpO2-mätningar (figur 4, nedtill).

Bild på gränssnittet till Maxim Integrateds MAXM86146 EV-systemmjukvaraFigur 4: Gränssnittet till Maxim Integrateds MAXM86146 EV systemmjukvara låter utvecklare utvärdera MAXM86146-prestandan genom att definiera olika driftlägen som LED-sekvenser (överst) och sedan använda dessa sekvenser (nedtill) för hjärtfrekvens och SpO2-mätningar. (Bildkälla: Maxim Integrated).

För egen mjukvaruutveckling erbjuder Maxim Integrated sin Wearable HRM & SpO2-algoritm för mjukvarupaketet MAXM86146. Eftersom MAXM86146 erbjuder hjärtfrekvens- och SpO2-mätningar med hjälp av sin integrerade microcontroller-firmware är processen med att extrahera data från enheten enkel. Maxim Integrateds mjukvarupaket visar proceduren för att initiera enheten och slutligen läsa data från MAXM86146 FIFO och analysera de enskilda dataobjekten (lista 1).

Kopiera
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]

Lista 1: Ett utdrag från Maxim Integrateds mjukvarupaket visar den grundläggande tekniken för att extrahera mätningar och annan data från biosensor-modulen. (Kodkälla: Maxim Integrated)

Lista 1 illustrerar användning av C-rutinen execute_data_poll () för att returnera ett antal hjärtfrekvens- och SpO2-mätningar från MAXM86146. Här läser koden in enhetens FIFO i den lokala databufferten och mappar sedan innehållet i bufferten till instanser av olika datastrukturer i C. Utöver att lagra konfigurationsdata och annan metadata i dessa strukturinstanser, ger rutinen slutligen hjärtfrekvens- och SpO2-mätningar i mesOutput, en instans av mes_repor_t-strukturen. En utvecklare kan helt enkelt kommentera bort den sista printf-satsen för att visa resultatet på konsolen.

Mjukvaran och hårdvaran i MAXM86146 förenklar utvecklingen avsevärt när det gäller att utveckla applikationer för hälsa och träning för bärbara elektronikprodukter. För produkter som är avsedda att godkännas av US Food and Drug Administration (FDA) måste utvecklare dock utföra särskilda tester för att kontrollera att prestandan hos deras slutprodukter når upp till FDA-kraven. Även om Maxim Integrateds MAXM86146 och dess inbäddade algoritmer levererar mätprestanda enligt FDA-kraven, måste utvecklare se till att hela systemet - inte bara sensorn - uppfyller FDA:s prestandakrav.

Slutsats

Intresset för bärbara produkter som kan leverera exakta mätningar av hjärtfrekvens och SpO2 fortsätter att öka, vilket är pådrivet av den roll som SpO2-data spelar för att övervaka symtom på Covid-19. Även om specialiserade biosensorer kan utföra dessa mätningar, finns få existerande lösningar som klarar efterfrågan på mindre enheter som kan förlänga batteriets livslängd i kompakt bärbar elektronik med många funktioner. Som visat finns en liten biosensormodul från Maxim Integrated, med stöd för en snabb prototyputvecklingssats, som erbjuder ett effektivt alternativ och som klarar att leverera FDA-mätningar med minimal strömförbrukning.

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 skribenten

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk har arbetat i mer än 20 år med att skriva för och om elektronikbranschen inom många olika områden som maskinvara, programvara, system och applikationer – inklusive sakernas internet. Han har en kandidatexameni neurovetenskap om artificiella neuronnät och har arbetat inom rymdfartsindustrin med mycket distribuerade säkra system och metoder för acceleration av algoritmer. När han inte skriver artiklar om teknik och konstruktion arbetar han med applikationer för djupinlärning för igenkänningssystem och rekommendationssystem.

Om utgivaren

DigiKeys nordamerikanska redaktörer