This shows you the differences between two versions of the page.
pm:prj2021:avaduva:pulsoximetru [2021/04/25 22:51] diana.giosan |
pm:prj2021:avaduva:pulsoximetru [2021/06/02 03:17] (current) diana.giosan |
||
---|---|---|---|
Line 7: | Line 7: | ||
===Descriere generala=== | ===Descriere generala=== | ||
Pentru a crea senzorul de puls si saturatie voi folosi o pereche de leduri- rosu si infrarosu si un fototranzistor care suporta lungimi de unda de pana la 880nm.Intrucat lumina rosie(660nm) este absorbita mai bine de hemoglobina oxigenata, iar infrarosul(940nm) este absorbit mai bine de hemoglobina neoxigenata, pot folosi un led rosu pentru a face o comparatie cu masuratorile facute pentru led-ul cu infrarosu, determinand astfel saturatia de oxigen. Saturatia de oxigen este definita ca fiind hemoglobina oxigenata/hemoglobina totala. Degetul este plasat intre emitator si receptor, si astfel putem determina curentul generat de receptor folosind lumina care ajunge de la emitator, prin deget, la acesta. In momentul in care inima pompeaza sangele, se modifica si lumina absorbita de receptor, si astfel putem determina pulsul. Odata ce am prelucrat semnalul de la senzor si am eliminat sursele de zgomot este de ajuns sa numar varfurile pentru a putea determina numarul de batai pe minut. | Pentru a crea senzorul de puls si saturatie voi folosi o pereche de leduri- rosu si infrarosu si un fototranzistor care suporta lungimi de unda de pana la 880nm.Intrucat lumina rosie(660nm) este absorbita mai bine de hemoglobina oxigenata, iar infrarosul(940nm) este absorbit mai bine de hemoglobina neoxigenata, pot folosi un led rosu pentru a face o comparatie cu masuratorile facute pentru led-ul cu infrarosu, determinand astfel saturatia de oxigen. Saturatia de oxigen este definita ca fiind hemoglobina oxigenata/hemoglobina totala. Degetul este plasat intre emitator si receptor, si astfel putem determina curentul generat de receptor folosind lumina care ajunge de la emitator, prin deget, la acesta. In momentul in care inima pompeaza sangele, se modifica si lumina absorbita de receptor, si astfel putem determina pulsul. Odata ce am prelucrat semnalul de la senzor si am eliminat sursele de zgomot este de ajuns sa numar varfurile pentru a putea determina numarul de batai pe minut. | ||
- | Schema bloc: | + | ==Schema bloc:== |
+ | {{pm/prj2021/avaduva/schema-bloc-pulsoximetru.png}} | ||
+ | ===Schema electrica=== | ||
+ | {{pm/prj2021/avaduva/diana.giosan.png?500}} | ||
+ | Mentionez ca nu am gasit un ecran oled i2c similar cu al meu in acest tool, asa ca am folosit un ecran | ||
+ | lcd, asa cum l-as fi legat pe acesta. De asemenea, am folosit un receptor cu infrarosu pentru a inlocui | ||
+ | fototranzistorul lpt880A pe care l-am folosit eu in realitate. | ||
===Hardware Design=== | ===Hardware Design=== | ||
Lista componente: | Lista componente: | ||
* Arduino UNO | * Arduino UNO | ||
- | * emitator infrarosu | + | * led infrarosu |
- | * buzzer | + | * buzzer piezoelectric |
- | * receptor infrarosu | + | * fototranzistor lpt80a |
* led rosu | * led rosu | ||
- | * rezistente | + | * rezistente(10k, 330ohmi) |
* led alb | * led alb | ||
- | * ecran oled | + | * ecran oled 0.96" |
* fire | * fire | ||
* breadboard | * breadboard | ||
===Software design=== | ===Software design=== | ||
+ | ==Mediu de dezvoltare== | ||
+ | Arduino IDE | ||
+ | ==Librarii si surse 3rd party== | ||
+ | * Adafruit GFX Graphic Library | ||
+ | * Adafruit SSD1306 | ||
+ | ==Surse si functii implementate== | ||
+ | * Functia de setup care porneste ecranul si seteaza pinii pentru cele doua leduri si fototranzistor si buzzer | ||
+ | * Functia loop care citeste semnalele obtinute si afiseaza pe display o mapare intre rezultatele obtinute facand media ultimelor citiri si o calibrare facuta folosind un pulsoximetru cumparat(astfel incat valorile sa | ||
+ | se inscrie in niste limite care sa aiba sens dpdv medical). | ||
===Rezultate obtinute=== | ===Rezultate obtinute=== | ||
+ | Link demo: | ||
+ | https://youtu.be/t1Lrz6p9ipo | ||
===Concluzii=== | ===Concluzii=== | ||
+ | Am observat ca facand calibrarea cu pulsoximetrul comercial, valorile pentru saturatia de oxigen sunt | ||
+ | destul de ok, acceptabile avand in vedere ca in mod normal saturatia unui om sanatos variaza undeva intre 95% si 100%. | ||
+ | Totusi, apar erori din cauza faptului ca pulsoximetrele de obicei sunt incastrate intr-un invelis protector, menit | ||
+ | sa inlature zgomotul produs de lumina ambientala, pentru rezultate mai uniforme(se poate observa ca in cazul meu | ||
+ | valorile pot sari uneori de 100%, iar in cazul pulsului apar uneori valori chiar foarte mari, datorate fie miscarii | ||
+ | involuntare a degetului pe moment, fie altor factori disturbatori din mediul inconjurator. Este important de mentionat ca | ||
+ | in lipsa unui astfel de invelis, si tinand cont de faptul ca piesele asezate pe breadbord sunt destul de fragile(ca pozitie) | ||
+ | si ca orice miscare mai neobisnuita a degetului poate influenta semnalele, datele nu sunt chiar uniforme. | ||
+ | Totusi, consider ca pentru aceste conditii si tinand cont inclusiv de lipsa mea de expertiza in domeniul medical, proiectul | ||
+ | a fost unul reusit, intrucat valorile saturatiei sunt destul de similare cu ce as obtine la un pulsoximetru. | ||
+ | Daca as mai avea timp sa mai adaug imbunatatiri acestui proiect, as incerca sa mai reduc din zgomot, adaugand un fel de capac aranjamentului si de asemenea, as cauta o functie sau o metoda mai buna de a calcula media semnalelor in cazul pulsului(acolo am obtinut rezultate de o acuratete mai proasta). | ||
===Download=== | ===Download=== | ||
+ | https://ocw.cs.pub.ro/courses/pm/prj2021/avaduva/pulsoximetru?do=export_pdf | ||
+ | {{pm/prj2021/avaduva/pulsoximetru-diana.giosan.zip}} | ||
===Bibliografie/Resurse=== | ===Bibliografie/Resurse=== | ||
+ | https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/ | ||
+ | https://iopscience.iop.org/article/10.1088/1742-6596/1793/1/012068/pdf | ||
+ | https://www.instructables.com/Arduino-Pulse-Oximeter/ | ||
~~NOTOC~~ | ~~NOTOC~~ | ||