X

Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem

02 May 2010 01:54 MBmb1988
  • Positive voted Helpful post? (+65)
    Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem

    Witam wszystkich.
    Chciałbym zaprezentować urządzenia, które wraz z dwójką przyjaciół wykonałem na zaliczenie przedmiotu Technika mikroprocesorowa na AGH. Jednocześnie tą jak i aplikacje moich kolegów będzie można oglądać na krakowskim Festiwalu Nauki 14 maja w godzinach 11:30 - 16:00, w głównym holu budynku A0 przy al. Mickiewicza, więc serdecznie zapraszam ;-).

    :arrow: Zasada działania
    Zasada pomiaru saturacji bazuje na fakcie, iż utlenowana krew (a konkretnie hemoglobina) różnie absorbuje poszczególne długości fali. W skrócie, prześwietlamy palec światłem 660nm oraz 940nm, a następnie na postawie stosunku amplitud otrzymanych sygnałów wyliczamy interesujący nas parametr. Tętno wyliczane jest na podstawie odstępu czasowego między maksimami na krzywej pletyzmograficznej.

    :arrow: Płytka główna
    Układ napędzany jest mikrokontrolerem 68HC908AB32. Przebiegi z 4-wyjściowego PWMa poprzez drobną funkcję logiczną sterują układami S&H oraz mostkiem H załączającym naprzemiennie diody. Dolne tranzystory w mostku wraz z przetwornikami C/A stanowią regulowane źródła prądowe ustalające jasność impulsów świetlnych. Sygnał pochodzący z fotodetektora jest demultipleksowany (czerwone i podczerwone impulsy trafiają do różnych torów przetwarzania), demodulowany oraz filtrowany. W kolejnym stopniu sygnał trafia na wzmacniacz o programowalnym wzmocnieniu, by wreszcie zostać spróbkowanym przez przetwornik zawarty w strukturze mikrokontrolera. Dane prezentowane są na graficznym wyświetlaczu o organizacji 192x64 pikseli. Klawiaturka została wykonana na osobnej płytce z podświetlanych guzików z naklejonym opisem. Przyciski te służą do ustawiania alarmów (spadek/wzrost tętna, spadek saturacji). Całość zasilana z zasilacza 5V. Jak widać na fotografii, drobne poprawki w schemacie ideowym zostały wprowadzane już po polutowaniu całości :P.
    Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem

    :arrow: Czujnik na palec
    Sonda na palec została wykonana z - cóż tu dużo mówić - dębowego styla od łopaty :P. Drewniany kawałek został przecięty na pół, następnie wydrążony na wiertarce stołowej. Widoczny na fotografii zawias jest uformowanym kawałkiem dużego mosiężnego zawiasu skrzydełkowego. Sprężyna pochodzi z spinki do włosów typu "paszcza z zębami" :P. Kabel to wspomnienie mojej klawiatury Logitech UltraX. W górnej części czujnika znajdują się 4 diody - 2 czerwone i 2 podczerwone połączone antyrównolegle. W spodniej natomiast znajduje się fotodioda PIN. Dodatkowo w czujniku wmontowany został kawałek gąbki, która sprawia, że zarówno na chudych jak i grubych palcach czujnik pewnie się trzyma.
    Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem
    Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem

    :arrow: Obudowa
    Z racji tego, że urządzenie przeznaczone miało być na publiczny pokaz zdecydowaliśmy, że powinno wyglądać zachęcająco i odróżniać się nieco od zwyczajowo chłodnego sprzętu medycznego. Powstała ona z aluminiowej puszki. Okienko zostało wycięte dremelem zamontowanym w stojaku. Całość wymalowana na czarny półmat sprayem. Na koniec została naniesiona grafika tą samą ręką, która zdobiła stojącego na moim biurku HDDClocka ;-).
    Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem

    Poniżej znajduje się kilka dodatkowych zdjęć oraz filmik z działania układu (alarm był akurat nastawiony na 75 uderzeń na minutę). Na razie zamieszczam jedynie schemat ideowy (prawie finalny), gdyż reszta dokumentacji wymaga dopracowania przed publikacją. Wszystkich ciekawych zapraszam raz jeszcze na prezentację 14 maja, a już teraz do dyskusji.
    Pozdrawiam :).
    Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem



    Link
  • #2 02 May 2010 07:00
    parafka
    Level 20  
    Helpful post? (0)
    Projekt bardzo ciekawy. Obawiam sie jednak, że komunikat o braku palca może nieco fałszować szybkość tętna. :sm31:
    Czy możesz opisać w skrócie dlaczego trzeba stosować dwie długości fali świetlnej?
    Nie wystarczy jeden kolorek?
    Gratuluję udanej konstrukcji.
  • #3 02 May 2010 08:40
    Kuniarz
    Level 35  
    Helpful post? (0)
    Projekt ciekawy i świetnie wykonany, natomiast nad komunikatem "BRAK PALCA" i ikonką dłoni bez jednego palucha to bym się zastanowił :D
    Może napisz coś w stylu "załóż czujnik" itp.
  • #4 02 May 2010 08:59
    piotrva
    Moderator Mikrokontrolery
    Helpful post? (0)
    Bardzo ciekawy projekt, estetycznie wykonany.
    Mógłbyś tylko zamieścić zdjęcia "mechanizmu" czujnika (elementów optoelektronicznych)?
    Co do komunikatu o braku palca to ja nie mam zastrzeżeń ;-)
    PS. Czy nie uczy Cię może Pan dr Jacek Kołodziej?
  • #5 02 May 2010 09:04
    mb1988
    Level 12  
    Topic author Helpful post? (0)
    Komunikat o braku palca to powiedzmy studenckie, żartobliwe podejście do tematu - jak już wspomniałem, sprzęt nie trafi nigdy do szpitala :P.

    Pomiar wykonywany jest natomiast dla dwóch długości fali, ponieważ uniezależnia od wynik od czynników takich jak grubość skóry, kości czy brud na paznokciu. Sygnał na wyjściu wzmacniacza wejściowego na około 2,5V składowej stałej i 20 mV składowej zmiennej. Składowa stała odpowiada tłumieniu wprowadzanemu przez kości, tkanki, krew żylną i niepulsującą krew tętniczą. Pulsująca krew tętnicza wprowadza natomiast tą malutką składową zmienną. W dawnych czasach, gdy dziedzina dopiero się rozwijała przeprowadzano pomiar dla jednej długości fali, jednak wymagało to uprzedniego - uwaga - ściśnięciu palca tak mocno, żeby udopłyneła z niego cała krew, by można oszacować jakie tłumienie wprowadzają wyłącznie wyżej opisane tkanki, a dopiero potem przeprowadzona pomiar składowej zmiennej.

    Po południu wrzucę kilka dodatkowych zdjęć czujnika. A Pan dr Kołodziej jest między innymi jednym z moich prowadzących ;).
  • #6 02 May 2010 09:09
    elektronik999
    Level 26  
    Helpful post? (0)
    parafka wrote:
    Czy możesz opisać w skrócie dlaczego trzeba stosować dwie długości fali świetlnej?
    Nie wystarczy jeden kolorek?

    To mniej więcej jest tak, że utleniona krew pochłania jeden kolor a krew która już oddała tlen inny.
  • #7 02 May 2010 09:17
    mb1988
    Level 12  
    Topic author Helpful post? (0)
    Dokładnie. I na podstawie analizy amplitud sygnału możemy ustalić ile procent krwi tęczniczej jest natlenione, a ile nie.
  • #8 02 May 2010 09:26
    tmf
    Moderator Mikrokontrolery Projektowanie
    Helpful post? (0)
    Świetny projekt. Mam pytanie techniczne - dlaczego zastosowałeś dwa oddzielne tory przetwarzania? Nie dało się tego zrobić w jednym?
    A druga uwaga nomenklaturowa - hemoglobina połączona z tlenem to hemoglobina utlenowana - nie natlenowana, ani broń Boże utleniona. Utleniona hemoglobina to methemoglobina - czyli nic dobrego :)
  • #9 02 May 2010 09:32
    M. S.
    Level 34  
    Helpful post? (0)
    Jak wyskalowałeś zawartość tlenu we krwi? Czy pomiar ten jest niezależny od "parametrów" palca - grubość skóry, czystość itp.?
  • #10 02 May 2010 09:43
    IoNcs
    Level 15  
    Helpful post? (0)
    Czy pomiary były porównywane z innymi urządzeniami tego typu?
  • #11 02 May 2010 09:47
    bialy20
    Level 18  
    Helpful post? (0)
    Czy wzorowaliście się na fabrycznych urządzeniach? Kiedy i gdzie będzie można kupić Wasz pulsoksymetr???
  • #12 02 May 2010 09:52
    mb1988
    Level 12  
    Topic author Helpful post? (0)
    Jeśli chciałbym zastosować jeden tor przetwarzania demultipleksację i filtrację musiałbym przeprowadzać już po spróbkowaniu sygnału. Zastosowany procek nie jest procesorem sygnałowym więc zastosowanie innych filtrów niż moving average staje się nieco kłopotliwe.

    Aplikacja została napisana w ten sposób, że układ dostosowuje punkt pracy diod, oraz wzmocnienie w torze przetwarzania w zależności od grubości palca badanej osoby.

    Przyrząd nie był kalibrowany, korzystam jedynie ze znanych empirycznych zależności. Kalibracja przyrządu wymagałaby znalezienia grupy ochotników, którzy zechcą najpierw przebadać się moim przyrządem, a następnie oddadzą krew, która zostanie przetestowana w laboratorium by już innymi metodami dokładnie określić, zawartość tlenu (sądząc po cenach takich urządzeń koszty otrzymania certyfikatu nie są małe). Przyrząd nie był również porównywany z prawdziwymi pulsoksymetrami, ponieważ nie mam dostępu do takowych urządzeń. Jednak, na grupie kilku osób, które przebadałem wynik odpowiadał typowemu dla zdrowego człowieka czyli 95% - 99%. A że moi znajomi na chorych nie wyglądali... :P. Pamiętajmy, że projekt ten ma na celu zobrazowanie jedynie idei pomiaru i nie może być stosowany w żadnej diagnostyce.
  • #13 02 May 2010 11:28
    adamus202
    Level 11  
    Helpful post? (0)
    A ja mam pytanie co to jest za mikrokontroler i w jakim języku został napisany program do niego?
  • #14 02 May 2010 11:38
    Tomekddd
    Level 23  
    Helpful post? (0)
    Bardzo ciekawe urządzenie ;) zawsze zastanawiałem sie jak to działa. Ja zrobiłem "bezinwazyjny miernik przepływu krwi" na OIT i też chciałem do niego dołożyć coś takiego tylko że nie bardzo wiedziałem jak to zmajstrować. Teraz znam zasadę działania to może coś wykombinuję.

    Heh a co robiłeś ze Ci tak tętno skakało? :D

    Dodano po 1 [minuty]:

    Ciekawi mnie też ta grafika, czy to jest na pomalowanej czarnej plexi? i podświetlone od spodu?
  • #15 02 May 2010 11:54
    BartekLecki
    Level 13  
    Helpful post? (0)
    adamus202 wrote:
    A ja mam pytanie co to jest za mikrokontroler i w jakim języku został napisany program do niego?


    To jest Motorolka, obecnie Freescale
    http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=HC08AB&fsrch=1

    w jakim języku (C czy asembler) to musi się już autor wypowiedzieć ;)

    Bardzo fajny projekt. Gratulacje!
  • #16 02 May 2010 11:55
    mb1988
    Level 12  
    Topic author Helpful post? (0)
    Procek to 8-bitowy CISC-owy mikrokontroler firmy Freescale. Program w całości został napisany w C.

    Grafika może w tym świetle wygląda jak podświetlaną, aczkolwiek tak nie jest. Została naniesiona na pomalowanym już pudełku farbkami do zdobienia ceramiki.

    Co do niemiarowości bicia mojego serca: specjalnie podczas nagrywania filmiku momentami wstrzymywałem oddech, żeby aktywować alarm :P. Wstrzymanie oddechu powoduje praktycznie natychmiastowy wyraźny spadek tętna.
  • #17 03 May 2010 17:49
    naelektryzowany
    Level 17  
    Helpful post? (0)
    Witam jaką metodą zostały wykonane płytki bo efekt jest fenomenalny - żadnych pod trawień itd.
  • #18 03 May 2010 19:42
    mb1988
    Level 12  
    Topic author Helpful post? (0)
    Płytki wykonane metodą fotochemiczną. Zastosowałem laminat firmy Bungard, fabrycznie zapsikany lakierem światłoczułym. Maska została wydrukowana drukarką atramentową na specjalnie do tego przystosowanej folii. Do naświetlania użyłem solarium do twarzy. Czas naświetlania - 4 minuty. W domowych warunkach chyba nie da się uzyskać już lepszej jakości, do tego powtarzalność rezultatów jest niemalże 100% procentowa. Laminat jest co prawda droższy, ale za to płytka jest gotowa do trawienia po 5 minutach od momentu, gdy maska wyjedzie z drukarki a to też nie jest bez znaczenia.
  • #19 03 May 2010 20:42
    Taenia_Saginata
    Level 31  
    Helpful post? (0)
    Sprawdzałeś do ilu najmniej ci się uda zejść?
  • #20 03 May 2010 21:03
    mb1988
    Level 12  
    Topic author Helpful post? (0)
    Przyrząd ma programowe ograniczenia i mierzy tętno w granicach 35 - 240 uderzeń na minutę, oraz saturację 75% - 100%. Jednak będąc zdrowym, aby uzyskać wynik 75% musiałbym wstrzymać oddech na jakieś 8 minut. Z moimi umiejętnościami udało mi się zjechać najwyżej 2% od normalnego wyniku :P.
  • #21 03 May 2010 23:33
    Galareta
    Level 20  
    Helpful post? (0)
    Jeżeli wszystko dobrze rozumiem to wyciągniecie samego pulsu z palca(ucha czy czegoś innego co prześwituje) nie jest zbytnim problemem? dioda czerwona i fotodioda + wzmocnienie i wyciągnięcie z tego zmian "przezroczystości" palca wystarczy? czy raczej musiała by być do tego podczerwona dioda?

    Ps. nie interesowałem się tym zagadnieniem nigdy a teraz jak to przeczytałem to się ciekawe wydaje.
  • #22 03 May 2010 23:49
    mb1988
    Level 12  
    Topic author Helpful post? (0)
    Układ do pomiaru samego tętna jest dużo mniej wymagający, ponieważ z uwagi na to, że interesuje nas wówczas tylko częstotliwość przebiegu, sygnał może być mocno przesterowany. Dodatkowo jak już wspomniałeś wystarczy zastosować jedną długość fali (przykładowo 660nm). Praktycznie wystarczy tylko prosty analogowy front-end. Pomiar saturacji wymaga natomiast by analizowany przebieg był stabilny i co najważniejsze, w liniowy sposób oddawał zmiany w czasie ilości przepływającej przez tętnice krwi.
  • #23 03 May 2010 23:58
    siejacy_zamet
    Level 11  
    Helpful post? (0)
    Drogi kolego! Dr Wiśniewski Cię zaszlachtuje! HC08 to nie RISC-i, tylko CISC-i. A najłatwiej się o tym przekonać programując je w asemblerze, na co widać nie starczyło Ci odwagi (byłby to kolejny popisowy atut urządzenia). Powodzenia na prezentacji! Pamiętam, że jak ja przeprowadzałem takową kilka lat temu w Odlewniku, to były tłumy testerów i poklikiwaczy.
  • #24 04 May 2010 00:15
    mb1988
    Level 12  
    Topic author Helpful post? (0)
    Już poprawione :P. W assemblerze pisałem wcześniejszy mały projekt i sądząc po tym jak mi szło ten projekt skończyłbym pewnie na wiosnę, ale roku 2020 :P.
  • #25 20 May 2010 12:57
    Xitami
    Level 29  
    Helpful post? (0)
    Make: DIY Pulse Oximeter
    Code:
    Polish engineering student mb1988mb1988 and two friends built this homebrew pulse oximeter. It measures oxygen saturation in a patient by shining two wavelengths of light (infrared and red) through their finger, and recording the changes in light transmission over time. To power it all, they are using an 68HC908AB32 processor...
  • #26 26 May 2010 23:33
    ladamaniac
    Level 35  
    Helpful post? (0)
    Niestety, miałem nieprzyjemność używać pulsoksymetru. Do sprawdzania kalibracji fabrycznych czujników są "sztuczne palce" o określonej saturacji. Koszt fabrycznego czujnika FlexiWrap firmy Nonin to kilka lat temu ok 500 zł.
  • #27 14 Jun 2010 16:59
    ewilman
    Level 1  
    Helpful post? (0)
    A jakaś literatura pomocnicza przy wykonywaniu projektu? Bo ciekawi mnie ta metoda pomiaru saturacji.
  • #28 15 Jun 2010 10:00
    stefanino
    Level 1  
    Helpful post? (0)
    Hi guys
    do you know if it's possible to find a translation from polish to english for the great post of Mb1988 "Pulsoksymetr: pomiar tętna i nasycenia krwi tętniczej tlenem"?

    I am working on a similar objet for an installation I've made, I am developing a new one with a homemade sensor (thanks to Vladimir, of course)
    More info here: http://vimeo.com/10609154

    thank you a lot


    Stefanino
  • #29 02 Dec 2010 14:40
    marcelix007
    Level 13  
    Helpful post? (0)
    mb1988 wrote:
    Jeśli chciałbym zastosować jeden tor przetwarzania demultipleksację i filtrację musiałbym przeprowadzać już po spróbkowaniu sygnału. Zastosowany procek nie jest procesorem sygnałowym więc zastosowanie innych filtrów niż moving average staje się nieco kłopotliwe.

    Aplikacja została napisana w ten sposób, że układ dostosowuje punkt pracy diod, oraz wzmocnienie w torze przetwarzania w zależności od grubości palca badanej osoby.

    Przyrząd nie był kalibrowany, korzystam jedynie ze znanych empirycznych zależności. Kalibracja przyrządu wymagałaby znalezienia grupy ochotników, którzy zechcą najpierw przebadać się moim przyrządem, a następnie oddadzą krew, która zostanie przetestowana w laboratorium by już innymi metodami dokładnie określić, zawartość tlenu (sądząc po cenach takich urządzeń koszty otrzymania certyfikatu nie są małe). Przyrząd nie był również porównywany z prawdziwymi pulsoksymetrami, ponieważ nie mam dostępu do takowych urządzeń. Jednak, na grupie kilku osób, które przebadałem wynik odpowiadał typowemu dla zdrowego człowieka czyli 95% - 99%. A że moi znajomi na chorych nie wyglądali... :P. Pamiętajmy, że projekt ten ma na celu zobrazowanie jedynie idei pomiaru i nie może być stosowany w żadnej diagnostyce.


    Nie do końca rozumiem czemu nie lepiej by było zrobić filtrowania w jednym torze, po czym rozdzielić na dwa tory (bezpośrednio dwa kondensatory C16,C40 podłączyć do AD8542)?
  • #30 02 Dec 2010 18:26
    mb1988
    Level 12  
    Topic author Helpful post? (0)
    Hmm, a jak kolega sobie wyobraża analogową filtrację dwóch multipleksowanych czasowo sygnałów bez ich uprzedniego rozdzielenia?
Mouser  Search 4 million + Products
Browse Products