Мазмуну:
- 1 -кадам: Аппараттык
- 2 -кадам: MAX30102 тарабынан кайтарылган санариптик сигналдар
- 3 -кадам: Сигналды алдын ала иштетүү
- 4 -кадам: Workhorse: Autocorrelation Function
- 5 -кадам: Кычкылтектин каныккандыгын аныктоо
- 6 -кадам: Булак коду
Video: Пульсоксиметр жакшыртылган тактык менен: 6 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Эгерде сиз жакында эле врачка барсаңыз, анда сиздин негизги жашоо белгилериңизди медайым карап чыккан болушу ыктымал. Салмагы, бою, кан басымы, ошондой эле жүрөктүн кагышы (HR) жана перифериялык кандагы кычкылтектин каныкышы (SpO)2). Балким, акыркы экөө бир нече мүнөттө кичинекей экранда тиешелүү сандарды чагылдырган кызыл манжалуу электрондук манжадан алынган. Бул иликтөө импульсоксиметр деп аталат жана бул жөнүндө бардык негизги маалыматты бул жерден таба аласыз.
Жөнөкөй импульс оксиметрин оңой эле сатып алса болот, бирок анын кызык жери кайда? Мен өзүмдүн жеке үйүмдү курууну чечтим, бирок эң маанилүүсү, конкреттүү колдонмо менен: түнкү оксиметрия, бул жерде HR да, SpO да бар.2 маалыматтар түн ичинде тынымсыз чогултулуп, микро SD картага жазылып турмак. Instructables мурунтан эле ушул сыяктуу бир нече долбоорлорду камтыйт, мисалы, бул жерде жана бул жерде Arduino катышкан жана Raspberry Pi колдонулган. Mine көзөмөлдөө жана маалыматтарды жазуу үчүн MAXIM Integrated жана Adafruit's Feather M0 Adaloggerден бир аз жаңы MAX30102 сенсорун колдонот.
Биздин долбоор, демек, аппараттык жактан өзгөчө инновациялуу эмес, ошондуктан бул Нускаманы жазууга арзыбайт, бирок аны түзүү процессинде мен MAX30102ден маалыматтарды алда канча жогору ырааттуулукта жана башка бул сенсор үчүн MAXIM тарабынан жазылган программага караганда аз ызы -чуу. Биздин сигналды иштетүү алгоритминин иштеши жогорудагы диаграммада көрсөтүлгөн, анда эки жогорку графада биздин ыкма боюнча чийки сигналдардан эсептелген жүрөктүн согушу жана кычкылтектин каныкуусу бар ("RF" менен аныкталган), ал эми астыңкы эки графада MAXIMдин жыйынтыктары көрсөтүлгөн дал ошол сигналдар. HR үчүн стандарттык четтөөлөр 4.7 bpm жана 18.1 bpm жана SpO үчүн2 0.9% жана 4.4%, тиешелүүлүгүнө жараша RF жана MAXIM үчүн.
(Эки RF диаграммасы 0.25 минималдуу автокорреляциялык чегине туура келет жана R / IR корреляциясы боюнча чектөө жок; бул терминдерди түшүндүрүү үчүн 4 жана 5 -кадамдарды караңыз.)
1 -кадам: Аппараттык
- Pulse oximeter жана жүрөктүн кагышынын сенсор MAX30102 MAXIM Integrated, Inc.
- Adafruit, Inc компаниясынан Feather M0 Adalogger.
- Литий -ион батареясы Adafruit, Inc.
Байланыштар:
- MAX30102 тактасындагы SCL жана SDA тиешелүү SCL жана SDA казыктарына Adalogger казыктары
- MAX30102 тактасына INTти туташтыруу үчүн Adalogger пин 10
- Adalogger GNDден MAX30102 тактасына GND
- MAX30102 VIN үчүн 3V Adalogger
2 -кадам: MAX30102 тарабынан кайтарылган санариптик сигналдар
Сенсордун иштөө принциптери абдан жөнөкөй: эки LED, бир кызыл (660 нм) жана бир инфракызыл (880 нм, IR) адамдын териси аркылуу жарык чачат. Жарык жарым -жартылай астындагы ткандар, анын ичинде перифериялык кан аркылуу сиңет. Сенсордун фотодетектору толкун узундугунда чагылган жарыкты чогултат жана I2C протоколун колдонуп, тиешелүү эки интенсивдүүлүктү кайтарат. Кычкылтек менен дезоксигенацияланган гемоглобиндин абсорбциялык спектрлери эки толкун узундугу үчүн айырмаланып тургандыктан, чагылган жарыктын ар бир жүрөк согушу менен теринин астында болгон артериялык кандын өлчөмү катары өзгөрмөлүү компоненти бар. Жүрөктүн кагышын жана кычкылтектин каныккандыгын аныктоо сигналды иштетүү программасына чейин.
Чийки сигналдардын мисалдары (IR каналы үчүн гана) жогорудагы сүрөттөрдө көрсөтүлгөн. Уикипедия баракчасында айтылган бир нече факторлорго байланыштуу өзгөрүлүп турган өзгөрмөлүү базалык базага мезгил -мезгили менен кирген компоненттерди байкаса болот. Кыймылдан жасалган артефакттар өзгөчө кыжырды келтирет, анткени алар пайдалуу HR сигналын маска кылып, жалган натыйжаларга алып келиши мүмкүн. Демек, өнүккөн коммерциялык оксиметрлерде бул экспонаттарды жокко чыгарууга жардам берүүчү акселерометрлер бар.
Мен оксиметримдин кийинки версиясына акселерометрди кошо алам, бирок түнкү HR/SpO үчүн2 жазуу, сенсор көпчүлүк учурда кыймылсыз калганда, бузулган сигналдарды табуу жана түшүрүү жетиштүү.
MAX30102 сенсорунун өзү кичинекей жер үстүнө орнотулган пакетте келет, бирок MAXIM ырайымдуулук менен Arduino жана mbed үчүн сигналдарды иштетүүчү программалык камсыздоону (System Board 6300) сунуштайт - бардыгы MAXREFDES117#маалымдама дизайн пакетинде. Мен кубаныч менен сенсор менен Adaloggerдин ортосундагы кээ бир зымдарды эритип, бир күндө иштөөчү, жакшы оксиметрге ээ болууну күтүп сатып алдым. Мен MAXIM программасынын RD117_ARDUINO версиясын Adalogger ARM Cortex M0 процессорунда иштетүүгө ылайыкташтырдым. Негизи, мен эмне кылышым керек болсо, max30102.cppтеги шайкеш келбеген SofI2C функцияларын тиешелүү Wire китепканасынын чалуулары менен алмаштыруу гана керек болчу. Код Arduino IDE v1.8.5 менен жакшы түзүлүп, эч кандай катасыз эле M0де иштеген. Таза жыйынтыктар, бирок, өкүнүчтүү болду. Киришүү кадамында мен HR жана SpO экөөнүн тең жогорку дисперсиясын көрсөттүм2. Албетте, кимдир бирөө мен туура эмес кылдым деп ырасташы мүмкүн жана бул менин түпкү оюм болчу. Бирок, MAXIMдин нускоочу видеосунда сиз экранда чагылдырылган HR баалуулуктарын байкай аласыз. Мындан тышкары, видеонун астындагы комментарийлер дагы ушундай көрүнүштү башкалар байкаганын тастыктайт.
Узун окуяны кыскача айтканда, кээ бир эксперименттерден кийин мен сенсордун жакшы иштеп жатканын аныктадым жана санариптик сигналды иштетүүнүн альтернативалуу ыкмасы алда канча жакшы туруктуулукка алып келет. "RF" тарабынан көрсөтүлгөн бул жаңы ыкма кийинки кадамдарда сүрөттөлөт.
3 -кадам: Сигналды алдын ала иштетүү
Биздин ишке ашырууда, чийки сигнал 25 Гц (MAXIMдики менен бирдей) толук 4 секундада чогултулат (MAXIMдин программалык камсыздоосу 1 секунддун гана баасын чогултат), жыйынтыктоочу маалымат чекитине 100 санариптештирилген убакыт пункту пайда болот. Ар бир 100 баллдык ырааттуулук төмөнкүдөй жол менен кайра иштетилиши керек:
- Орто-борборлоштуруу (башкача айтканда, электр инженерлерине "DC компонентин алып салуу"). Сенсордон келген чийки маалыматтар 10догу бүтүн сандардын убакыт сериясы5 диапазон. Пайдалуу сигнал, артериялык кандан чагылган нурдун бир бөлүгү, ал 10 гана тартипте өзгөрөт2 - биринчи фигура. Белгилүү сигналды иштетүү үчүн ар бир серия чекитинен орточо сумманы алып салуу керек. Бул бөлүк MAXIM программалык камсыздоосунун эч айырмасы жок. Эмнеси менен айырмаланат, убакыт индекстеринин кошумча орточо борборлошуусу. Башкача айтканда, 0дөн 99га чейинки сандар боюнча сериялык пункттарды индекстөөнүн ордуна, жаңы индекстер азыр -49.5, -48.5,…, 49.5 сандары. Башында кызыктай көрүнүшү мүмкүн, бирок бул процедуранын жардамы менен сигналдын ийри сызыгынын "оордук борбору" координаттар системасынын келип чыгышы менен дал келет (экинчи сүрөт). Бул чындык кийинки кадамда абдан пайдалуу болуп калат.
- Базалык тегиздөө. 2 -кадамда көрсөтүлгөн толкун формаларына дагы бир кароо, чыныгы оксиметрия сигналдарынын базасы горизонталдуу тегиздиктен алыс экенин, бирок ар кандай боорлордо өзгөрүп турганын көрсөтөт. Үчүнчү сүрөттө орточо борборлоштурулган IR сигналы (көк ийри) жана анын баштапкы сызыгы (көк түз сызык) көрсөтүлгөн. Бул учурда баштапкы сызыктын эңкейиши терс болот. Алдыда сүрөттөлгөн сигналды иштетүү ыкмасы баштапкы сызыктын горизонталдуу болушун талап кылат. Буга орточо сигналдан баштапкы сызыкты алып салуу аркылуу жетишсе болот. Y жана X координаттарынын орточо борборлошуусунун аркасында, базалык чекит нөлгө барабар жана анын эңкейиш теңдемеси өзгөчө жөнөкөй, төртүнчү сүрөттө көрсөтүлгөндөй. Баштапкы деңгээлдеги сигнал үчүнчү сүрөттө кызгылт сары ийри менен көрсөтүлгөн.
Ошентип, алдын ала иштетилген сигнал кийинки кадамга даяр.
4 -кадам: Workhorse: Autocorrelation Function
Кадимки 1,…, n индекстөөсүнө кайтып келсек, биринчи сүрөттө автокорреляция функциясынын аныктамасы r көрсөтүлгөнм - сигналдын мезгилдүүлүгүн жана сапатын аныктоодо абдан пайдалуу деп табылган сан. Бул жөн эле сигналдын убакыттуу катарынын нормализацияланган скалярдык продукту, м -н артка жылган. Биздин колдонмодо, бирок ар бир автокорреляциянын маанисин lag = 0 маанисине карата масштабдоо ыңгайлуу, б.а., r менен аныкталган салыштырмалуу автокорреляцияны колдонуу.м / r0.
Экинчи сүрөттө типтүү жакшы сапаттагы IR сигналынын салыштырмалуу автокорреляциясынын сюжети көрсөтүлгөн. Күтүлгөндөй, лаг = 0 мааниси анын глобалдык максимумунда 1ге барабар. Кийинки (локалдык) максимум лаг = 23тө пайда болот жана 0,79га барабар. Автокорреляциялык сюжетте жергиликтүү минимумдар менен максимумдардын бар экенин түшүнүү оңой: сигнал оңго жылганда анын чокулары башында бири -бирине кыйратуучу тоскоолдук кылат, бирок белгилүү бир учурда интерференция конструктивдүү болуп, орточо көрсөткүчкө барабар артта калууга жетишет. сигналдын мезгили.
Акыркы сөз айкашы абдан маанилүү: сигналдын жыштыгын (б.а. жүрөктүн кагышын) эсептей ала турган чокулар ортосундагы орточо убакыт аралыгын аныктоо үчүн автокорреляция функциясынын биринчи жергиликтүү максимумун табуу жетиштүү! Демейки боюнча, MAX30102 аналогдук кирүүнү секундасына 25 балл ылдамдыкта алат, андыктан берилген м -де секундадагы мезгил м / 25ке барабар.
HR = 60*25 / м = 1500 / м
Албетте, rдын кымбат эсептөөлөрүн жасоонун кажети жокм таптакыр артта калган баалуулуктар. Биздин алгоритм жүрөктүн кагышынын биринчи божомолун жасайт = 60 bpm, бул m = 25ке туура келет. Автокорреляция функциясы ошол учурда бааланат жана сол коңшусундагы мааниге салыштырмалуу, m = 24. Эгерде кошуналардын мааниси жогору болсо, анда марш рга чейин солго уланатm-1 <рм. Ошентип аныкталган акыркы m кийин максималдуу артта калуу катары кайтарылат. Кийинки кайталоо 25тин ордуна ошол мааниден башталат жана бүт процесс кайталанат. Эгерде биринчи сол кошуна төмөн болсо, анда жогорудагы күнүмдүк жүрүштөр оң жагына окшош түрдө артта калат. Көпчүлүк учурда, артта калуу автокорреляциялык функцияга бир нече баа берүүнү талап кылат. Мындан тышкары, максималдуу жана минималдуу алгылыктуу артта калуулар (тиешелүүлүгүнө жараша минималдуу жана максималдуу жүрөктүн кагышына туура келет) чектөөчү маанилер катары колдонулат.
Жогоруда сапаттуу сигналдар үчүн абдан жакшы иштейт, бирок реалдуу дүйнө идеалдан алыс. Кээ бир сигналдар, негизинен, кыймыл артефактыларынан улам, бурмаланып чыгат. Мындай сигнал үчүнчү сүрөттө көрсөтүлгөн. Начар мезгилдүүлүк анын автокорреляциялык функциясынын формасында, ошондой эле m = 11деги биринчи жергиликтүү максимумдун 0,28 деъгээлинде чагылдырылат. Аны жакшы сапаттагы сигнал үчүн аныкталган 0,79 максималдуу мааниге салыштырыңыз. Лагды чектөө менен бирге, r маанисим / r0 максималдуу түрдө сигналдын сапатынын жакшы көрсөткүчү болуп саналат жана кыймылдын артефакттарын чыпкалоо үчүн анын белгилүү бир чектен ашуу талабы колдонулушу мүмкүн. Киришүүлөрдө көрсөтүлгөн "RF" графалары 0,25ке барабар болгон мындай чектен келип чыккан.
5 -кадам: Кычкылтектин каныккандыгын аныктоо
Мурунку кадам жүрөктүн кагышын аныктоо үчүн жетиштүү болгон. SpO2 көбүрөөк эмгекти талап кылат. Биринчиден, кызыл (R) каналындагы буга чейин көңүл бурулбаган сигналды эске алуу керек. Кийинки, кызыл менен инфракызыл сигналдардын катышы, Z = R/IR, экөө тең артериялык кандан чагылдырылган, эсептелет. "Артериялык кан" бөлүгү өтө маанилүү, анткени жарыктын көбү ткандардын жана веналардын кандарынан чагылат. Кантип сигналдын артериялык канга туура келген бөлүгүн тандоо керек? Ооба, бул ар бир жүрөктүн соккусуна жараша өзгөрүлүүчү пульсациялык компонент. Электр инженерлери менен айтканда, бул "AC бөлүгү", ал эми калган чагылган жарык "DC бөлүгү". R жана IR жарыктын абсолюттук интенсивдүүлүгү пропорционалдуу болбогондуктан, Z катышы биринчи сүрөттө көрсөтүлгөндөй салыштырмалуу интенсивдүүлүктөн эсептелет. Иш жүзүндө эсептелген чоңдуктар боюнча, мен орточо борборлоштурулган, баштапкы деңгээлдеги сигналдын тамыры менен орточо квадратын (RMS) колдоном, y, буга чейин белгилүү болгон чийки сигналдын орточо мааниси, <Y>; экинчи фигураны карагыла. 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ге гана барабар кылат. Бул байкоо экинчи сапат чыпкасын сунуштайт: каналдар ортосундагы корреляция коэффициентине ээ, белгилүү бир чектен ашат.
Акыркы эки көрсөткүч мындай сапаттуу чыпкалоонун таза эффектин мисал кылат. Биринчиден, өлчөнгөн кычкылтек каныкуусу HR сапатынын босогосу 0.25 менен, бирок SpO жок2 чыпкалоо Кийинки сюжет начар HR жана 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 МГц ARM Cortex M0 процессору, көп RAM менен, албетте, бул долбоорду ишке ашырууга жардам берди, ал эми түздөн -түз тиркелген SD карт окурманы (плюс Adafruitтин SD китепканасы) көп убакыттагы маалыматтардын реалдуу убакытта сакталышы менен байланышкан бардык хоббилердин ооруларын жок кылат.
Сунушталууда:
Чоң жана жакшыртылган Christmas Star Neopixel Attiny85: 3 кадам (сүрөттөр менен)
Чоңураак жана жакшыртылган Рождество жылдызы Neopixel Attiny85: Өткөн жылы мен кичинекей 3D басылган Рождество жылдызын жасадым, караңыз https://www.instructables.com/id/Christmas-Star-LE… Бул жылы мен чынжырдан чоңураак жылдыз жасадым. 50 неопикселден (5V WS2811). Бул чоң жылдыздын дагы үлгүлөрү бар болчу (мен дагы эле кошуп жана өркүндөтүп жатам
LM3886 Power Amplifier, Dual or Bridge (жакшыртылган): 11 кадам (Сүрөттөр менен)
LM3886 Power Amplifier, Dual or Bridge (жакшыртылган): Эгерде сизде электроника тажрыйбасы болсо, компакт эки кубаттуу (же көпүрө) күчөткүчтү куруу оңой. Бир нече бөлүктөр гана талап кылынат. Албетте, моно ампти куруу андан да оңой. Чечүүчү маселелер - бул энергия менен камсыздоо жана муздатуу
Кайра иштетүүдөн жасалган жакшыртылган электростатикалык турбинасы: 16 кадам (сүрөттөр менен)
Кайра иштетүүдөн жасалган жакшыртылган электростатикалык турбинасы: Бул толугу менен чийилген, электростатикалык турбинасы (EST), жогорку чыңалуудагы түз токту (HVDC) жогорку ылдамдыкка, айлануучу кыймылга айлантат. Менин долбоорум атмосферадан электр энергиясы менен иштеген Джефименко Корона Моторунан шыктандырылган
Жаңы жана жакшыртылган Geiger Counter - Азыр WiFi менен!: 4 кадам (Сүрөттөр менен)
Жаңы жана жакшыртылган Гейгер эсептегичи - Эми WiFi менен!: Бул менин Гейгер эсептегичимдин ушул нускамадан жаңыртылган версиясы. Бул абдан популярдуу болчу жана мен аны курууга кызыккан адамдардан жакшы пикирлерди алдым, андыктан уландысы: GC-20. Гейгер эсептегич, дозиметр жана радиация м
Өзгөртүлгөн жапайы нерсе - Джойстик рулу - Жаңы жана жакшыртылган: 7 кадам (Сүрөттөр менен)
Өзгөртүлгөн жапайы нерселер - джойстик рулу - жаңы жана жакшыртылган: 8/1/2019 жаңыртуу: Бул долбоорду аяктагандан эки жыл өткөндөн кийин, мен бул майыптар коляскаларын которууну жеңилдетүү үчүн бир нече схемаларды иштеп чыктым. Биринчи схема дээрлик ушул жерде орнотулган протоборд менен бирдей, бирок инстеа