Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2015:bio-polygraph

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2015:bio-polygraph [2016/01/17 17:09]
Jakub Rusz
2015:bio-polygraph [2016/01/17 23:01] (aktuální)
Aleš Pohludka stará verze byla obnovena (2016/01/17 19:29)
Řádek 1: Řádek 1:
 ====== Detektor stresového stavu (lži) ====== ====== Detektor stresového stavu (lži) ======
-Jakub Rusz \\ +Jakub Rusz, ID: 155601 ​\\ 
-Jakub Milek+Jakub Milek, ID: 154641
  
 ===== Úvod ===== ===== Úvod =====
-Polygraf je zařízení schopné vyhodnotit zda-li měřený subjekt lže. K tomu využívá ​záznam tepové ​dechové frekvencekde pokud subjekt ​e, tak se dostane do stresu, což způsobí zvýšení tepové ​dechové frekvence. V tomto projektu jsou vstupní signály záznam EKG a záznam dechové křivky z termistoru. Jako předzesilovače slouží měřící jednotky ​MP-35 od firmy Biopac. Zesílené nefiltrované signály jsou přivedeny na analogové vstupy procesoru. V procesoru se EKG signál vzorkuje frekvencí 1 kHz a dechová křivka frekvencí 10 Hz. Filtrace je pomocí IIR filtrů. Výsledné vyhodnocení je posíláno přes sériovou linku do PC.+Polygraf je zařízení schopné vyhodnotit zda-li měřený subjekt lže. Využívá ​psychofyziologické reakce člověka na stresovou situaci. Ve stresové situaci se člověku zvedne srdeční rytmus ​zrychlí se mu dech. Správným vyhodnocením změny těchto frekvencí lze vidětzda jsou měřenému kladené otázky nepříjemné a má-li strach z odhalení případné ​lži a tím určit věrohodnost jeho odpovědí.. V tomto projektu jsou vstupní signály záznam EKG a záznam dechové křivky z termistoru. Jako předzesilovače slouží měřící jednotky ​MP35 od firmy Biopac. Zesílené nefiltrované signály jsou přivedeny na analogové vstupy procesoru. V procesoru se EKG signál vzorkuje frekvencí 1 kHz a dechová křivka frekvencí 10 Hz. Filtrace je pomocí IIR filtrů. Výsledné vyhodnocení je posíláno přes sériovou linku do PC.
  
 ===== Použitý hardware ===== ===== Použitý hardware =====
 Měřící jednotka Biopack MP35 pro měření EKG. Měřící jednotka Biopack MP35 pro měření EKG.
  
-{{:​2015:​biopack_ekg.jpg?​500|}}+{{:2015:​bio-polygraph:​biopack_ekg.jpg?​500|}}
  
 Měřící jednotka Biopack MP35 pro měření dechové křivky. Měřící jednotka Biopack MP35 pro měření dechové křivky.
  
-{{:​2015:​biopack_dych.jpg?​500|}}+{{:2015:​bio-polygraph:​biopack_dych.jpg?​500|}}
  
-K těmto měřícím jednotkám je dodáván software Student Lab, kde ve verzi Pro lze libovolně nastavit zesílení i filtraci vstupních dat. Byli jsme nuceni využít dvě jednotky, protože každá má pouze jeden analogový výstup.+K těmto měřícím jednotkám je dodáván software Student Lab, kde ve verzi Pro lze libovolně nastavit zesílení i filtraci vstupních dat. Byli jsme nuceni využít dvě jednotky, protože každá má pouze jeden analogový výstup. ​Na výstup jednotka posílá pouze zesílený vstup, filtrace je pouze pro zobrazení na PC. 
 + 
 +Vývojový kit s FRDM-K64F 
 + 
 +{{:​2015:​bio-polygraph:​procesor.png|}} 
 + 
 +Specifikace procesoru je možné najít například zde: [[https://​developer.mbed.org/​platforms/​FRDM-K64F/​]]
  
 Detail termistoru pro měření dechové křivky Detail termistoru pro měření dechové křivky
  
-{{:​2015:​termistor.jpg?​500|}}+{{:2015:​bio-polygraph:termistor.jpg?​500|}} 
 + 
 +Detail připojení procesoru 
 + 
 +{{:​2015:​bio-polygraph:​detail_pripojeni.jpg?500|}}
  
 Celkový pohled na workspace Celkový pohled na workspace
  
-{{:​2015:​workspace.jpg?​1000|}}+{{:2015:​bio-polygraph:​workspace.jpg?​1000|}}
  
 ===== Vstupní signály ===== ===== Vstupní signály =====
 EKG je elektrická aktivita srdce. Nejjednodušší způsob jak ji zaznamenat je pomocí tří elektrod na končetinách a tak je tomu i v našem případě. Zemnící elektroda je na pravé noze, kladná je na levém zápěstí a záporná na pravém zápěstí. Tyto elektrody vedou na jeden ze čtyř vstupních kanálů na měřící jednotce MP35. Software v počítači zobrazuje filtrovanou a zesílenou EKG křivku a na výstup posílá pouze zesílený signál z vybraného vstupu. Signál je vyveden dvěmi dráty a přiveden na osciloskop pro vizualizaci a na analogový vstup A0 na procesoru. Tepová frekvence se určuje z doby mezi jednotlivými R vlnami, což signalizuje stah levé komory a vypuzení krve ze srdce do krevního oběhu. Tepová frekvence v tepech za minutu se určí jako 60/​RR_interval. EKG je elektrická aktivita srdce. Nejjednodušší způsob jak ji zaznamenat je pomocí tří elektrod na končetinách a tak je tomu i v našem případě. Zemnící elektroda je na pravé noze, kladná je na levém zápěstí a záporná na pravém zápěstí. Tyto elektrody vedou na jeden ze čtyř vstupních kanálů na měřící jednotce MP35. Software v počítači zobrazuje filtrovanou a zesílenou EKG křivku a na výstup posílá pouze zesílený signál z vybraného vstupu. Signál je vyveden dvěmi dráty a přiveden na osciloskop pro vizualizaci a na analogový vstup A0 na procesoru. Tepová frekvence se určuje z doby mezi jednotlivými R vlnami, což signalizuje stah levé komory a vypuzení krve ze srdce do krevního oběhu. Tepová frekvence v tepech za minutu se určí jako 60/​RR_interval.
  
-Dechová křivka je zaznamenána pomocí termistoru, který je možné připojit k měřící jednotce MP35. Termistor reaguje na změny teplot způsobené prouděním vzduchu při dýchání změnou svého odporu. Výsledkem jsou tedy změny úbytků napětí a to je opět vizualizováno softwarem na počítači a posíláno výstupem na osciloskop a analogový vstup A5 na procesoru. Dechová frekvece se určí podle periody dechové křivky, která připomíná sinusovku. Počet dechů za minutu je tedy 60/perioda. V našem případě je termistor umístěn v náustku aby byl pod větším vlivem proudění vzduchu při dýchání a získali jsme tak lepší signál. ​+Ukázka EKG křivky 
 + 
 +{{:​2015:​bio-polygraph:​rr-interval.png?​850|}} 
 + 
 +Dechová křivka je zaznamenána pomocí termistoru, který je možné připojit k měřící jednotce MP35. Termistor reaguje na změny teplot způsobené prouděním vzduchu při dýchání změnou svého odporu. Výsledkem jsou tedy změny úbytků napětí a to je opět vizualizováno softwarem na počítači a posíláno výstupem na osciloskop a analogový vstup A5 na procesoru. Dechová frekvece se určí podle periody dechové křivky, která připomíná sinusovku. Počet dechů za minutu je tedy 60/perioda. V našem případě je termistor umístěn v náustku aby byl pod větším vlivem proudění vzduchu při dýchání, nebyl ovliněn prouděním vzduchu z okolí ​a získali jsme tak lepší signál. ​
  
 Zesílení je v obou případech 5000. V průběhu práce bylo zkoušeno několik různých návrhů filtrů a přesné charakteristiky funkčních filtrů ve finální verzi byly ztraceny. Poslali jsme tedy na filtry Diracův impuls a z výsledků filtrace jsme získali jejich přenosové charakteristiky. Filtrace EKG je pomocí pásmové propusti s mezními frekvencemi 10 Hz a 25 Hz. Filtrace dechové křivky je pomocí pásmové propusti s mezními frekvencemi 0.1 Hz a 1.2 Hz. Oba filtry jsou IIR typu Inverse Chebyshev (Chebyshev II).  Zesílení je v obou případech 5000. V průběhu práce bylo zkoušeno několik různých návrhů filtrů a přesné charakteristiky funkčních filtrů ve finální verzi byly ztraceny. Poslali jsme tedy na filtry Diracův impuls a z výsledků filtrace jsme získali jejich přenosové charakteristiky. Filtrace EKG je pomocí pásmové propusti s mezními frekvencemi 10 Hz a 25 Hz. Filtrace dechové křivky je pomocí pásmové propusti s mezními frekvencemi 0.1 Hz a 1.2 Hz. Oba filtry jsou IIR typu Inverse Chebyshev (Chebyshev II). 
Řádek 34: Řádek 48:
 Přenosová charakteristika filtru pro EKG Přenosová charakteristika filtru pro EKG
  
-{{:​2015:​ekg_filt.png?​1000|}}+{{:2015:​bio-polygraph:​ekg_filt.png?​1000|}}
  
 Přenosová charakteristika filtru pro dechovou křivku Přenosová charakteristika filtru pro dechovou křivku
  
-{{:​2015:​dych_filt.png?​1000|}}+{{:2015:​bio-polygraph:​dych_filt.png?​1000|}}
  
 ===== Zpracování vstupních signálů ===== ===== Zpracování vstupních signálů =====
Řádek 89: Řádek 103:
 </​code>​ </​code>​
  
-V druhé části programu se určuje normální tepová i dechová frekvence. Před začátkem se spustí timer t pro potřebné výpočty. ​Smyčka je oproti té předešlé doplněna o zaznamenání času při prvním ​překročení ​meze druhém překročení meze EKG obálkyAktuální ​tepová frekvence se vypočítá jako 60/doba_mezi_detekcemi a ta se uloží a zprůměruje. Pro frekvenci dýchání je zde podmínka, která nabere vzorek každých 100 ms což opět dostatečně odpovídá vzorkovací frekvenci 10 Hz. Zde se po filtraci detekují průchody nulou z kladné půlvlnny do záporné ​a čas se zapisuje ​pomocí ​ze sputěného timeru. Výsledná dechová frekvence je 60/T, kde T je doba mezi 1. a 2. detekcí průchodu nulou. Smyčka se ukončí po detekci ​30ti tepů, vypočítá se průměr z nasbíraných dat a po serialu se vypíšou výsledné normální hodnoty.+V druhé části programu se určuje normální tepová i dechová frekvence. Před začátkem se spustí timer t pro potřebné výpočty. ​Vzhledem k proměnlivým šířkám obálek R vln je zaznamenán ​čas v době překročení ​prahu následně ​čas kdy procesor načte vzorek který je menší než práh a pozice detekované R vlny se vypočte jako průměr těchto časůVýsledná ​tepová frekvence se počítá ​z RR intervalů, neboli dobou trvání od detekce jedné R vlny po detekci následující R vlny. Hodnota BPM (beats per minute) se vypočte ​jako 60/RR. Pro určení normální tepové frekvence je průměrováno 100 vypočtených hodnot RR intervalů. Pro frekvenci dýchání je zde podmínka, která nabere vzorek každých 100 ms což opět dostatečně odpovídá vzorkovací frekvenci 10 Hz. Zde se po filtraci detekují průchody nulou a čas se zapisuje ze sputěného timeru. Výsledná dechová frekvence je 60/T, kde T je doba mezi 1. a 3. detekcí průchodu nulou. Smyčka se ukončí po detekci ​100 tepů, vypočítá se průměr z nasbíraných dat a po serialu se vypíšou výsledné normální hodnoty.
  
 <code c> <code c>
Řádek 139: Řádek 153:
         cas[0]=cas[1];​         cas[0]=cas[1];​
         RRu=60/​RRu; ​    //​aktuální tepová frekvence         RRu=60/​RRu; ​    //​aktuální tepová frekvence
-        NormalBPM=NormalBPM+(RRu/​30);   //​výpočet pro výslednou tepovou frekvenci+        NormalBPM=NormalBPM+(RRu/​100);   //​výpočet pro výslednou tepovou frekvenci
         c3++;         c3++;
     }     }
Řádek 177: Řádek 191:
 } }
            
-//​načtení ​30ti tepů, zprůměrování dechové frekvence a ukončení smyčky ​     +//​načtení ​100 tepů, zprůměrování dechové frekvence a ukončení smyčky ​     
-     if (c3==30)    ​+     if (c3==100)    ​
      {      {
          ​Normaldech=Normaldech/​c4;​          ​Normaldech=Normaldech/​c4;​
Řádek 296: Řádek 310:
 } }
 </​code>​ </​code>​
 +
 +Kompletní zdrojový kód je dostupný z [[https://​developer.mbed.org/​users/​customer10123/​code/​Polygraf_K64F/​]]
  
 Funkce pro filtraci byly vygenerovány na stránce [[http://​www.micromodeler.com/​dsp/​]]. Je zde možné vybrat typ filtru, různými způsoby upravit jeho charakteritisku a pak použít vygenerovanou hlavičku a funkce. Hlavičkový soubor se pouze připojí a funkce jsou nakopírovány na konci main.cpp programu. Ve free verzi je u IIR filtrů možné generovat kód pouze pro filtry do 4. řádu. ​ Funkce pro filtraci byly vygenerovány na stránce [[http://​www.micromodeler.com/​dsp/​]]. Je zde možné vybrat typ filtru, různými způsoby upravit jeho charakteritisku a pak použít vygenerovanou hlavičku a funkce. Hlavičkový soubor se pouze připojí a funkce jsou nakopírovány na konci main.cpp programu. Ve free verzi je u IIR filtrů možné generovat kód pouze pro filtry do 4. řádu. ​
Řádek 303: Řádek 319:
 {{youtube>​q2mKapnDdxQ?​medium}} {{youtube>​q2mKapnDdxQ?​medium}}
  
-Při demonstraci se pro zvýšení dechové frekvence využilo zadržení dechu, což způsobí ​lehkou ​hypoxii a srdce tak zvýší svou frekvenci aby se rychlejší cirkulací krve dostalo více kyslíku k buňkám v těle. Ve videu tak bylo náročné uměle překročit tepovou frekvenci z důvodu naměření poměrně vysoké normální tepové frekvence způsobené událostí před videem. Dechovou frekvenci lze jak je vidět snadné uměle zvýšit.+Při demonstraci se pro zvýšení dechové frekvence využilo zadržení dechu, což způsobí ​mírnou ​hypoxii a srdce tak zvýší svou frekvenci aby se rychlejší cirkulací krve dostalo více kyslíku k buňkám v těle. Ve videu tak bylo náročné uměle překročit tepovou frekvenci z důvodu naměření poměrně vysoké normální tepové frekvence způsobené událostí před videem. Dechovou frekvenci lze jak je vidět snadné uměle zvýšit. Ve fázi učení normální tepové frekvence je průměrováno pouze 30 hodnot aby video nebylo zbytečně dlouhé.
  
 ===== Diskuze ===== ===== Diskuze =====
-Při detekci tepové frekvence se čeká 50 ms po detekci jedné R vlny. To je z důvodu, že testovaný subjekt může mít vysokou vlnu T, která hned následuje R vlnu a mohla by tak být falešně považována za další R vlnu. Průměr z posledních tří hodnot RR intervalů se dělá aby výsledná hodnota lépe reprezentovala momentální tepovou frekvenci. Jednotlivé po sobě jdoucí RR intervaly se můžou dost lišit, bez průměrování by se hodnota tepu měnila příliš rychle.+Při detekci tepové frekvence se čeká 50 ms po detekci jedné R vlny. To je z důvodu, že testovaný subjekt může mít vysokou vlnu T, která hned následuje R vlnu a mohla by tak být falešně považována za další R vlnu. Průměr z posledních tří hodnot RR intervalů se dělá aby výsledná hodnota lépe reprezentovala momentální tepovou frekvenci. Jednotlivé po sobě jdoucí RR intervaly se můžou dost lišit, bez průměrování by se hodnota tepu měnila příliš rychle ​a neodpovídala by reálné hodnotě počtu tepů za minutu.
  
-U měření dechové frekvence je termistor přilepen v náustku pro měření na spirometru. Tento přístup byl zvolen aby nebylo nutné termistor lepit přímo pod nos a také aby získaný signál šlo lépe zpracovat. V reálném použití by však nastal problém, protože s náustkem v puse se špatně mluví a vytvořený proud vzduchu mluvením by příliš kontaminoval naměřená data.+U měření dechové frekvence je termistor přilepen v náustku pro měření na spirometru. Tento přístup byl zvolen aby nebylo nutné termistor lepit přímo pod nos a také aby získaný signál šlo lépe zpracovat. V reálném použití by však nastal problém, protože s náustkem v puse se špatně mluví a vytvořený proud vzduchu mluvením by příliš kontaminoval naměřená data. Ke zvýšení dechové frekvence dojde při reakci subjektu na otázku, tedy ještě nemluví, proto použití náustku pro detekci dechu v našem projektu by nezpůsobilo znemožnění použití v reálné situaci.
  
 Odkaz na interaktivní vytváření filtrů Micro modeler byl získán ze stránky [[https://​community.arm.com/​groups/​embedded/​blog/​2014/​02/​04/​introduction-to-digital-filters-2]] odkud taky pochází inspirace pro jejich použití. Odkaz na interaktivní vytváření filtrů Micro modeler byl získán ze stránky [[https://​community.arm.com/​groups/​embedded/​blog/​2014/​02/​04/​introduction-to-digital-filters-2]] odkud taky pochází inspirace pro jejich použití.
2015/bio-polygraph.1453046963.txt.gz · Poslední úprava: 2016/01/17 17:09 autor: Jakub Rusz