Arduino library para sa heart rate monitoring na may pulse oximeter

Arduino library para sa heart rate monitoring na may pulse oximeter

Arduino library para sa heart rate monitoring na may pulse oximeter

Isa sa mga parameter na sinusubaybayan sa aking proyekto sa pamamahala ng pagtulog

Ito ang pulso. upang sukatin ito Gumawa ako ng device batay sa gawi ng hemoglobin at oxyhemoglobin laban sa iba't ibang wavelength ng liwanag. Karaniwang ito ay tungkol sa pagsukat kung gaano karaming liwanag ng isang tiyak na uri ang maaaring dumaan o maipakita sa isang mahusay na patubig na bahagi ng katawan. Ang dalas kung saan ang isang kumpletong cycle ng hindi pangkaraniwang bagay na ito ay nangyayari ay nagbibigay-daan sa pagsukat ng Pulso.

Talaan ng Nilalaman

    Sa yugto ng disenyo at pagsubok ng aparato sa pagsukat ng pulso Gumawa ako ng ilang maliliit na programa para matulungan akong ma-verify na tama ang assembly. Una ay isinulat ko ang code sa ibaba, na kinuha ang mga sinusukat na halaga paminsan-minsan (hindi bababa sa bawat MAXIMUM_MEASUREMENT_TIME at higit sa bawat isa MINIMUM_MEASUREMENT_TIME) kapag nag-iba sila ng pinakamababa sa pagitan ng isa at ng nauna (ang halaga na tumutugma sa MINIMUM_SIZE) at ang sinusubaybayan mula sa isang computer na may Python application upang masuri ang mga ito sa ibang pagkakataon.

    Kapag ang mga halaga ay nababagay (nagsisimula sa napakasiksik na mga sukat) nakakuha ako ng isang koleksyon ng mga halaga mula sa Pulse oximeter sa paglipas ng panahon na maaari akong mag-graph gamit ang isang spreadsheet, LibreOffice Calc de LibreOffice, tiyak.

    graph ng mga sukat ng pulse oximeter na may

    Sa data na nakolekta, tulad ng kinakatawan sa imahe sa itaas, ang susunod na operasyon ay upang matukoy kung ang density ng mga halaga ay nagpapahintulot sa amin na kalkulahin sa isang maaasahang ngunit "ekonomiko" na paraan (hindi sampling ng higit sa kinakailangang data) ang halaga ng Pulso; Tulad ng makikita sa graph sa ibaba, ang mga hakbang na ginawa ay tila nagsisilbi upang makuha ang mga resulta na makatwirang asahan.

    .

    pagsukat ng pagkakaroon ng oxyhemoglobin sa paglipas ng panahon gamit ang isang pulse oximeter

    Susunod, kasama ang impormasyon mula sa sampling ng data, kinakailangan na bumuo ng isang algorithm na susukat sa rate ng pulso. Nananatili sa graph na, para sa pagiging simple, ipinapalagay na ito ay kumakatawan sa isang layout na katulad ng QRS complex, ang pinakasimpleng bagay ay tila sukatin ang mga oras sa pagitan ng mga pinakatanyag na bahagi, na may mas mataas na mga halaga (na tumutugma sa qRs zone ng depolarization ng ventricles), itinatapon ang flatter at "noisier" zone, na kung saan ay mas mahirap. upang masukat. Ang pinagtibay na solusyon, na tumutugma sa test code sa ibaba, ay gumagana ayon sa sumusunod na pamamaraan:

    • I-detect ang lugar na sinusukat sa bawat kaso upang maasikaso lamang ang mga pinakamataas na halaga qRs at itapon ang lambak. Upang gawin ito, ang mga halagang mas mataas kaysa sa isang tiyak na pare-pareho ay maaaring masukat, ngunit may panganib na ang isang indibidwal at/o mga pangyayari ay maaaring, bagama't proporsyonal, taasan o babaan ang mga halaga. Upang maiwasan ito, ang isang halaga sa lugar ay itinuturing na mas malaki kaysa sa isa na lumampas sa average na halaga ng isang partikular na koepisyent. Sa ganitong paraan, ang pagsukat ay sensitibong naka-calibrate sa sarili at maaaring iakma pa sa pamamagitan ng pag-fine-tune ng koepisyent, na sa aking kaso ay nakamit ko nang eksperimental sa panahon ng mga pagsubok.

      Piliin ang mga halaga ng pababang zone para sa pagsukat (Rs) ng tuktok qRs, mas malapit hangga't maaari sa maximum ng curve. Upang malaman na ang pataas na zone ay inabandona, sapat na upang i-verify na ang isang bagong halaga ay mas mababa kaysa sa nauna at i-verify na ang hinanap na halaga ay hindi pa nahahanap dahil, sa pangkalahatan, mayroong ilang mga halaga sa pababang. zone ng qRs depende sa sampling density. Sa oras ng pulso, ang halaga ng instant kung saan natagpuan ang punto ay iniimbak (ang mga millisecond na ibinalik ni millis ()) at ikumpara ito sa susunod.

      Upang matiyak na ang sinusukat na halaga ay ang pinakamalaking sa pababang zone ng pinakamataas na curve, isang variable ang ginagamit boolean (sukat_pulso sa halimbawang ito at active_pulse_measurement sa library) na naka-activate kapag pumapasok sa ascending zone ng major curve at na-deactivate kapag nakita ang unang pababang value, na siyang naka-time.

      Tulad ng nakagawian na kumakatawan sa tagal ng pulso bilang mga beats bawat minuto (ppm), ang halaga ng oras sa pagitan ng mga pulse na nakuha ay itinatama sa pamamagitan ng pagkalkula sa pamamagitan ng paghati sa kabuuang oras ng representasyon (isang minuto, 60000 millisecond) sa pagitan na nakuha ng pagbabawas ng kasalukuyang millisecond ( ng kasalukuyang halaga) sa mga naunang na-time.

      Upang maiwasan ang mga maling pagsukat (tulad ng pagsukat ng device sa isang vacuum, halimbawa), na-verify na ang resulta ay nasa pagitan ng maximum at minimum na mga halaga bago ito kunin nang basta-basta. Bagama't itinuturing bilang isang average na ang isang normal na halaga para sa isang malusog na nasa hustong gulang na nagpapahinga ay nasa pagitan ng 60 at 100 ppm, may mga tinatanggap na halaga sa ibaba, madaling makahanap ng 40 ppm sa isang atleta na nagpapahinga, hanggang sa 200 ppm sa panahon matinding ehersisyo at higit pa. ng 100 ppm sa mga nakaupong nasa hustong gulang na nasa estado ng kaguluhan, tiyak na isang kawili-wiling salik para sa proyekto sa pamamahala ng pagtulog na humahantong sa akin na paunlarin ito aparato sa pagsukat ng pulso. Para sa kadahilanang ito, ipinapayong i-relax ang mga halagang ito nang marami upang ang mga sukdulan ay hindi mawala, na maaaring tumpak na magpakita ng mga nauugnay na aspeto.

      Ang bagong average na halaga ay kinakalkula sa pamamagitan ng pagbabawas ng kaugnayan ng kasalukuyang average batay sa bilang ng mga halaga na na-sample at ang huling halaga ay idinagdag, na binibigyang timbang din ng isang koepisyent na nagpapababa pa nito ng mas maraming mga halaga na nasusukat sa ngayon .

    Sa wakas, gamit ang algorithm na inilarawan dati, binuo ko ang library upang kalkulahin ang pulso sa pamamagitan ng pag-detect sa presensya ng hemoglobin o la oxyhemoglobin (depende sa wavelength ng liwanag na ginamit) mula sa code sa ibaba.

    Inaasahan ng library na pana-panahong tatawagin ang sampling function monitor_pulse() upang kalkulahin ang pulso, na maaaring konsultahin sa pag-andar last_pulse() o kasama ang function average_pulse() ang average na pulso. Bilang karagdagan sa pagiging isang limitadong mapagkukunan, pinasiyahan ko ang paggamit ng mga pagkaantala dahil hindi ko kailangan ng mga agarang halaga ngunit sa halip ay pinananatili sa paglipas ng panahon upang masubaybayan ang Pulso sa aking proyekto sa pamamahala ng pagtulog

    . Sa anumang kaso, mula sa mga pagsubok na ginawa ko, ito ay tila hindi kinakailangan; alinman sa pamamagitan ng aparato o sa pamamagitan ng pag-uugali ng Pulso, ang pagsa-sample sa isang partikular na dalas ay nag-aalok ng sapat na impormasyon at hindi gaanong higit pa (may kaugnayan) ang nakukuha sa pamamagitan ng pagtaas nito, at hindi rin posibleng bawasan ito nang malaki nang hindi nawawala ang nauugnay na data para sa pagkalkula; sa mga unang bersyon ng code upang masubaybayan ang pagbabasa ng Pulse oximeter Natuklasan ko na hindi kinakailangan na manatili sa isang maximum na oras ng pagsukat dahil, kung ang mga pagkakaiba-iba ng sunud-sunod na mga halaga ay wastong isinasaalang-alang, ito ay napakalapit sa minimum.

    Ang sumusunod na halimbawang programa ay nagpapakita kung paano gamitin ang nakaraang library upang sukatin ang Pulso na may Pulse oximeter. Bilang karagdagan sa instantiating ng klase Pulse pagsubaybay sa antas ng oxyhemoglobin/hemoglobin at may mas maliit na periodicity ang halaga ng Pulso kalkulado at karaniwan.

    Upang matiyak na ang mga sukat ay may kaugnayan, isang paghihintay ay naka-program bago magpakita ng anumang halaga. Dahil maaaring hindi tama ang value (halimbawa kung inalis ng user ang device), ipinapakita lang ang mga value kung nasa saklaw ang mga ito ng mga itinuturing na wasto.

    Maaaring Na-miss Mo