Használjon bioszenzor modult egészségvédelmi és fitnesz célú viselhető eszközök fejlesztéséhez

By Stephen Evanczuk

Contributed By DigiKey's North American Editors

Részben a COVID-19 miatti nagyobb egészségtudatosságnak köszönhetően, a viselhető bioszenzor-eszközök iránti érdeklődés még hatékonyabb megoldásokra támaszt igényt. A felhasználók a funkciók számának növelését szeretnék pontosabb mérésekkel, ugyanakkor viszont kisebb méretekkel, hosszabb akkumulátor-élettartammal és alacsonyabb költségekkel. A tervezők számára ez egy sor folyamatos kihívást jelent, miközben a szoros piacra kerülési idő és költségvetési korlátok szorításában dolgoznak. Kedvez nekik azonban a bioszenzor eszközök területén elért előrehaladás, beleértve a magasabb funkcionális integrációt és az átfogóbb tervezési megoldásokat.

Ez a cikk a bioszenzorok és viselhető eszközök trendjeit és a tervezőkkel szembeni kihívásokat tárgyalja. Majd bemutat egy bioszenzor modult a Maxim Integrated-től, amely a pulzusszám és az artériás oxigén-telítettség (SpO2) érzékelésére szolgál, és megmutatja, hogy a fejlesztők hogyan tudják felhasználni azt olyan viselhető eszközök hatékonyabb megvalósításához, amelyek pontos pulzusszám és más mérések biztosítására képesek, anélkül, hogy veszélyeztetnék az akkumulátoros hordozható termékek szűkös áramellátási lehetőségeit.

A bioérzékelés tervezési követelményei

Míg a pulzusmérés már alapvető funkció a fogyasztók által viselhető eszközök sokféle változatában, az SpO2 mérésének igénye folyamatosan nő. Az SpO2 mérését korábban a sportolók használták edzettségi állapotuk optimalizálására, ma már azonban szélesebb körű alkalmazásra talált, különösen a COVID-19 betegséggel összefüggő csökkent légzési funkció önellenőrzésében. A viselhető elektronikus eszközökhöz szokott egészségtudatos lakosság által elfogadható megoldások létrehozása jelentős kihívásokat jelent a fejlesztők számára a költség, a teljesítmény, a méret és a súly szempontjából.

Számos bioszenzor már integrált analóg front-end alrendszerrel rendelkezik, így a fejlesztőknek nem kell felépíteniük az egészségi állapot és a kondíció méréséhez szükséges jelláncokat és utófeldolgozó alrendszereket, azonban ezek közül a korszerű eszközök közül kevesen rendelkeznek a viselhető eszközök számára is megfelelő képességekkel. Emiatt nem felelnek meg az olyan kis méretű, a többi elterjedt viselhető eszközhöz (többek között okosórákhoz, fitneszszalagokhoz és valódi vezeték nélküli fülhallgatókhoz) hasonlóan nem feltűnően viselhető bioszenzor eszközökkel kapcsolatos felhasználói elvárásoknak megfelelni kívánó tervezési kihívásoknak.

A tervezési integrációval kapcsolatos további kihívások merülhetnek fel, ha a fejlesztőknek hozzá kell adniuk egy vagy több bioérzékelési képességet ezekhez a népszerű viselhető típusokhoz. Mint minden más típusú hordozható, akkumulátoros személyi elektronikus termék esetében, a fogyasztók implicit módon a legkisebb termékektől is meghosszabbított akkumulátor-élettartamot követelnek, és ezeket a termékeket általában az akkumulátor-üzemidő, valamint a költségek és a funkcionalitás alapján választják ki.

Ezen kombinált követelmények teljesítése érdekében a fejlesztők a Maxim Integrated MAXM86146 bioszenzor modulját használhatják az egyedi eszközök tervezéséhez, illetve a MAXM86146-alapú MAXM86146EVSYS fejlesztőrendszert a prototípusok gyors elkészítéséhez.

Drop-in megoldást kínáló bioszenzor modul

A 4,5 x 4,1 x 0,88 mm méretű, 38 kivezetéses tokozású Maxim Integrated MAXM86146 bioszenzor modul egy olyan drop-in megoldás, amelyet kifejezetten egészségvédelmi és fitnesz célú kompakt, akkumulátoros, viselhető eszközök fejlesztésének elősegítésére terveztek. A hosszabb akkumulátor-élettartamra és a bioérzékelési képességekre vonatkozó követelmények teljesítése érdekében a modul minimalizálja az energiafogyasztást, miközben fenntartja a pulzus és az SpO2 gyors és pontos mérését.

A két beépített fotodióda mellett a Maxim Integrated MAX86141 egy kétcsatornás optikai analóg front-end (AFE) fokozatot és egy Arm Cortex-M4-alapú mikrovezérlőt is tartalmaz, utóbbi a Maxim Integrated MAX32660 Darwin mikrovezérlő bioérzékelésre optimalizált változata (1. ábra).

Kép – a Maxim Integrated MAX86146 bioszenzor modul (kattintson a nagyításhoz)1. ábra: A Maxim Integrated MAX86146 bioszenzor modul optikai AFE fokozatot, mikrovezérlőt és fotodiódákat egyesít egy kompakt tokban. (Kép: Maxim Integrated)

A 25 mintavétel per másodperc (sps) melletti 10 μA áramfelvételével az integrált MAX86141 átfogó optikai AFE alrendszert kínál, amelyet a pulzus és az SpO2 mérésére használt LED-ek vezérlésére fejlesztettek ki. Az optikai pulzusmérők rutinszerűen használják a fotopletizmográfiát (PPG), amely a perifériás vérmennyiségnek a szív minden egyes dobbanásához kapcsolódó változását figyeli. Ehhez a méréshez ezek az eszközök általában 540 nm hullámhosszú zöld fényt használnak, amelyet a vér elnyel és kevesebb műtermék keletkezik, mivel a zöld fény kevésbé mélyen hatol be a szövetbe, mint sok más hullámhossz. Az optikai pulzoximéterek vörös (általában 660 nm-es) és infravörös (IR) LED-et (általában 940 nm-es) egyaránt használnak a hemoglobin és a deoxihemoglobin közötti abszorpciós különbség mérésére – ez az optikai SpO2 mérési módszerek alapjául szolgáló technika (lásd: Design a Low-Cost Pulse Oximeter Using Off-the-Shelf Components, Olcsó pulzoximéter tervezése kereskedelemben kapható alkatrészek használatával).

Az ilyen optikai mérések során a fejlesztőnek biztosítania kell, hogy a fotodióda jelvétele pontosan szinkronban legyen a megfelelő LED-ek fénykibocsátási impulzusaival. Az MAXM86146 modul integrált MAX86141 AFE fokozata külön jelláncokat biztosít a LED-ek vezérléshez és a fotodióda jelvételéhez. A kimeneti oldalon az AFE három nagyáramú, alacsony zajszintű LED-meghajtót tartalmaz, ezek továbbítják az impulzusokat a zöld LED-ekhez a pulzusméréshez, valamint a piros és az IR LED-ekhez az SpO2 méréséhez. A bemeneti oldalon az AFE két fotodióda számára biztosít jelvételi csatornát; mindkettő dedikált 19 bites analóg-digitális átalakítóval (ADC) rendelkezik. Ez a két kiolvasó csatorna külön-külön is működhet, vagy kombinálva nagyobb sugárzási területet biztosíthat.

Az AFE LED és fotodióda jelláncok vezérléséhez a beépített mikrovezérlőn futó firmware elvégzi az AFE beállításait a jel-zaj viszony (SNR) maximalizálása és az energiafogyasztás minimalizálása érdekében. A környezeti megvilágítás változása esetén az integrált MAX86141-be épített környezeti fénykorrekciós (ALC) áramkör reagál a fényviszonyok fokozatos változásaira. A környezeti megvilágítás azonban gyorsan is változhat bizonyos helyzetekben, például amikor a felhasználó gyorsan halad át árnyékos és napfényes helyeken, ami ALC-hibákat eredményez. Ennek a gyakori helyzetnek a kiküszöbölésére az MAX86141 egy úgynevezett léckerítés-észlelő-cserélő funkciót tartalmaz. Itt az eszköz azonosítja a nagy eltéréseket a korábbi mintákból származó környezeti mérésekben és a környezeti viszonyok viszonylag lassú változásának megfelelő extrapolált értékekkel helyettesíti a külső környezeti fényadatok egyes mintáit.

Mivel a modul mikrovezérlője az AFE működtetésére a modul firmware-ét használja, a pontos pulzus- és SpO2-méréshez szükséges részletes műveletek a fejlesztők számára is átláthatók. A firmware-beállítások használatával a modul ezeket a méréseket automatikusan elvégzi, a nyers adatokat és a kiszámított eredményeket egy first-in first-out (FIFO) pufferben tárolja, amelyhez a rendszer gazdagép-processzora a modul I2C soros interfészén keresztül férhet hozzá.

Hogyan egyszerűsíti le az MAX86146 a viselhető eszközök tervezését?

Kiterjedt integrált funkcionalitásának köszönhetően az MAX86146 bioszenzor modul viszonylag kevés további alkatrészt igényel egy pontos pulzus- és SpO2-mérésekre képes eszköz fejlesztésének befejezéséhez. Egyidejű szívütem- és SpO2-mérésekhez az MAX86146 egy külső, alacsony zajszintű analóg multiplexerrel integrálható, például a Maxim Integrated MAX14689 chipjével, amely diszkrét zöld, piros és IR LED-ekhez csatlakozik (2. ábra).

Kép – a Maxim Integrated MAX86146 bioszenzor modul (kattintson a nagyításhoz)2. ábra: A pulzus és az SpO2 egyidejű méréséhez a Maxim Integrated MAX86146 bioszenzor modulon kívül kevés további alkatrész szükséges. A megfelelő LED-ek mellett egy analóg multiplexerre (MAX14689, a bal oldalon) és egy gyorsulásmérőre a mérés közbeni mozgások érzékeléséhez. (Kép: Maxim Integrated)

Ezenkívül az MAXM86146-ot úgy tervezték, hogy pulzusmérés során egy háromtengelyes gyorsulásmérő mozgási adatait használja a felhasználó mozgásának figyelembe vételéhez, valamint SpO2 mérések közben a mozgás észleléséhez, amikor a felhasználónak nyugalomban kell lennie. Ehhez a fejlesztő vagy egy, a firmware által támogatott gyorsulásmérőt csatlakoztathat közvetlenül az MAXM86146 SPI portjaihoz, vagy egy általános célú gyorsulásmérőt a gazdagép processzorához.

A gazdagéphez való csatlakozási opció nagyobb rugalmasságot biztosít az eszközválasztásban, mert csak egy általános célú háromtengelyes gyorsulásmérőre van szükség, például a Memsic 25 sps-re képes MC3630 eszközére. A fejlesztőknek azonban még biztosítaniuk kell a gyorsulásmérő adatainak a pulzusadatok mintavételével való szinkronizálását. Ehhez a lapra integrált mikrovezérlő szükség szerint belsőleg tizedeléssel mintavételezi vagy interpolálja a gyorsulásmérő mintáit, hogy kompenzálja a pulzusszám-adatok és a gyorsulásmérő adatai közötti eltolódást.

Gyors kezdet az MAXM86146 fejlesztőrendszerével és a gyors prototípus-készítéssel

Bár az MAXM86146 leegyszerűsíti a rendszer hardverének tervezését, a vele történő fejlesztésre vagy a gyors prototípus-készítésre törekvő fejlesztők az MAXM86146EVSYS fejlesztőrendszert használva kihagyhatják a hardvertervezést és azonnal elkezdhetik a munkát az eszközzel. Az USB-n keresztül vagy 3,7 V-os lítium-polimer (LiPo) akkumulátorral működtetett MAXM86146EVSYS egy MAXM86146 alapú MAXM86146_OSB optikai érzékelő kártyát (OSB) tartalmaz, amely hajlékony kábellel csatlakozik egy alacsony fogyasztású Bluetooth (BLE) kompatibilis MAXSensorBLE fő adatgyűjtő kártyához (3. ábra).

Kép – a Maxim Integrated MAXM86146EVSYS fejlesztőrendszer3. ábra: A Maxim Integrated MAXM86146EVSYS fejlesztőrendszer egy BLE-kompatibilis fő processzorkártyát és egy flexibilis kábellel csatlakozó MAXM86146 alapú érzékelőkártyát tartalmaz. (Kép: Maxim Integrated)

A MAXSensorBLE kártyára a Maxim Integrated MAX32620 gazdagép mikrovezérlő és a Nordic Semiconductor NRF52832 Bluetooth mikrovezérlője van integrálva. A MAXSensorBLE kártya valójában teljes referenciaprojektként szolgál a BLE-kompatibilis viselhető eszközök tervezéséhez. Az aktív és passzív alkatrészek mellett az MAXSensorBLE kártya része egy Maxim Integrated MAX20303 energiafogyasztás-szabályozó integrált áramkör (PMIC) is, amelyet kifejezetten a viselhető eszközökkel használt akkumulátorok élettartamának meghosszabbítására terveztek.

Az MAXM86146_OSB optikai érzékelő kártya az MAXM86146 bioszenzoros modult kombinálja egy MAX14689 analóg kapcsolóval és az egyidejű pulzusszám- és SpO2-mérések elvégzéséhez szükséges LED-ek teljes készletével. Ezen felül a kártya tartalmaz egy, a firmware által támogatott háromtengelyes gyorsulásmérőt is, amely közvetlenül az MAXM86146 modulhoz csatlakozik.

Az MAXM86146 modullal az MAXM86146EVSYS fejlesztőrendszer segítségével történő fejlesztéshez a fejlesztők az USB-C port vagy a LiPo akkumulátor használatával kapcsolják be a rendszert, és szükség esetén csatlakoztatniuk kell egy BLE USB kulcsot a Maxim Integrated MAXM86146 EV System Software alkalmazást futtató személyi számítógéphez. Ez a Windows alkalmazás egy grafikus felhasználói felületet (GUI) biztosít, amely lehetővé teszi a fejlesztők számára, hogy egyszerűen módosítsák az MAXM86146 paramétereit és azonnal megfigyeljék az adatdiagramként megjelenő eredményeket. Az MAXM86146 regisztereihez való hozzáférés mellett a grafikus kezelőfelület intuitív menüket kínál a különböző üzemmódok és konfigurációk beállításához. Például a fejlesztők a GUI mód fülön különböző LED-szekvenciákat állíthatnak be (4. ábra, fent) és a GUI konfigurációs fül segítségével alkalmazhatják ezeket a LED-szekvenciákat a pulzusszám- és SpO2-mérésekhez (4. ábra, lent).

Kép – a Maxim Integrated MAXM86146 EV System Software alkalmazás grafikus kezelőfelülete4. ábra: A Maxim Integrated MAXM86146 EV System Software alkalmazás grafikus kezelőfelülete lehetővé teszi a fejlesztők számára az MAXM86146 teljesítményének értékelését különböző működési módok, például LED-szekvenciák (fent) meghatározásával, majd ezeknek a szekvenciáknak a pulzusszám és az SpO2 mérésére való felhasználásával (lent). (Kép: Maxim Integrated).

Az egyedi szoftverfejlesztési igények kielégítésére a Maxim Integrated a Wearable HRM & SpO2 Algorithm for MAXM86146 szoftvercsomagot kínálja. Mivel az MAXM86146 saját integrált mikrovezérlő firmware-ével végzi a pulzusszám- és SpO2-méréseket, az adatok kinyerése az eszközről egyszerű. A Maxim Integrated szoftvercsomagja bemutatja az eszköz inicializálásának folyamatát, végül az MAXM86146 FIFO adatainak kiolvasását és az egyes adatelemek elemzését (1. lista).

Másolás
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]

1. lista: A Maxim Integrated szoftvercsomagjának részlete bemutatja a mérési és egyéb adatok bioszenzor modulból való kinyerésének alapvető technikáját. (Programkód: Maxim Integrated)

Az 1. lista a C nyelvű execute_data_poll() eljárás használatát szemlélteti a pulzusszám- és az SpO2-értékek MAXM86146-ból való kinyeréséhez. Itt a program beolvassa az eszköz FIFO-ját a helyi puffer adatbázisba, majd az adatbázis tartalmát több különböző C-nyelvű szoftverstruktúra példányaiba képezi le. A konfigurációs adatok és egyéb metaadatok ezekbe a struktúrapéldányokba való letárolásával együtt az eljárás végül rendelkezésre bocsátja a pulzusszám- és az SpO2-mérések értékeit az mesOutput-ban, az mes_repor_t struktúra egyik példányában. Ahhoz, hogy az eredmény megjelenjen a konzolon, a fejlesztőknek egyszerűen ki kell törölni („kikommentelni”) az utolsó printf utasítást letiltó karaktereket.

Az egészségvédelmi és fitnesz célú viselhető eszközök megvalósítása érdekében az MAXM86146 szoftver és hardver jelentősen leegyszerűsíti a fejlesztést. Az olyan eszközök esetében azonban, amelyeknek rendelkezniük kell az Egyesült Államok Élelmiszer- és Gyógyszerügyi Hivatala (FDA) jóváhagyásával, a fejlesztőknek megfelelő teszteket kell végezniük végtermékeik FDA-szintű teljesítőképességének ellenőrzésére. Noha a Maxim Integrated MAXM86146 eszköze és annak beágyazott algoritmusai FDA-szintű mérési teljesítményt nyújtanak, a fejlesztőknek biztosítaniuk kell, hogy teljes rendszerük – és ne csak az érzékelő – megfeleljen az FDA teljesítőképességre vonatkozó követelményeinek.

Összegzés

A pontos pulzus- és SpO2-méréseket biztosító viselhető eszközök iránti érdeklődés továbbra is növekszik, amelyet újabban az SpO2 adatoknak a COVID-19 betegség tüneteinek nyomon követésében játszott szerepe táplál. Habár ezeket a méréseket speciális bioszenzorok képesek elvégezni, kevés létező megoldás tudja kielégíteni az akkumulátor élettartamát megnövelni képes kisebb, többfunkciós, viselhető eszközök iránti igényt. Mint láthattuk, a Maxim Integrated gyors prototípus-készítést biztosító készlettel támogatott apró bioszenzor modulja hatékony alternatívát kínál, FDA minőségű mérési eredményeket szolgáltatva minimális energiafogyasztás mellett.

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.

About this author

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.

About this publisher

DigiKey's North American Editors