Mündəricat:

Çox Təkmilləşdirilmiş Həssaslıqla Pulse Oksimetr: 6 Addım (Şəkillərlə)
Çox Təkmilləşdirilmiş Həssaslıqla Pulse Oksimetr: 6 Addım (Şəkillərlə)

Video: Çox Təkmilləşdirilmiş Həssaslıqla Pulse Oksimetr: 6 Addım (Şəkillərlə)

Video: Çox Təkmilləşdirilmiş Həssaslıqla Pulse Oksimetr: 6 Addım (Şəkillərlə)
Video: YENİ LEAPMOTOR C11 2024 - TÜM DETAYLAR ! - 76.6 kWh - ŞOK FİYATA PREMIUM D SUV ! 2024, Noyabr
Anonim
Çox Təkmilləşdirilmiş Həssaslıqla Pulse Oksimetr
Çox Təkmilləşdirilmiş Həssaslıqla Pulse Oksimetr
Çox Təkmilləşdirilmiş Həssaslıqla Pulse Oksimetr
Çox Təkmilləşdirilmiş Həssaslıqla Pulse Oksimetr

Bu yaxınlarda bir həkimə baş çəkmisinizsə, ehtimal ki, əsas həyati əlamətləriniz tibb bacısı tərəfindən müayinə edilmişdir. Ağırlıq, boy, qan təzyiqi, həmçinin ürək dərəcəsi (HR) və periferik qanda oksigen doyması (SpO)2). Bəlkə də son ikisi, dəqiqədə kiçik bir ekranda müvafiq nömrələri əks etdirən qırmızı parlayan elektron barmaq probundan alındı. Bu proba nəbz oksimetri deyilir və bununla bağlı bütün əsas məlumatları burada tapa bilərsiniz.

Sadə bir nəbz oksimetrini asanlıqla almaq olar, amma əyləncə haradadır? Əvvəlcə öz işimi qurmağa qərar verdim, amma daha da əhəmiyyətlisi, xüsusi bir tətbiq nəzərə alınmaqla: həm İK, həm də SpO olduğu gecə oksimetriyası2 məlumatlar bir gecədə davamlı olaraq toplanacaq və mikro SD karta yazılacaq. Instructables artıq bu tip bir neçə layihəni ehtiva edir, məsələn, burada və burada Arduinonun iştirak etdiyi və biri Raspberry Pi istifadə edən. Mine, nəzarət və məlumatların qeyd edilməsi üçün MAXIM Integrated və Adafruit's Feather M0 Adalogger -dən bir qədər yeni MAX30102 sensoru istifadə edir.

Layihəmiz buna görə də aparat baxımından xüsusilə yenilikçi deyil və bu Təlimatı yazmağa dəyməz, amma onu hazırlayarkən MAX30102 -dən daha yüksək tutarlılığa və daha çox məlumat əldə etməyə imkan verən proqram təminatında əhəmiyyətli irəliləyişlər əldə etdim. bu sensor üçün MAXIM tərəfindən yazılmış proqramdan daha az səs -küy. Siqnal işləmə alqoritmimizin performansı yuxarıdakı cədvəldə göstərilmişdir, burada iki üst qrafikdə metodumuzla işlənməmiş siqnallardan hesablanan bir gecədə ürək dərəcəsi və oksigen doyma var ("RF" ilə müəyyən edilir), alt iki qrafik isə MAXIM -in nəticələrini göstərir. eyni siqnallar. HR üçün standart sapmalar 4.7 bpm və 18.1 bpm və SpO üçün2 RF və MAXIM üçün sırasıyla 0,9% və 4,4%.

(Hər iki RF qrafiki 0,25 minimum avtororelyasiya həddinə uyğundur və R / IR korrelyasiyasında heç bir məhdudiyyət yoxdur; bu terminlərin izahı üçün 4 və 5 -ci addımlara baxın.)

Addım 1: Avadanlıq

Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq
  1. MAXIM Integrated, Inc. -dən nəbz oksimetri və nəbz sensoru MAX30102 sistem kartı.
  2. Adafruit, Inc -dən Feather M0 Adalogger.
  3. Adafruit, Inc -dən Lityum İon Batareya

Əlaqələr:

  • MAX30102 lövhəsindəki SCL və SDA pinlərini SCL və SDA ilə əlaqələndirir
  • MAX30102 lövhəsində INT -ni bağlamaq üçün 10 -cu analog pin
  • GND -dən MAX30102 -ə qədər GND Adalogger
  • Adalogger 3V -dən MAX30102 VIN -ə qədər

Addım 2: MAX30102 tərəfindən geri qaytarılmış rəqəmsal siqnallar

MAX30102 tərəfindən qaytarılmış rəqəmsal siqnallar
MAX30102 tərəfindən qaytarılmış rəqəmsal siqnallar
MAX30102 tərəfindən qaytarılmış rəqəmsal siqnallar
MAX30102 tərəfindən qaytarılmış rəqəmsal siqnallar

Sensorun işləmə prinsipləri çox sadədir: biri qırmızı (660 nm) və biri infraqırmızı (880 nm, İK) olmaqla iki LED insan dərisindən işıq saçır. İşıq periferik qan da daxil olmaqla, altdakı toxumalar tərəfindən qismən əmilir. Sensorun fotodetektoru hər iki dalğa uzunluğunda əks olunan işığı toplayır və I2C protokolundan istifadə edərək iki uyğun nisbi intensivliyi qaytarır. Oksigenli və deoksigenli hemoglobinin udma spektrləri hər iki dalğa uzunluğunda fərqləndiyindən, əks olunan işıq, hər ürək atışında dəri nəbzinin altında olan arterial qanın miqdarı kimi dəyişkən bir komponentə malikdir. Ürək dərəcəsi və oksigen doyma dərəcəsini təyin etmək siqnal emal proqramına bağlıdır.

Xam siqnalların nümunələri (yalnız IR kanalı) yuxarıdakı şəkillərdə göstərilmişdir. Vikipediya səhifəsində qeyd olunan bir çox amillər səbəbiylə dəyişən dəyişkən bir təməl üzərində örtülmüş dövri bir komponent görə bilərsiniz. Hərəkətə bağlı artefaktlar, xüsusən də zəhlətökəndir, çünki faydalı HR siqnalını maskalaya və saxta nəticələrə səbəb ola bilər. Beləliklə, qabaqcıl ticarət oksimetrlərində bu artefaktları ləğv etməyə kömək edən akselerometrlər var.

Oximetrimin növbəti versiyasına bir akselerometr əlavə edə bilərəm, ancaq gecə HR/SpO üçün2 qeyd, sensor çox vaxt hərəkətsiz qaldıqda, pozulmuş siqnalları aşkar etmək və buraxmaq kifayətdir.

MAX30102 sensorunun özü kiçik bir səthə quraşdırılmış bir paketdə gəlir, lakin MAXIM lütfkarlıqla Arduino və mbed üçün bir kəsmə lövhəsi (Sistem Kartı 6300) və siqnal emal proqramı təklif edir - hamısı MAXREFDES117#dizayn dizayn paketində. Sensor və Adalogger arasında bir neçə telin lehimlənməsini və bir gündə işlək, yaxşı bir oksimetr əldə etməsini gözləyərək məmnuniyyətlə aldım. MAXIM proqramının RD117_ARDUINO versiyasını Adalogger -in ARM Cortex M0 prosessorunda işləməyə uyğunlaşdırdım. Əsasən etməli olduğum şey, max30102.cpp -də uyğun olmayan SofI2C funksiyalarını müvafiq Wire kitabxana zəngləri ilə əvəz etmək idi. Kod Arduino IDE v1.8.5 -də yaxşı tərtib edildi və heç bir səhv olmadan M0 üzərində işlədildi. Ancaq xalis nəticələr məyus oldu. Giriş addımında həm İK, həm də SpO -nun çox yüksək varyansını göstərmişəm2. Təbii ki, kimsə səhv bir şey etdiyimi iddia edə bilər və bu da mənim orijinal düşüncəm idi. Bununla birlikdə, MAXIM -in təlimat videosunda ekranda görünən çılğın HR dəyərlərini də müşahidə edə bilərsiniz. Üstəlik, videonun altındakı şərhlər başqalarının da bənzər bir fenomeni müşahidə etdiyini təsdiqləyir.

Uzun bir hekayəni qısaca izah etmək üçün, bəzi təcrübələrdən sonra sensorun normal işlədiyini və rəqəmsal siqnalın işlənməsinin alternativ üsulunun daha yaxşı sabitlik ilə nəticələndiyini təyin etdim. "RF" ilə göstərilən bu yeni üsul, növbəti addımlarda təsvir edilmişdir.

Addım 3: Siqnalın Ön İşlənməsi

Siqnalın Ön İşlənməsi
Siqnalın Ön İşlənməsi
Siqnalın Ön İşlənməsi
Siqnalın Ön İşlənməsi
Siqnalın Ön İşlənməsi
Siqnalın Ön İşlənməsi
Siqnalın Ön İşlənməsi
Siqnalın Ön İşlənməsi

Həyata keçirməyimizdə, xam siqnal tam 4 saniyə ərzində 25 Hz (MAXIM -lə eyni) olaraq toplanır (MAXIM -in proqramı yalnız 1 saniyənin dəyərini toplayır) və nəticədə hər bir son nöqtədə 100 rəqəmsal vaxt nöqtəsi əldə edilir. Hər 100 ballıq ardıcıllıq aşağıdakı şəkildə işlənməlidir:

  1. Orta mərkəzləşdirmə (elektrik mühəndislərinə "DC komponentinin çıxarılması"). Sensordan gələn xam məlumatlar 10 -dakı tam ədədlərin zaman seriyasıdır5 diapazon. Faydalı siqnal, arterial qandan əks olunan işığın yalnız 10 hissəsinə görə dəyişən bir hissəsidir2 - ilk rəqəm. Siqnalın mənalı işlənməsi üçün hər seriya nöqtəsindən ortalamanın çıxarılması arzu edilir. Bu hissə artıq MAXIM proqramının etdiklərindən fərqlənmir. Fərqli olan, zaman indekslərinin əlavə orta mərkəzləşdirilməsidir. Başqa sözlə, seriya nöqtələrini 0 -dan 99 -a qədər rəqəmlərlə indeksləşdirmək əvəzinə indi yeni indekslər -49.5, -48.5,…, 49.5 rəqəmləridir. İlk baxışdan qəribə görünə bilər, amma bu prosedur sayəsində siqnal əyrisinin "ağırlıq mərkəzi" koordinat sisteminin mənşəyi ilə üst -üstə düşür (ikinci rəqəm). Bu fakt növbəti addımda olduqca faydalı olur.
  2. Başlanğıc düzəldilməsi. Addım 2 -də göstərilən dalğa formalarına başqa bir nəzər, real oksimetriya siqnallarının təməl xəttinin üfüqi düzdən uzaq olduğunu, lakin fərqli yamaclarda dəyişdiyini göstərir. Üçüncü rəqəm, orta mərkəzli bir IR siqnalını (mavi əyri) və onun təməl xəttini (mavi düz xətt) göstərir. Bu vəziyyətdə təməl xəttin yamacı mənfi olur. Öncədən təsvir olunan siqnal işləmə metodu, təməl xəttinin üfüqi olmasını tələb edir. Bu, yalnız orta mərkəzli siqnaldan baza xəttini çıxarmaqla əldə edilə bilər. Həm Y, həm də X koordinatlarının orta mərkəzləşdirilməsi sayəsində, təməl xəttin kəsişməsi sıfırdır və dördüncü rəqəmdə göstərildiyi kimi, yamac tənliyi xüsusilə sadədir.

Beləliklə, əvvəlcədən işlənmiş siqnal növbəti addıma hazırdır.

Addım 4: İş Atı: Avtokorrelyasiya Function

İş Atı: Avtokorrelyasiya Funksiyası
İş Atı: Avtokorrelyasiya Funksiyası
İş Atı: Avtokorrelyasiya Funksiyası
İş Atı: Avtokorrelyasiya Funksiyası
İş Atı: Avtokorrelyasiya Funksiyası
İş Atı: Avtokorrelyasiya Funksiyası

Adi 1,…, n indeksləməsinə qayıdaraq, birinci rəqəm r avtomatik korrelyasiya funksiyasının tərifini göstərirm - siqnalın keyfiyyətinin yanında dövri dövrünün aşkarlanmasında çox faydalı olduğu kəmiyyət. Sadəcə siqnalın zaman seriyasının normallaşdırılmış skaler məhsuludur, özü də l m ilə dəyişir. Tətbiqimizdə, hər bir avtomatik korrelyasiya dəyərini lag = 0 dəyərinə görə ölçmək rahatdır, yəni r ilə müəyyən edilən nisbi avtorelasyondan istifadə etmək.m / r0.

Tipik yaxşı keyfiyyətli İQ siqnalının nisbi avtorrelyasiya planı ikinci şəkildə göstərilmişdir. Gözlənildiyi kimi, lag = 0 -dakı dəyəri qlobal maksimumda 1 -ə bərabərdir. Növbəti (yerli) maksimum gecikmə 23 -də baş verir və 0.79 -a bərabərdir. Avtokorrelyasiya sahəsindəki lokal minimum və maksimumların varlığını anlamaq asandır: siqnal sağa keçdikcə zirvələri əvvəlcə bir -birlərinə dağıdıcı şəkildə müdaxilə edir, lakin müəyyən nöqtədə müdaxilə konstruktiv olur və ortalamaya bərabər olan gecikmədə maksimuma çatır. siqnal dövrü.

Son ifadə vacibdir: zirvələr arasındakı siqnalın tezliyini (yəni ürək dərəcəsini) hesablaya biləcəyiniz ortalama vaxt müddətini təyin etmək üçün, avtomatik korrelyasiya funksiyasının ilk lokal maksimumunu tapmaq kifayətdir! Varsayılan olaraq, MAX30102 analoq girişi saniyədə 25 bal nisbətində nümunələndirir, buna görə də verilən m -də saniyələrdəki dövr m / 25 -ə bərabərdir.

HR = 60*25 / m = 1500 / m

Əlbəttə ki, r -nin bahalı hesablamalarını aparmaq lazım deyilm bütün gecikmə dəyərləri. Alqoritmimiz m = 25 -ə uyğun gələn ürək dərəcəsi = 60 bpm -ni ilk təxmin edir. Avtokorrelyasiya funksiyası o nöqtədə qiymətləndirilir və sol qonşusundakı dəyərlə müqayisə edilir, m = 24. Qonşuların dəyəri daha yüksəkdirsə, yürüş r -ə qədər sola davam edirm-1 <rm. Beləliklə, müəyyən edilmiş son m maksimum gecikmə olaraq qaytarılır. Növbəti təkrarlama 25 deyil, həmin dəyərdən başlayır və bütün proses təkrarlanır. İlk sol qonşu daha aşağıdırsa, yuxarıdakı rutin yürüşlər oxşar şəkildə sağa işarə edir. Çox vaxt, gecikmə maksimum avtomatik korrelyasiya funksiyasını qiymətləndirməyi tələb edir. Bundan əlavə, maksimum və minimum məqbul gecikmələr (minimum və maksimum ürək dərəcəsinə uyğun olaraq) məhdudlaşdırıcı dəyərlər kimi istifadə olunur.

Yuxarıda göstərilənlər keyfiyyətli siqnallar üçün çox yaxşı işləyir, amma real dünya idealdan uzaqdır. Bəzi siqnallar, əsasən hərəkət artefaktları səbəbiylə təhrif olunur. Belə bir siqnal üçüncü şəkildə göstərilmişdir. Zəif periyodiklik, m = 11 -də ilk yerli maksimumun 0.28 olduğu kimi, avtomatik korrelyasiya funksiyasının formasında da əks olunur. Yaxşı bir siqnal üçün təyin olunan maksimum 0.79 ilə müqayisə edin. Gecikmə məhdudlaşdırıcı dəyərlərlə yanaşı, r -nin dəyərim / r0 maksimum olaraq siqnal keyfiyyətinin yaxşı bir göstəricisidir və müəyyən həddən artıq olması tələbi hərəkət artefaktlarını süzmək üçün istifadə edilə bilər. Girişlərdə göstərilən "RF" qrafikləri 0.25 -ə bərabər olan belə bir həddlə nəticələndi.

Addım 5: Oksigen Doygunluğunun Müəyyən edilməsi

Oksigen Doymasının Təyin Edilməsi
Oksigen Doymasının Təyin Edilməsi
Oksigen Doymasının Təyin Edilməsi
Oksigen Doymasının Təyin Edilməsi
Oksigen Doymasının Təyin Edilməsi
Oksigen Doymasının Təyin Edilməsi
Oksigen Doymasının Təyin Edilməsi
Oksigen Doymasının Təyin Edilməsi

Əvvəlki addım ürək dərəcəsini təyin etmək üçün kifayət idi. SpO2 daha çox iş tələb edir. Birincisi, qırmızı (R) kanalında indiyə qədər laqeyd qalan siqnal nəzərə alınmalıdır. Daha sonra, hər ikisi də arterial qandan əks olunan qırmızı = infraqırmızı siqnalların nisbəti, Z = R/IR hesablanır. "Arterial qan" hissəsi çox vacibdir, çünki işığın çox hissəsi əslində toxumalardan və venoz qandan əks olunur. Siqnalın arterial qana uyğun olan hissəsini necə seçmək olar? Yaxşı, bu, hər ürək atışına görə dəyişən pulsasiya komponentidir. Elektrik mühəndisləri ilə desək, bu "AC hissəsi", qalan əks olunan işıq isə "DC hissəsi" dir. R və İQ işığının mütləq intensivliyi uyğun olmadığından, Z nisbəti birinci şəkildə göstərildiyi kimi nisbi intensivliklərdən hesablanır. Həqiqətən hesablanmış miqdarlar baxımından, x mərkəz siqnalının artıq bilinən ortalaması olan <Y>, orta mərkəzli, təməl səviyyəli siqnalın kök orta kvadratını (RMS) istifadə edirəm; ikinci rəqəmə baxın. Z nisbəti işin yalnız yarısıdır. Qeyri -xətti sensor reaksiyası Z və son SpO arasında empirik bir kalibrləmə tələb edir2 dəyərlər. Kalibrləmə tənliyini MAXIM kodundan götürdüm:

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

Unutmayın ki, bu tənlik yalnız 2017 -ci ildə satın alınan MAX30102 dizayn lövhəsi üçün keçərlidir! Çox güman ki, MAXIM daha sonra sensorlarını yenidən kalibr edə bilər.

Yuxarıdakı prosedur hələ də çoxlu saxta SpO istehsal edir2 oxunuşlar. Qırmızı kanal, IR kimi bir çox əsərdən əziyyət çəkir. Hər iki siqnalın güclü bir şəkildə əlaqələndirilməsini düşünmək məntiqlidir. Əslində, üçüncü rəqəmdəki nümunə kimi keyfiyyətli siqnallar çox yaxşı əlaqəlidir. Bu halda Pearson korrelyasiya əmsalı 0,99 -a bərabərdir. Dördüncü şəkildə göstərildiyi kimi, bu həmişə belə olmur. IR siqnalı r ilə ürək dərəcəsi keyfiyyət filtrindən keçsə dəm / r0 = 0.76, təhrif edilmiş R siqnalı ikisi arasında yalnız 0.42 -ə bərabər olan zəif bir korrelyasiya əmsalı ilə nəticələnir. Bu müşahidə ikinci keyfiyyət filtrini təklif edir: müəyyən həddən artıq olan kanallar arasında korrelyasiya əmsalına malik olmaq.

Son iki rəqəm, bu cür keyfiyyətli süzgəcin xalis təsirini göstərir. Birincisi, ölçülmüş oksigen doyması HR keyfiyyət həddi 0.25 ilə, lakin SpO olmadan çəkilir2 süzmək Növbəti süjet zəif HR və SpO -nun süzülməsi ilə nəticələnir2 0.5 r -də nəticələrm / r0 və 0,8 korrelyasiya əmsalı hədləri. Ümumilikdə, cəmi 12% -ə bərabər olan zəif məlumat nöqtələri daha sərt rejim tərəfindən süzülmüşdür.

Kodumuzda korrelyasiya əmsalı, cc, beşinci şəkildəki düstura görə hesablanır, burada y orta mərkəzli, təməl səviyyəli siqnalı, r isə0 əvvəlki mərhələdə müəyyən edilmişdir.

Addım 6: Mənbə Kodu

Arduino IDE üçün formatlanmış bu layihə üçün C mənbə kodunu Github hesabımızdan aşağıdakı linkdən əldə edə bilərsiniz:

github.com/aromring/MAX30102_by_RF

Readme səhifəsi fərdi komponentləri təsvir edir.

M0 əsaslı Adalogger kimi əla bir məhsul hazırladığı üçün Adafruit'i tərifləmək istəyirəm. Bir çox RAM ilə işləyən sürətli 48 MHz ARM Cortex M0 prosessoru, əlbəttə ki, bu layihənin həyata keçirilməsinə kömək etdi, birbaşa əlavə edilmiş SD kart oxuyucusu (üstəgəl Adafruit SD kitabxanası) böyük miqdarda məlumatların real vaxt saxlanması ilə əlaqəli bütün hobbilərin ağrılarını aradan qaldırdı.

Tövsiyə: