Агуулгын хүснэгт:
- Алхам 1: Техник хангамж
- Алхам 2: MAX30102 буцааж өгсөн дижитал дохио
- Алхам 3: Дохионы урьдчилсан боловсруулалт
- Алхам 4: Ажлын морь: Автокорреляцийн функц
- Алхам 5: Хүчилтөрөгчийн ханалтыг тодорхойлох
- Алхам 6: Эх код
Видео: Өндөр нарийвчлалтай импульсийн оксиметр: 6 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:03
Хэрэв та саяхан эмчид хандсан бол таны амин чухал шинж тэмдгийг сувилагч шалгаж үзсэн байх магадлалтай. Жин, өндөр, цусны даралт, зүрхний цохилт (HR) ба захын цусан дахь хүчилтөрөгчийн ханалт (SpO)2). Сүүлийн хоёрыг хуруугаараа улаан туяатай электрон датчикаар олж авсан бөгөөд холбогдох тоонуудыг хэдэн минутын дотор жижиг дэлгэц дээр харуулжээ. Энэхүү датчикийг импульсийн оксиметр гэж нэрлэдэг бөгөөд энд байгаа бүх үндсэн мэдээллийг эндээс авах боломжтой.
Энгийн импульсийн оксиметрийг амархан худалдаж авч болно, гэхдээ хөгжилтэй нь хаана байна вэ? Би хамгийн түрүүнд өөрийн гараар бүтээхээр шийдсэн, гэхдээ хамгийн чухал нь тусгай хэрэглээнд зориулагдсан: шөнийн оксиметрийг HR ба SpO хоёуланг нь хийдэг.2 өгөгдлийг нэг шөнийн дотор тасралтгүй цуглуулж, микро SD карт дээр бүртгэх болно. Instructables нь аль хэдийн ийм төрлийн хэд хэдэн төслийг агуулсан байдаг, жишээлбэл, энд болон энд Arduino -ийг хамарсан хоёр төсөл, Raspberry Pi -ийг ашигладаг. Уурхайн удирдлага, өгөгдлийг бүртгэхийн тулд MAXIM Integrated болон Adafruit's Feather M0 Adalogger -аас арай шинэ MAX30102 мэдрэгч ашигладаг.
Манай төсөл нь техник хангамжийн хувьд тийм ч шинэлэг зүйл биш тул энэхүү зааварчилгааг бичих нь утгагүй болно, гэхдээ үүнийг бүтээх явцад би MAX30102 -ээс өгөгдлийг илүү өндөр нягтралтай, илүү нарийвчлалтай гаргаж авах боломжийг олгосон програм хангамжийн чухал дэвшилтүүдийг хийсэн. энэ мэдрэгчийн хувьд MAXIM -ийн бичсэн програм хангамжаас бага дуу чимээ. Дээрх хүснэгтэд бидний дохио боловсруулах алгоритмын гүйцэтгэлийг харуулсан болно. Дээрх хоёр график нь зүрхний цохилт, хүчилтөрөгчийн ханалтыг манай аргаар түүхий дохиогоор тооцоолсон болно ("RF" -ээр тодорхойлогдсон), доод хоёр график дээр MAXIM -ийн үр дүнг харуулав. яг ижил дохио. Хүний нөөцийн стандарт хазайлт нь 4.7 bpm ба 18.1 bpm, SpO -ийн хувьд2 RF ба MAXIM -ийн хувьд 0.9% ба 4.4% байна.
(RF -ийн график хоёулаа хамгийн бага автокорреляцийн босго 0.25 -тэй нийцэж байгаа бөгөөд R / IR хамаарлын хязгаарлалт байхгүй; эдгээр нэр томъёоны тайлбарыг 4, 5 -р алхамаас үзнэ үү.)
Алхам 1: Техник хангамж
- MAXIM Integrated, Inc. -ийн импульс оксиметр ба зүрхний цохилт мэдрэгч MAX30102 системийн самбар.
- Adafruit, Inc -ийн Feather M0 Adalogger.
- Adafruit, Inc -ийн лити ион батерей.
Холболтууд:
- Аналоггер SCL ба SDA -г MAX30102 самбар дээрх харгалзах SCL ба SDA зүүгээр холбодог
- MAX30102 самбар дээр INT -ийг холбохын тулд 10 -р аналогер зүү
- Adalogger GND нь MAX30102 самбар GND -д
- Adalogger 3V -аас MAX30102 VIN хүртэл
Алхам 2: MAX30102 буцааж өгсөн дижитал дохио
Мэдрэгчийн ажиллах зарчим нь маш энгийн: хоёр LED, нэг улаан (660 нм), нэг хэт улаан туяаны (880 нм, IR) хүний арьсаар гэрэл тусдаг. Гэрэл нь эд эсүүд, түүний дотор захын цусыг хэсэгчлэн шингээдэг. Мэдрэгчийн фотодетектор нь долгионы уртад туссан гэрлийг цуглуулж, I2C протокол ашиглан харгалзах хоёр харьцангуй эрч хүчийг буцаана. Хүчилтөрөгч ба хүчилтөрөгчгүй гемоглобины шингээлтийн спектр нь долгионы уртад хоёуланд нь ялгаатай байдаг тул тусгасан гэрэл нь зүрхний цохилт бүрээр импульсийн доорх артерийн цусны хэмжээ байдаг тул хувьсах бүрэлдэхүүнтэй байдаг. Зүрхний цохилт, хүчилтөрөгчийн ханалтыг тодорхойлох нь дохио боловсруулах програм хангамжаас хамаарна.
Түүхий дохионы жишээг (зөвхөн IR суваг) дээрх зургуудад үзүүлэв. Википедиа хуудсанд дурдсан олон хүчин зүйлээс шалтгаалан өөрчлөгдөж буй хувьсах суурь дээр үе үе бүрдэх бүрэлдэхүүн хэсгүүдийг анзаарч болно. Хөдөлгөөнөөс үүдэлтэй олдворууд нь хүний нөөцийн ашигтай дохиог далдалж, хуурамч үр дүнд хүргэж болзошгүй тул ялангуяа ядаргаатай байдаг. Тиймээс дэвшилтэт арилжааны оксиметрүүд нь эдгээр олдворуудыг хүчингүй болгоход тусалдаг акселерометртэй байдаг.
Би оксиметрийнхээ дараагийн хувилбарт акселерометр нэмж болно, гэхдээ шөнийн цагаар HR/SpO -ийн хувьд2 бичлэг хийх, мэдрэгч ихэнхдээ хөдөлгөөнгүй байх үед гажсан дохиог илрүүлж орхиход хангалттай.
MAX30102 мэдрэгч нь өөрөө гадаргуу дээр суурилуулсан жижигхэн багцаар ирдэг боловч MAXIM нь эвдэрсэн самбар (System Board 6300) дээр нэмэх нь Arduino болон mbed -д зориулсан дохио боловсруулах програм хангамжийг санал болгодог. Мэдрэгч ба Аналоггер хоёрын хооронд хэдэн утас гагнаж, нэг өдрийн дотор сайн, сайн оксиметртэй болно гэж найдаж байгаад би үүнийг худалдаж авсан. Би MAXIM програм хангамжийн RD117_ARDUINO хувилбарыг Adalogger -ийн ARM Cortex M0 процессор дээр ажиллуулахаар тохируулсан. Үндсэндээ миний хийх ёстой зүйл бол max30102.cpp дахь нийцгүй SofI2C функцийг холбогдох Wire номын сангийн дуудлагаар солих явдал байв. Энэ кодыг Arduino IDE v1.8.5 дээр нарийн боловсруулж, M0 дээр алдаагүй ажиллуулсан. Гэсэн хэдий ч цэвэр үр дүн нь сэтгэл дундуур байв. Танилцуулах алхамд би хүний нөөцийн болон SpO -ийн аль алинд нь маш их ялгаатай байгааг харуулсан2. Мэдээжийн хэрэг, хэн нэгэн намайг буруу зүйл хийсэн гэж хэлж магадгүй, энэ бол миний анхны бодол байсан. Гэсэн хэдий ч MAXIM -ийн зааварчилгааны видеон дээр та HR -ийн утгыг дэлгэцэн дээр харж болно. Түүгээр ч барахгүй видеоны доорхи сэтгэгдлүүд бусад хүмүүс ижил төстэй үзэгдлийг анзаарсан болохыг баталж байна.
Урт түүхийг товч тайлбарлахын тулд зарим туршилтын дараа би мэдрэгч хэвийн ажиллаж байгааг тогтоосон бөгөөд тоон дохио боловсруулах өөр арга нь илүү сайн тогтвортой байдлыг бий болгодог. "RF" -ээр заасан энэхүү шинэ аргыг дараагийн алхамуудад тайлбарласан болно.
Алхам 3: Дохионы урьдчилсан боловсруулалт
Бидний хэрэгжүүлэлтийн явцад түүхий дохиог 25 Гц (MAXIM -тэй адил) хурдаар 4 секундын турш цуглуулдаг (MAXIM -ийн програм хангамж нь ердөө 1 секундын үнэ цэнийг цуглуулдаг) бөгөөд ингэснээр эцсийн өгөгдлийн цэг тутамд 100 дижитал цаг хугацааны оноо авдаг. 100 онооны дараалал бүрийг дараах байдлаар урьдчилан боловсруулах ёстой.
- Дундаж төв (цахилгаан инженерүүдэд "тогтмол гүйдлийн бүрэлдэхүүн хэсгийг зайлуулах"). Мэдрэгчээс ирж буй түүхий өгөгдөл нь 10 дахь бүхэл тоонуудын цаг хугацааны цуваа юм5 хүрээ. Ашигтай дохио нь артерийн цуснаас туссан гэрлийн зөвхөн нэг хэсэг бөгөөд ердөө 10 -ийн дарааллаар өөрчлөгддөг2 - анхны зураг. Дохио боловсруулахад утга учиртай байхын тулд цувааны цэг бүрээс дунджийг хасах нь зүйтэй. Энэ хэсэг нь MAXIM програм хангамжийн аль хэдийн хийсэн зүйлээс ялгаатай биш юм. Гэсэн хэдий ч өөр зүйл бол цагийн дундаж төвийг өөрөө тодорхойлох явдал юм. Өөрөөр хэлбэл, цувралын цэгүүдийг 0 -ээс 99 хүртэлх тоогоор индексжүүлэхийн оронд шинэ индексүүдийг -49.5, -48.5,…, 49.5 тоонууд болгож байна. Эхэндээ энэ нь хачирхалтай санагдаж магадгүй ч энэ процедурын ачаар дохионы муруйн "хүндийн төв" нь координатын системийн гарал үүсэлтэй давхцаж байна (хоёр дахь зураг). Энэ баримт нь дараагийн алхамд нэлээд хэрэгтэй болно.
- Суурь түвшинг тэгшлэх. Алхам 2 -т үзүүлсэн долгионы хэлбэрийг өөр нэг харвал бодит оксиметрийн дохионы суурь шугам нь хэвтээ хавтгайгаас хол байгаа боловч өөр өөр налуугаар өөр өөр байдаг болохыг харуулж байна. Гурав дахь зураг дээр дундаж төвтэй IR дохио (цэнхэр муруй) ба түүний үндсэн шугам (цэнхэр шулуун шугам) харагдаж байна. Энэ тохиолдолд суурь шугамын налуу нь сөрөг байна. Өмнө тайлбарласан дохио боловсруулах арга нь суурь шугамыг хэвтээ байрлалтай байхыг шаарддаг. Дунд төвтэй дохионоос үндсэн шугамыг хасах замаар үүнийг хийж болно. Y ба X координатуудын дунджаар төвлөрсөний ачаар үндсэн шугамын огтлолцол нь тэг бөгөөд налуугийн тэгшитгэл нь 4-р зурагт үзүүлсэн шиг маш энгийн байдаг.
Тиймээс урьдчилан боловсруулсан дохио дараагийн алхамд бэлэн болно.
Алхам 4: Ажлын морь: Автокорреляцийн функц
Ердийн 1,…, n индексжүүлэлт рүү буцаж орвол эхний зураг нь авто корреляцийн функцийн тодорхойлолтыг харуулж байна rм - дохионы давтамж болон чанарыг илрүүлэхэд маш их хэрэгтэй гэж үзсэн тоо хэмжээ. Энэ бол дохионы хугацааны цувралын ердийн скаляр бүтээгдэхүүн бөгөөд хоцрогдол m -ээр өөрчлөгдсөн болно. Манай аппликейшнд автокорреляцийн утга бүрийг lag = 0 гэсэн утгын дагуу үнэлэх нь тохиромжтой байдаг, өөрөөр хэлбэл r -ээр тодорхойлсон харьцангуй автокорреляцийг ашиглах.м / r0.
Хоёрдахь зурагт ердийн сайн чанарын IR дохионы харьцангуй автокорреляцийн схемийг үзүүлэв. Хүлээгдэж байснаар, lag = 0 дээрх утга нь дэлхийн хамгийн дээд хэмжээндээ 1 -тэй тэнцүү байна. Дараагийн (орон нутгийн) дээд тал нь хоцрогдол = 23 байх ба 0.79 -тэй тэнцүү байна. Автокорреляцийн схемд орон нутгийн минимум ба максимум байгаа эсэхийг ойлгоход хялбар байдаг: дохио баруун тийш шилжих тусам түүний оргилууд эхлээд бие биедээ хөндлөнгөөс нөлөөлдөг боловч тодорхой үед хөндлөнгийн оролцоо нь бүтээмжтэй болж, дундажтай тэнцэх хоцрогдолд хүрдэг. дохионы хугацаа.
Сүүлчийн хэллэг нь маш чухал юм: оргилуудын хоорондох дундаж хугацааг тодорхойлохын тулд дохионы давтамжийг тооцоолох боломжтой (өөрөөр хэлбэл зүрхний цохилт), автокорреляцийн функцийн хамгийн анхны орон нутгийн хамгийн дээд хэмжээг олоход хангалттай юм! Анхдагч байдлаар, MAX30102 нь аналог оролтыг секундэд 25 онооны хурдаар түүвэрлэдэг тул өгөгдсөн м -ийн хувьд секундын хугацаа нь м / 25 -тэй тэнцүү байна.
Хүний нөөц = 60*25 / м = 1500 / м
Мэдээжийн хэрэг r -ийн үнэтэй тооцоолол хийх шаардлагагүй юмм хоцрогдсон үнэ цэнэ. Манай алгоритм нь зүрхний цохилт = 60 bpm -ийн анхны таамаглалыг гаргадаг бөгөөд энэ нь m = 25 -тэй нийцдэг. Автокорреляцийн функцийг тухайн үед үнэлж, зүүн хөршийнхөө утгатай харьцуулж үзвэл m = 24. Хэрэв хөршүүдийн утга өндөр байвал жагсаал r хүртэл зүүн тийш үргэлжилнэм-1 <rм. Ийнхүү тодорхойлсон эцсийн m -ийг хамгийн их хоцрогдол болгон буцаана. Дараагийн давталт нь 25 -ийн оронд энэ утгаас эхэлж бүх процесс давтагдана. Хэрэв эхний зүүн хөрш нь доогуур байвал дээрх дараалсан жагсаал нь баруун тийш ижил төстэй байдлаар хоцордог. Ихэнх тохиолдолд хоцрогдол нь автокорреляцийн функцын цөөн хэдэн үнэлгээг шаарддаг. Нэмж дурдахад зөвшөөрөгдөх хамгийн их ба хамгийн бага хоцролтыг (зүрхний цохилтын хамгийн бага ба хамгийн их хурдтай харгалзах) хязгаарлах утга болгон ашигладаг.
Дээрх нь сайн чанарын дохионы хувьд маш сайн ажилладаг боловч бодит ертөнц нь тийм ч тохиромжтой биш юм. Зарим дохио нь ихэвчлэн хөдөлгөөнт олдворын улмаас гажуудсан гарч ирдэг. Ийм дохиог гурав дахь зурагт үзүүлэв. Муу үечилсэн байдал нь түүний автокорреляцийн функцын хэлбэр, мөн m = 11 дэх анхны орон нутгийн хамгийн дээд утга болох 0.28 -ийн бага утгад тусгагдсан байдаг. Үүнийг сайн чанарын дохиогоор тодорхойлсон 0.79 -ийн хамгийн их утгатай харьцуулна уу. Хожуу хязгаарлах утгуудын хамт r -ийн утгам / r0 хамгийн дээд тал нь дохионы чанарын сайн үзүүлэлт бөгөөд тодорхой босгыг давах шаардлагыг хөдөлгөөний олдворыг шүүхэд ашиглаж болно. Танилцуулгад үзүүлсэн "RF" график нь 0.25 -тай тэнцүү босго хэмжээнээс үүдэлтэй.
Алхам 5: Хүчилтөрөгчийн ханалтыг тодорхойлох
Өмнөх алхам нь зүрхний цохилтыг тодорхойлоход хангалттай байсан. SpO2 илүү их хөдөлмөр шаарддаг. Нэгдүгээрт, улаан (R) суваг дахь өнөөг хүртэл үл тоомсорлож буй дохиог анхаарч үзэх хэрэгтэй. Дараа нь артерийн цуснаас туссан улаан ба хэт улаан туяаны Z = R/IR харьцааг тооцоолно. "Артерийн цус" хэсэг нь маш чухал юм, учир нь ихэнх гэрэл нь эд, венийн цуснаас тусдаг. Артерийн цусанд харгалзах дохионы хэсгийг хэрхэн сонгох вэ? За, энэ бол зүрхний цохилт бүрт өөр өөр байдаг лугшилттай бүрэлдэхүүн хэсэг юм. Цахилгааны инженерүүдийн хэлснээр энэ бол "хувьсах гүйдлийн хэсэг", үлдсэн гэрэл нь "DC хэсэг" юм. R ба IR гэрлийн үнэмлэхүй эрч хүч тэнцүү биш тул Z -ийн харьцааг эхний зурагт үзүүлсэн шиг харьцангуй эрч хүчээр тооцоолно. Бодит тооцоолсон хэмжигдэхүүний хувьд, би түүхий дохионы аль хэдийн мэдэгдэж байсан дундаж утга болох <Y> гэсэн дундаж төвтэй, суурь түвшний түвшний дохионы язгуур дундаж квадратыг (RMS) ашигладаг; хоёр дахь зургийг үзнэ үү. Z коэффициент нь ажлын тал хувь нь юм. Шугаман бус мэдрэгчийн хариу үйлдэл нь Z ба эцсийн SpO хооронд эмпирик шалгалт тохируулга хийхийг шаарддаг2 үнэт зүйлс. Би MAXIM кодоос шалгалт тохируулгын тэгшитгэлийг авсан.
SpO2 = (-45.06*Z + 30.354)*Z + 94.845
Энэ тэгшитгэл нь зөвхөн 2017 онд худалдаж авсан MAX30102 загварын самбар дээр хүчинтэй болохыг санаарай. Хожим нь MAXIM мэдрэгчээ дахин тохируулж магадгүй юм.
Дээрх процедур нь маш их хуурамч SpO үүсгэдэг2 уншлага. Улаан суваг нь IR -ийн нэгэн адил олон олдвороос болж зовж шаналж байдаг. Хоёр дохио хоёулаа хоорондоо нягт уялдаатай байх ёстой гэж үзэх нь үндэслэлтэй юм. Чухамдаа сайн чанарын дохио нь гурав дахь зураг дээрх жишээ шиг маш сайн хамааралтай байдаг. Пирсоны корреляцийн коэффициент энэ тохиолдолд 0.99 хүртэл өндөр байна. Дөрөв дэх зурагт үзүүлсэн шиг үргэлж ийм байдаггүй. Хэдийгээр IR дохио нь зүрхний цохилтын чанарын шүүлтүүрийг r -ээр дамжуулдагм / r0 = 0.76, гажсан R дохио нь хоёрын хоорондох хамаарлын коэффициент ердөө 0.42 -тэй тэнцүү байна. Энэхүү ажиглалт нь хоёр дахь чанарын шүүлтүүрийг санал болгож байна: тодорхой босго хэмжээнээс илүү сувгийн хоорондын хамаарлын коэффициент.
Сүүлийн хоёр тоо нь ийм чанарын шүүлтүүрийн цэвэр нөлөөг харуулж байна. Нэгдүгээрт, хэмжсэн хүчилтөрөгчийн ханалтыг хүний нөөцийн чанарын босго 0.25 гэж тодорхойлсон боловч SpO байхгүй2 шүүлтүүр Дараагийн график нь хүний нөөцийн болон SPO -ийг муу шүүсэний үр дүн юм2 үр дүн 0.5 р байнам / r0 ба 0,8 корреляцийн коэффициентийн босго. Ерөнхийдөө нийт мэдээллийн 12% -ийг эзэлдэг муу цэгүүдийг хатуу дэглэмээр шүүсэн.
Манай кодонд cc хамаарлын коэффициентийг тав дахь зураг дээрх томъёогоор тооцоолсон бөгөөд y нь дундаж төвтэй, суурь түвшний дохиог илэрхийлдэг бол r0 Өмнөх алхамд тодорхойлсон болно.
Алхам 6: Эх код
Arduino IDE форматтай энэхүү төслийн C эх кодыг манай Github данснаас дараах линкээр авах боломжтой.
github.com/aromring/MAX30102_by_RF
Түүний Readme хуудас нь бие даасан бүрэлдэхүүн хэсгүүдийг тайлбарласан болно.
Adafruit-ийг M0 дээр суурилсан Adalogger гэх мэт маш сайн бүтээгдэхүүн хийсэнд нь зориулж магтахыг хүсч байна. Маш хурдан шуурхай санах ойтой 48 MHz ARM Cortex M0 процессор нь энэхүү төслийг хэрэгжүүлэхэд тусалсан бөгөөд SD карт уншигч (Adafruit -ийн SD номын сан) дээр шууд хавсаргасан нь бодит цаг хугацаанд их хэмжээний өгөгдөл хадгалахтай холбоотой хоббитой хүмүүсийн зовлонг арилгадаг.
Зөвлөмж болгож буй:
Өндөр нарийвчлалтай давтамжийн тоолуур: 5 алхам (зурагтай)
Өндөр нарийвчлалтай давтамжийн тоолуур: Энэхүү зааварчилгаа нь давтамжийг хурдан, боломжийн нарийвчлалтай хэмжих чадвартай харилцан давтамжийн тоолуурыг харуулдаг. Энэ нь стандарт бүрэлдэхүүн хэсгүүдээр хийгдсэн бөгөөд үүнийг амралтын өдрүүдэд хийх боломжтой (надад жаахан удсан :-)) EDIT: Код одоо бэлэн боллоо
Arduino импульсийн оксиметр: 35 алхам (зурагтай)
Ардуино импульсийн оксиметр: Импульсийн оксиметр нь эмнэлгийн нөхцөлд тохирох стандарт хэрэгсэл юм. Хүчилтөрөгч ба хүчилтөрөгчгүй гемоглобины харьцангуй шингээлтийг ашиглан эдгээр төхөөрөмжүүд нь хүчилтөрөгч тээвэрлэж буй өвчтөний цусны хувийг тодорхойлдог (эрүүл хүрээ нь 94-9
Өндөр нарийвчлалтай вэбкамер: 9 алхам (зурагтай)
Өндөр нарийвчлалтай вэбкамер: Би хэдэн жилийн турш RPi дээр суурилсан вэбкамер ашиглаж байсан (PiCam модультай). Үйлдвэрлэсэн зургууд зүгээр байсан, гэхдээ тэр үед би чанарт сэтгэл хангалуун бус байсан. Би өндөр нарийвчлалтай вэбкамер хийхээр шийдсэн. Дараах хэсгүүд нь
Бичил хяналттай импульсийн оксиметр: 5 алхам
Бичил удирдлагатай импульсийн оксиметр: Энэ төслийн хувьд би бичил удирдлагатай импульсийн оксиметрийн төслөөрөө одоог хүртэл юу хийснээ харуулахаар төлөвлөж байна. Миний электроник, фитнессийн хүсэл тэмүүлэл маш хүчтэй тул хүсэл тэмүүллээ хоёуланг нь ашиглах боломжийг олгох төсөл бүтээхээр шийдсэн
Өндөр нарийвчлалтай температур хянагч: 6 алхам (зурагтай)
Өндөр нарийвчлалтай температур хянагч: Шинжлэх ухаан, инженерчлэлийн ертөнцөд температурын ака (термодинамик дахь атомын хөдөлгөөн) -ийг хянах нь физиологийн үндсэн параметрүүдийн нэг бөгөөд эсийн биологиос эхлээд хатуу түлшний пуужин хүртэл