Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Czujnik pulsu człowieka z transmisją danych Bluetooth

Rzar22 16 Lip 2012 20:19 13221 18
  • W tym temacie prezentował będę projekt i konstrukcję mobilnego czujnika pulsu człowieka.

    System pomiarowy składa się z następujących elementów:
    1. Sensor wraz z układem filtrów i wzmacniaczem
    2. ATmega8A (obudowa PDIP) - przetwarzanie cyfrowe
    3. Moduł BTM-222 transmisja przy użyciu interfejsu Bluetooth
    4. Stacje odbiorcze: laptop + program w środowisku LabVIEW; smartfon + aplikacja systemu Android

    Zaprojektowany układ pozwala zarówno zmierzyć puls człowieka jak i przetransmitować falę PPG (ang. photoplethysmography - fala odzwierciedlająca tętno) i wyświetlić wyniki w czasie rzeczywistym. Zasięg urządzenia wynosi ok. 25 m.

    Poniżej zamieszczam widok panelu programu odbiorczego podczas prowadzenia pomiarów.
    Czujnik pulsu człowieka z transmisją danych Bluetooth

    W kolejnych odsłonach przedstawię krok po kroku realizację projektu.
    Następnie pokażę przebieg optymalizacji układu, która pozwoliła zmniejszyć wymiary przestrzenne, masę urządzenia i zwiększyć zasięg.
    Na koniec zamieszczę porównanie pomiarów wykonanych za pomocą projektowanego czujnika z wynikami uzyskanymi przy użyciu innych urządzeń dostępnych na rynku.


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz pendrive 32GB.
  • #2 19 Lip 2012 16:14
    Rzar22
    Poziom 9  

    Na początek kilka słów o samym czujniku.


    Czujnik pulsu człowieka z transmisją danych Bluetooth

    Czujnik pulsu człowieka z transmisją danych Bluetooth

    Czujnik pulsu człowieka z transmisją danych Bluetooth

    Wykaz wykorzystanych elementów (opisy zgodnie ze schematem):
    LM358N - wzmacniacz LM358N
    T1 - fototranzystor L-932P3C
    LED3 - dioda IR L-934F3BT
    R2, R10 - rezystor nastawny 1 MΩ
    R1 - rezystor 300 Ω
    R3, R9 - rezystor 1 MΩ
    R7 - 10 kΩ
    R8 - 18 kΩ
    C6, C8 - kondensator elektrolit. 1 μF 50V
    C9 -330 nF

    Dioda IR emituje fale długości 940 nm. Po przejściu przez pulsującą tkankę światło steruje bramką fototranzystora. Następnie sygnał zostaje odszumiony i pozbawiony składowej stałej. W ostatnim etapie następuje wzmocnienie sygnału i w efekcie otrzymujemy przebieg jak na rysunku poniżej:

    Czujnik pulsu człowieka z transmisją danych Bluetooth

    Ważne jest, aby osłonić czujnik przed wpływem czynników zewnętrznych (ja użyłem do tego celu kołnierz z czarnego materiału). Słońce emituje między innymi fale podczerwone, dlatego należy izolować czujnik przed jego wpływem.

    Kolejny aspekt na który należy zwrócić uwagę to stabilna klamra. Już przy niewielkiej zmianie położenia palca w czujniku znacznie zmienia się efektywny przekrój poprzeczny w miejscu przyłożenia fotoelementów (zmienia się dł. drogi pokonywanej przez światło), co objawia się w amplitudzie sygnału. Najlepsze efekty udało mi się uzyska, gdy dioda była przyłożona w miejscu wyrastania paznokcia.

    Wzmocnienie i czułość tranzystora są regulowane przez manipulowanie wartością rezystorów nastawnych. Moim celem było uzyskanie amplitudy sygnału wyjściowego nie większej niż 5V, co było uwarunkowane tolerancją przetwornika A/C ATmegi, ale o tym już w kolejnej części.

    Zapraszam do dyskusji .

  • #3 19 Lip 2012 19:05
    Michal_b1
    Poziom 18  

    Dlaczego zdecydowałeś się na ten typ czujnika pulsu? Jest on wg mnie trochę uciążliwy dla osoby go noszącej (klamerka na palcu plus przewód ciągnący się wzdłuż ręki...).
    Nie byłoby lepiej zastosować czujnik przypinany bezpośrednio do klatki piersiowej? Mam na myśli coś takiego:

    Czujnik pulsu człowieka z transmisją danych Bluetooth

  • #4 20 Lip 2012 16:45
    Rzar22
    Poziom 9  

    Trafne spostrzeżenie @Michal_b1.
    Mój wybór podyktowany był lekturą książki "Modelowanie i pomiary sygnałów biooptycznych" (autor A. Cysewska-Sobusiak). Autorka wskazuje tam na możliwość pozyskania z otrzymanego sygnału (czujnik optyczny), nie tylko samego pulsu, ale również informacji o saturacji tlenowej (stopień nasycenia krwi tlenem), który niesie dodatkowe informacje o stanie zdrowia. Dodatkowo zostały przedstawione tendencje w inżynierii biomedycznej które wskazują wyraźnie na wzrost popularności (potwierdzony funkcjonalnością) pomiarów z wykorzystaniem fal elektromagnetycznych (aplikowanie napromieniowanego cukru i analiza wskazań, MIR,rezonans magnetyczny, roentgen, itp.).

    Dlatego też, będąc pasjonatem nowinek technicznych zdecydowałem się właśnie na ten wariant czujnika. Na koniec dodam że taśma przedstawiona na zdjęciu użytkownika @Michal_b1 stanowi czujnik przyspieszeniowy, który gwarantuje stosunkowo stabilny pomiar pozbawiony jednak dodatkowych informacji.

    Właściwie zminimalizowany czujnik optyczny można wykonać w formie klipsu zakładanego np. na ucho, który będzie pozbawiony większości wad klamry na palec przedstawionej w opisanym projekcie.

    Dodano po 53 [minuty]:


    Po przedstawieniu budowy sensora pora na opis pozostałej części urządzenia.

    Rozpocznę od umieszczenia schematu:
    Czujnik pulsu człowieka z transmisją danych Bluetooth

    Projekt obudowy:
    Czujnik pulsu człowieka z transmisją danych Bluetooth

    Czujnik pulsu człowieka z transmisją danych Bluetooth

    Wygląd rzeczywisty prototypu:
    Czujnik pulsu człowieka z transmisją danych Bluetooth





    Czujnik pulsu człowieka z transmisją danych Bluetooth

    Czujnik pulsu człowieka z transmisją danych Bluetooth

    Widoczne na schemacie port programatora mikrokontrolera oraz port programatora bluetooth dają możliwość podłączenia zewnętrznych układów w celu zaprogramowania mikrokontrolera oraz nadajnika Ponadto urządzenie zostało wyposażone w port umożliwiający podsłuch informacji przesyłanych od ATmegi do modułu BTM-222. Dzięki temu możliwa jest weryfikacja poprawności danych wysyłanych przez mikrokontroler. Opisane złącze może również posłużyć do porównania danych po stronie nadawczej i odbiorczej oraz wyznaczenia współczynnika BER (ang. Bit Error Rate). Ostatni port stanowi wejście czujnika pulsu. Zawiera on piny przenoszące zasilanie czujnika oraz łączące z wejściem przetwornika A-C. Takie rozwiązanie daje możliwość podłączenia czujnika realizującego pomiar dowolnej wielkości fizycznej, pod warunkiem, że zakres napięć generowanych przez układ mieści się w przedziale 0-5 V.

    Zasilanie urządzenia stanowi pakiet złożony z 4 ogniw typu AAA (R3). Źródło napięcia zostało wybrane ze względu na stosunkowo duży pobór mocy przez urządzenie bluetooth (114 mA w stanie aktywnym). Mocowanie ogniw jest umieszczone na zewnętrznej ścianie obudowy. Zasilanie może zostać w każdej chwili odłączone przy użyciu przełącznika. Alternatywą dla zasilania bateryjnego jest możliwość podłączenia zasilacza sieciowego do odpowiedniego wejścia w obudowie.

    Poprawne działanie urządzenia sygnalizują diody podłączone do nadajnika oraz mikrokontrolera. Mruganie zielonej diody nadajnika oznacza stan gotowości urządzenia. Po nawiązaniu połączenia dioda pozostaje permanentnie zapalona. Mruganie żółtej diody towarzyszy transferowi danych. Niebieska dioda podłączona do mikrokontrolera ma za zadanie sygnalizować występowanie przerwań zakończenia konwersji przetwornika A-C. Dioda żółta zapala się i gaśnie w rytm mierzonego pulsu. W przypadku stwierdzenia nieprawidłowości istnieje możliwość zrestartowania ATmegi za pomocą przycisku reset.

    W kolejnej części zamieszczę listing programu ATmegi w języku C i opiszę programowanie modułu BTM-222 i mikrkontrolera.

  • #5 23 Lip 2012 16:54
    Rzar22
    Poziom 9  

    Programowanie modułu BTM-222:

    Moduł BTM-222 to układ w pełni kompatybilny z interfejsem szeregowym USART. Moduł jest fabrycznie ustawiony na szybkość transmisji 19 200 bps, 1 bit stopu, brak parzystości. Nominalne wartości można zmienić podłączając układ do portu COM komputera. Operacja ta jest możliwa dzięki wprowadzeniu odpowiednich komend AT. Do realizacji tego zadania w moim przypadku posłużył program HyperTerminal oraz układ konwersji napięć oparty na elemencie MAX232IN połączony z adapterem USB na port szeregowy AU0002B firmy LogiLink.

    Poniżej widok okna HyperTerminala podczas programowania układu:
    Czujnik pulsu człowieka z transmisją danych Bluetooth

    działanie programu mikrokontrolera ilustruje poniższy algorytm:
    Czujnik pulsu człowieka z transmisją danych Bluetooth

    Kod programu mikrokontrolera zawiera następujące metody:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Program sterujący pracą mikrokontrolera został napisany w języku C przy użyciu środowiska GCC. Rezultatem był program w formacie .HEX który został wczytany do pamięci mikrokontrolera za pomocą dedykowanego układu programatora STK 200/300. Transfer pliku kontrolował program BASCOM.
    Najważniejsze zadania programu to sterowanie pracą przetwornika analogowo -cyfrowego oraz komunikacja z modułem bluetooth. Na początku następuje inicjacja zmiennych odpowiedzialnych za przechowywanie wyniku konwersji oraz licznika iteracji pętli wewnątrz funkcji obsługi przerwania. Następnie wykonanie rozkazów przechodzi do głównej funkcji, która odpowiada za inicjację transmisji USART, zaprogramowanie portu D jako wyjścia oraz ustawienie rejestrów odpowiedzialnych za pracę przetwornika A/C. Transmisja USART zostaje skoordynowana z ustawieniami modułu BTM-222 (szybkość: 19200 bps, 8 bitów ramki, 1 bit stopu) . Ponadto następuje aktywacja asynchronicznego trybu transmisji oraz zezwolenie na nadawanie. Funkcja inicjująca przetwornik aktywuje również dostępność przerwania od przetwornika oraz ustawia go w tryb free running (ciągła konwersja). Preskaler dzieli prędkość nominalną zegara przez 128, dając taktowanie równe 62,5 kHz. Następnie sterowanie powraca do funkcji głównej, gdzie wykonywana jest nieskończona pętla while. Program opuszcza pętlę każdorazowo w przypadku wystąpienia przerwania od konwersji A-C.

    Wartości są transmitowane jako kod ASCII. Przy każdej konwersji zostaje ustawiony port D. Obserwujemy tą operację jako efekt ciągłego świecenia niebieskiej diody podłączonej do portu. W celu uniknięcia niepotrzebnej nadmiarowości transmitowany jest co 200 pomiar.

    W kolejnej części zademonstruję działanie programów odbiorczych.
    Następnie zamieszczę krótki filmik przedstawiający funkcjonowanie całego urządzenia.

  • #6 25 Lip 2012 16:25
    Rzar22
    Poziom 9  

    To już ostatnia część opisowa projektu.

    Na początek program odbiorczy w LabVIEW:
    Czujnik pulsu człowieka z transmisją danych Bluetooth

    W załączniku zamieszczam plik z programem.

    Program działa według poniższego algorytmu:

    Szkielet programu:
    Czujnik pulsu człowieka z transmisją danych Bluetooth

    Detekcja i przetwarzanie:
    Czujnik pulsu człowieka z transmisją danych Bluetooth

    Program widzi urządzenie bluetooth jako wirtualny port COM. Właściwa detekcja kolejnych impulsów realizowana jest przez wykrywanie zbocza narastającego, które charakteryzuje duża stromość i poprzedzający je ciąg zerowych próbek. Każdorazowe wykrycie opisanej sekwencji powoduje zapalenie diody pulse indicator. Następnie zostaje obliczony okres sygnału. Jeżeli otrzymana wartość spełnia określone w programie kryteria (zabezpieczenia przed interpretacją szumu lub miejscowego zniekształcenia jako kolejnego impulsu), zostaje dodana do poprzednich wyników. Następnie wartości są uśredniane, a uzyskany wynik wyświetla się w polu pulse. Zaprojektowany panel przedstawia ponadto kształt fali PPG, wyświetlany w czasie rzeczywistym. W dolnej części panelu prezentowane są wskaźniki wydolnościowe. Aby umożliwić autokalibrację programu, na podstawie średniego poziomu sygnału jest wyznaczana wartość suggested level, która po przemnożeniu sugeruje odpowiednią wartość detection level. Co więcej program daje możliwość archiwizowania kolejnych wskazań pulsu w generowanym pliku tekstowym.

    Kolejnym programem odbiorczym jest aplikacja dedykowana pod system Android oparta na programie BlueMoon, zaprojektowana przy użyciu AppInventora.
    Aplikacja w załączniku, a poniżej widok okna programu.

    Czujnik pulsu człowieka z transmisją danych Bluetooth

    Kolejnym etapem projektowania urządzenia była optymalizacja. Największe efekty dały działania:
    1. Zastąpienie wbudowanego modułu Bluetooth laptopa przez adapter USB bluetooth - wzrost zasięgu z kilku do około 25 m
    2. Projekt dedykowanej płytki w Eagle - zmniejszenie każdego z wymiarów o ok. 50%

    Czujnik pulsu człowieka z transmisją danych Bluetooth

    Na koniec porównanie otrzymanych wyników pomiaru pulsu z działaniem innych urządzeń dostępnych na rynku:
    Czujnik pulsu człowieka z transmisją danych Bluetooth

  • #7 25 Lip 2012 17:35
    Rzar22
    Poziom 9  

    Jako podsumowanie zamieszczam link do filmu prezentującego funkcjonowanie urządzenia.

    Link


    Życzę przyjemnej lektury i zapraszam do dyskusji. Wszelkie uwagi, pomysły na modyfikację urządzenia i pytania mile widziane.

  • #8 25 Lip 2012 22:41
    Rzar22
    Poziom 9  

    Aplikacja nie posiada jeszcze graficznego layoutu wyświetlającego wykres PPG w czasie rzeczywistym . Wrzucę ja na market jak tylko urozmaicę prezentację wyników.

  • #9 25 Lip 2012 23:00
    Tommy82
    Poziom 39  

    Projekt mi się podoba bo jest ciekawy i niesie z sobą niezaprzeczalny walor poznawczy.
    Masz ode mnie fajne.

    Możesz przybliżyć kwestie pomiaru saturacji?

  • #10 26 Lip 2012 00:15
    Rzar22
    Poziom 9  

    Już po podłączeniu czujnika do oscyloskopu dało się zauważyć, że po wysiłku fizycznym amplituda pozyskanego sygnału jest znacznie mniejsza niż w przypadku badania osoby w spoczynku.

    Wyjaśnia to ten wykres:
    Czujnik pulsu człowieka z transmisją danych Bluetooth

    Dla dł. fali 940 nm (dioda IR) hemoglobina z tlenem pochłania więcej światła niż pozbawiona tlenu. Przy wysiłku fizycznym organizm dostarcza tkankom większą ilość tlenu, stąd też mniejsza amplituda sygnału.

    Właściwość ta może z powodzeniem zostać wykorzystana np. do diagnozy schorzeń powodujących niedotlenienie tkanek.

  • #11 26 Lip 2012 00:29
    Tommy82
    Poziom 39  

    Rzar22
    No a to jest korelacja "pewna"?
    Chodzi mi o to czy jakieś inne zjawisko nie zafałszuje tego wyniku. No i jak rozumie to jest jednak pomiar względny.
    Chodzi mi o to czy nie będzie też jakiejś innej korelacji nie wiem nie jestem biologiem/lekarzem strzelam ilością wypitej wcześniej wody ?

  • #12 26 Lip 2012 15:31
    Rzar22
    Poziom 9  

    Skład chemiczny ludzkiej tkanki jest niezmienny poza krwią przenoszącą różne substancje i produkty przemiany materii. Można zatem uzależnić wielkość amplitudy sygnału od grubości tkanki. Teoretycznie możliwe jest wyznaczenie transmitancji optycznej tkanki która będzie zmieniała się tylko o czynnik wynikający z obecności substancji transportowanych przez krew. Tutaj główny wpływ na pochłanianie wiązki ma hemoglobina utlenowana.

    W praktyce dało się wyraźnie zauważyć tą zależność, jednak czasem amplituda była pomniejszona mimo braku wysiłku fizycznego, np. po 2,3 kawach i nieprzespanej nocy efekty były podobne, zatem pomiar saturacji choć daje dobre wyniki to mogą one nie być jednoznaczne. Myślę, że w tej dziedzinie warto zasięgnąć opinii kardiologa.

  • #13 26 Lip 2012 16:27
    Tommy82
    Poziom 39  

    A widzisz już chyba wiem w czym porblem z tą kawą. Nie tylko skład chemiczny krwi jest zmienny, zmieniają się sz tego co pamiętam przekroje naczyń włosowatych stąd mogą być różne dodatkowe cuda. Na przykład po wystawieniu organizmu na chłód, albo na przykład po ciepłej zupce.
    I to w sumie mnie ciekawiło na ile w tej metodzie wynik jest czuły na inne wpływ bo metoda sama w sobie jest bardzo ciekawa.
    Co więcej może po wysiłku to też nie pomiar saturacji a zmiany przekroju naczyń?

  • #14 26 Lip 2012 18:54
    Rzar22
    Poziom 9  

    Bardzo ciekawa sugestia Tommy82.
    Zjawisko zwężania naczyń nazywane jest wazokonstrykcją i może być spowodowane kofeiną lub zimnem.
    Bezpośrednim skutkiem jest wzrost ciśnienia tętniczego. Czyli wychodzi na to, że zjawisko fałszuje wynik pomiaru saturacji. Wynika z tego wniosek że skurcz mięśni naczyniowych i wzrost ciśnienia blokują drogę światła pomimo że przekrój naczyń jest w efekcie mniejszy.

    Nie zmienia to jednak faktu, że pomiar saturacji można z powodzeniem zastosować (i stosuje się) przy operacji, podczas której znieczulony pacjent nie wypije kawy i nie jest również narażony na obniżenie temperatury otoczenia. Personel medyczny otrzyma na bieżąco rzetelną informację o tym, że pacjent zaczyna się dusić.

  • #15 27 Lip 2012 09:08
    Oryginal_DekeR
    Poziom 17  

    Cytat:
    C6, C8 - kondensator elektrolit. 1 μF 50V

    na powyższym schemacie nie widzę C8, błąd opisu czy zła grafika?

  • #16 27 Lip 2012 20:08
    Rzar22
    Poziom 9  

    Nie ma błędu. kondensator bez etykiety widoczny na wyjściu układu kondycjonującego to właśnie zaginiony C8

  • #17 16 Sie 2012 01:28
    marciu11
    Poziom 15  

    Bardzo ciekawa konstrukcja.
    Ale mam pewne nieścisłości odnoście schematu czujnika
    Na załączonym schemacie wyjściem wzmacniacz jest noga nr 6 a według specyfikacji tego układu noga nr 6 to wejście odwracające drugiego wzmacniacza.
    Podobnie noga nr 7 zaznaczona jest jako zasilanie (+5V) a jest to w rzeczywistości wyjście drugiego wzmacniacza.
    Czy są to błędy w oznaczeniach, czy jakaś specyficzna konfiguracja podłączenia tego wzmacniacza?

    Podobnie jest z potencjometrami... Wedle schematu mają połączone nogi biegunowe bez możliwości regulacji.

    Jak to się ma do rzeczywistego podłączenia ?

    Moją wątpliwość budzi też bezpośrednie podłączenie modułu BT do Atmegi.
    Atmega zasilana jest z 5V a BT wymaga zasilania 3.3V Nie boisz się tak bezpośrednio podawać sygnał RX z Atmegi na BT bez konwertera napięć?

    Warto by też pomyśleć aby wymienić poczciwego MAXA323 na zjadliwego USB P
    Porty RS ją już powoli wymierającym reliktem. A USB znajdziesz praktycznie wszędzie, RS nie bardzo.

    Jak ze stabilnością pracy samej Atmegi i pomiarów AD?
    Widać że filtrowanie zasilania procesora jest dość małe o filtrowaniu zasilania części analogowej już nie wspomnę. Sam BT już dość mocno szarpie zasilanie podczas pracy.

    Poza tym projekt bardzo ciekawy i dobrze go udokumentowałeś i przedstawiłeś.
    Za to duże brawa.
    Duży też plus za udostępnienie kodu źródłowego, co też nie zawsze jest regułą obecnie.
    W sumie artykuł wart zielonej strzałki i zapisania go sobie na przyszłość.

  • #18 02 Wrz 2012 22:44
    Rzar22
    Poziom 9  

    marciu11 dziękuje za bardzo wnikliwą analizę projektu.

    Podłączenie wzmacniacza nie jest zgodne z dokumentacją lm358n, gdyż nie dysponowałem tym modelem w bibliotekach mojej wersji programu eagle. Podobnie zastępując oporniki potencjometrami skupiałem się tylko na typie elementu.

    Jeżeli chodzi o stosowanie USB, to używam przejściówki z RSa na USB i w ten sposób komunikuje się z komputerem.

    Zasilanie jest bateryjne, dlatego uznałem, że jest wystarczająco stabilne i nie potrzeba dodatkowego filtrowania i strat energii. Wyniki są bardzo zadowalające i nie sygnał nie zawiera zniekształceń i skoków napięcia. Zastanawiałem się jedynie czy nie odseparować zasilania atmegi i btma. Co sądzisz na ten temat?

  • #19 18 Paź 2012 20:01
    PiRoman2
    Poziom 20  

    Pomiar saturacji wymaga pomiaru dla dwóch różnych częstotliwości widma (w tej chwili nie pamiętam jakich).