جدول المحتويات:
- الخطوة 1: الأجهزة
- الخطوة 2: الإشارات الرقمية التي تم إرجاعها بواسطة MAX30102
- الخطوة 3: المعالجة المسبقة للإشارة
- الخطوة 4: العمود الفقري: وظيفة الارتباط التلقائي
- الخطوة الخامسة: تحديد تشبع الأكسجين
- الخطوة 6: كود المصدر
فيديو: مقياس تأكسج النبض بدقة محسنة: 6 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:39
إذا زرت طبيبًا مؤخرًا ، فمن المحتمل أن يتم فحص علاماتك الحيوية الأساسية من قبل ممرضة. الوزن والطول وضغط الدم وكذلك معدل ضربات القلب (HR) وتشبع الأكسجين في الدم المحيطي (SpO2). ربما ، تم الحصول على الأخيرين من مسبار إصبع إلكتروني متوهج باللون الأحمر والذي عرض الأرقام ذات الصلة على شاشة صغيرة في غضون دقائق. يسمى هذا المسبار مقياس التأكسج النبضي ويمكنك العثور على جميع المعلومات الأساسية عنه هنا.
يمكن للمرء بسهولة شراء مقياس التأكسج النبضي البسيط ، بالتأكيد ، ولكن أين المتعة فيه؟ لقد قررت بناء بلدي ، أولاً من أجل هيكلة ذلك ، ولكن الأهم من ذلك مع وضع تطبيق معين في الاعتبار: قياس التأكسج الليلي حيث يكون كل من الموارد البشرية و SpO2 سيتم جمع البيانات بشكل مستمر بين عشية وضحاها وتسجيلها على بطاقة micro SD. تحتوي Instructables بالفعل على العديد من المشاريع من هذا النوع ، على سبيل المثال ، مشروعان يتضمنان Arduino هنا وهنا ، والآخر يستخدم Raspberry Pi. يستخدم Mine مستشعرًا أحدث قليلاً MAX30102 من MAXIM Integrated و Adafruit's Feather M0 Adalogger للتحكم وتسجيل البيانات.
وبالتالي ، فإن مشروعنا ليس مبتكرًا بشكل خاص من حيث الأجهزة ، وبالتالي لن يستحق كتابة هذا Instructable ، ولكن في عملية إنشائه ، فقد أحرزت تقدمًا حاسمًا في البرامج التي سمحت لي باستخراج البيانات من MAX30102 مع تناسق أعلى بكثير وكثير ضوضاء أقل من البرامج المكتوبة بواسطة MAXIM لهذا المستشعر. يتم توضيح أداء خوارزمية معالجة الإشارات الخاصة بنا في الرسم البياني أعلاه حيث يحتوي الرسمان البيانيان العلويان على معدل ضربات القلب طوال الليل وتشبع الأكسجين المحسوب من الإشارات الأولية بواسطة طريقتنا (المحددة بواسطة "RF") ، بينما يوضح الرسمان البيانيان السفليان نتائج MAXIM الناتجة من بالضبط نفس الإشارات. الانحرافات المعيارية لمعدل ضربات القلب هي 4.7 نبضة في الدقيقة و 18.1 نبضة في الدقيقة ، وبالنسبة لـ SpO2 0.9٪ و 4.4٪ لـ RF و MAXIM على التوالي.
(يتوافق كلا الرسمين البيانيين RF مع حد أدنى للارتباط التلقائي يبلغ 0.25 ولا يوجد حد على ارتباط R / IR ؛ انظر الخطوتين 4 و 5 لشرح هذه المصطلحات.)
الخطوة 1: الأجهزة
- مقياس التأكسج النبضي ومستشعر معدل ضربات القلب MAX30102 لوحة النظام من شركة MAXIM Integrated، Inc.
- ريشة M0 Adalogger من Adafruit ، Inc.
- بطارية ليثيوم أيون من Adafruit ، Inc.
روابط:
- دبابيس Adalogger SCL و SDA إلى دبابيس SCL و SDA المقابلة على لوحة MAX30102
- Adalogger pin 10 إلى pin INT على لوحة MAX30102
- Adalogger GND إلى MAX30102 متن GND
- Adalogger 3V إلى MAX30102 VIN
الخطوة 2: الإشارات الرقمية التي تم إرجاعها بواسطة MAX30102
مبادئ تشغيل المستشعر بسيطة للغاية: مصباحان LED ، أحدهما أحمر (660 نانومتر) وواحد الأشعة تحت الحمراء (880 نانومتر ، الأشعة تحت الحمراء) يسلطان الضوء عبر جلد الإنسان. تمتص الأنسجة الأساسية الضوء جزئيًا ، بما في ذلك الدم المحيطي. يقوم جهاز الاستشعار الضوئي بجمع الضوء المنعكس على كل من الأطوال الموجية ويعيد شدة نسبية متطابقة باستخدام بروتوكول I2C. نظرًا لاختلاف أطياف الامتصاص للهيموجلوبين المؤكسج وغير المؤكسج لكلا الأطوال الموجية ، فإن الضوء المنعكس له مكون متغير مثل كمية الدم الشرياني الموجود تحت الجلد مع كل نبضة قلب. يعود تحديد معدل ضربات القلب وتشبع الأكسجين إلى برنامج معالجة الإشارات.
أمثلة على الإشارات الأولية (قناة الأشعة تحت الحمراء فقط) موضحة في الصور أعلاه. يمكن للمرء أن يلاحظ مكونًا دوريًا متراكبًا على خط أساس متغير يتغير بسبب عوامل متعددة مذكورة في صفحة ويكيبيديا. تعتبر القطع الأثرية التي تسببها الحركة مزعجة بشكل خاص لأنها قد تخفي إشارة الموارد البشرية المفيدة وتتسبب في نتائج وهمية. وبالتالي ، تتميز أجهزة قياس التأكسج التجارية المتقدمة بمقاييس التسارع التي تساعد على إبطال هذه القطع الأثرية.
يمكنني إضافة مقياس تسارع إلى الإصدار التالي من مقياس التأكسج الخاص بي ، ولكن من أجل 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 دون أي أخطاء. لكن النتائج الصافية كانت مخيبة للآمال. في خطوة المقدمة ، لقد أظهرت بالفعل تباينًا كبيرًا جدًا بين كل من الموارد البشرية و SpO2. بطبيعة الحال ، يمكن للمرء أن يدعي أنني ارتكبت شيئًا خاطئًا وكان هذا هو فكرتي الأصلية أيضًا. ومع ذلك ، في الفيديو التعليمي الخاص بـ MAXIM ، يمكنك أيضًا ملاحظة قيم HR تتأرجح بشدة معروضة على الشاشة. علاوة على ذلك ، تؤكد التعليقات الموجودة أسفل الفيديو أن آخرين لاحظوا ظاهرة مماثلة أيضًا.
لجعل القصة الطويلة قصيرة ، بعد إجراء بعض التجارب ، قررت أن المستشعر يعمل بشكل جيد وأن الطريقة البديلة لمعالجة الإشارات الرقمية تؤدي إلى استقرار أفضل بكثير. يتم وصف هذه الطريقة الجديدة ، المشار إليها بواسطة "RF" ، في الخطوات التالية.
الخطوة 3: المعالجة المسبقة للإشارة
في تطبيقنا ، يتم جمع الإشارة الأولية بمعدل 25 هرتز (نفس معدل MAXIM) لمدة 4 ثوانٍ كاملة (يجمع برنامج MAXIM قيمة ثانية واحدة فقط) ، مما ينتج عنه 100 نقطة زمنية رقمية لكل نقطة بيانات نهائية. يجب معالجة كل تسلسل مكون من 100 نقطة مسبقًا بالطريقة التالية:
- متوسط التوسيط (المعروف أيضًا باسم "إزالة مكون التيار المستمر" لمهندسي الكهرباء). البيانات الأولية القادمة من المستشعر عبارة عن سلسلة زمنية من الأعداد الصحيحة في العدد 105 نطاق. ومع ذلك ، فإن الإشارة المفيدة ليست سوى جزء من الضوء المنعكس من الدم الشرياني الذي يختلف في حدود 10 فقط2 - الرقم الأول. من أجل معالجة إشارة ذات معنى ، من المستحسن طرح المتوسط من كل نقطة سلسلة. لا يختلف هذا الجزء عما يفعله برنامج MAXIM بالفعل. ومع ذلك ، فإن الأمر المختلف هو تمركز متوسط إضافي لمؤشرات الوقت نفسها. بمعنى آخر ، بدلاً من فهرسة نقاط المتسلسلة بالأرقام من 0 إلى 99 ، أصبحت المؤشرات الجديدة الآن أرقامًا -49.5 ، -48.5 ، … ، 49.5. قد يبدو الأمر غريبًا في البداية ، ولكن بفضل هذا الإجراء ، يتطابق "مركز ثقل" منحنى الإشارة مع أصل نظام الإحداثيات (الشكل الثاني). تصبح هذه الحقيقة مفيدة جدًا في الخطوة التالية.
- تسوية خط الأساس. توضح نظرة أخرى على أشكال الموجة الموضحة في الخطوة 2 أن الخط الأساسي لإشارات قياس التأكسج الحقيقية بعيد عن أن يكون مسطحًا أفقيًا ، ولكنه يختلف من خلال المنحدرات المختلفة. يوضح الشكل الثالث إشارة الأشعة تحت الحمراء المتوسطة (منحنى أزرق) وخطها الأساسي (خط مستقيم أزرق). في هذه الحالة ، يكون ميل خط الأساس سالبًا. تتطلب طريقة معالجة الإشارة الموصوفة مسبقًا أن يكون خط الأساس أفقيًا. يمكن تحقيق ذلك ببساطة عن طريق طرح خط الأساس من إشارة الوسطية. بفضل التوسيط المتوسط لكل من إحداثيات Y و X ، فإن تقاطع خط الأساس هو صفر ومعادلة ميله بسيطة بشكل خاص ، كما هو موضح في الشكل الرابع. تظهر الإشارة المستوية لخط الأساس من خلال المنحنى البرتقالي في الشكل الثالث.
وبالتالي فإن الإشارة المعالجة جاهزة للخطوة التالية.
الخطوة 4: العمود الفقري: وظيفة الارتباط التلقائي
بالعودة إلى الفهرسة المعتادة 1 ،… ، n ، يوضح الشكل الأول تعريف وظيفة الارتباط التلقائي rم - كمية وجدت أنها مفيدة جدًا في الكشف عن دورية الإشارة وكذلك جودتها. إنه ببساطة منتج قياسي طبيعي للسلسلة الزمنية للإشارة مع إزاحة نفسها عن طريق التأخر m. في تطبيقنا ، على الرغم من ذلك ، من الملائم قياس كل قيمة ارتباط تلقائي فيما يتعلق بقيمتها عند التأخر = 0 ، أي استخدام الارتباط التلقائي النسبي المحدد بواسطة rم / ص0.
يظهر الرسم البياني للارتباط التلقائي النسبي لإشارة الأشعة تحت الحمراء النموذجية ذات النوعية الجيدة في الشكل الثاني. كما هو متوقع ، تكون قيمته عند lag = 0 عند الحد الأقصى العالمي الذي يساوي 1. الحد الأقصى (المحلي) التالي يحدث عند lag = 23 ويساوي 0.79. من السهل فهم وجود الحدود الدنيا والحدود القصوى المحلية في مخطط الارتباط التلقائي: حيث تنتقل الإشارة إلى اليمين تتداخل قممها بشكل مدمر مع بعضها البعض في البداية ، ولكن عند نقطة معينة يصبح التداخل بناءً ويحقق الحد الأقصى عند التأخر الذي يساوي المتوسط فترة الإشارة.
تعتبر العبارة الأخيرة حاسمة: من أجل تحديد متوسط الفترة الزمنية بين القمم ، والتي يمكن من خلالها حساب تردد الإشارة (أي معدل ضربات القلب) ، يكفي العثور على الحد الأقصى المحلي الأول لوظيفة الارتباط التلقائي! بشكل افتراضي ، عينات MAX30102 الإدخال التناظري بمعدل 25 نقطة في الثانية ، وبالتالي عند م معين ، تكون الفترة بالثواني تساوي م / 25. وهذا يؤدي إلى معدل ضربات القلب معبرًا عنه بالنبضات في الدقيقة (نبضة في الدقيقة) من خلال:
معدل ضربات القلب = 60 * 25 / م = 1500 / م
بالطبع ، ليس من الضروري إجراء حسابات باهظة الثمن لـ rم في جميع قيم التأخر. تقوم الخوارزمية الخاصة بنا بعمل التخمين الأول لمعدل ضربات القلب = 60 نبضة في الدقيقة ، وهو ما يتوافق مع m = 25. يتم تقييم وظيفة الارتباط التلقائي عند هذه النقطة ومقارنتها بالقيمة عند جارتها اليسرى ، m = 24. إذا كانت القيمة المجاورة أعلى ، فإن تستمر المسيرة إلى اليسار حتى صم -1 <صم. وبالتالي يتم إرجاع m النهائية المحددة على أنها تأخر بحد أقصى. يبدأ التكرار التالي من تلك القيمة بدلاً من 25 وتتكرر العملية بأكملها. إذا كان الجار الأيسر الأول أقل ، فإن المسيرات الروتينية أعلاه تشير إلى اليمين بطريقة مماثلة. في معظم الأحيان ، يتطلب التأخر بحد أقصى بضع تقييمات لوظيفة الارتباط التلقائي. بالإضافة إلى ذلك ، يتم استخدام الحد الأقصى والحد الأدنى من التأخيرات المقبولة (المقابلة لمعدل ضربات القلب الأدنى والأقصى ، على التوالي) كقيم مقيدة.
يعمل ما سبق بشكل جيد للغاية مع إشارات ذات جودة عالية ، لكن العالم الحقيقي بعيد عن المثالية. تخرج بعض الإشارات مشوهة ، ويرجع ذلك في الغالب إلى القطع الأثرية في الحركة. تظهر هذه الإشارة في الشكل الثالث. ينعكس ضعف الدورية في شكل وظيفة الارتباط التلقائي وكذلك في القيمة المنخفضة ، 0.28 ، من الحد الأقصى المحلي الأول عند m = 11. قارنها بالقيمة القصوى البالغة 0.79 المحددة لإشارة الجودة الجيدة. إلى جانب القيم المحددة للتأخر ، فإن قيمة rم / ص0 كحد أقصى هو مؤشر جيد لجودة الإشارة ويمكن استخدام شرط لتجاوز عتبة معينة لتصفية القطع الأثرية المتحركة. الرسوم البيانية "RF" الموضحة في المقدمات نتجت عن هذه العتبة التي تساوي 0.25.
الخطوة الخامسة: تحديد تشبع الأكسجين
كانت الخطوة السابقة كافية لتحديد معدل ضربات القلب. SpO2 يتطلب المزيد من العمل. أولاً ، يجب مراعاة الإشارة المهملة حتى الآن في القناة الحمراء (R). بعد ذلك ، يتم حساب نسبة الإشارات الحمراء إلى الأشعة تحت الحمراء ، Z = R / IR ، وكلاهما ينعكس على الدم الشرياني. يعتبر جزء "الدم الشرياني" بالغ الأهمية ، حيث أن معظم الضوء ينعكس في الواقع على الأنسجة والدم الوريدي. كيفية اختيار جزء من الإشارة المقابلة للدم الشرياني؟ حسنًا ، هذا هو المكون النابض الذي يختلف مع كل نبضة قلب. على حد تعبير المهندسين الكهربائيين ، إنه "جزء التيار المتردد" ، بينما الضوء المنعكس المتبقي هو "جزء التيار المستمر". نظرًا لأن الشدة المطلقة لضوء 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 قراءة٪ s. القناة الحمراء تعاني من العديد من القطع الأثرية ، تمامًا مثل القناة الحمراء. من المعقول أن نفترض أن كلتا الإشارتين يجب أن تكونا مترابطتين بقوة. في الواقع ، ترتبط إشارات الجودة الجيدة ، مثل المثال الوارد في الشكل الثالث ، بشكل جيد للغاية. يصل معامل ارتباط بيرسون في هذه الحالة إلى 0.99. هذا ليس هو الحال دائمًا ، كما هو موضح في الشكل الرابع. على الرغم من أن إشارة الأشعة تحت الحمراء سوف تمر بمرشح جودة معدل ضربات القلب مع rم / ص0 = 0.76 ، ينتج عن إشارة R المشوهة معامل ارتباط ضعيف بين الاثنين يساوي 0.42 فقط. تقدم هذه الملاحظة مرشح الجودة الثاني: أن يكون معامل الارتباط بين القنوات أكبر من عتبة معينة.
يمثل الشكلان الأخيران صافي التأثير لترشيح الجودة هذا. أولاً ، يتم رسم تشبع الأكسجين المقاس بعتبة جودة الموارد البشرية تبلغ 0.25 ، ولكن بدون SpO2 منقي. تنتج الحبكة التالية من تصفية الموارد البشرية الضعيفة و SpO2 النتائج في 0.5 صم / ص0 و 0.8 عتبات معامل الارتباط. بشكل عام ، تمت تصفية نقاط البيانات الضعيفة التي تصل إلى 12٪ من الإجمالي بواسطة النظام الأكثر صرامة.
في الكود الخاص بنا ، يُحسب معامل الارتباط ، cc ، وفقًا للصيغة الموجودة في الشكل الخامس ، حيث يمثل y الإشارة الوسطية ذات المستوى الأساسي ، بينما r0 تم تعريفه في الخطوة السابقة.
الخطوة 6: كود المصدر
يتوفر كود المصدر C لهذا المشروع ، المنسق لـ Arduino IDE ، من حساب Github الخاص بنا على الرابط التالي:
github.com/aromring/MAX30102_by_RF
تصف صفحة الملف التمهيدي الخاصة به المكونات الفردية.
أود أن أتوقف لحظة لأثني على Adafruit لصنع مثل هذا المنتج الممتاز مثل Adalogger القائم على M0. ساعد معالج ARM Cortex M0 بسرعة 48 ميجاهرتز ، مع الكثير من ذاكرة الوصول العشوائي ، بالتأكيد في جعل هذا المشروع قابلاً للتطبيق ، بينما يزيل قارئ بطاقة SD المرفق مباشرة (بالإضافة إلى مكتبة SD الخاصة بـ Adafruit) جميع آلام الهواة المرتبطة بالتخزين في الوقت الفعلي لكميات كبيرة من البيانات.
موصى به:
مقياس الارتفاع (مقياس الارتفاع) بناءً على الضغط الجوي: 7 خطوات (بالصور)
مقياس الارتفاع (مقياس الارتفاع) بناءً على الضغط الجوي: [تحرير]؛ انظر الإصدار 2 في الخطوة 6 مع إدخال خط الأساس يدويًا للارتفاع. هذا هو وصف المبنى لمقياس الارتفاع (مقياس الارتفاع) استنادًا إلى مستشعر الضغط الجوي من Arduino Nano و Bosch BMP180. التصميم بسيط ولكن القياسات
مقياس تأكسج النبض المتحكم فيه دقيق: 5 خطوات
مقياس تأكسج النبض المتحكم فيه دقيق: لهذا المشروع ، أخطط لعرض ما قمت به حتى الآن من خلال مشروع مقياس التأكسج النبضي المتحكم فيه بشكل دقيق. شغفي بالإلكترونيات واللياقة البدنية قوي جدًا ، لذلك قررت إنشاء مشروع يسمح لي باستخدام كل من شغفي
شاشة عرض إطار صور رقمية مقاس 55 بوصة بدقة 4K لحوالي 400 دولار أمريكي: 7 خطوات (مع صور)
شاشة عرض بإطار صور رقمي بحجم 55 بوصة بدقة 4K مقابل 400 دولار تقريبًا: هناك الكثير من البرامج التعليمية حول كيفية إنشاء إطار صور رقمي رائع باستخدام raspberry pi. للأسف لا يدعم rpi دقة 4K. يمكن لـ Odroid C2 التعامل بسهولة مع دقة 4K ولكن لا يعمل أي من دروس rpi مع وحدة C2. استغرق الأمر
قم بتحويل مقياس الحمام الإلكتروني إلى مقياس الشحن لـ <$ 1: 8 خطوات (بالصور)
قم بتحويل مقياس الحمام الإلكتروني إلى مقياس الشحن لـ <دولار 1: ، في عملي الصغير ، كنت بحاجة إلى وزن العناصر والصناديق المتوسطة إلى الكبيرة على مقياس أرضي للشحن. بدلاً من دفع الكثير مقابل نموذج صناعي ، استخدمت ميزان حمام رقمي. لقد وجدت أنها قريبة بما يكفي لدقتها التقريبية
كيفية اللحام بدقة (بدون الكثير من الأسلاك!) أغطية فك الاقتران على متحكمات SMT الدقيقة: 9 خطوات (بالصور)
كيفية اللحام بدقة (بدون حمولات من الأسلاك!) أغطية فك الاقتران على وحدات التحكم الدقيقة SMT: تمت كتابة هذا التوجيه ليعلمك كيفية استخدام طريقة أنيقة ومرتبة للنماذج الأولية باستخدام متحكمات SMT الدقيقة (أو غيرها من الأجهزة) على لوحة محول. بعد الكفاح من أجل القيام بعمل أنيق لفصل دبابيس الطاقة بشكل فعال في PIC18F I