Mundarija:

Aniqligi yaxshilangan puls oksimetr: 6 qadam (rasmlar bilan)
Aniqligi yaxshilangan puls oksimetr: 6 qadam (rasmlar bilan)

Video: Aniqligi yaxshilangan puls oksimetr: 6 qadam (rasmlar bilan)

Video: Aniqligi yaxshilangan puls oksimetr: 6 qadam (rasmlar bilan)
Video: This is the NEW Forza Motorsport TRAILER 2024, Noyabr
Anonim
Puls oksimetrining aniqligi ancha yaxshilandi
Puls oksimetrining aniqligi ancha yaxshilandi
Puls oksimetrining aniqligi ancha yaxshilandi
Puls oksimetrining aniqligi ancha yaxshilandi

Agar siz yaqinda shifokorga tashrif buyurgan bo'lsangiz, ehtimol sizning asosiy hayotiy belgilaringiz hamshira tomonidan tekshirilgan. Og'irligi, bo'yi, qon bosimi, shuningdek yurak tezligi (HR) va periferik qondagi kislorod bilan to'yinganligi (SpO)2). Ehtimol, oxirgi ikkitasi kichik raqamli ekranda tegishli raqamlarni bir necha daqiqada aks ettiruvchi qizil nurli elektron barmoq probidan olingan. Bu zond impuls oksimetr deb ataladi va siz bu erda barcha asosiy ma'lumotlarni topishingiz mumkin.

Oddiy puls oksimetrini osongina sotib olish mumkin, lekin bu qayerda? Men, avvalambor, o'zimni qurishga qaror qildim, lekin bundan ham muhimi, aniq dasturni hisobga olgan holda: tungi oksimetriya, bu erda ham HR, ham SpO.2 Ma'lumot bir kecha -kunduzda to'planib, micro SD -kartaga yoziladi. Instructables allaqachon bunday turdagi bir nechta loyihalarni o'z ichiga oladi, masalan, bu erda va bu erda Arduino ishtirokida, bittasi Raspberry Pi dan foydalanadi. Mine nazorat qilish va ma'lumotlarni yozib olish uchun MAXIM Integrated va Adafruit's Feather M0 Adalogger -dan biroz yangi MAX30102 sensoridan foydalanadi.

Shunday qilib, bizning loyihamiz apparat jihatidan unchalik yangilik emas va shuning uchun bu ko'rsatmalarni yozishga arzimaydi, lekin men uni yaratish jarayonida MAX30102 -dan ancha yuqori izchillikdagi ma'lumotlarni olishimga imkon beradigan dasturiy ta'minotda muhim yutuqlarga erishdim. bu sensor uchun MAXIM tomonidan yozilgan dasturlarga qaraganda kamroq shovqin. Bizning signallarni qayta ishlash algoritmining ishlashi yuqoridagi jadvalda tasvirlangan, bu erda ikkita yuqori grafikda bir kecha -kunduzda yurak urish tezligi va kislorodning to'yinganligi bizning usulimiz bilan aniqlangan signallar ("RF" bilan aniqlangan), pastki ikkita grafikda esa MAXIM natijalari ko'rsatilgan. aynan bir xil signallar. HR uchun standart og'ishlar - 4.7 va 18.1 zarba, va SpO uchun2 0,9% va 4,4%, mos ravishda RF va MAXIM uchun.

(Ikkala chastotali grafik ham 0,25 minimal avtororelyatsiya chegarasiga to'g'ri keladi va R / IR korrelyatsiyasida cheklov yo'q; bu atamalarni tushuntirish uchun 4 va 5 -qadamlarga qarang.)

1 -qadam: Uskuna

Uskuna
Uskuna
Uskuna
Uskuna
Uskuna
Uskuna
Uskuna
Uskuna
  1. MAXIM Integrated, Inc.dan puls oksimetr va yurak urish tezligi sensori MAX30102.
  2. Adafruit, Inc kompaniyasidan Feather M0 Adalogger.
  3. Adafruit, Inc kompaniyasining lityum -ion batareyasi.

Ulanishlar:

  • MAX30102 taxtasida mos keladigan SCL va SDA pinlariga SCL va SDA ulagichlari ulanadi
  • MAX30102 kartasida INT -ni ulash uchun 10 -sonli analog pin
  • GND uchun MAX30102 taxtali GND uchun analog
  • 3V dan MAX30102 VIN -ga o'xshash analog

2 -qadam: MAX30102 tomonidan qaytarilgan raqamli signallar

MAX30102 tomonidan qaytarilgan raqamli signallar
MAX30102 tomonidan qaytarilgan raqamli signallar
MAX30102 tomonidan qaytarilgan raqamli signallar
MAX30102 tomonidan qaytarilgan raqamli signallar

Sensorning ishlash tamoyillari juda oddiy: ikkita LED, bitta qizil (660 nm) va bitta infraqizil (880 nm, IQ) inson terisidan nur sochadi. Yorug'lik pastki to'qimalar, shu jumladan periferik qon tomonidan qisman so'riladi. Sensorning fotodetektori ikkala to'lqin uzunligida aks ettirilgan nurni yig'adi va I2C protokoli yordamida mos keladigan ikkita nisbiy intensivlikni qaytaradi. Kislorodli va oksidlanmagan gemoglobinning yutilish spektrlari ikkala to'lqin uzunligi uchun ham farq qilgani uchun, aks ettirilgan yorug'lik har bir yurak urishida teri pulslari ostida bo'lgan arterial qon miqdori sifatida o'zgaruvchan komponentga ega. Yurak urishi va kislorodning to'yinganligini aniqlash signalni qayta ishlash dasturiga bog'liq.

Xom signallarga misollar (faqat IQ kanal) yuqoridagi rasmlarda tasvirlangan. Vikipediya sahifasida ko'rsatilgan bir qancha omillar ta'sirida o'zgarib turadigan o'zgaruvchan boshlang'ich chiziqli davriy komponentni ko'rish mumkin. Harakatdan kelib chiqadigan artefaktlar ayniqsa zerikarli, chunki ular foydali HR signalini yashirishi va soxta natijalarga olib kelishi mumkin. Shunday qilib, rivojlangan tijorat oksimetrlarida akselerometrlar mavjud bo'lib, ular bu artefaktlarni bekor qilishga yordam beradi.

Oximetrning keyingi versiyasiga akselerometr qo'shishim mumkin, lekin tungi HR/SpO uchun2 yozish, agar sensor ko'p vaqt harakatsiz qolsa, buzilgan signallarni aniqlash va o'tkazib yuborish etarli bo'ladi.

MAX30102 sensorining o'zi sirtga o'rnatilgan kichkina to'plamda bo'ladi, lekin MAXIM xushmuomalalik bilan Arduino va mbed uchun signalni qayta ishlash dasturini (tizim kartasi 6300) va MAXREFDES117#mos yozuvlar dizayn paketida taqdim etadi. Sensor va Adalogger o'rtasida bir nechta simlarni lehimlashini va bir kunda yaxshi, yaxshi oksimetrga ega bo'lishini kutib, uni baxtli sotib oldim. Men MAXIM dasturining RD117_ARDUINO versiyasini Adalogger ARM Cortex M0 protsessorida ishlashga moslashtirdim. Asosan, max30102.cpp -da mos kelmaydigan SofI2C funktsiyalarini tegishli Wire kutubxonasi qo'ng'iroqlari bilan almashtirish kerak edi. Kod Arduino IDE v1.8.5 -da yaxshi tuzilgan va M0 -da xatosiz ishlagan. Biroq, aniq natijalar umidsizlikka uchradi. Kirish bosqichida men allaqachon HR va SpO ning juda katta dispersiyasini ko'rsatdim2. Tabiiyki, kimdir men noto'g'ri ish qildim deb da'vo qilishi mumkin va bu ham mening asl fikrim edi. Shu bilan birga, MAXIM -ning ko'rsatma videosida siz ekranda aks ettirilgan HR qiymatlarini ko'rishingiz mumkin. Bundan tashqari, video ostidagi izohlar shunga o'xshash hodisani boshqalar ham payqaganligini tasdiqlaydi.

Qisqa qilib aytganda, ba'zi tajribalardan so'ng, men sensori yaxshi ishlayotganini aniqladim va raqamli signalni qayta ishlashning muqobil usuli ancha yaxshi barqarorlikka olib keladi. "RF" bilan ko'rsatilgan bu yangi usul keyingi bosqichlarda tasvirlangan.

3 -qadam: signalni oldindan qayta ishlash

Signalni oldindan qayta ishlash
Signalni oldindan qayta ishlash
Signalni oldindan qayta ishlash
Signalni oldindan qayta ishlash
Signalni oldindan qayta ishlash
Signalni oldindan qayta ishlash
Signalni oldindan qayta ishlash
Signalni oldindan qayta ishlash

Bizning amalga oshirishda, xom signal 25 Gts tezlikda (MAXIM bilan bir xil) to'liq 4 soniya davomida yig'iladi (MAXIM dasturiy ta'minoti atigi 1 soniyani yig'adi), natijada har bir ma'lumot uchun 100 raqamli vaqt nuqtasi olinadi. Har 100 punktli ketma-ketlikni quyidagicha qayta ishlash kerak:

  1. O'rtacha markazlashtirish (elektr muhandislariga "doimiy komponentni olib tashlash"). Sensordan olingan ma'lumotlar 10 -sonli butun sonlarning vaqtli seriyasidir5 diapazon. Foydali signal, arterial qondan aks etadigan nurning faqat bir qismi bo'lib, u atigi 10 ga o'zgaradi2 - birinchi raqam. Signalni mazmunli qayta ishlash uchun har bir ketma -ketlik nuqtasidan o'rtacha qiymatni olib tashlash maqsadga muvofiqdir. Bu qism MAXIM dasturiy ta'minotidan farq qilmaydi. Boshqa narsa shundaki, vaqt indekslarining qo'shimcha o'rtacha markazlashuvi. Boshqacha qilib aytganda, 0 dan 99 gacha bo'lgan raqamlar bo'yicha ketma -ket nuqtalarni indekslash o'rniga, endi yangi indekslar -49,5, -48,5,…, 49,5 raqamlari hisoblanadi. Avvaliga g'alati tuyulishi mumkin, lekin bu protsedura tufayli signal egri chizig'ining "tortishish markazi" koordinata tizimining kelib chiqishi bilan mos keladi (ikkinchi rasm). Bu fakt keyingi bosqichda juda foydali bo'ladi.
  2. Boshlang'ich tekislash. 2 -bosqichda ko'rsatilgan to'lqin shakllariga yana bir nazar, haqiqiy oksimetriya signallarining asosiy chizig'i gorizontal tekislikdan yiroq, lekin har xil qiyaliklarda o'zgarib turishini ko'rsatadi. Uchinchi rasmda o'rtacha markazlashtirilgan IQ signal (ko'k egri) va uning asosiy chizig'i (ko'k to'g'ri chiziq) ko'rsatilgan. Bunday holda, boshlang'ich chizig'i salbiy bo'ladi. Oldindan tasvirlangan signalni qayta ishlash usuli gorizontal bo'lishini talab qiladi. Bunga o'rtacha chiziqli signaldan asosiy chiziqni olib tashlash orqali erishish mumkin. Y va X koordinatalarining o'rtacha markazlashtirilishi tufayli, boshlang'ich chiziq nolga teng va uning qiyalik tenglamasi, ayniqsa, to'rtinchi rasmda ko'rsatilgandek, uchinchi chiziqda to'q sariq egri chiziq bilan ko'rsatilgan.

Shunday qilib, oldindan qayta ishlangan signal keyingi bosqichga tayyor bo'ladi.

4 -qadam: Ishchi ot: korrelyatsiya funktsiyasi

Ishchi ot: korrelyatsiya funktsiyasi
Ishchi ot: korrelyatsiya funktsiyasi
Ishchi ot: korrelyatsiya funktsiyasi
Ishchi ot: korrelyatsiya funktsiyasi
Ishchi ot: korrelyatsiya funktsiyasi
Ishchi ot: korrelyatsiya funktsiyasi

Odatiy 1,…, n indeksatsiyasiga qaytsak, birinchi rasmda r korrelyatsiya funktsiyasining ta'rifi ko'rsatilgan.m - signalning davriyligini va sifatini aniqlashda juda foydali bo'lgan miqdor. Bu signalning vaqtli ketma -ketligining normallashtirilgan skalyar mahsuloti bo'lib, o'zi bilan kechikish m ga siljiydi. Bizning ilovamizda, har bir avtomatik korrelyatsiya qiymatini lag = 0 qiymatiga qarab o'lchash qulay, ya'ni r bilan belgilangan nisbiy avtorelatsiyadan foydalanish.m / r0.

Oddiy sifatli IQ signalining nisbiy avtokorrelyatsiyasining chizig'i ikkinchi rasmda ko'rsatilgan. Kutilganidek, lag = 0 da uning qiymati global maksimalda 1 ga teng. Keyingi (mahalliy) maksimal kechikish = 23 va 0,79 ga teng. Avtokorrelyatsiya uchastkasida mahalliy minimalar va maksimallarning mavjudligini tushunish oson: signal o'ng tomonga siljiganida, uning cho'qqilari dastlab bir -biriga halokatli tarzda aralashadi, lekin ma'lum bir vaqtda shovqin konstruktiv bo'lib qoladi va ortda qoladigan maksimal kechikishga erishadi. signalning davri.

Oxirgi ibora juda muhim: cho'qqilar orasidagi o'rtacha vaqt oralig'ini aniqlash uchun signal chastotasini (ya'ni yurak urish tezligini) hisoblash uchun avtokorrelyatsiya funktsiyasining birinchi mahalliy maksimalini topish kifoya! Odatiy bo'lib, MAX30102 analog kirishni sekundiga 25 ball tezlikda tanlaydi, shuning uchun berilgan m da sekundlar davri m / 25 ga teng bo'ladi.

HR = 60*25 / m = 1500 / m

Albatta, r ning qimmat hisob -kitoblarini qilish shart emasm umuman kechikish qiymatlari. Bizning algoritmimiz yurak urish tezligi = 60 zarba / sonini taxmin qiladi, bu m = 25 ga to'g'ri keladi. Avtokorrelyatsiya funktsiyasi o'sha paytda baholanadi va uning chap qo'shnisidagi qiymat bilan taqqoslanadi, m = 24. Agar qo'shnilarning qiymati yuqori bo'lsa, marsh r ga qadar chap tomonda davom etadim-1 <rm. Shunday qilib, aniqlangan oxirgi m maksimal kechikish sifatida qaytariladi. Keyingi takrorlash 25 o'rniga bu qiymatdan boshlanadi va butun jarayon takrorlanadi. Agar birinchi chap qo'shni pastroq bo'lsa, yuqoridagi tartibli yurishlar ham xuddi shu tarzda o'ng tomonga orqada qoladi. Ko'pincha, kechikish maksimal darajada avtomatik korrelyatsiya funktsiyasini baholashni talab qiladi. Bundan tashqari, maksimal va minimal qabul qilinadigan kechikishlar (mos ravishda minimal va maksimal yurak urish tezligiga mos keladigan) cheklovchi qiymat sifatida ishlatiladi.

Yuqoridagilar yaxshi sifatli signallar uchun juda yaxshi ishlaydi, lekin haqiqiy dunyo idealdan yiroq. Ba'zi signallar buzilgan bo'lib chiqadi, asosan harakat artefaktlari tufayli. Bunday signal uchinchi rasmda ko'rsatilgan. Yomon davriylik uning avtomatik korrelyatsiya funktsiyasi shaklida, shuningdek past qiymatda, 0,28 da, birinchi mahalliy maksimalning m = 11 da, yaxshi sifatli signal uchun aniqlangan 0,79 qiymat bilan solishtiring. Lag cheklovli qiymatlar bilan bir qatorda, r qiymatim / r0 signal sifatining maksimal ko'rsatkichi maksimal darajada bo'ladi va uni ma'lum chegaradan oshib ketish talabi harakat artefaktlarini filtrlash uchun ishlatilishi mumkin. Kirish qismida ko'rsatilgan "RF" grafiklari 0,25 ga teng bo'lgan bunday chegaradan kelib chiqqan.

5 -qadam: Kislorodning to'yinganligini aniqlash

Kislorodning to'yinganligini aniqlash
Kislorodning to'yinganligini aniqlash
Kislorodning to'yinganligini aniqlash
Kislorodning to'yinganligini aniqlash
Kislorodning to'yinganligini aniqlash
Kislorodning to'yinganligini aniqlash
Kislorodning to'yinganligini aniqlash
Kislorodning to'yinganligini aniqlash

Oldingi qadam yurak urish tezligini aniqlash uchun etarli edi. SpO2 ko'proq mehnat talab qiladi. Birinchidan, qizil (R) kanalidagi hozirgacha e'tiborsiz qoldirilgan signalni hisobga olish kerak. Keyin, qizil va infraqizil signallarning nisbati, Z = R/IR, ikkalasi ham arterial qondan aks ettirilgan. "Arterial qon" qismi juda muhim, chunki yorug'likning ko'p qismi to'qimalar va venoz qondan aks etadi. Signalning arterial qonga to'g'ri keladigan qismini qanday tanlash mumkin? Xo'sh, bu har bir yurak urishida o'zgarib turadigan pulsatsiyalanuvchi komponent. Elektr muhandislari aytganda, bu "AC qismi", qolgan aks esa "DC qismi". R va IQ nurlarining mutlaq intensivligi mutanosib bo'lmaganligi sababli, Z nisbati birinchi rasmda ko'rsatilgandek, nisbiy intensivlikdan hisoblanadi. Haqiqiy hisoblangan miqdorlar nuqtai nazaridan, men o'rtacha markazlashtirilgan, boshlang'ich darajali signalning o'rtacha o'rtacha kvadratini (RMS) ishlataman, y signalining allaqachon ma'lum bo'lgan o'rtacha qiymati <Y>; ikkinchi rasmga qarang. Z nisbati ishning faqat yarmini tashkil qiladi. Sensorning chiziqli bo'lmagan javobi Z va oxirgi SpO o'rtasida empirik kalibrlashni talab qiladi2 qiymatlar. Men MAXIM kodidan kalibrlash tenglamasini oldim:

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

Shuni yodda tutingki, bu tenglama faqat 2017 yilda sotib olingan MAX30102 dizayn taxtasi uchun amal qiladi! Ehtimol, MAXIM o'z sensorlarini keyinroq qayta kalibrlashi mumkin.

Yuqoridagi protsedura hali ko'p soxta SpO ishlab chiqaradi2 o'qishlar. Qizil kanal, IR kabi, ko'plab artefaktlardan aziyat chekadi. Ikkala signal ham bir -biri bilan chambarchas bog'liq bo'lishi kerak deb taxmin qilish o'rinli. Aslida, yaxshi tasvirlar, uchinchi rasmdagi misol kabi, juda yaxshi o'zaro bog'liq. Bu holda Pirson korrelyatsiya koeffitsienti 0,99 ga teng. To'rtinchi rasmda ko'rsatilgandek, bu har doim ham shunday emas. IQ signali r bilan yurak urish tezligi filtridan o'tadim / r0 = 0,76, buzilgan R signalining natijasi shundaki, ular orasidagi korrelyatsiya koeffitsienti 0,42 ga teng. Bu kuzatuv ikkinchi sifat filtrini taklif qiladi: ma'lum chegaradan yuqori kanallar orasidagi korrelyatsiya koeffitsienti.

Oxirgi ikkita raqam bunday filtrlashning aniq ta'sirini ko'rsatadi. Birinchidan, o'lchangan kislorodning to'yinganligi HR sifatining chegarasi 0,25 bilan belgilanadi, lekin SpO holda2 filtr Keyingi syujet yomon HR va SpO ni filtrlashdan kelib chiqadi2 natijalar 0,5 rm / r0 va 0,8 korrelyatsiya koeffitsienti chegaralari. Umuman olganda, umumiy ma'lumotlarning 12 foizini tashkil etuvchi yomon ma'lumot punktlari qattiqroq rejimda filtrlangan.

Bizning kodimizda korrelyatsiya koeffitsienti, cc, beshinchi rasmdagi formula bo'yicha hisoblanadi, bu erda y o'rtacha markazlashtirilgan, boshlang'ich darajali signalni ifodalaydi, r0 oldingi bosqichda aniqlangan.

6 -qadam: Manba kodi

Arduino IDE uchun formatlangan ushbu loyihaning C manba kodini bizning Github hisobimizdan quyidagi havola orqali olish mumkin:

github.com/aromring/MAX30102_by_RF

Uning Readme sahifasida alohida komponentlar tasvirlangan.

Men Adafruitni M0 asosidagi Adalogger kabi ajoyib mahsulotni yaratgani uchun maqtashni xohlayman. Uning tezkor 48 MGts chastotali ARM Cortex M0 protsessori, juda ko'p operativ xotiraga ega, bu loyihani amalga oshirishga yordam berdi, shu bilan birga to'g'ridan -to'g'ri biriktirilgan SD -kartani o'quvchi (shuningdek, Adafruit SD -kutubxonasi) havaskorlarning katta hajmdagi ma'lumotlarni saqlash bilan bog'liq barcha og'riqlarini olib tashladi.

Tavsiya: