In questo periodo di isolamento da Covid-19, ho deciso di costruirmi un saturimetro, lo strumento che si utilizza per misurare l’ossigeno nel sangue. Ho descritto questo progetto ampiamente qui.
Lo riporto in parte qui per averlo in archivio.
Non sono un esperto di strumenti medicali, pertanto sono certo che quello che ho realizzato non sia un prodotto valido come strumento, ma senza dubbio è valido come prototipo didattico per capire come funzionano questo tipo di strumenti.
Questo è un saturimetro bello e pronto che si può comprare online:
Per fare un saturimetro servono 2 led e un fotodiodo
Questo progetto nasce dalla modifica di un sensore per il battito cardiaco, un sensore KY-039 che ho trovato all’interno di un kit di sensori per Arduino. Questo sensore è costituito da un foto diodo sensibile alla luce, da una led ad infrarossi e da un paio di resistenze. E’ questo:
Mettendo il dito tra il led ad infrarossi e il foto diodo si può leggere un segnale variabile nel tempo che è proporzionale al fluire del sangue nelle vene del dito.
Parte del segnale emesso dal led viene assorbito dall’unghia, dalla pelle e parte dal sangue. Mentre il resto del dito è costante nel tempo, il sangue nelle vene del dito cambia con le pulsazioni del cuore.
Per leggere il segnale bisogna un po’ lottare con i numeri e seguendo questa spiegazione si riescono ad ottenere risultati utili:
Nello stesso articolo di Joahn Ha che ho linkato è spiegato come individuare i picchi.
Contando i picchi e tenendo conto del tempo che passa si riesce a determinare la durata di un battito, cioè il tempo che passa tra una curva che sale e la successiva.
Contando i battiti in un minuto si hanno i bpm
, cioè le pulsazioni.
Per misurare la saturazione ci vuole un altro led, a luce rossa, per effettuare le stesse misure. Questo perché la luce rossa viene assorbita meglio dall’ossigeno e quindi si può confrontare i due segnali, rosso e infrarosso, per determinare la quantità di sangue ossigenato rispetto al totale del sangue. Questa frazione tra le due misure è la saturazione.
Ho quindi modificato il sensore aggiungendo un secondo led, rosso:
Con il sensore KY-039 modificato si possono ottenere i due segnali (IR sopra e ROSSO sotto):
Con i due segnali possiamo definire un valore detto R:
R = Rnum / Rden
Dove numeratore e denominatore sono così definiti:
Rnum = (ROSSOmax - ROSSOmin ) / ROSSOmin
Rden = (IRmax - IRmin) / IRmin
La saturazione espressa in percentuale che viene indicata sul saturimetro è detta SpO2%
ed è proporzionale al parametro R
. (Info da qui)
Quindi dobbiamo calcolare i massimi e i minimi dei battiti sia per il segnale IR che per quello ROSSO.
La durata del battito oltre a misurare il bpm
ci serve per determinare i campioni da esaminare per trovare il massimo e il minimo. Tenendo infatti traccia dei campioni letti e del tempo corrispondente, possiamo esaminare gli N
campioni che compongono il battito e trovare il massimo e il minimo.
Con Max e Min delle due curve, calcolo R per ogni battito.
Il parametro R, ad ogni battito permette di calcolare SpO2%
e approssimando la curva qua sopra con una retta, Y=k*X + m
, e usando un altro saturimetro come riferimento possiamo ottenere k
e m
che saranno due valori di calibrazione tipici del nuovo strumento.
Il risultato non è perfetto e risente molto della luce ambientale.
Ho aggiunto uno schermo lcd per visualizzare i risultati e sullo schermo viene eseguito il plotting delle due curve IR e ROSSO.
Qui i sorgenti per Arduino IDE.
Il progetto è anche disponibile su Hackaday alla pagina Oximeter Do It Yourself.
Alcune immagini aggiuntive:
Il problema della luce ambientale
Utilizzando il sensore modificato per qualche giorno ho notato che riceve comunque molta luce dall’ambiente circostante, anche se il dito copre completamente il fotodiodo. Sicuramente, quindi, parte della difficoltà di misura è data dalla luce dell’ambiente che va quindi tolta.
Se semplicemente copriamo il sensore con un panno nero, però, il nostro fotodiodo non riceve abbastanza luce dai due led e diventa impossibile leggere anche le pulsazioni.
Ho quindi immaginato che la sensibilità del fotodiodo sia legata alla luce totale che riceve, con segnali bassi è meno precisa, con segnali alti è più precisa. Ho provato ad aggiungere un terzo led, questa volta un led bianco, che resta sempre accesso. Inoltre copro tutto il sensore con un panno nero, eliminando così la variabilità dell’ambiente.
Di seguito potete vedere il sensore con 3 led:
In questo modo le misure sono stabili in qualunque luce ambientale vengano effettuate.
Nel video seguente si può vedere come in pochi secondi il sensore riesca a leggere il battito cardiaco e a calcolare la saturazione. Nel video il parametro c
indica il numero di misure consecutive stabili lette. Rispetto al video precedente è stata migliorata anche l’interfaccia, c’è un simbolo a cuore che compare vicino alle indicazione dei bpm
durante l’identificazione dei picchi.