Агуулгын хүснэгт:

Өндөр нарийвчлалтай импульсийн оксиметр: 6 алхам (зурагтай)
Өндөр нарийвчлалтай импульсийн оксиметр: 6 алхам (зурагтай)

Видео: Өндөр нарийвчлалтай импульсийн оксиметр: 6 алхам (зурагтай)

Видео: Өндөр нарийвчлалтай импульсийн оксиметр: 6 алхам (зурагтай)
Видео: HAYLOU GS: Haylou's DIRTY LITTLE SECRET // Is It a Copy of the SoundPEATS WATCH 2? 2024, Арваннэгдүгээр
Anonim
Өндөр нарийвчлалтай импульсийн оксиметр
Өндөр нарийвчлалтай импульсийн оксиметр
Өндөр нарийвчлалтай импульсийн оксиметр
Өндөр нарийвчлалтай импульсийн оксиметр

Хэрэв та саяхан эмчид хандсан бол таны амин чухал шинж тэмдгийг сувилагч шалгаж үзсэн байх магадлалтай. Жин, өндөр, цусны даралт, зүрхний цохилт (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: Техник хангамж

Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж
  1. MAXIM Integrated, Inc. -ийн импульс оксиметр ба зүрхний цохилт мэдрэгч MAX30102 системийн самбар.
  2. Adafruit, Inc -ийн Feather M0 Adalogger.
  3. Adafruit, Inc -ийн лити ион батерей.

Холболтууд:

  • Аналоггер SCL ба SDA -г MAX30102 самбар дээрх харгалзах SCL ба SDA зүүгээр холбодог
  • MAX30102 самбар дээр INT -ийг холбохын тулд 10 -р аналогер зүү
  • Adalogger GND нь MAX30102 самбар GND -д
  • Adalogger 3V -аас MAX30102 VIN хүртэл

Алхам 2: MAX30102 буцааж өгсөн дижитал дохио

MAX30102 дижитал дохиог буцааж өгсөн
MAX30102 дижитал дохиог буцааж өгсөн
MAX30102 дижитал дохиог буцааж өгсөн
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 онооны дараалал бүрийг дараах байдлаар урьдчилан боловсруулах ёстой.

  1. Дундаж төв (цахилгаан инженерүүдэд "тогтмол гүйдлийн бүрэлдэхүүн хэсгийг зайлуулах"). Мэдрэгчээс ирж буй түүхий өгөгдөл нь 10 дахь бүхэл тоонуудын цаг хугацааны цуваа юм5 хүрээ. Ашигтай дохио нь артерийн цуснаас туссан гэрлийн зөвхөн нэг хэсэг бөгөөд ердөө 10 -ийн дарааллаар өөрчлөгддөг2 - анхны зураг. Дохио боловсруулахад утга учиртай байхын тулд цувааны цэг бүрээс дунджийг хасах нь зүйтэй. Энэ хэсэг нь MAXIM програм хангамжийн аль хэдийн хийсэн зүйлээс ялгаатай биш юм. Гэсэн хэдий ч өөр зүйл бол цагийн дундаж төвийг өөрөө тодорхойлох явдал юм. Өөрөөр хэлбэл, цувралын цэгүүдийг 0 -ээс 99 хүртэлх тоогоор индексжүүлэхийн оронд шинэ индексүүдийг -49.5, -48.5,…, 49.5 тоонууд болгож байна. Эхэндээ энэ нь хачирхалтай санагдаж магадгүй ч энэ процедурын ачаар дохионы муруйн "хүндийн төв" нь координатын системийн гарал үүсэлтэй давхцаж байна (хоёр дахь зураг). Энэ баримт нь дараагийн алхамд нэлээд хэрэгтэй болно.
  2. Суурь түвшинг тэгшлэх. Алхам 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 номын сан) дээр шууд хавсаргасан нь бодит цаг хугацаанд их хэмжээний өгөгдөл хадгалахтай холбоотой хоббитой хүмүүсийн зовлонг арилгадаг.

Зөвлөмж болгож буй: