Utilizzare un modulo di biorilevamento per sviluppare dispositivi indossabili per la salute e il fitness

Di Stephen Evanczuk

Contributo di Editori nordamericani di DigiKey

Alimentato in parte dalla maggiore consapevolezza dell'importanza della salute dovuta al COVID-19, l'interesse per i dispositivi indossabili di biorilevamento continua a spingere la domanda di soluzioni più efficaci per soddisfare la domanda degli utenti di una maggiore funzionalità e precisione in formati più piccoli con batterie di durata maggiore e a costi inferiori. Per i progettisti, questo presenta una serie di sfide continue mentre lavorano per soddisfare i tempi e i budget ristretti del time-to-market. Per fortuna vengono loro incontro i progressi fatti nei dispositivi di biorilevamento, tra cui una maggiore integrazione funzionale e soluzioni di progettazione più complete.

Questo articolo discute le tendenze dei biosensori e dei dispositivi indossabili e le sfide che devono affrontare i progettisti. Presenta poi un modulo biosensore di frequenza cardiaca e saturazione di ossigeno periferico (SpO2) di Maxim Integrated e mostra come sia possibile utilizzarlo per implementare in modo più efficace indossabili in grado di fornire misurazioni precise della frequenza cardiaca e di altro tipo senza compromettere la potenza disponibile dei prodotti mobili alimentati a batteria.

Requisiti di progettazione per il biorilevamento

Mentre il monitoraggio della frequenza cardiaca è un requisito fondamentale in un'ampia varietà di prodotti indossabili, l'interesse per la misurazione di SpO2 continua ad aumentare. Una volta prerogativa solo della gran parte degli atleti interessati a ottimizzare i loro regimi di fitness, la misurazione SpO2 ha trovato un'applicazione più diffusa, in particolare nell'automonitoraggio per i segni di ridotta funzionalità respiratoria associati alla malattia da COVID-19. Per gli sviluppatori, fornire soluzioni adeguate ad una popolazione attenta alla salute e abituata all'elettronica indossabile presenta sfide significative per quanto riguarda i costi, la potenza, il fattore di forma e il peso.

Molti biosensori sono ora dotati di sottosistemi front-end analogici integrati, in modo che gli sviluppatori non debbano ricreare le catene di segnali e i sottosistemi di post-elaborazione necessari per le misurazioni di salute e fitness, ma pochi dei dispositivi avanzati di questo genere hanno il giusto mix di capacità per essere veri e propri indossabili. Di conseguenza, non risolvono le sfide progettuali che puntano a soddisfare le aspettative degli utenti in fatto di minuscoli dispositivi indossabili di biorilevamento che siano tanto discreti quanto altri tipi di indossabili di punta, come smartwatch, fasce di fitness e auricolari wireless.

Ulteriori sfide associate all'integrazione possono sorgere quando gli sviluppatori devono aggiungere una o più capacità di biorilevamento a questi tipi di indossabili così diffusi. Come per ogni altro tipo di prodotto elettronico personale mobile alimentato a batteria, i consumatori richiedono implicitamente una maggiore durata della batteria anche per i prodotti più piccoli, tipicamente scegliendo i prodotti in base alla durata della batteria, al costo e alla funzionalità.

Per soddisfare questi requisiti combinati, gli sviluppatori possono rivolgersi al modulo di biorilevamento MAXM86146 di Maxim Integrated per la progettazione di dispositivi personalizzati e al sistema di valutazione MAXM86146EVSYS sempre di Maxim Integrated per la prototipazione rapida.

Il modulo di biorilevamento è una soluzione drop-in

Disponibile in un contenitore a 38 pin di 4,5 x 4,1 x 0,88 mm, il modulo di biorilevamento integrato MAXM86146 di Maxim è una soluzione drop-in progettata specificamente per aiutare a velocizzare lo sviluppo di prodotti compatti a batteria per la salute e il fitness. Per soddisfare i requisiti di una maggiore durata della batteria e di capacità di biorilevamento, il modulo riduce al minimo il consumo energetico mantenendo una misurazione rapida e precisa della frequenza cardiaca e di SpO2.

Insieme a due fotodiodi integrati, il modulo include un front-end analogico (AFE) ottico a doppio canale MAX86141 di Maxim Integrated e un microcontroller Arm Cortex-M4 che è una variante ottimizzata per il biorilevamento del microcontroller Darwin MAX32660 di Maxim Integrated (Figura 1).

Schema del modulo di biorilevamento MAXM86146 di Maxim Integrated (fare clic per ingrandire)Figura 1: Il modulo di biorilevamento integrato MAX86146 di Maxim integra un AFE ottico, un microcontroller e fotodiodi in un contenitore compatto. (Immagine per gentile concessione di Maxim Integrated)

Con un consumo di soli 10 μA a 25 sps, MAX86141 integrato fornisce un sottosistema AFE ottico completo progettato per controllare molteplici diodi a emissione luminosa (LED) utilizzati per la misurazione della frequenza cardiaca e di SpO2. I cardiofrequenzimetri ottici utilizzano di routine la fotopletismografia (PPG), che monitora le variazioni del volume del sangue periferico associate a ogni pulsazione del cuore. Per tale misurazione, questi dispositivi utilizzano tipicamente la luce verde a una lunghezza d'onda di 540 nm, che viene assorbita dal sangue e produce meno artefatti perché penetra meno profondamente nei tessuti rispetto a molte altre lunghezze d'onda. I pulsossimetri ottici utilizzano sia un LED rosso (tipicamente 660 nm) sia uno a infrarossi (IR) (tipicamente 940 nm) per misurare la differenza di assorbimento tra emoglobina e deossiemoglobina - la tecnica alla base dei metodi di misurazione ottica SpO2 (si veda Progettare un pulsossimetro a basso costo utilizzando componenti di serie).

Per eseguire queste misurazioni ottiche, lo sviluppatore deve assicurarsi che l'acquisizione del segnale del fotodiodo sia sincronizzata in modo preciso con gli impulsi di luce in uscita dai LED appropriati. Il modulo AFE MAXM86146 integrato nel modulo MAX86141 fornisce catene di segnali separate per il controllo dei LED e per l'acquisizione del segnale dei fotodiodi. Sul lato di uscita, l'AFE comprende tre driver LED ad alta corrente e basso rumore per la trasmissione di impulsi ai LED verdi per la misurazione della frequenza cardiaca, nonché LED rossi e IR per la misurazione di SpO2. Sul lato di ingresso, l'AFE fornisce due canali di acquisizione del segnale dei fotodiodi, ciascuno con un convertitore analogico/digitale (ADC) a 19 bit dedicato. Questi due canali di lettura possono funzionare separatamente o essere utilizzati in combinazione per una maggiore area radiante.

Controllando le catene di segnali LED AFE e fotodiodi, il firmware in esecuzione sul microcontroller regola le impostazioni AFE per massimizzare il rapporto segnale/rumore (SNR) e ridurre al minimo il consumo energetico. Al variare della luce ambiente, il circuito di correzione della luce ambiente (ALC) integrato in MAX86141 risponde ai cambiamenti graduali delle condizioni di illuminazione. La luce ambiente può, tuttavia, cambiare rapidamente in alcune situazioni, come quando l'utente passa rapidamente tra zone d'ombra e di luce solare, con conseguenti guasti dell'ALC. Per tener conto di questa situazione comune, MAX86141 include una funzione di rilevamento e sostituzione a palizzata. In questo caso, il dispositivo identifica le grandi variazioni nelle misurazioni ambientali dei campioni precedenti e sostituisce i singoli campioni di dati di luce ambiente esterni con valori estrapolati coerenti con un cambiamento relativamente lento dei livelli ambientali.

Poiché il microcontroller del modulo utilizza il firmware interno per gestire il funzionamento AFE, le operazioni dettagliate necessarie per eseguire accurate misurazioni di FC e SpO2 sono trasparenti agli sviluppatori. Utilizzando le impostazioni del firmware, il modulo esegue queste misurazioni automaticamente, memorizzando i dati grezzi e i risultati calcolati in un buffer first-in first-out (FIFO) per l'accesso da parte del processore host del sistema attraverso l'interfaccia seriale I2C del modulo.

Come MAX86146 semplifica la progettazione dell'hardware indossabile

Con la sua ampia funzionalità integrata, il modulo di biorilevamento MAX86146 richiede relativamente pochi componenti aggiuntivi per completare un progetto in grado di fornire misurazioni accurate di frequenza cardiaca e SpO2. Per misurazioni simultanee di FC e SpO2, MAX86146 può essere integrato con un multiplexer analogico esterno a basso rumore come l'interruttore MAX14689 di Maxim Integrated collegato a LED verdi, rossi e IR discreti (Figura 2).

Schema del modulo di biorilevamento MAXM86146 di Maxim Integrated (fare clic per ingrandire)Figura 2: Per eseguire misurazioni simultanee di frequenza cardiaca e SpO2, il modulo di biorilevamento integrato MAX86146 di Maxim richiede pochi componenti aggiuntivi oltre ai LED adatti, un multiplexer analogico (MAX14689, a sinistra) e un accelerometro per rilevare il movimento durante le misurazioni. (Immagine per gentile concessione di Maxim Integrated)

Inoltre, MAXM86146 è progettato per l'uso dei dati di movimento di un accelerometro a tre assi per correggere il movimento dell'utente durante le misurazioni della frequenza cardiaca e per rilevare il movimento durante le misurazioni di SpO2 che richiedono all'utente di rimanere a riposo per la breve durata della misurazione. Qui, lo sviluppatore può collegare un accelerometro supportato da firmware direttamente alle porte SPI di MAXM86146 o collegare un accelerometro generico al processore host.

L'opzione di connessione host offre una maggiore flessibilità nella selezione dei dispositivi, richiedendo solo un accelerometro a tre assi di uso generale come MC3630 di Memsic, che supporta 25 sps. Tuttavia, gli sviluppatori devono garantire che i dati dell'accelerometro siano sincronizzati con il campionamento dei dati della frequenza cardiaca. Per questo, il microcontroller decima internamente o interpola i campioni dell'accelerometro secondo necessità per compensare la deriva tra i dati FC e i dati dell'accelerometro.

Un rapido avvio nella valutazione e prototipazione rapida di MAXM86146

Sebbene MAXM86146 semplifichi la progettazione dell'hardware del sistema, gli sviluppatori che desiderano valutare MAXM86146 o prototipare rapidamente le loro applicazioni possono saltare la fase di progettazione hardware e iniziare immediatamente a lavorare con il dispositivo utilizzando il sistema di valutazione MAXM86146EVSYS. Alimentato da USB o da una batteria al litio polimero (LiPo)da 3,7 V, MAXM86146EVSYS comprende una scheda per sensore ottico (OSB) MAXM86146_OSB basata su MAXM86146, collegata tramite cavo flessibile a una scheda di acquisizione dati principale MAXSensorBLE abilitata per Bluetooth Low Energy (BLE) (Figura 3).

Immagine del sistema di valutazione MAXM86146EVSYS di Maxim IntegratedFigura 3: Il sistema di valutazione integrato MAXM86146EVSYS di Maxim comprende una scheda processore principale abilitata BLE e una scheda sensore basata su cavo flessibile collegata a MAXM86146. (Immagine per gentile concessione di Maxim Integrated)

La scheda MAXSensorBLE integra un microcontroller host MAX32620 di Maxim Integrated e il microcontroller Bluetooth NRF52832 di Nordic Semiconductor. Infatti, la scheda MAXSensorBLE funge da progetto di riferimento completo per un dispositivo indossabile abilitato da BLE. Oltre a supportare componenti attivi e passivi, il progetto della scheda MAXSensorBLE è fornito completo di un circuito integrato di gestione della potenza (PMIC) MAX20303 di Maxim Integrated progettato specificamente per prolungare la durata della batteria dei dispositivi indossabili.

La scheda sensore ottico MAXM86146_OSB combina un modulo di biorilevamento MAXM86146 con un interruttore analogico MAX14689 e un set completo di LED necessari per eseguire misurazioni simultanee di FC e SpO2. Inoltre, la scheda integra un accelerometro a tre assi supportato da firmware collegato direttamente al modulo MAXM86146.

Per valutare il modulo MAXM86146 utilizzando il sistema di valutazione MAXM86146EVSYS, gli sviluppatori accendono il sistema tramite USB-C o una batteria LiPo e collegano un dongle USB BLE se necessario a un PC che esegue l'applicazione MAXM86146 EV System Software di Maxim Integrated. Questa applicazione per Windows fornisce un'interfaccia grafica utente (GUI) che permette di modificare facilmente le impostazioni di MAXM86146 e di osservare immediatamente i risultati presentati sotto forma di grafici dei dati. Oltre a fornire l'accesso ai registri di MAXM86146, l'interfaccia grafica offre menu intuitivi per l'impostazione di diverse modalità operative e configurazioni. Ad esempio, gli sviluppatori possono usare la scheda di modalità GUI per impostare diverse sequenze di LED (Figura 4, in alto), e usare la scheda di configurazione GUI per applicare quelle sequenze di LED alle misurazioni di FC e SpO2 (Figura 4, in basso).

Immagine dell'interfaccia grafica di MAXM86146 EV System Software di Maxim IntegratedFigura 4: L'interfaccia grafica di MAXM86146 EV System Software di Maxim Integrated permette agli sviluppatori di valutare le prestazioni di MAXM86146 definendo diverse modalità operative, come le sequenze di LED (in alto) e quindi utilizzare tali sequenze (in basso) per la misurazione della frequenza cardiaca e di SpO2. (Immagine per gentile concessione di Maxim Integrated)

Per lo sviluppo di software personalizzato, Maxim Integrated fornisce il pacchetto software Wearable HRM & SpO2 Algorihm for MAXM86146. Poiché MAXM86146 fornisce misurazioni di frequenza cardiaca e SpO2 utilizzando il firmware del microcontroller integrato, l'estrazione dei dati dal dispositivo è un processo semplice. Il pacchetto software di Maxim Integrated mostra la procedura per l'inizializzazione del dispositivo, per la lettura dei dati dal buffer FIFO MAXM86146 e per l'analisi dei singoli elementi (Listato 1).

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

Listato 1: Un frammento del pacchetto software di Maxim Integrated mostra la tecnica di base per l'estrazione delle misurazioni e di altri dati dal modulo di biorilevamento. (Codice per gentile concessione di Maxim Integrated)

Il listato 1 illustra l'uso della routine in lingua C execute_data_poll() per restituire una serie di letture della frequenza cardiaca e di SpO2 da MAXM86146. Qui, il codice legge il buffer FIFO del dispositivo nel buffer databuf locale e quindi mappa il contenuto di databuf in istanze di alcune diverse strutture software in lingua C. Insieme alla memorizzazione dei dati di configurazione e di altri metadati in quelle istanze della struttura, la routine fornisce infine le misurazioni di frequenza cardiaca e di SpO2 in mesOutput, un'istanza della struttura mes_repor_t. Gli sviluppatori possono semplicemente decommentare la dichiarazione finale di stampa per visualizzare il risultato sulla console.

Per l'implementazione di un indossabili per la salute e il fitness , il software e l'hardware MAXM86146 semplificano notevolmente lo sviluppo. Tuttavia, per i dispositivi destinati a ottenere l'approvazione da parte della U.S. Food and Drug Administration (FDA), gli sviluppatori devono eseguire test appropriati per verificare che le prestazioni dei loro prodotti finali soddisfino i mandati. Sebbene MAXM86146 di Maxim Integrated e i suoi algoritmi incorporati forniscano prestazioni di misurazione accettabili per FDA, gli sviluppatori dovranno garantire che il loro intero sistema - non solo il sensore - soddisfi i requisiti prestazionali FDA.

Conclusione

L'interesse per i dispositivi indossabili in grado di fornire misurazioni accurate di frequenza cardiaca e SpO2 continua ad aumentare ed è alimentato più di recente dal ruolo che riveste la SpO2 nel monitoraggio dei sintomi della malattia da COVID-19. Sebbene i biosensori specializzati possano fornire queste misurazioni, esistono al momento poche soluzioni in grado di soddisfare la domanda di dispositivi più piccoli capaci di prolungare la durata della batteria in dispositivi multifunzione e compatti da indossare. Come mostrato, un minuscolo modulo di biorilevamento di Maxim Integrated, supportato da un kit di prototipazione rapida, offre un'alternativa efficace, fornendo misurazioni conformi a FDA con un consumo energetico minimo.

DigiKey logo

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.

Informazioni su questo autore

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk ha più di 20 anni di esperienza come autore sull'industria elettronica e ha scritto su una vasta gamma di argomenti tra cui hardware, software, sistemi e applicazioni, incluso l'IoT. Ha ricevuto un Ph.D. in neuroscienze sulle reti neuronali e ha lavorato nel settore aerospaziale su sistemi di sicurezza ampiamente distribuiti e sui metodi di accelerazione algoritmica. Attualmente, quando non scrive articoli su tecnologia e ingegneria, lavora su applicazioni di deep learning per i sistemi di riconoscimento e di raccomandazione.

Informazioni su questo editore

Editori nordamericani di DigiKey