Orodha ya maudhui:

Pulse Oximeter na Uboreshaji Ulioboreshwa Sana: Hatua 6 (na Picha)
Pulse Oximeter na Uboreshaji Ulioboreshwa Sana: Hatua 6 (na Picha)

Video: Pulse Oximeter na Uboreshaji Ulioboreshwa Sana: Hatua 6 (na Picha)

Video: Pulse Oximeter na Uboreshaji Ulioboreshwa Sana: Hatua 6 (na Picha)
Video: Нова (2022) Научная фантастика | Полнометражный фильм 2024, Julai
Anonim
Pulse Oximeter na Uboreshaji Ulioboreshwa Sana
Pulse Oximeter na Uboreshaji Ulioboreshwa Sana
Pulse Oximeter na Uboreshaji Sana Uboreshaji
Pulse Oximeter na Uboreshaji Sana Uboreshaji

Ikiwa ulimtembelea daktari hivi karibuni, kuna uwezekano kwamba ishara zako muhimu za msingi zilichunguzwa na muuguzi. Uzito, urefu, shinikizo la damu, pamoja na kiwango cha moyo (HR) na kueneza kwa oksijeni katika damu ya pembeni (SpO2). Labda, mbili za mwisho zilipatikana kutoka kwa uchunguzi wa kidole wenye nuru nyekundu ambao ulionyesha nambari zinazofaa kwenye skrini ndogo kwa dakika. Probe hiyo inaitwa oximeter ya kunde na unaweza kupata maelezo yote ya msingi juu yake hapa.

Mtu anaweza kununua oximeter rahisi ya kunde, hakika, lakini raha iko wapi? Nimeamua kujenga yangu mwenyewe, kwanza kwa heck yake, lakini muhimu zaidi na programu maalum katika akili: octetry ya usiku wakati wote HR na SpO2 data itakusanywa kila siku mara moja na kurekodiwa kwenye kadi ndogo ya SD. Maagizo tayari yana miradi kadhaa ya aina hii, kwa mfano, miwili inayohusisha Arduino hapa na hapa, na moja ikitumia Raspberry Pi. Mgodi hutumia sensorer mpya MAX30102 kutoka kwa MAXIM Jumuishi na Adobe ya Adafruit M0 Adalogger kwa kudhibiti na kurekodi data.

Mradi wetu sio ubunifu sana kwa suala la vifaa na kwa hivyo haitastahili kuandika hii inayoweza kufundishwa, lakini katika mchakato wa kuijenga nimefanya maendeleo muhimu katika programu ambayo iliniruhusu kutoa data kutoka kwa MAX30102 kwa uthabiti wa hali ya juu na mengi kelele kidogo kuliko programu iliyoandikwa na MAXIM kwa kihisi hiki. Utendaji wa algorithm yetu ya usindikaji ishara imeonyeshwa kwenye chati hapo juu ambapo grafu mbili za juu zina kiwango cha moyo mara moja na kueneza kwa oksijeni iliyohesabiwa kutoka kwa ishara mbichi na njia yetu (iliyotambuliwa na "RF"), wakati grafu mbili za chini zinaonyesha matokeo ya MAXIM yaliyotengenezwa kutoka ishara sawa kabisa. Ukosefu wa kawaida kwa HR ni 4.7 bpm na 18.1 bpm, na kwa SpO2 0.9% na 4.4%, kwa RF na MAXIM, mtawaliwa.

(Grafu zote za RF zinahusiana na kizingiti kidogo cha autocorrelation ya 0.25 na hakuna kikomo kwa uunganisho wa R / IR; angalia Hatua 4 na 5 kwa ufafanuzi wa masharti haya.)

Hatua ya 1: Vifaa

Vifaa
Vifaa
Vifaa
Vifaa
Vifaa
Vifaa
Vifaa
Vifaa
  1. Pulsa ya oximeter na sensor ya kiwango cha moyo MAX30102 bodi kutoka kwa MAXIM Integrated, Inc.
  2. Feather M0 Adalogger kutoka Adafruit, Inc.
  3. Lithiamu Ion Betri kutoka Adafruit, Inc.

Miunganisho:

  • Pini za adapta SCL na SDA kwa pini zinazofanana za SCL na SDA kwenye bodi ya MAX30102
  • Pini ya Adalogger 10 kubonyeza INT kwenye bodi ya MAX30102
  • Adalogger GND kwa bodi ya MAX30102 GND
  • Adalogger 3V hadi MAX30102 VIN

Hatua ya 2: Ishara za Dijiti Zilizorejeshwa na MAX30102

Ishara za Dijiti Zilizorejeshwa na MAX30102
Ishara za Dijiti Zilizorejeshwa na MAX30102
Ishara za Dijiti Zilizorejeshwa na MAX30102
Ishara za Dijiti Zilizorejeshwa na MAX30102

Kanuni za operesheni ya sensa ni rahisi sana: LED mbili, nyekundu moja (660 nm) na infrared moja (880 nm, IR) huangaza mwangaza kupitia ngozi ya mwanadamu. Nuru imeingizwa kwa sehemu na tishu za msingi, pamoja na damu ya pembeni. Photodetector ya sensorer hukusanya taa iliyoangaziwa kwa urefu wa mawimbi yote mawili na kurudisha nguvu mbili zinazolingana kwa kutumia itifaki ya I2C. Kwa kuwa spectra ya kunyonya hemoglobini yenye oksijeni na isiyo na oksijeni hutofautiana kwa urefu wa mawimbi yote mawili, taa iliyoonyeshwa ina sehemu ya kutofautisha kama kiwango cha damu ya damu ambayo iko chini ya mapigo ya ngozi na kila mapigo ya moyo. Kuamua kiwango cha moyo na kueneza kwa oksijeni ni juu ya programu ya usindikaji wa ishara.

Mifano ya ishara mbichi (kituo cha IR tu) zinaonyeshwa kwenye picha zilizo hapo juu. Mtu anaweza kugundua sehemu ya vipindi iliyofunikwa kwenye msingi wa kutofautisha ambao unabadilika kwa sababu ya sababu nyingi zilizotajwa kwenye ukurasa wa Wikipedia. Mabaki yaliyosababishwa na mwendo ni ya kukasirisha haswa kwani yanaweza kuficha ishara muhimu ya HR na kusababisha matokeo bandia. Kwa hivyo, oximeter za juu za kibiashara zina vifaa vya kuongeza kasi ambavyo husaidia kubatilisha mabaki haya.

Ninaweza kuongeza kiharusi kwa toleo linalofuata la oximeter yangu, lakini kwa HR / SpO ya usiku2 kurekodi, wakati sensor inabaki bila mwendo wakati mwingi, inatosha kugundua na kuacha ishara zilizopotoka.

Sensor MAX30102 yenyewe inakuja kwenye kifurushi kidogo kilichowekwa juu, lakini MAXIM kwa neema hutoa bodi ya kuzuka (Mfumo wa Bodi 6300) pamoja na programu ya usindikaji wa ishara ya Arduino na mbed - yote katika kifurushi cha muundo wa kumbukumbu MAXREFDES117 #. Niliinunua kwa furaha nikitarajia kuuza tu waya kati ya sensorer na Adalogger na kuwa na oximeter inayofanya kazi, nzuri kwa siku moja. Nilibadilisha toleo la RD117_ARDUINO la programu ya MAXIM ili kuendesha processor ya Adalogger's ARM Cortex M0. Kimsingi, yote niliyopaswa kufanya ni kuchukua nafasi ya kazi zisizokubaliana za SofI2C katika max30102.cpp na simu zinazofanana za maktaba ya Waya. Nambari imekusanywa faini katika Arduino IDE v1.8.5 na kukimbia kwa M0 bila makosa yoyote. Matokeo halisi, hata hivyo, yalikuwa ya kukatisha tamaa. Katika hatua ya Utangulizi tayari nimeonyesha utofauti mkubwa sana wa HR na SpO2. Kwa kawaida, mtu anaweza kudai kuwa nimefanya kitu kibaya na hii ilikuwa mawazo yangu ya asili pia. Walakini, kwenye video ya mafundisho ya MAXIM unaweza pia kuona viwango vya HR vinasumbuliwa sana kwenye skrini. Kwa kuongezea, maoni hapa chini ya video yanathibitisha kuwa wengine wamegundua hali kama hiyo.

Kufanya hadithi ndefu fupi, baada ya majaribio kadhaa nimeamua kuwa sensor inafanya kazi sawa na njia mbadala ya usindikaji wa ishara ya dijiti inaleta utulivu mzuri zaidi. Njia hii mpya, iliyoonyeshwa na "RF", imeelezewa katika hatua zifuatazo.

Hatua ya 3: Utayarishaji wa Ishara

Utaftaji wa Ishara
Utaftaji wa Ishara
Utaftaji wa Ishara
Utaftaji wa Ishara
Utaftaji wa Ishara
Utaftaji wa Ishara
Utaftaji wa Ishara
Utaftaji wa Ishara

Katika utekelezaji wetu, ishara mbichi hukusanywa kwa kiwango cha 25 Hz (sawa na ya MAXIM) kwa sekunde 4 kamili (programu ya MAXIM inakusanya tu sekunde 1 ya thamani), na kusababisha alama 100 za wakati wa digitized kwa kila mwisho wa data ya mwisho. Kila mlolongo wa nukta 100 lazima uzingatiwe kwa njia ifuatayo:

  1. Maana ya kuzingatia (a.k.a "kuondolewa kwa sehemu ya DC" kwa wahandisi wa umeme). Takwimu ghafi zinazokuja kutoka kwa sensa ni safu ya nambari katika nambari 105 masafa. Ishara inayofaa, ingawa, ni sehemu tu ya nuru inayoonyeshwa kutoka kwa damu ya damu ambayo inatofautiana kwa utaratibu wa 10 tu2 - takwimu ya kwanza. Kwa usindikaji wa ishara yenye maana, kwa hivyo inahitajika kutoa maana kutoka kwa kila hatua ya safu. Sehemu hii haina tofauti na yale ambayo programu ya MAXIM tayari inafanya. Nini tofauti, hata hivyo, ni nyongeza ya maana ya kuzingatia fahirisi za wakati zenyewe. Kwa maneno mengine, badala ya kuorodhesha nukta mfululizo kwa nambari kutoka 0 hadi 99, fahirisi mpya sasa ni nambari -49.5, -48.5,…, 49.5. Inaweza kuonekana kuwa ya kushangaza mwanzoni, lakini shukrani kwa utaratibu huu "kituo cha mvuto" cha ishara kinapatana na asili ya mfumo wa kuratibu (takwimu ya pili). Ukweli huu unakuwa muhimu sana katika hatua inayofuata.
  2. Usawazishaji wa msingi. Mwonekano mwingine wa maumbo ya mawimbi yaliyoonyeshwa katika Hatua ya 2 yanaonyesha kuwa msingi wa ishara halisi za oximetry ni mbali na kuwa sawa, lakini hutofautiana kupitia mteremko tofauti. Takwimu ya tatu inaonyesha ishara ya wastani ya IR (curve ya bluu) na msingi wake (laini ya bluu moja kwa moja). Katika kesi hii, mteremko wa msingi ni hasi. Njia ya usindikaji wa ishara iliyoelezwa hapo mbele inahitaji msingi kuwa usawa. Hii inaweza kupatikana kwa kuondoa tu msingi kutoka kwa ishara iliyo na maana. Shukrani kwa msingi wa maana wa uratibu wa Y na X, kizuizi cha msingi ni sifuri na usawa wake wa mteremko ni rahisi sana, kama inavyoonyeshwa kwenye takwimu ya nne.

Kwa hivyo ishara iliyotanguliwa iko tayari kwa hatua inayofuata.

Hatua ya 4: Workhorse: Kazi ya Autocorrelation

Workhorse: Kazi ya Autocorrelation
Workhorse: Kazi ya Autocorrelation
Workhorse: Kazi ya Autocorrelation
Workhorse: Kazi ya Autocorrelation
Workhorse: Kazi ya Autocorrelation
Workhorse: Kazi ya Autocorrelation

Kurudi kwa kawaida 1,…, n indexing, takwimu ya kwanza inaonyesha ufafanuzi wa kazi ya autocorrelation rm - idadi inayopatikana kuwa muhimu sana katika kugundua upimaji wa ishara na ubora pia. Ni bidhaa tu ya kawaida ya scalar ya safu ya saa ya ishara na yenyewe iliyobadilishwa na bakia m. Katika maombi yetu, hata hivyo, ni rahisi kupima kila thamani ya kiotomatiki kwa heshima na thamani yake kwa lag = 0, i.e.m / r0.

Njama ya autocorrelation ya jamaa ya ishara nzuri ya kawaida ya IR imeonyeshwa kwenye sura ya pili. Kama inavyotarajiwa, thamani ya lag = 0 iko katika kiwango cha juu kabisa ulimwenguni sawa na 1. Upeo unaofuata (wa ndani) unatokea kwa lag = 23 na sawa na 0.79. Uwepo wa minima ya mitaa na maxima katika kiwanja cha autocorrelation ni rahisi kuelewa: kama ishara inavyohamia kulia vilele vyake vinaingiliana vibaya mwanzoni, lakini wakati fulani kuingiliwa kunakuwa kwa kujenga na kufikia kiwango cha juu kwenye bakia sawa na wastani kipindi cha ishara.

Kifungu cha mwisho ni muhimu: ili kuamua wastani wa muda kati ya kilele, ambayo mtu anaweza kuhesabu masafa ya ishara (yaani, mapigo ya moyo) inatosha kupata upeo wa kwanza wa eneo la kazi ya autocorrelation! Kwa chaguo-msingi, sampuli za MAX30102 zinaingiza analog kwa kiwango cha alama 25 kwa sekunde, kwa hivyo kwa kupewa m kipindi kwa sekunde ni sawa na m / 25. Hii inasababisha mapigo ya moyo yaliyoonyeshwa kwa mapigo kwa dakika (bpm) na:

HR = 60 * 25 / m = 1500 / m

Kwa kweli, sio lazima kufanya mahesabu ya gharama kubwa ya rm maadili yote ya bakia. Algorithm yetu hufanya nadhani ya kwanza ya kiwango cha moyo = 60 bpm, ambayo inalingana na m = 25. Kazi ya kiotomatiki inapimwa wakati huo na ikilinganishwa na thamani ya jirani yake wa kushoto, m = 24. Ikiwa thamani ya majirani iko juu, basi maandamano yanaendelea kushoto hadi rm-1 <rm. Kwa hivyo kuamua mwisho wa m basi hurudishwa kama bakia kwa kiwango cha juu. Iteration inayofuata huanza kutoka kwa thamani hiyo badala ya 25 na mchakato mzima unarudia. Ikiwa jirani wa kwanza kushoto ni wa chini, basi maandamano ya kawaida hapo juu huelekeza kulia kwa njia ile ile. Wakati mwingi, bakia kwa kiwango cha juu inahitaji tathmini chache tu ya kazi ya autocorrelation. Kwa kuongezea, lagi za juu na za chini zinazokubalika (zinazolingana na kiwango cha chini na kiwango cha juu cha moyo, mtawaliwa) hutumiwa kama maadili yanayopunguza.

Hapo juu hufanya kazi vizuri sana kwa ishara nzuri, lakini ulimwengu wa kweli sio mzuri. Ishara zingine hutoka kupotoshwa, haswa kutokana na mabaki ya mwendo. Ishara kama hiyo inaonyeshwa kwenye sura ya tatu. Upimaji duni unaonyeshwa katika sura ya kazi yake ya autocorrelation na vile vile kwa bei ya chini, 0.28, ya kiwango cha juu cha kwanza cha mita kwa m = 11. Linganisha na kiwango cha juu cha 0.79 kilichopangwa kwa ishara ya ubora mzuri. Pamoja na maadili yanayopunguza bakia, kwa hivyo, thamani ya rm / r0 kwa kiwango cha juu ni kiashiria kizuri cha ubora wa ishara na mahitaji yake kuzidi kizingiti fulani yanaweza kutumiwa kuchuja mabaki ya mwendo. Grafu za "RF" zilizoonyeshwa katika utangulizi zilitokana na kizingiti kama hicho sawa na 0.25.

Hatua ya 5: Kuamua Kueneza kwa Oksijeni

Kuamua Kueneza kwa Oksijeni
Kuamua Kueneza kwa Oksijeni
Kuamua Kueneza kwa Oksijeni
Kuamua Kueneza kwa Oksijeni
Kuamua Kueneza kwa Oksijeni
Kuamua Kueneza kwa Oksijeni
Kuamua Kueneza kwa Oksijeni
Kuamua Kueneza kwa Oksijeni

Hatua ya awali ilikuwa ya kutosha kwa kuamua mapigo ya moyo. SpO2 inahitaji kazi zaidi. Kwanza, ishara iliyopuuzwa hadi sasa kwenye chaneli nyekundu (R) lazima izingatiwe. Ifuatayo, uwiano wa ishara nyekundu na infrared, Z = R / IR, zote zilizoakisi damu ya ateri, imehesabiwa. Sehemu ya "damu ya ateri" ni muhimu, kwani nuru nyingi kweli huonyeshwa kwenye tishu na damu ya vena. Jinsi ya kuchukua sehemu ya ishara inayolingana na damu ya damu? Kweli, hii ndio sehemu ya pulsatile ambayo inatofautiana na kila mpigo wa moyo. Kwa maneno ya wahandisi wa umeme, ni "sehemu ya AC", wakati taa iliyobaki iliyoonyeshwa ni "sehemu ya DC". Kwa kuwa nguvu kamili ya taa ya R na IR hailingani, uwiano wa Z umehesabiwa kutoka kwa nguvu, kama inavyoonyeshwa kwenye takwimu ya kwanza. Kwa suala la idadi iliyohesabiwa kweli, ninatumia mraba-maana-mraba (RMS) ya ishara iliyo na maana, msingi-msingi, y, kwa maana inayojulikana ya ishara mbichi, <Y>; angalia sura ya pili. Uwiano wa Z ni nusu tu ya kazi, hata hivyo. Jibu la sensa isiyo na mstari linahitaji usuluhishi wa nguvu kati ya Z na SpO ya mwisho2 maadili. Nilichukua hesabu ya upimaji kutoka kwa nambari ya MAXIM:

SpO2 = (-45.06 * Z + 30.354) * Z + 94.845

Kumbuka kuwa equation hii ni halali tu kwa bodi ya muundo wa MAX30102 iliyonunuliwa mnamo 2017! Kuna uwezekano kwamba MAXIM inaweza kurekebisha sensorer zake baadaye.

Utaratibu hapo juu bado unazalisha SpO nyingi za uwongo2 masomo. Kituo cha nyekundu kinakabiliwa na mabaki mengi, kama IR. Ni busara kudhani kwamba ishara zote zinapaswa kuunganishwa sana. Kwa kweli, ishara nzuri, kama mfano wa takwimu ya tatu, zinahusiana vizuri. Mgawo wa uwiano wa Pearson katika kesi hii ni juu kama 0.99. Hii sio wakati wote, kama inavyoonyeshwa kwenye sura ya nne. Ingawa ishara ya IR ingeweza kupitisha kichungi cha kiwango cha kiwango cha moyo na r yakem / r0 = 0.76, ishara ya R iliyopotoka husababisha mgawo duni wa uwiano kati ya hizo mbili sawa na 0.42 tu. Uchunguzi huu hutoa kichujio cha pili cha ubora: kuwa na mgawo wa uwiano kati ya njia kubwa kuliko kizingiti fulani.

Takwimu mbili za mwisho zinaonyesha athari halisi ya uchujaji wa ubora kama huo. Kwanza, kipimo cha oksijeni kilichopimwa kimepangwa na kizingiti cha ubora wa HR cha 0.25, lakini bila SpO2 chujio. Matokeo ya njama inayofuata kutoka kwa kuchuja HR maskini na SpO2 matokeo kwa 0.5 rm / r0 na vizingiti vya mgawo wa 0.8. Kwa jumla, alama duni za data ambazo ni 12% ya jumla zilichujwa na serikali kali.

Katika nambari yetu mgawo wa uwiano, cc, umehesabiwa kulingana na fomula katika takwimu ya tano, ambapo y inawakilisha ishara ya msingi-msingi, ishara ya msingi, wakati r0 ilifafanuliwa katika hatua ya awali.

Hatua ya 6: Nambari ya Chanzo

Nambari ya chanzo ya C ya mradi huu, iliyoundwa kwa IDE ya Arduino, inapatikana kutoka kwa akaunti yetu ya Github kwenye kiunga kifuatacho:

github.com/aromring/MAX30102_by_RF

Ukurasa wake wa Readme unaelezea vifaa vya mtu binafsi.

Ningependa kuchukua muda kumsifu Adafruit kwa kutengeneza bidhaa bora kama Adalogger ya M0. Processor yake ya haraka ya MHz 48 MHz Cortex M0, iliyo na RAM nyingi, hakika ilisaidia kuifanya mradi huu uweze kufanikiwa, wakati uliambatanishwa moja kwa moja na msomaji wa kadi ya SD (pamoja na maktaba ya SD ya Adafruit) kuondoa maumivu yote ya anayetabiri yanayohusiana na uhifadhi wa wakati mwingi wa data nyingi.

Ilipendekeza: