فهرست مطالب:

سنج سنج پالس با دقت بسیار بهبود یافته: 6 مرحله (همراه با تصاویر)
سنج سنج پالس با دقت بسیار بهبود یافته: 6 مرحله (همراه با تصاویر)

تصویری: سنج سنج پالس با دقت بسیار بهبود یافته: 6 مرحله (همراه با تصاویر)

تصویری: سنج سنج پالس با دقت بسیار بهبود یافته: 6 مرحله (همراه با تصاویر)
تصویری: АСМР 🏆🔥[Гарри Поттер и Кубок огня] [Глава 20-29] Чтение шепотом 📚 ASMR whisper [Harry Potter] 2024, نوامبر
Anonim
سنج سنج پالس با دقت بسیار بهبود یافته
سنج سنج پالس با دقت بسیار بهبود یافته
سنج سنج پالس با دقت بسیار بهبود یافته
سنج سنج پالس با دقت بسیار بهبود یافته

اگر اخیراً به پزشک مراجعه کرده اید ، احتمالاً علائم حیاتی اولیه شما توسط یک پرستار بررسی شده است. وزن ، قد ، فشار خون و همچنین ضربان قلب (HR) و اشباع اکسیژن در خون محیطی (SpO2) شاید دو مورد آخر از کاوشگر انگشتی الکترونیکی درخشان قرمز بدست آمد که اعداد مربوطه را در چند دقیقه روی صفحه کوچک نشان می داد. آن کاوشگر پالس اکسیمتر نامیده می شود و می توانید همه اطلاعات اولیه در مورد آن را در اینجا پیدا کنید.

به راحتی می توان یک پالس اکسیمتر ساده خرید ، اما سرگرمی در آن کجاست؟ من تصمیم گرفته ام که خودم را برای اولین بار درست کنم ، اما مهمتر از همه با یک برنامه خاص در ذهنم: اکسی متری شبانه که در آن HR و SpO2 داده ها به طور مداوم یک شبه جمع آوری شده و بر روی کارت micro SD ثبت می شوند. Instructables قبلاً شامل چندین پروژه از این دست است ، به عنوان مثال ، دو مورد شامل Arduino در اینجا و اینجا ، و یکی از Raspberry Pi استفاده می کند. Mine از سنسور کمی جدیدتر MAX30102 از MAXIM Integrated و Adafruit's Feather M0 Adalogger برای کنترل و ضبط اطلاعات استفاده می کند.

بنابراین پروژه ما از نظر سخت افزاری چندان نوآور نیست و به همین دلیل ارزش نوشتن این دستورالعمل را نخواهد داشت ، اما در روند ایجاد آن من پیشرفت های اساسی در نرم افزار داشته ام که به من امکان می دهد داده ها را از MAX30102 با قوام بسیار بالاتر و بسیار بیشتر استخراج کنم. نویز کمتری نسبت به نرم افزاری که توسط MAXIM برای این سنسور نوشته شده است. عملکرد الگوریتم پردازش سیگنال ما در نمودار بالا نشان داده شده است که در آن دو نمودار بالا شامل ضربان قلب یک شبانه و اشباع اکسیژن محاسبه شده از سیگنال های خام به روش ما (مشخص شده توسط "RF") است ، در حالی که دو نمودار پایین نتایج MAXIM تولید شده از دقیقاً همان سیگنال ها انحراف استاندارد برای HR 4.7 و 18.1 ضربه در دقیقه و برای SpO است2 برای RF و MAXIM به ترتیب 0.9 و 4.4 درصد.

(هر دو نمودار RF با حداقل آستانه همبستگی 0.25 مطابقت دارد و هیچ محدودیتی در ارتباط R / IR وجود ندارد ؛ برای توضیح این اصطلاحات به مراحل 4 و 5 مراجعه کنید.)

مرحله 1: سخت افزار

سخت افزار
سخت افزار
سخت افزار
سخت افزار
سخت افزار
سخت افزار
سخت افزار
سخت افزار
  1. سنسور ضربان قلب و سنسور ضربان قلب MAX30102 از MAXIM Integrated، Inc.
  2. Feather M0 Adalogger از Adafruit، Inc.
  3. باتری لیتیوم یون از Adafruit، Inc.

اتصالات:

  • Adalogger پین های SCL و SDA را به پین های SCL و SDA مربوطه در برد MAX30102 وصل می کند
  • پین Adalogger 10 به پین INT روی برد MAX30102
  • Adalogger GND به برد GND MAX30102
  • Adalogger 3V به MAX30102 VIN

مرحله 2: سیگنال های دیجیتال توسط MAX30102 بازگردانده می شوند

سیگنال های دیجیتال توسط MAX30102 بازگردانده می شوند
سیگنال های دیجیتال توسط MAX30102 بازگردانده می شوند
سیگنال های دیجیتال توسط MAX30102 بازگردانده می شوند
سیگنال های دیجیتال توسط MAX30102 بازگردانده می شوند

اصول عملکرد سنسور بسیار ساده است: دو LED ، یکی قرمز (660 نانومتر) و دیگری مادون قرمز (880 نانومتر ، IR) نور را از طریق پوست انسان می تابانند. نور تا حدی توسط بافتهای زیرین از جمله خون محیطی جذب می شود. آشکارساز نوری سنسور نور بازتاب شده را در هر دو طول موج جمع آوری کرده و دو شدت نسبی مربوطه را با استفاده از پروتکل I2C باز می گرداند. از آنجایی که طیف های جذب هموگلوبین اکسیژن دار و اکسیژن دار برای هر دو طول موج متفاوت است ، نور منعکس شده به عنوان مقدار خون شریانی که در زیر هر ضربان قلب در زیر نبض های پوست وجود دارد ، یک جزء متغیر دارد. تعیین ضربان قلب و اشباع اکسیژن به نرم افزار پردازش سیگنال بستگی دارد.

نمونه هایی از سیگنال های خام (فقط کانال IR) در تصاویر بالا نشان داده شده است. می توان متوجه شد که یک جزء دوره ای روی خط متغیر پایه پوشانده شده است که به دلیل عوامل متعددی که در صفحه ویکی پدیا ذکر شده است تغییر می کند. مصنوعات ناشی از حرکت به ویژه آزاردهنده هستند زیرا ممکن است سیگنال HR مفید را پنهان کرده و نتایج ساختگی ایجاد کنند. از این رو ، اکسی مترهای تجاری پیشرفته دارای شتاب سنج هایی هستند که به خنثی سازی این مصنوعات کمک می کند.

ممکن است شتاب سنج را به نسخه بعدی اکسی متر خود اضافه کنم ، اما برای HR/SpO شبانه2 ضبط ، هنگامی که سنسور در بیشتر مواقع بی حرکت می ماند ، تشخیص و حذف سیگنال های تحریف شده کافی است.

سنسور MAX30102 به خودی خود در یک بسته کوچک روی سطح قرار می گیرد ، اما MAXIM با مهربانی یک برد شکست (System Board 6300) به همراه نرم افزار پردازش سیگنال برای Arduino و mbed را ارائه می دهد - همه در بسته طراحی مرجع MAXREFDES117#. من با خوشحالی آن را خریدم و انتظار داشتم فقط سیمهایی را بین سنسور و Adalogger بچسبانم و یک اکسی متر خوب و خوب در یک روز داشته باشم. من نسخه RD117_ARDUINO نرم افزار MAXIM را برای اجرا بر روی پردازنده Adalogger's ARM Cortex M0 سازگار کردم. اساساً ، تنها کاری که باید انجام می دادم جایگزینی توابع SofI2C ناسازگار در max30102.cpp با تماس های مربوطه کتابخانه Wire بود. کد در Arduino IDE v1.8.5 کاملاً کامپایل شد و بدون هیچ خطایی روی M0 اجرا شد. اما نتایج خالص ناامید کننده بود. در مرحله مقدمه ، من قبلاً واریانس بسیار بالایی از HR و SpO را نشان داده ام2به به طور طبیعی ، ممکن است کسی ادعا کند که من کار اشتباهی انجام داده ام و این نیز فکر اولیه من بود. با این حال ، در ویدئوی آموزشی MAXIM شما همچنین می توانید مقادیر HR در حال چرخش را که روی صفحه نمایش داده شده است مشاهده کنید. علاوه بر این ، نظرات زیر ویدیو تأیید می کند که دیگران نیز به پدیده ای مشابه توجه کرده اند.

برای بیان یک داستان طولانی ، پس از انجام برخی آزمایشات ، متوجه شدم که سنسور به خوبی کار می کند و یک روش جایگزین برای پردازش سیگنال دیجیتال ثبات بسیار بهتری را به دنبال دارد. این روش جدید ، که با "RF" نشان داده شده است ، در مراحل بعدی شرح داده شده است.

مرحله 3: پیش پردازش سیگنال

پیش پردازش سیگنال
پیش پردازش سیگنال
پیش پردازش سیگنال
پیش پردازش سیگنال
پیش پردازش سیگنال
پیش پردازش سیگنال
پیش پردازش سیگنال
پیش پردازش سیگنال

در پیاده سازی ما ، سیگنال خام با سرعت 25 هرتز (همان MAXIM) به مدت 4 ثانیه کامل جمع آوری می شود (نرم افزار MAXIM فقط 1 ثانیه جمع آوری می کند) ، و در نتیجه 100 نقطه زمانی دیجیتالی در هر نقطه داده نهایی ایجاد می شود. هر دنباله 100 نقطه ای باید به روش زیر از پیش پردازش شود:

  1. میانگین محور (معروف به "حذف قطعه DC" برای مهندسان برق). داده های خام از سنسور یک سری زمانی از اعداد صحیح در 10 است5 دامنه. با این حال ، سیگنال مفید تنها بخشی از نور منعکس شده از خون شریانی است که تنها در حدود 10 تغییر می کند2 - شکل اول بنابراین برای پردازش معنی دار سیگنال ، مطلوب است که میانگین را از هر نقطه سری کم کنیم. این قسمت هیچ تفاوتی با آنچه نرم افزار MAXIM انجام می دهد ندارد. با این حال ، تفاوت میانگین محورهای دیگر خود شاخص های زمان است. به عبارت دیگر ، به جای فهرست بندی نقاط سری با اعداد 0 تا 99 ، شاخص های جدید اکنون اعداد -49.5 ، -48.5 ،… ، 49.5 هستند. ممکن است در ابتدا عجیب به نظر برسد ، اما به لطف این روش "مرکز ثقل" منحنی سیگنال با مبدأ سیستم مختصات (شکل دوم) منطبق است. این واقعیت در مرحله بعد کاملاً مفید می شود.
  2. سطح بندی پایه نگاهی دیگر به شکل موج های نشان داده شده در مرحله 2 نشان می دهد که خط مبنای سیگنال های اکسی متری واقعی از صاف بودن افقی دور است ، اما در شیب های مختلف متفاوت است. شکل سوم یک سیگنال IR میانگین محور (منحنی آبی) و خط پایه آن (خط مستقیم آبی) را نشان می دهد. در این حالت ، شیب پایه منفی است. روش پردازش سیگنال که قبلاً توضیح داده شد مستلزم این است که خط پایه افقی باشد. این را می توان به سادگی با تفکیک خط پایه از سیگنال میانگین محور به دست آورد. با توجه به میانگین محور هر دو مختصات Y و X ، قطع خط پایه صفر است و معادله شیب آن بسیار ساده است ، همانطور که در شکل چهارم نشان داده شده است. سیگنال سطح پایه با منحنی نارنجی در شکل سوم نشان داده شده است.

بنابراین سیگنال پیش پردازش شده برای مرحله بعدی آماده است.

مرحله 4: اسب کار: تابع همبستگی خودکار

اسب کار: تابع همبستگی خودکار
اسب کار: تابع همبستگی خودکار
اسب کار: تابع همبستگی خودکار
اسب کار: تابع همبستگی خودکار
اسب کار: تابع همبستگی خودکار
اسب کار: تابع همبستگی خودکار

با بازگشت به نمایه سازی معمول 1 ،… ، n ، شکل اول تعریف تابع خود همبستگی r را نشان می دهدمتر - کمیتی که در تشخیص تناوب سیگنال و همچنین کیفیت بسیار مفید است. این به سادگی یک محصول پله ای نرمال از سری زمانی سیگنال است که خودش با تاخیر m تغییر می کند. در برنامه ما ، مناسب است که هر مقدار همبستگی خودکار را با توجه به مقدار آن در lag = 0 مقیاس بندی کنیم ، یعنی از خود همبستگی نسبی تعریف شده با r استفاده کنیم.متر / r0.

نمودار مربوط به همبستگی نسبی یک سیگنال IR معمولی با کیفیت خوب در شکل دوم نشان داده شده است. همانطور که انتظار می رفت ، مقدار آن در تاخیر = 0 در حداکثر جهانی خود برابر 1 است. حداکثر بعدی (محلی) در تاخیر = 23 و برابر 0.79 رخ می دهد. به راحتی می توان وجود حداقلها و حداکثرهای محلی را در نمودار خود همبستگی درک کرد: با حرکت سیگنال به راست ، قله های آن در ابتدا به طور مخرب با یکدیگر تداخل می کنند ، اما در نقطه خاصی تداخل سازنده می شود و در تاخیر برابر میانگین به حداکثر می رسد. دوره سیگنال

عبارت آخر بسیار مهم است: برای تعیین میانگین فاصله زمانی بین قله ها ، که از آن می توان فرکانس سیگنال (یعنی ضربان قلب) را محاسبه کرد ، کافی است اولین حداکثر محلی عملکرد تابع همبستگی را پیدا کنیم! به طور پیش فرض ، MAX30102 ورودی آنالوگ را با سرعت 25 نقطه در ثانیه نمونه می گیرد ، بنابراین در m داده شده ، دوره در ثانیه برابر با m / 25 است. این امر منجر به ضربان قلب می شود که بر حسب ضربان در دقیقه (ضربان در دقیقه) بیان می شود:

HR = 60*25 / متر = 1500 / متر

البته انجام محاسبات گران قیمت r ضروری نیستمتر در همه مقادیر تاخیر الگوریتم ما اولین حدس ضربان قلب = 60 ضربان در دقیقه را نشان می دهد که برابر 25 = m است. عملکرد همبستگی خودکار در آن نقطه ارزیابی می شود و در مقایسه با مقدار آن در همسایه سمت چپ آن ، m = 24. اگر مقدار همسایه بیشتر باشد ، راهپیمایی به سمت چپ ادامه می یابد تا rمتر -1متر به بنابراین m نهایی نهایی به عنوان تاخیر در حداکثر بازگردانده می شود. تکرار بعدی از آن مقدار به جای 25 شروع می شود و کل فرایند تکرار می شود. اگر اولین همسایه چپ پایین تر باشد ، راهپیمایی های معمول بالا به همان ترتیب به سمت راست عقب می مانند. در بیشتر مواقع ، تاخیر در حداکثر نیاز به ارزیابی های کمی از عملکرد همبستگی خودکار دارد. علاوه بر این ، حداکثر و حداقل تاخیرهای قابل قبول (به ترتیب مربوط به حداقل و حداکثر ضربان قلب) به عنوان مقادیر محدود کننده استفاده می شود.

موارد فوق برای سیگنالهای با کیفیت خوب بسیار خوب عمل می کند ، اما دنیای واقعی با ایده آل فاصله زیادی دارد. برخی از سیگنال ها عمدتاً به دلیل مصنوعات حرکتی مخدوش می شوند. چنین سیگنالی در شکل سوم نشان داده شده است. تناوب ضعیف در شکل عملکرد همبستگی خودکار و همچنین در مقدار کم ، 0.28 ، از اولین حداکثر محلی در m = 11. منعکس می شود. آن را با حداکثر مقدار 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

به خاطر داشته باشید که این معادله فقط برای تخته طراحی MAX30102 خریداری شده در سال 2017 معتبر است! به احتمال زیاد MAXIM ممکن است سنسورهای خود را در آینده بعداً دوباره تنظیم کند.

روش فوق هنوز مقدار زیادی SpO کاذب تولید می کند2 خواندن ها کانال قرمز از مصنوعات زیادی رنج می برد ، درست مانند کانال IR. منطقی است که فرض کنیم که هر دو سیگنال باید به شدت با هم مرتبط باشند. در واقع ، سیگنال های با کیفیت خوب ، مانند مثال در شکل سوم ، به خوبی با هم ارتباط دارند. ضریب همبستگی پیرسون در این مورد تا 0.99 است. اینطور نیست ، همانطور که در شکل چهارم نشان داده شده است. اگرچه سیگنال IR با r خود از فیلتر کیفیت ضربان قلب عبور می کندمتر / r0 = 0.76 ، سیگنال R تحریف شده منجر به ضریب همبستگی ضعیف بین این دو برابر 0.42 می شود. این مشاهده دومین فیلتر با کیفیت را ارائه می دهد: داشتن ضریب همبستگی بین کانال ها بیشتر از آستانه مشخص.

دو رقم آخر نشان دهنده اثر خالص چنین فیلترینگ با کیفیت است. اول ، اشباع اکسیژن اندازه گیری شده با آستانه کیفیت HR 0.25 رسم می شود ، اما بدون SpO2 فیلتر نمودار بعدی از فیلتر کردن منابع انسانی ضعیف و SpO حاصل می شود2 نتایج در 0.5 rمتر / r0 و 0.8 آستانه ضریب همبستگی. به طور کلی ، نقاط ضعیف داده ها به میزان 12 of از کل توسط رژیم سختگیرانه فیلتر شد.

در کد ما ضریب همبستگی ، cc ، طبق فرمول در شکل پنجم محاسبه می شود ، جایی که y نشان دهنده سیگنال میانگین محور و سطح پایه است ، در حالی که r0 در مرحله قبل تعریف شد

مرحله 6: کد منبع

کد منبع C این پروژه ، قالب بندی شده برای Arduino IDE ، از طریق حساب Github ما در پیوند زیر موجود است:

github.com/aromring/MAX30102_by_RF

صفحه Readme آن اجزای فردی را شرح می دهد.

من می خواهم یک لحظه از Adafruit بخاطر ساخت یک محصول عالی مانند Adalogger مبتنی بر M0 تشکر کنم. پردازنده سریع 48 مگاهرتز ARM Cortex M0 ، با مقدار زیادی RAM ، مطمئناً این پروژه را عملی می کند ، در حالی که کارت خوان SD مستقیم (به علاوه کتابخانه SD Adafruit) به طور مستقیم تمام دردهای علاقه مندان به ذخیره سازی حجم زیادی از داده ها را از بین می برد.

توصیه شده: