Мазмұны:

Жақсартылған дәлдікпен импульстік оксиметр: 6 қадам (суреттермен)
Жақсартылған дәлдікпен импульстік оксиметр: 6 қадам (суреттермен)

Бейне: Жақсартылған дәлдікпен импульстік оксиметр: 6 қадам (суреттермен)

Бейне: Жақсартылған дәлдікпен импульстік оксиметр: 6 қадам (суреттермен)
Бейне: Дикер Макс шолуы, неміс танк жойғышының нұсқаулығы | DickerMax жабдығын брондау 2024, Шілде
Anonim
Жақсартылған дәлдікпен импульстік оксиметр
Жақсартылған дәлдікпен импульстік оксиметр
Жақсартылған дәлдікпен импульстік оксиметр
Жақсартылған дәлдікпен импульстік оксиметр

Егер сіз жақында дәрігерге барсаңыз, сіздің негізгі өмірлік белгілеріңізді медбике тексерген болуы мүмкін. Салмағы, бойы, қан қысымы, сонымен қатар перифериялық қандағы жүрек соғу жиілігі (ОЖЖ) және оттегінің қанықтылығы (SpO)2). Мүмкін, соңғы екеуі бірнеше минут ішінде кішкентай сандарға сәйкес нөмірлерді көрсететін қызыл жарқыраған электронды зондтан алынды. Бұл зонд импульсті оксиметр деп аталады және сіз бұл туралы барлық негізгі ақпаратты осы жерден таба аласыз.

Қарапайым импульсті оксиметрді оңай сатып алуға болады, бірақ оның қызығы қайда? Мен, ең алдымен, өзімнің жеке үйімді құруды шештім, бірақ одан да маңыздысы нақты бір қосымшаны ескере отырып: түнгі оксиметрия, онда HR да, SpO да.2 деректер бір түнде үздіксіз жиналып, micro SD картасына жазылады. Нұсқауда қазірдің өзінде бірнеше осындай жобалар бар, мысалы, мұнда Arduino қатысатын екеуі, мұнда және біреуі Raspberry Pi. Mine басқару және деректерді жазу үшін MAXIM Integrated және Adafruit's Feather M0 Adalogger -ден сәл жаңа MAX30102 сенсорын пайдаланады.

Біздің жоба аппараттық жағынан жаңашыл емес, сондықтан бұл Нұсқаулықты жазудың қажеті жоқ, бірақ мен оны құру барысында MAX30102 -ден әлдеқайда жоғары консистенциялы деректерді алуға мүмкіндік беретін бағдарламалық қамтамасыз етуде маңызды жетістіктерге жеттім. бұл сенсорға арналған MAXIM жазған бағдарламалық жасақтамаға қарағанда шу аз. Біздің сигналды өңдеу алгоритмінің өнімділігі жоғарыдағы диаграммада суреттелген, онда екі жоғарғы графикада біздің әдіспен шикі сигналдар бойынша есептелген жүрек соғу жиілігі мен оттегінің қанықтылығы бар («RF» арқылы анықталған), ал төменгі екі график MAXIM нәтижелерін көрсетеді. дәл сол сигналдар. HR бойынша стандартты ауытқулар - 4,7 соққы және 18,1 минутына, ал SpO үшін2 0,9% және 4,4%, сәйкесінше RF және MAXIM үшін.

(Екі РФ графигі 0,25 автокорреляцияның ең төменгі шегіне сәйкес келеді және R / IR корреляциясына шектеу қоймайды; осы терминдерді түсіндіру үшін 4 және 5 -қадамдарды қараңыз.)

1 -қадам: Жабдық

Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
  1. MAXIM Integrated, Inc. компаниясының пульсоксиметрі мен жүрек соғу жиілігі сенсоры MAX30102.
  2. Adafruit, Inc компаниясынан мамық M0 Adalogger.
  3. Литий -иондық батарея Adafruit, Inc.

Қосылымдар:

  • MAX30102 тақтасындағы SCL мен SDA адаптерлерін SCL және SDA түйреуіштеріне бекітеді
  • MAX30102 тақтасында INT түйреу үшін 10 -адаптер түйрегіші
  • GND MAX30102 тақтасына GND аналогы
  • MAX30102 VIN -ге дейінгі 3V аналогты

2 -қадам: MAX30102 арқылы қайтарылған цифрлық сигналдар

MAX30102 арқылы қайтарылған сандық сигналдар
MAX30102 арқылы қайтарылған сандық сигналдар
MAX30102 арқылы қайтарылған сандық сигналдар
MAX30102 арқылы қайтарылған сандық сигналдар

Сенсордың жұмыс принциптері өте қарапайым: екі жарықдиодты, бір қызыл (660 нм) және бір инфрақызыл (880 нм, ИҚ) адам терісі арқылы жарқырайды. Жарық астындағы тіндермен, соның ішінде перифериялық қанмен жұтылады. Датчиктің фотодетекторы толқын ұзындығында шағылған жарықты жинайды және I2C протоколының көмегімен сәйкес екі қарқындылықты қайтарады. Оттегімен қаныққан және тотықсыздандырылған гемоглобиннің жұтылу спектрлері екі толқын ұзындығында да ерекшеленетіндіктен, шағылысқан жарық әр жүрек соғу кезінде тері астындағы импульстің астында болатын артериялық қанның мөлшері ретінде өзгермелі компонентке ие. Жүрек соғу жиілігін және оттегінің қанықтылығын анықтау сигналды өңдеу бағдарламалық жасақтамасына байланысты.

Шикі сигналдардың мысалдары (тек IR арнасы) жоғарыдағы суреттерде көрсетілген. Уикипедия бетінде айтылған көптеген факторлардың әсерінен ауысатын ауыспалы бастапқы сызықпен қапталған мерзімді компонентті байқауға болады. Қозғалыстан туындайтын артефактілер әсіресе тітіркендіреді, себебі олар пайдалы HR сигналын бүркемелеп, жалған нәтижеге әкелуі мүмкін. Демек, озық коммерциялық оксиметрлерде бұл артефактілерді жоюға көмектесетін акселерометрлер бар.

Мен акселерометрді оксиметрдің келесі нұсқасына қосуға болады, бірақ түнгі HR/SpO үшін2 жазу, егер сенсор көп уақыт қозғалмайтын болса, бұрмаланған сигналдарды анықтау және жіберу жеткілікті.

MAX30102 сенсорының өзі жер бетіне орнатылған кішкентай пакетте болады, бірақ MAXIM мейірімділікпен Arduino мен mbed үшін сигналдарды өңдеуге арналған бағдарламалық жасақтама тақтасын ұсынады (MAXREFDES117#). Мен сенсор мен Аналоггер арасындағы сымдарды дәнекерлеуді және бір күнде жақсы, жақсы оксиметрді алуды күтіп, қуана сатып алдым. Мен MAXIM бағдарламалық қамтамасыз етуінің RD117_ARDUINO нұсқасын Adalogger ARM Cortex M0 процессорында жұмыс істеуге бейімдедім. Негізінде, max30102.cpp ішіндегі сәйкес келмейтін SofI2C функцияларын Wire кітапханасының сәйкес қоңырауларымен ауыстыру керек болды. Код Arduino IDE v1.8.5 -де жақсы құрастырылды және M0 -де қатесіз жұмыс істеді. Алайда, таза нәтижелер көңіл көншітпейді. Кіріспе қадамында мен HR мен SpO -ның өте жоғары дисперсиясын көрсеттім2. Әрине, мен дұрыс емес нәрсе жасадым деп айтуы мүмкін, бұл менің де бастапқы ойым. Алайда, MAXIM нұсқаулық бейнеде сіз экранда көрсетілетін HR мәндерін бақылай аласыз. Сонымен қатар, бейнедегі түсініктемелер басқалардың ұқсас құбылысты байқағанын растайды.

Ұзақ әңгіме қысқаша айтқанда, кейбір эксперименттерден кейін мен сенсордың дұрыс жұмыс істейтінін анықтадым және цифрлық сигналды өңдеудің балама әдісі әлдеқайда жақсы тұрақтылыққа әкеледі. «РФ» арқылы көрсетілген бұл жаңа әдіс келесі қадамдарда сипатталған.

3 -қадам: сигналды алдын ала өңдеу

Сигналды алдын ала өңдеу
Сигналды алдын ала өңдеу
Сигналды алдын ала өңдеу
Сигналды алдын ала өңдеу
Сигналды алдын ала өңдеу
Сигналды алдын ала өңдеу
Сигналды алдын ала өңдеу
Сигналды алдын ала өңдеу

Біздің іске асыруда шикізат сигналы 25 Гц жылдамдықпен (MAXIM -мен бірдей) толық 4 секунд ішінде жиналады (MAXIM -дің бағдарламалық жасақтамасы тек 1 секундтық құндылықты жинайды), нәтижесінде соңғы нүктеге 100 цифрланған уақыт нүктесі шығады. Әрбір 100-нүктелік тізбек келесі жолмен алдын ала өңделуі керек:

  1. Орташа орталықтандыру (электр инженерлеріне «тұрақты ток компонентін алып тастау»). Сенсордан келетін шикі деректер 10 -дағы бүтін сандардың уақыттық сериясы болып табылады5 ауқымы. Пайдалы сигнал артериялық қаннан шағылатын жарықтың бір бөлігі ғана, ол тек 10 -ға сәйкес өзгереді2 - бірінші фигура. Сигналды мағыналы өңдеу үшін әр қатар нүктесінен орташа мәнді алып тастаған жөн. Бұл бөлік MAXIM бағдарламалық жасақтамасынан еш айырмашылығы жоқ. Айырмашылығы-уақыт индекстерінің қосымша орташа орталықтандырылуы. Басқаша айтқанда, 0 -ден 99 -ға дейінгі сандар бойынша сериялық нүктелерді индекстеудің орнына, жаңа индекстер -49.5, -48.5,…, 49.5 сандары болды. Басында біртүрлі болып көрінуі мүмкін, бірақ бұл процедураның арқасында сигнал қисығының «ауырлық орталығы» координаттар жүйесінің шығуымен сәйкес келеді (екінші сурет). Бұл факт келесі қадамда өте пайдалы болады.
  2. Негізгі нивелирлеу. 2 -қадамда көрсетілген толқын пішініне тағы бір шолу нақты оксиметрия сигналдарының негізгі сызығы көлденеңінен тегіс емес, бірақ әр түрлі беткейлерде өзгеретінін көрсетеді. Үшінші суретте орташа ИҚ сигналы (көк қисық) және оның бастапқы сызығы (көк түзу сызық) көрсетілген. Бұл жағдайда бастапқы сызықтың көлбеуі теріс болады. Алда сипатталған сигналды өңдеу әдісі бастапқы сызықтың көлденең болуын талап етеді. Бұған орташа орталықтандырылған сигналдан бастапқы сызықты алып тастау арқылы қол жеткізуге болады. Y және X координаттарының орташа центрлеуінің арқасында бастапқы сызықтың қиылысы нөлге тең және оның көлбеу теңдеуі төртінші суретте көрсетілгендей қарапайым. Үшінші суретте бастапқы сызық қызғылт сары қисықпен көрсетілген.

Осылайша алдын ала өңделген сигнал келесі қадамға дайын болады.

4 -қадам: Жұмыс күші: автокорреляция функциясы

Жұмыс күші: автокорреляция функциясы
Жұмыс күші: автокорреляция функциясы
Жұмыс күші: автокорреляция функциясы
Жұмыс күші: автокорреляция функциясы
Жұмыс күші: автокорреляция функциясы
Жұмыс күші: автокорреляция функциясы

Әдеттегі 1,…, n индекстеуге қайтып оралсақ, бірінші суретте r корреляция функциясының анықтамасы көрсетілген.м - сигналдың мерзімділігін және сапасын анықтауда өте пайдалы мөлшер. Бұл сигналдың уақыт сериясының қалыпқа келтірілген скалярлық туындысы, ол m l -ге ауысады. Біздің қосымшамызда әр автокорреляция мәнін lag = 0 мәніне қатысты масштабтау ыңғайлы, яғни r арқылы анықталатын салыстырмалы автокорреляцияны қолданыңыз.м / r0.

Екінші суретте жақсы сапалы ИҚ сигналының салыстырмалы автокорреляциясының схемасы көрсетілген. Күтілгендей, lag = 0 мәні оның ғаламдық максимумында 1 -ге тең. Келесі (жергілікті) максимум lag = 23 кезінде болады және 0,79 -ға тең. Автокорреляциялық сюжетте жергілікті минимумдар мен максимумдардың болуын түсіну қиын емес: сигнал оңға қарай ауысқанда, оның шыңдары бастапқыда бір -біріне кедергі келтіреді, бірақ белгілі бір сәтте кедергі конструктивті болады және артта қалу кезінде максимумға жетеді. сигналдың кезеңі.

Соңғы сөйлем өте маңызды: сигнал жиілігін (яғни, жүрек соғу жиілігін) есептеуге болатын шыңдар арасындағы орташа уақыт кезеңін анықтау үшін автокорреляция функциясының бірінші локальды максимумын табу жеткілікті! Әдепкі бойынша, MAX30102 аналогты кірісті секундына 25 нүкте жылдамдығымен таңдайды, сондықтан берілген м -де секундтардағы период м / 25 -ке тең. Бұл жүрек соғу жиілігін минутына соққылармен (bpm) көрсетеді:

HR = 60*25 / м = 1500 / м

Әрине, r -дің қымбат есептеулерін жасау қажет емесм мүлдем артта қалу мәндері. Біздің алгоритм жүрек соғу жиілігі = 60 мин / мин болатын бірінші болжамды жасайды, бұл m = 25 сәйкес келеді. Автокорреляция функциясы сол кезде бағаланады және сол жақ көршісіндегі мәнмен салыстырылады, m = 24. Егер көршілердің мәні жоғары болса, онда марш солға қарай түнге дейін жалғасадым-1 <rм. Осылайша анықталған соңғы m максималды артта қалушылық ретінде қайтарылады. Келесі қайталау 25 емес, сол мәннен басталады және бүкіл процесс қайталанады. Егер бірінші сол жақ көрші төмен болса, онда жоғарыда айтылған марштар дәл осылай оңға қарай артта қалады. Көбінесе, артта қалу автокорреляциялық функцияны бірнеше бағалауды қажет етеді. Сонымен қатар, шектік мән ретінде максималды және минималды рұқсат етілген артта қалулар (тиісінше минималды және максималды жүрек соғу жиілігіне сәйкес) қолданылады.

Жоғарыда айтылғандар жақсы сигналдар үшін өте жақсы жұмыс істейді, бірақ шынайы әлем идеалдан алыс. Кейбір сигналдар бұрмаланған түрде шығады, көбінесе қозғалыс артефактілеріне байланысты. Мұндай сигнал үшінші суретте көрсетілген. Нашар периодтылық оның автокорреляциялық функциясының формасында, сондай -ақ m = 11 -де бірінші жергілікті максимумның 0,28 төмен мәнінде көрінеді. Оны жақсы сигнал үшін анықталған 0,79 максималды мәнімен салыстырыңыз. Лаг шектелетін мәндермен қатар, r мәнім / r0 максималды түрде сигнал сапасының жақсы көрсеткіші болып табылады және оның белгілі бір шекті мәннен асып кетуі туралы талап қозғалыс артефактілерін сүзу үшін қолданылуы мүмкін. Кіріспеде көрсетілген «РФ» графиктері 0,25 -ке тең осындай шекті нәтиже берді.

5 -қадам: Оттегінің қанықтылығын анықтау

Оттегінің қанықтылығын анықтау
Оттегінің қанықтылығын анықтау
Оттегінің қанықтылығын анықтау
Оттегінің қанықтылығын анықтау
Оттегінің қанықтылығын анықтау
Оттегінің қанықтылығын анықтау
Оттегінің қанықтылығын анықтау
Оттегінің қанықтылығын анықтау

Алдыңғы қадам жүрек соғу жиілігін анықтау үшін жеткілікті болды. SpO2 көбірек жұмысты қажет етеді. Біріншіден, қызыл (R) арнадағы осы уақытқа дейін ескерілмеген сигналды ескеру қажет. Әрі қарай, қызыл түс пен инфрақызыл сигналдардың арақатынан қаннан шағылған Z = R/IR қатынасы есептеледі. «Артериялық қан» бөлігі өте маңызды, өйткені жарықтың көп бөлігі тіндер мен веноздық қаннан шағылады. Сигналдың артериялық қанға сәйкес келетін бөлігін қалай таңдауға болады? Бұл әр пульсацияға байланысты өзгеретін пульсациялы компонент. Электр инженерлерінің сөзімен айтқанда, бұл «айнымалы ток бөлігі», ал қалған шағылысатын жарық - «тұрақты ток» бөлігі. R және IR жарықтың абсолюттік интенсивтілігі сәйкес келмейтіндіктен, Z коэффициенті бірінші суретте көрсетілгендей салыстырмалы интенсивтіліктен есептеледі. Іс жүзінде есептелген шамалар бойынша, мен бастапқы сигналдың орташа белгісінің орташа уайымдалатын сигналының орташа квадраттық түбірін (ТБЖ) қолданамын, у сигналын бұрыннан белгілі, <Y>; екінші суретті қараңыз. Z коэффициенті жұмыстың жартысы ғана. Сенсордың сызықты емес реакциясы Z мен соңғы SpO арасындағы эмпирикалық калибрлеуді қажет етеді2 құндылықтар. Мен MAXIM кодынан калибрлеу теңдеуін алдым:

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

Есіңізде болсын, бұл теңдеу тек 2017 жылы сатып алынған MAX30102 дизайн тақтасы үшін жарамды! MAXIM сенсорларын кейінірек қайта калибрлеуі мүмкін.

Жоғарыда аталған процедура әлі де көптеген жалған SpO шығарады2 оқулар. Қызыл арна ИҚ сияқты көптеген артефактілерден зардап шегеді. Екі сигнал да бір -бірімен тығыз байланысты болуы керек деп ойлау орынды. Шындығында, жақсы суреттер үшінші суреттегі мысал сияқты өте жақсы корреляцияланады. Пирсон корреляция коэффициенті бұл жағдайда 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, бесінші суреттегі формула бойынша есептеледі, мұндағы у орташа орталықтандырылған, бастапқы деңгейдегі сигналды білдіреді, ал r0 алдыңғы қадамда анықталды.

6 -қадам: Бастапқы код

Arduino IDE үшін пішімделген осы жобаның C бастапқы коды біздің Github есептік жазбасынан келесі сілтеме бойынша қол жетімді:

github.com/aromring/MAX30102_by_RF

Оның Readme бетінде жеке компоненттер сипатталған.

Мен Adafruit-ті M0 негізіндегі Adalogger сияқты керемет өнім шығарғаны үшін мақтағым келеді. Оның 48 МГц жылдамдықтағы ARM Cortex M0 процессоры, бұл жедел жады бар, бұл жобаның өміршең болуына септігін тигізді, ал SD картасын оқу құрылғысы (Adafruit -тің SD кітапханасы) үлкен көлемде деректерді сақтауға байланысты әуесқойдың барлық ауырсынуын жояды.

Ұсынылған: