Come costruire un saturimetro

Come costruire un saturimetro rudimentale con Arduino, modificando un sensore KY-039 per il battito cardiaco.

April 25, 2020

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:

Un saturimetro bello e fatto può costare meno di 30 euro su Amazon.

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:

sensore KY-039 heartbeat sensor arduino
Il sensore KY-039

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.

Il dito attraversato dal segnale emesso dal led infrarosso

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:

Pulsazioni misurate col fotodiodo e la luce infrarossa

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:

Il sensore KY-039 modificato con l’aggiunta del led rosso

Con il sensore KY-039 modificato si possono ottenere i due segnali (IR sopra e ROSSO sotto):

I due segnali con IR e ROSSO letti col sensore KY-039 modificato

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.

Questo grafico viene dalla tesi di Andrea de Pascalis del Politecnico di Milano

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.

Author

I'm a software engineer, an everyday web developer and a maker. I usually build sites with PHP, within or without WordPress. I build Internet of Things with Arduino and ESP8266. I'm the founder of Rockit.it and Dailybest.it and I'm actually the Chief Technical Officer of Better Days web agency.

Comments on “Come costruire un saturimetro”

Leave a Reply

Your email address will not be published. Required fields are marked with an *

Recommended

Hacking del sistema di irrigazione Claber

Modificare il sistema di irrigazione della Claber per utilizzarlo con Arduino e una app realizzata ad hoc

November 1, 2019

Dart Fener parlante con Arduino Nano e DF player mini mp3

Un Dart Fener parlante: ti metti davanti a lui e gli parli e lui risponde con delle frasi del film, rigorosamente a caso

April 23, 2018

Stampare PCB per i progetti con Arduino non è difficile (parte II)

Tra i miglioramenti possibili, uno dei più affascinanti e complessi è passare dalla breadboard al circuito stampato, cioè passare dall'ammasso di fili e componenti saldati o precariamente connessi al supporto solido, professionale e compatto della scheda elettronica.

June 9, 2020

Dalla breadboard al circuito stampato (parte I)

Stufo di saldare? Proviamo a fare i PCB

May 8, 2020

Trasformazione di uno zaino vintage di Millet Walter Bonatti

Retrofitting di un vecchio zaino, hacking di un oggetto vintage, l'ho migliorato? O l'ho peggiorato?

February 9, 2020

Collegare il condizionatore al wifi

Il condizionatore di casa non è connesso ad Internet e non può essere azionato da remoto, possiamo migliorarlo e renderlo IOT? Ecco come controllare il condizionatore da remoto.

June 16, 2019