Arduino-kirjasto sykkeen seurantaan pulssioksimetrillä

Arduino-kirjasto sykkeen seurantaan pulssioksimetrillä

Arduino-kirjasto sykkeen seurantaan pulssioksimetrillä

Yksi unenhallintaprojektissani seuranneista parametreista

Se on pulssi. mittaamaan sitä Kehitin laitteen, joka perustuu hemoglobiinin ja oksihemoglobiinin käyttäytymiseen valon eri aallonpituuksia vastaan. Pohjimmiltaan kyse on sen mittaamisesta, kuinka paljon tietyntyyppistä valoa pystyy kulkemaan läpi tai heijastumaan hyvin kastetulle kehon alueelle. Taajuus, jolla tämän ilmiön täydellinen sykli tapahtuu, mahdollistaa sen mittaamisen pulssi.

Sisällysluettelo

    Suunnittelu- ja testausvaiheessa pulssin mittauslaite Kehitin joitain pieniä ohjelmia auttamaan minua varmistamaan, että kokoonpano oli oikein. Ensin kirjoitin alle koodin, joka otti mitatut arvot aika ajoin (ainakin joka MAXIMUM_MEASUREMENT_TIME ja korkeintaan jokainen MINIMUM_MEASUREMENT_TIME), kun ne vaihtelivat vähintään yhden ja edellisen välillä (arvo, joka vastaa MINIMUM_SIZE) ja valvotaan tietokoneelta Python-sovelluksella voidakseen analysoida niitä myöhemmin.

    Kun arvot oli säädetty (alkaen erittäin tiheistä mittauksista), sain kokoelman arvoja pulssioksimetri ajan myötä pystyin piirtämään kaavion laskentataulukon avulla, LibreOffice Lask de LibreOffice, erityistä.

    kaavio pulssioksimetrimittauksista

    Kerätyillä tiedoilla, kuten yllä olevassa kuvassa esitetään, seuraava toimenpide oli määrittää, pystyikö arvojen tiheys laskemaan luotettavalla, mutta "taloudellisella" tavalla (ei ota enempää kuin tarpeellista dataa) pulssi; Kuten alla olevasta kaaviosta näkyy, toteutetut toimenpiteet näyttivät auttavan saavuttamaan kohtuudella odotettavissa olevia tuloksia.

    .

    oksihemoglobiinin läsnäolon mittaaminen ajan mittaan pulssioksimetrillä

    Seuraavaksi näytteenotosta saatujen tietojen perusteella oli tarpeen kehittää algoritmi, joka mittaisi pulssin. Pidä kiinni kaaviosta, että yksinkertaisuuden vuoksi oletetaan, että se edustaa asettelua, joka on samanlainen kuin QRS-kompleksi, yksinkertaisin asia näyttää olevan mitata näkyvimpien osien väliset ajat korkeammilla arvoilla (joka vastaa kammioiden depolarisaation qRs-vyöhykettä), hylätä litteämpi ja "meluisampi" vyöhyke, mikä on siksi vaikeampaa mitata. Valittu ratkaisu, joka vastaa alla olevaa testikoodia, toimii seuraavan menettelyn mukaisesti:

    • Tunnista mitattava alue kussakin tapauksessa huomioidaksesi vain arvohuiput qRs ja heittää pois laakson. Tätä varten voidaan mitata tiettyä vakiota korkeampia arvoja, mutta on olemassa riski, että yksilö ja/tai olosuhteet voivat, vaikkakin suhteellisesti, nostaa tai laskea arvoja. Tämän välttämiseksi alueen arvoa pidetään suurempana kuin se, joka ylittää keskiarvon tietyllä kertoimella. Tällä tavalla mittaus on herkästi itsekalibroitunut ja sitä voisi vieläkin säätää hienosäätämällä kerrointa, minkä olen omassa tapauksessani saavuttanut kokeellisesti testien aikana.

      Valitse mittausta varten laskevan alueen arvot (Rs) huipusta qRs, mahdollisimman lähellä käyrän maksimiarvoa. Tietääksesi, että nouseva vyöhyke hylätään, riittää, kun tarkistat, että uusi arvo on pienempi kuin edellinen ja varmistat, että etsittyä arvoa ei ole vielä löydetty, koska yleensä laskevassa vyöhykkeessä on useita arvoja vyöhyke qRs näytteenottotiheydestä riippuen. Pulssin ajoittamiseksi tallennetaan sen hetken arvo, jolloin piste löydettiin (millisekunnit, jotka palauttavat millis ()) ja vertaa sitä seuraavaan.

      Sen varmistamiseksi, että mitattu arvo on suurin korkeimman käyrän laskevalla vyöhykkeellä, käytetään muuttujaa boolean (mitta_pulssi tässä esimerkissä ja aktiivinen_pulssimittaus kirjastossa), joka aktivoituu pääkäyrän nousevalle vyöhykkeelle siirtyessä ja deaktivoituu, kun ensimmäinen laskeva arvo, joka on ajastettu, löydetään.

      Kuten on tavallista esittää pulssin kesto lyönteinä minuutissa (ppm), saatu pulssien välinen aika korjataan laskemalla jakamalla esityksen kokonaisaika (yksi minuutti, 60000 XNUMX millisekuntia) välillä, joka saadaan vähentämällä nykyiset millisekunnit ( nykyisestä arvosta) aiemmin ajoitetuista.

      Väärien mittausten (kuten tyhjiössä mittaavan laitteen) välttämiseksi varmistetaan, että tulos on maksimi- ja minimiarvojen välillä ennen kuin se otetaan itsestäänselvyytenä. Vaikka terveen aikuisen normaaliarvon katsotaan olevan levossa keskimäärin 60-100 ppm, sallitut arvot ovat alla, levossa olevasta urheilijasta on helppo löytää 40 ppm, 200 ppm asti. intensiivinen harjoittelu ja enemmän. 100 ppm istumista liikkuvilla aikuisilla jännittyneissä tiloissa, juuri mielenkiintoinen tekijä unenhallintaprojektissa mikä saa minut kehittämään tätä pulssin mittauslaite. Tästä syystä näitä arvoja on suositeltavaa rentoutua paljon, jotta äärimmäisyydet eivät katoa, mikä voisi näyttää täsmällisesti oleelliset näkökohdat.

      Uusi keskiarvo lasketaan vähentämällä nykyisen keskiarvon relevanssia otettujen arvojen perusteella ja viimeinen arvo lisätään, myös painotettuna kertoimella, joka pienentää sitä edelleen mitä enemmän arvoja on tähän mennessä mitattu. .

    Lopuksi, käyttämällä edellä kuvattua algoritmia, kehitin kirjaston laskemaan pulssi havaitsemalla läsnäolon hemoglobiini tai oksihemoglobiini (riippuen käytetystä valon aallonpituudesta) alla olevasta koodista.

    Kirjasto odottaa, että näytteenottofunktiota kutsutaan säännöllisesti monitor_pulse() pulssin laskemiseen, jota voidaan tarkastella funktiolla viimeinen_pulssi() tai toiminnon kanssa keskimääräinen_pulssi() keskimääräinen pulssi. Sen lisäksi, että resurssi oli rajallinen, suljin pois keskeytyksiä, koska en tarvinnut välittömiä arvoja vaan pikemminkin pitkiä arvoja ajan mittaan seuratakseni pulssi unenhallintaprojektissani

    . Joka tapauksessa tekemieni testien perusteella se ei näytä tarpeelliselta; joko laitteesta tai sen käytöksestä pulssi, näytteistys tietyllä taajuudella tarjoaa riittävästi tietoa, eikä sitä suurentamalla saada paljoa enempää (relevanssia), eikä sitä ole mahdollista pienentää paljon menettämättä laskentaa varten oleellista dataa; koodin varhaisissa versioissa seurataksesi koodin lukemista pulssioksimetri Huomasin, että maksimimittausajoissa ei ollut tarpeen pitää kiinni, koska jos peräkkäisten arvojen vaihtelut huomioitiin oikein, se oli hyvin lähellä minimiä.

    Seuraava esimerkkiohjelma näyttää, kuinka edellistä kirjastoa käytetään mittaamaan pulssi yksi pulssioksimetri. Luokan instantoimisen lisäksi pulssi tason seurantaa oksihemoglobiini/hemoglobiini ja pienemmällä jaksollisuudella arvo pulssi laskettu ja keskiarvo.

    Mittausten asianmukaisuuden varmistamiseksi ohjelmoidaan odotus ennen minkään arvon näyttämistä. Koska arvo voi olla virheellinen (esimerkiksi jos käyttäjä poistaa laitteen), arvot näytetään vain, jos ne ovat kelvollisiksi katsottujen rajojen sisällä.

    Post Comment

    Olet ehkä missannut