Arduino könyvtár pulzusméréshez pulzoximéterrel

Arduino könyvtár pulzusméréshez pulzoximéterrel

Arduino könyvtár pulzusméréshez pulzoximéterrel

Az egyik megfigyelt paraméter az alvásmenedzsment projektemben

Ez a pulzus. mérni azt A hemoglobin és az oxihemoglobin különböző hullámhosszú fényekkel szembeni viselkedésén alapuló készüléket fejlesztettem ki.. Alapvetően arról van szó, hogy megmérjük, mennyi fény tud áthaladni vagy visszaverődni egy jól öntözött testterületen. A jelenség teljes ciklusának gyakorisága lehetővé teszi a mérést impulzus.

Tartalomjegyzék

    A tervezési és tesztelési szakaszban a impulzusmérő készülék Kifejlesztettem néhány kis programot, amelyek segítenek ellenőrizni az összeszerelés helyességét. Először az alábbi kódot írtam le, amely időről időre (legalább minden alkalommal) vette a mért értékeket MAXIMUM_MEASUREMENT_TIME és legfeljebb mindegyik MINIMUM_MEASUREMENT_TIME). MINIMUM_SIZE) és a Python alkalmazással rendelkező számítógépről figyelhető hogy később elemezhessük őket.

    Az értékek beállítását követően (nagyon sűrű mérésekkel kezdve) kaptam egy értékgyűjteményt a pulzoximéter idővel, hogy grafikont készíthessek egy táblázat segítségével, LibreOffice Calc de LibreOffice, konkrét.

    pulzoximéterrel végzett mérések grafikonja

    Az összegyűjtött adatokkal, amint az a fenti képen is látható, a következő művelet annak meghatározása volt, hogy az értékek sűrűsége lehetővé teszi-e, hogy megbízható, de "gazdaságos" módon (a szükségesnél nem több mintavétellel) kiszámítsuk a impulzus; Ahogy az alábbi grafikonon is látható, úgy tűnt, hogy a megtett intézkedések az ésszerűen elvárható eredmények elérését szolgálják.

    .

    az oxihemoglobin jelenlétének időbeli mérése pulzoximéterrel

    Ezt követően az adatmintavételből származó információk alapján egy olyan algoritmust kellett kidolgozni, amely méri a pulzusszámot. Ragaszkodva a grafikonhoz, hogy az egyszerűség kedvéért feltételezzük, hogy a grafikonhoz hasonló elrendezést képvisel. QRS komplexum, a legegyszerűbb dolognak az tűnik, ha a legkiemelkedőbb részek közötti időt nagyobb értékekkel mérjük (ami a kamrák depolarizációs qRs zónájának felel meg), eldobva a laposabb és "zajosabb" zónát, ami ezért nehezebb. megmérni. Az elfogadott megoldás, amely megfelel az alábbi tesztkódnak, a következő eljárás szerint működik:

    • Határozza meg minden esetben a mért területet, hogy csak az értékcsúcsokat vegye figyelembe qRs és dobd el a völgyet. Ehhez egy bizonyos állandónál nagyobb értékeket is lehet mérni, de fennáll annak a veszélye, hogy az egyén és/vagy a körülmények arányosan ugyan, de növelhetik vagy csökkenthetik az értékeket. Ennek elkerülése érdekében a területen lévő értéket nagyobbnak tekintjük, mint azt, amely egy bizonyos együtthatóval meghaladja az átlagértéket. Ily módon a mérés érzékenyen önkalibrált, és az együttható finomhangolásával még tovább állítható, amit esetemben a tesztek során kísérletileg sikerült elérni.

      Válassza ki a csökkenő zóna értékeit a méréshez (Rs) a csúcs qRs, a lehető legközelebb a görbe maximumához. Ha tudni szeretné, hogy a növekvő zóna feladásra kerül, elegendő ellenőrizni, hogy egy új érték kisebb-e, mint az előző, és ellenőrizze, hogy a keresett érték még nem található-e, mivel általában több érték van a csökkenőben zónája qRs a mintavételi sűrűségtől függően. Az impulzus időzítéséhez annak a pillanatnak az értéke kerül tárolásra, amikor a pontot megtalálták (ez az ezredmásodperc, amelyet millisz ()), és összehasonlítja a következővel.

      Annak biztosítására, hogy a mért érték a legmagasabb görbe csökkenő zónájában legyen a legnagyobb, változót használnak logikai érték (mérés_impulzus ebben a példában és aktív_impulzusmérés a könyvtárban), amely a főgörbe emelkedő zónájába való belépéskor aktiválódik, és deaktiválódik, ha megtalálja az első csökkenő értéket, amely az időzített érték.

      Mivel az impulzus időtartamát ütés/perc-ben (ppm) szokás megadni, a kapott impulzusok közötti idő értékét úgy korrigálják, hogy az ábrázolás teljes idejét (60000 perc, XNUMX XNUMX ezredmásodperc) elosztják a kapott intervallummal. levonva az aktuális ezredmásodpercet (az aktuális értékből) a korábban időzítettekből.

      A téves mérések elkerülése érdekében (mint például a vákuumban mért készülék) ellenőrizni kell, hogy az eredmény a maximális és a minimális érték között van-e, mielőtt természetesnek tekintené. Bár átlagosnak tekinthető, hogy egy egészséges felnőtt normálértéke nyugalmi állapotban 60 és 100 ppm között van, a megengedett értékek az alábbiakban találhatók, nyugalmi sportolónál könnyű megtalálni a 40 ppm-et, 200 ppm-ig intenzív testmozgás és több. 100 ppm ülő, izgatott állapotban lévő felnőtteknél, pontosan egy érdekes tényező az alváskezelési projektben ami ennek fejlesztésére késztet impulzusmérő készülék. Emiatt ajánlatos ezeket az értékeket sokat lazítani, hogy ne vesszenek el a szélsőségek, amelyek pontosan mutathatnak releváns szempontokat.

      Az új átlagértéket úgy számítják ki, hogy a mintavételezett értékek száma alapján csökkentik az aktuális átlag relevanciáját, és hozzáadják az utolsó értéket, súlyozva egy együtthatóval, amely azt csökkenti, minél több eddig mért értéket mértek. .

    Végül a korábban ismertetett algoritmus felhasználásával kifejlesztettem a könyvtárat az impulzus kiszámításához a jelenlétének detektálásával hemoglobin vagy a oxihemoglobin (a használt fény hullámhosszától függően) az alábbi kódból.

    A könyvtár elvárja, hogy a mintavételi függvényt periodikusan hívják meg monitor_pulse() az impulzus kiszámításához, amely a függvénnyel lekérdezhető utolsó_impulzus() vagy a funkcióval átlagos_impulzus() az átlagos pulzus. Amellett, hogy korlátozott volt az erőforrás, kizártam a megszakítások alkalmazását, mert nem azonnali értékekre volt szükségem, hanem tartós értékekre az idő múlásával a impulzus az alváskezelési projektemben

    . Mindenesetre az általam elvégzett tesztek alapján nem tűnik szükségesnek; akár az eszköz, akár a viselkedése miatt impulzus, a mintavételezés egy bizonyos gyakorisággal elegendő információt kínál, és nem sokkal több (releváns) érhető el a növelésével, és nem is nagyon lehet csökkenteni anélkül, hogy a számításhoz lényeges adatokat ne veszítsen; a kód korai verzióiban, hogy figyelemmel kísérje a kód olvasását pulzoximéter Megállapítottam, hogy nem szükséges ragaszkodni a maximális mérési időhöz, hiszen ha az egymást követő értékek változásait helyesen vettük figyelembe, az nagyon közel volt a minimumhoz.

    A következő példaprogram bemutatja, hogyan használhatja az előző könyvtárat a impulzus egy pulzoximéter. Az osztály példányosítása mellett Pulso szintjének nyomon követése oxihemoglobin/hemoglobin és kisebb periodicitás mellett az értéke a impulzus számított és átlag.

    Annak érdekében, hogy a mérések relevánsak legyenek, a program egy várakozást programoz, mielőtt bármilyen érték megjelenik. Mivel az érték hibás lehet (például ha a felhasználó eltávolítja az eszközt), az értékek csak akkor jelennek meg, ha az érvényesnek tekintett tartományon belül vannak.

    Hozzászólás Comment

    Lehet, hogy lemaradtál