Sommario:
- Passaggio 1: breve descrizione
- Passaggio 2: alimentazione LiPo - Schemi, parti e assemblaggio
- Fase 3: Ricevitore HR e registratore di dati - Schemi, parti e assemblaggio
- Passaggio 4: ricevitore HR - Simulazione delle spezie
- Passaggio 5: software
- Passaggio 6: configurazione iniziale e test
- Passaggio 7: utilizzo - Analisi del segnale medico
Video: Registratore di dati cardio: 7 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Sebbene al giorno d'oggi siano disponibili molti dispositivi portatili (smartband, smartwatch, smartphone, …) in grado di rilevare la frequenza cardiaca (FC) ed eseguire analisi del tracciato, i sistemi basati su cinture a fascia toracica (come quello nella parte superiore dell'immagine) sono ancora diffuso e utilizzato, ma privo della possibilità di registrare ed esportare la traccia delle misure.
Nel mio precedente Instructable Cardiosim ho presentato un simulatore di fascia toracica (Cardio) spiegando che uno dei miei prossimi passi è stato quello di sviluppare un registratore di dati della frequenza cardiaca. Ora sono pronto per presentarlo in questo Instructable. La funzione di questa unità portatile è quella di ricevere il segnale FC inviato da una fascia toracica (o dal simulatore Cardiosim) durante una sessione di allenamento (allenamento/ciclismo/corsa, …) e di registrare il tracciato su una scheda SD, al fine di eseguire un'analisi delle prestazioni dopo l'allenamento (vedere i dettagli nell'ultimo capitolo).
L'unità è alimentata da un sistema di batterie ricaricabili, compreso il circuito di carica e il regolatore boost DC.
Dal mio "magazzino" di materiale inutilizzato ho ripescato un'apposita custodia in plastica (135mm x 45mm x 20mm) e ho adattato ad essa il layout del circuito per far combaciare, realizzando un prototipo funzionante che soddisfa le mie esigenze (ma la cui realizzazione lascia spazio a miglioramento:-))
Passaggio 1: breve descrizione
Fare riferimento al passaggio 1 del Cardiosim Instructable per una rapida introduzione sulla tecnologia LFMC (Low Frequency Magnetic Communication) utilizzata da questo tipo di dispositivi.
La mia prima intenzione era quella di utilizzare il modulo Sparkfun RMCM01 come interfaccia del ricevitore, ma questo prodotto non è più disponibile (per non parlare del fatto che era comunque piuttosto costoso).
Tuttavia, cercando sul WEB, ho trovato questo interessante Tutorial, che mostra alcune soluzioni alternative per sostituire l'RMCM01. Ho scelto la 3° opzione ("Peter Borst Design", grazie Peter!), ottenendo un ottimo risultato utilizzando gli stessi componenti L/C del Cardiosim, qui però collegati come cassa risonante in parallelo. Il segnale rilevato viene amplificato, "pulito", decodificato e inoltrato a un microcontrollore Arduino Pro Mini. Il programma convalida gli impulsi ricevuti, misura la frequenza cardiaca (o meglio l'intervallo tra due impulsi successivi) e memorizza tutti gli intervalli misurati in un file di testo ASCII (una riga per impulso valido, 16 caratteri ciascuno compreso intervallo, timestamp e LF/CR) nella scheda microSD. Supponendo una FC media di 80 bpm, un'ora di registrazione richiede solo (4800 righe di testo x 16 caratteri) = 76800 / 1024 = 75 kBytes, quindi anche una scheda SD da 1 GB economica offre molta capacità di registrazione.
Durante la registrazione è possibile inserire delle linee marker per suddividere il tracciato e valutare separatamente le diverse fasi della sessione.
Passaggio 2: alimentazione LiPo - Schemi, parti e assemblaggio
L'alimentatore occupa la parte inferiore del case. Ad eccezione del trimpot, nessun componente supera l'altezza di 7 mm, il che dà spazio per montare il ricevitore HR e il circuito del microcontrollore sopra l'alimentatore.
Ho usato le seguenti parti:
- Batteria LiPo da 3,7 V (qualsiasi batteria del telefono può essere riciclata, la capacità ridotta non è un problema qui)
- Modulo di ricarica USB TP4056, l'ho comprato qui
- Convertitore boost DC SX1308, l'ho comprato qui
- Tavola piccola per prototipazione 40 x 30 mm
- Cavo con connettore JST 2, 54mm 2 pin, come questo
- (opzionale) Connettore JST 2mm 2 pin, come questo
-
(opzionale) Cavo con connettore JST 2mm 2 pin, come questo
L'utilizzo degli ultimi due elementi dipende dalla batteria che utilizzerai e dal modo in cui intendi collegarla al modulo caricabatterie. Suggerisco il connettore JST da 2mm perché molte batterie vengono consegnate con cavo già attaccato e spina da 2mm, qualsiasi altra soluzione è adeguata purché permetta una facile sostituzione della batteria in caso di necessità. In ogni caso fare attenzione ad evitare cortocircuiti tra i poli della batteria durante il montaggio.
Il modulo TP4056 è alimentato da una porta micro USB ed è progettato per caricare batterie al litio ricaricabili utilizzando il metodo di carica a corrente costante/tensione costante (CC/CV). Oltre a caricare in sicurezza una batteria al litio, il modulo fornisce anche la protezione necessaria richiesta dalle batterie al litio.
L'SX1308 è un Convertitore DC/DC Step Up ad alta efficienza che mantiene costante la tensione di uscita a +5V con una tensione di ingresso minima di 3V, permettendo così il completo sfruttamento della capacità della batteria. Regolare la tensione di uscita con il trimpot a +5V prima di collegare il circuito del microcontrollore!
Il consumo totale del Data Logger è di circa 20mA, quindi anche una batteria usata con una capacità residua di 200mAh (< 20% della capacità iniziale di una nuova batteria del telefono) consentirà 10 ore di registrazione. L'unico inconveniente è che la corrente di riposo dell'SX1308 è di circa 2mA, quindi è meglio scollegare la batteria se non si utilizza il Data Logger per molto tempo.
A causa delle ridotte dimensioni, entrambi i moduli necessitano di essere fissati utilizzando i fori di connessione sia elettrica che meccanica con la scheda di prototipazione, tramite brevi spezzoni di filo di rame. A sua volta la scheda è fissata alla base del case con una vite 3mm x 15mm (la lunghezza è sufficiente per fissare il circuito del microcontrollore sopra con la stessa vite). La scheda ospita il connettore JST 2mm per la batteria (disponibile solo in versione SMD, ma piegando i pin in verticale si può "girare" in versione PTH) e tutti i cablaggi secondo gli schemi. Per sicurezza ho incollato il corpo del connettore alla scheda ottenendo una buona tenuta meccanica.
La batteria è posizionata piatta nella restante area del fondo del case, e dietro di essa c'è una seconda vite da 3mm x 15mm con un distanziale verticale da 8mm per evitare contatti tra la parte superiore della batteria (che è comunque isolata) e la parte inferiore del circuito superiore.
Fase 3: Ricevitore HR e registratore di dati - Schemi, parti e assemblaggio
La scheda principale è composta da:
- Scheda di prototipazione 40 mm x 120 mm
- Induttanza 39mH, ho usato BOURNS RLB0913-393K
- 2 x condensatore 22nF
- Condensatore 4.7nF
- Condensatore 47nF
- Condensatore 39pF
- Condensatore elettrolitico 10uF/25V
- Condensatore elettrolitico 1uF/50V
- 3 x resistore 10K
- 2 x resistore 100K
- 3 x resistore 1K
- 4 x resistore 220R
- Resistenza 1M
- Resistenza 47K
- Resistenza 22K
- Trimpotto 50K
- Diodo 1N4148
- LED 3mm blu
- 2 x LED 3mm verde
- LED 3mm Giallo
- LED 3mm Rosso
- Amplificatori operazionali a doppio ingresso JFET a basso rumore TL072P
- Trigger Schmitt con inversione esadecimale 74HC14
- Connettore JST 2,54 mm 2 pin, come questo
- 2 x microinterruttori, tipo Alcoswitch
- Microcontrollore Arduino Pro Mini, 16MHz 5V
- Modulo scheda micro SD SPI 5V di DFRobots
La frequenza di risonanza del serbatoio risonante parallelo composto da L1 e C1 è di circa 5,4kHz, che corrisponde abbastanza vicino ai 5,3kHz della portante del campo magnetico del segnale trasmesso per convertirlo in una tensione. Si ricorda che, nella maggior parte dei casi, la portante è modulata sulla base di un semplice formato OOK (On-OFF Keying), dove ogni battito cardiaco commuta la portante "ON" per circa 10ms. Il segnale rilevato è molto debole (tipicamente un'onda sinusoidale da 1mV ad una distanza di 60-80cm dalla sorgente, purché l'asse dell'induttanza sia correttamente allineato con il campo magnetico), quindi necessita di essere amplificato con attenzione per evitare interferenze e falsificazioni rilevamenti. Il circuito proposto è il risultato dei miei migliori sforzi e di ore di test in diverse condizioni. Se sei interessato ad approfondire questo aspetto - e magari migliorarlo - dai un'occhiata al passaggio successivo, altrimenti puoi saltarlo.
Le seguenti porte Schmitt Trigger eseguono la digitalizzazione e una funzione di rilevamento del picco, ripristinando il segnale modulante originale, che viene inoltrato all'Arduino Pro Mini.
La scheda a microcontrollore Pro Mini è perfetta per questo progetto perché il cristallo a bordo permette un'elevata precisione delle misurazioni (fondamentali dal punto di vista "medico", vedi ultimo passaggio), e allo stesso tempo è esente da qualsiasi altro dispositivo non necessario, che si traduce in un basso consumo energetico. L'unico inconveniente è che per caricare il codice avrai bisogno di un'interfaccia FTDI per collegare il Pro Mini alla porta USB del tuo computer. Il Pro Mini è collegato a:
- Interruttore S1: avvia la registrazione
- Interruttore S2: inserire Marker
- LED blu: lampeggia quando viene rilevato un impulso valido
- LED verde: registrazione avviata
- LED giallo: Marker inserito (lampeggio breve) / Timeout (fisso)
- Modulo scheda MicroSD (tramite bus SPI)
A differenza di molti moduli per schede SD che funzionano a 3,3 V, il modulo DFRobot funziona a 5 V, quindi non è necessario alcun cambio di livello.
Per quanto riguarda l'assemblaggio, noterete che ho diviso la scheda di prototipazione in due pezzi, collegati con due piccoli "ponticelli" di filo di rame rigido da 1 mm. Ciò è stato necessario per elevare il modulo della scheda MicroSD a un terzo "livello di costruzione" e allinearlo con l'incavo che ho intagliato sul case, appena sopra la fessura per la porta USB. Inoltre, ho ricavato tre incavi sulla scheda stessa, uno per accedere al potenziometro del convertitore DC/DC, un altro per accedere al connettore del bus seriale dell'Arduino Pro Mini (montato "a faccia in giù"), e il terzo per il induttanza.
Passaggio 4: ricevitore HR - Simulazione delle spezie
Partendo dal progetto di Peter Borst di cui ho parlato prima, il mio obiettivo era cercare di estendere il più possibile il raggio di rilevamento, limitando allo stesso tempo la sensibilità alle interferenze e la generazione di falsi impulsi.
Ho deciso di cambiare la soluzione originale con singolo Op-Amp perché si è rivelata troppo sensibile alle interferenze, probabilmente perché il valore del resistore di retroazione da 10M è troppo alto, e di dividere il guadagno complessivo in due stadi.
Entrambi gli stadi hanno un guadagno DC G =100, decrescente intorno a 70 @5,4KHz, ma con impedenza di ingresso differente per ottimizzare la sensibilità.
Quindi supponiamo che la tensione del segnale più debole generato dal serbatoio LC sia 1 mV.
Se trasponiamo l'intero circuito del ricevitore in un ambiente Spice (io uso ADIsimPE) sostituendo il circuito parallelo LC con un generatore sinusoidale con la stessa tensione e frequenza (5.4KHz) ed eseguiamo la simulazione, notiamo che la tensione di uscita V1 dal 1° l'amplificatore è ancora un'onda sinusoidale (a causa del fattore di scala l'onda sinusoidale in ingresso non è apprezzabile), finché l'amplificatore sta lavorando nella zona lineare. Ma dopo il secondo stadio, la tensione di uscita V2 mostra che stiamo raggiungendo la saturazione (Vhigh = Vcc-1.5V / Vlow = 1.5V). Infatti, la famiglia TL07x non è progettata per range di uscita rail to rail, ma questo è sufficiente per superare con un margine di sicurezza entrambi i livelli di soglia del gate Schmitt Trigger e generare un'onda quadra pulita (V3).
Passaggio 5: software
A causa dell'elevato guadagno dello stadio del ricevitore, e nonostante lo stadio del rilevatore di picco agisca fondamentalmente come un filtro passa basso, il segnale di ingresso sul pin D3 dell'Arduino Pro Mini può ancora essere fortemente disturbato e deve essere pre-elaborato digitalmente attraverso un controllo di validità contro falsi rilevamenti. Il codice assicura che siano soddisfatte due condizioni per considerare valido un impulso:
- L'impulso deve durare almeno 5 ms
- L'intervallo minimo accettabile tra due impulsi successivi è di 100 ms (corrispondenti a 600 bpm, ben oltre il limite di una tachicardia grave!)
Una volta convalidato l'impulso, viene misurato l'intervallo (in ms) dal precedente e memorizzato sulla scheda SD in un file "datalog.txt", insieme a un timestamp in formato hh:mm:ss, dove 00:00: 00 rappresenta l'ora dell'ultimo reset del microcontrollore. Se manca la scheda SD, il LED rosso si accende indicando l'errore.
Una nuova traccia di registrazione può essere avviata/arrestata con l'interruttore Start/Stop S1, e sarà identificata da una linea di marker ";Start" e ";Stop" rispettivamente all'inizio e alla fine del file di testo.
Se non viene rilevato alcun impulso per un tempo superiore a 2400 ms (25 bpm), nel file viene inserita una linea di marker ";Timeout" e si accende il LED giallo D4.
Se durante la registrazione viene premuto il Marker Switch S2 viene scritta nel file una riga aggiuntiva di marker nel formato ";MarkerNumber" con incremento automatico del numero di marker a partire da 0, e il LED giallo lampeggia brevemente.
In allegato il codice Arduino completo.
Passaggio 6: configurazione iniziale e test
Passaggio 7: utilizzo - Analisi del segnale medico
La forma della custodia che ho utilizzato è abbastanza simile a quella di uno smartphone da poter trovare in commercio tantissimi accessori per indossarlo o per montarlo su un attrezzo da allenamento. In particolare per la bici posso suggerire il supporto universale per smartphone denominato "Finn", prodotto dall'azienda austriaca Bike Citizens. Economico (€ 15,00) e facile da montare, è davvero universale e come potete vedere in foto perfetto anche per il Cardio Data Logger
Il modo più semplice per utilizzare i dati grezzi registrati dal Data Logger è rappresentarli in un grafico utilizzando programmi PC standard (es. Excel). Confrontando grafici ottenuti ripetendo lo stesso esercizio, o analizzando la correlazione tra variazioni di FC e sforzi fisici, è possibile ottimizzare il dosaggio delle forze durante l'attività.
Ma di maggior interesse è lo studio dell'HR, ed in particolare dell'HR Variablity (HRV), per scopi medici. A differenza di una traccia ECG, la traccia HR non contiene informazioni dirette sul funzionamento del muscolo cardiaco. Tuttavia, la sua analisi da un punto di vista statistico consente di ottenere altre informazioni di interesse clinico.
La fonte di conoscenza più completa su HRV è l'azienda finlandese KUBIOS. Sul loro sito puoi trovare molte informazioni sui segnali biomedici e puoi scaricare "KUBIOS HRV Standard", un software gratuito di analisi della variabilità della frequenza cardiaca per ricerca non commerciale e uso personale. Questo strumento consente non solo di tracciare grafici da un semplice file di testo (è necessario rimuovere i timestamp) ma anche di eseguire valutazioni statistiche e matematiche (incluso FFT) e produrre un report incredibilmente dettagliato e prezioso, come quello allegato di seguito.
Ricorda che solo un medico specializzato è in grado di decidere quali esami sono necessari per la pratica sportiva a qualsiasi livello, e di valutarne gli esiti.
Questo Instructable è stato scritto con il solo intento di creare interesse e divertimento nell'applicare l'elettronica all'assistenza sanitaria.
Spero vi sia piaciuto, i commenti sono i benvenuti!
Consigliato:
Registratore di dati GPS Cap: 7 passaggi (con immagini)
GPS Cap Data Logger: ecco un ottimo progetto per il fine settimana, se ti piace fare trekking o fare lunghi giri in bicicletta e hai bisogno di un registratore di dati GPS per tenere traccia di tutti i tuoi viaggi/giri che hai fatto… Una volta completata la costruzione e scaricato i dati dal modulo GPS del tr
Registratore di dati GPS fai-da-te per il prossimo viaggio/sentiero escursionistico: 11 passaggi (con immagini)
Registratore di dati GPS fai-da-te per il tuo prossimo viaggio/sentiero escursionistico: questo è un registratore di dati GPS che puoi utilizzare per più scopi, ad esempio se vuoi registrare il tuo lungo viaggio che hai fatto durante il fine settimana per controllare i colori dell'autunno. o hai un sentiero preferito che visiti durante l'autunno ogni anno e tu
Registratore di dati per il monitoraggio della corrente CA: 9 passaggi (con immagini)
Registratore di dati di monitoraggio della corrente CA: Ciao a tutti, benvenuti nel mio primo istruibile! Di giorno sono un collaudatore per un'azienda che fornisce apparecchiature per il riscaldamento industriale, di notte sono un appassionato di tecnologia e fai da te. Parte del mio lavoro consiste nel testare le prestazioni dei riscaldatori, o
Registratore di dati Alaska: 5 passaggi (con immagini)
Datalogger Alaska: l'Alaska è sull'orlo dell'avanzare del cambiamento climatico. La sua posizione unica di avere un paesaggio abbastanza incontaminato popolato da una varietà di canarini delle miniere di carbone consente molte possibilità di ricerca. Il nostro amico Monty è un archeologo che aiuta con
L'ultimo registratore di dati per mongolfiere ad alta quota: 9 passaggi (con immagini)
L'ultimo registratore di dati di mongolfiere ad alta quota: registra i dati di mongolfiere ad alta quota con il registratore di dati di mongolfiere d'alta quota definitivo. Un pallone meteorologico d'alta quota, noto anche come pallone d'alta quota o HAB, è un enorme pallone riempito di elio. Questi palloncini sono una piattaforma