- مجسات الغاز من سلسلة MQ
- تحضير أجهزتك:
- نهج لقياس جزء في المليون من مستشعرات الغاز MQ:
- حساب قيمة Ro في الهواء النظيف:
- قياس قيمة روبية:
- ربط نسبة Rs / Ro مع PPM:
- برنامج لحساب جزء في المليون باستخدام مستشعر MQ:
- عرض قيمة PPM على الأجهزة مع Arduino و MQ-137:
منذ عصر الصناعة ، تطورنا نحن البشر بسرعة. مع كل تقدم نلوث أيضًا بيئتنا ونؤدي في النهاية إلى تدهورها. الآن الاحتباس الحراري هو تهديد مقلق وحتى الهواء الذي نتنفسه أصبح حرجًا. لذلك بدأت مراقبة جودة الهواء تكتسب أهمية أيضًا. لذلك في هذه المقالة سوف نتعلم كيفية استخدام أي مستشعر غاز من سلسلة MQ مع Arduino وإظهار الإخراج في PPM (الأجزاء لكل مليون). يتم التعبير عن PPM أيضًا بالملليغرام لكل لتر (ملغم / لتر). تتوفر هذه المستشعرات بشكل شائع ويمكن الاعتماد عليها أيضًا لقياس أنواع مختلفة من الغازات الموضحة أدناه
مجسات الغاز من سلسلة MQ
- ثاني أكسيد الكربون (CO2): MG-811
- أول أكسيد الكربون (CO): MQ-9
- إجمالي المركبات العضوية المتطايرة (TVOCs): CCS811
- ما يعادل ثاني أكسيد الكربون (eCO2): CCS811
- أكسيد المعادن (MOX): CCS811
- الأمونيا: MQ-137
- جودة الهواء: MQ-135
- غاز البترول المسال والكحول والدخان: MQ2.0
لقد استخدمنا بالفعل MQ2 لاستشعار الدخان و MQ-135 لمشروع مراقبة جودة الهواء. هنا سأستخدم مستشعر MQ-137 من sainsmart لقياس الأمونيا في جزء في المليون. مع وجود المستشعر في متناول اليد ، استعرضت جميع البرامج التعليمية المتاحة ووجدت أنه لا توجد وثائق مناسبة حول كيفية قياس الغاز في جزء في المليون. تتعامل معظم البرامج التعليمية إما مع القيم التناظرية فقط أو تقدم بعض الثوابت التي لا يمكن الاعتماد عليها لقياس جميع أنواع الغاز. لذلك بعد العبث عبر الإنترنت لفترة طويلة ، وجدت أخيرًا كيفية استخدام مستشعرات الغاز من سلسلة MQ لقياس جزء في المليون باستخدام Arduino. أقوم بشرح الأشياء من الأسفل بدون أي مكتبات حتى تتمكن من استخدام هذه المقالة لأي مستشعر غاز متوفر معك.
تحضير أجهزتك:
يمكن شراء مستشعرات الغاز MQ إما كوحدة نمطية أو كمستشعر وحده. إذا كان هدفك هو قياس جزء في المليون فقط ، فمن الأفضل شراء المستشعر وحده لأن الوحدة جيدة لاستخدام الدبوس الرقمي فقط. لذلك إذا كنت قد اشتريت الوحدة بالفعل ، فعليك إجراء اختراق صغير سيتم مناقشته بشكل أكبر. في الوقت الحالي ، لنفترض أنك اشتريت المستشعر. يتم عرض pinout وتوصيل المستشعر أدناه
كما ترى ، عليك فقط توصيل أحد طرفي "H" للإمداد والطرف الآخر من "H" بالأرض. ثم اجمع بين كل من A وكلاهما B. قم بتوصيل مجموعة واحدة لإمداد الجهد والأخرى بالدبوس التناظري. يلعب المقاوم R L دورًا مهمًا جدًا في تشغيل المستشعر. لذا قم بتدوين القيمة التي تستخدمها ، يوصى بقيمة 47 كيلو.
إذا كنت قد اشتريت وحدة نمطية بالفعل ، فيجب عليك تتبع آثار PCB للعثور على قيمة R L في اللوحة. لقد قامت Grauonline بالفعل بهذا العمل من أجلنا ويرد أدناه مخطط الدائرة الخاصة بلوحة مستشعر الغاز MQ.
كما ترى ، يتم توصيل المقاوم R L (R2) بين دبوس Aout والأرض ، لذلك إذا كان لديك وحدة ، فيمكن قياس قيمة R L باستخدام مقياس متعدد في وضع المقاومة عبر Vout pin و Vcc pin of الوحدة. في مستشعر الغاز sainsmart MQ-137 الخاص بي ، كانت قيمة RL 1K وكانت موجودة هنا كما هو موضح في الصورة أدناه.
ومع ذلك، فإن المطالبات الموقع أنه يوفر وعاء متغير R L وهذا غير صحيح كما ترون بوضوح في مخطط الرسم البياني، يتم استخدام وعاء لتعيين الجهد المتغير للمرجع أمبير وليس له اي علاقة مع R شيء L. لذلك يتعين علينا لحام المقاوم SMD (1K) الموضح أعلاه يدويًا وعلينا استخدام المقاوم الخاص بنا عبر الأرض ودبوس Vout والذي سيكون بمثابة RL. ستكون أفضل قيمة لـ RL هي 47K كما هو مقترح في ورقة البيانات ، وبالتالي سنستخدم نفس الشيء.
نهج لقياس جزء في المليون من مستشعرات الغاز MQ:
الآن بعد أن عرفنا قيمة R L ، فلننتقل إلى كيفية قياس جزء في المليون فعليًا من هذه المستشعرات. مثل جميع أجهزة الاستشعار ، فإن مكان البدء هو ورقة البيانات الخاصة به. يتم تقديم ورقة البيانات MQ-137 هنا ولكن تأكد من العثور على ورقة البيانات الصحيحة لجهاز الاستشعار الخاص بك. داخل ورقة البيانات ، نحتاج فقط إلى رسم بياني واحد سيتم رسمه مقابل (Rs / Ro) مقابل PPM ، وهذا هو الرسم الذي نحتاجه لحساباتنا. لذا راقبها واحتفظ بها في مكان ما في متناول يديك. يظهر أدناه جهاز الاستشعار الخاص بي.
تبين أن مستشعر MQ137 يمكنه قياس NH3 و C2H6O وحتى CO. لكني هنا مهتم فقط بقيم NH3. ومع ذلك ، يمكنك استخدام نفس الطريقة لحساب جزء في المليون لأي مستشعر تريده. هذا الرسم البياني هو المصدر الوحيد بالنسبة لنا للعثور على قيمة جزء في المليون وإذا تمكنا بطريقة ما من حساب حصص Rs / Ro (المحور X) يمكننا استخدام هذا الرسم البياني للعثور على قيمة جزء في المليون (المحور Y). للعثور على قيمة Rs / Ro ، نحتاج إلى إيجاد قيمة Rs وقيمة Ro. حيث Rs هي مقاومة المستشعر عند تركيز الغاز و Ro هي مقاومة المستشعر في سيدي نظيف.
نعم… هذه هي الخطة ، دعونا نرى كيف يمكننا التخلص من هذا….
حساب قيمة Ro في الهواء النظيف:
لاحظ أنه في الرسم البياني قيمة Rs / Ro ثابتة للهواء (خط أزرق سميك) حتى نتمكن من استخدام هذا لصالحنا ونقول أنه عندما يعمل المستشعر في الهواء النقي ، فإن قيمة Rs / Ro ستكون 3.6 الرجوع إلى الصورة أدناه
روبية / ريال عماني = 3.6
من ورقة البيانات ، نحصل أيضًا على صيغة لحساب قيمة Rs. الصيغة موضحة أدناه. إذا كنت مهتمًا بمعرفة كيفية اشتقاق هذه الصيغة ، فيمكنك القراءة من خلال أنظمة jay con ، وأود أيضًا أن أشير إليها في مساعدتي في حل هذا الأمر.
في هذه الصيغة ، قيمة Vc هي جهد الإمداد (+ 5V) وقيمة R L هي القيمة التي حسبناها بالفعل (47K لجهاز الاستشعار الخاص بي). إذا كتبنا برنامج Arduino صغيرًا ، فيمكننا أيضًا العثور على قيمة V RL وحساب قيمة Rs أخيرًا. لقد قدمت برنامج Arduino أدناه والذي يقرأ الجهد التمثيلي (V RL) للمستشعر ويحسب قيمة Rs باستخدام هذه الصيغة ويعرضها أخيرًا في الشاشة التسلسلية. تم شرح البرنامج جيدًا من خلال قسم التعليقات ، لذا فأنا أتخطى شرحه هنا لإبقاء هذه المقالة قصيرة.
/ * * برنامج لقياس قيمة R0 لمعرفة RL في حالة الهواء النقي * البرنامج بواسطة: B.Aswinth Raj * الموقع الإلكتروني: www.circuitdigest.com * التاريخ: 28-12-2017 * / // هذا البرنامج يعمل بشكل أفضل في غرفة هواء نقي مع درجة حرارة درجة الحرارة: 20 ℃ ، الرطوبة: 65٪ ، تركيز O2 21٪ وعندما تكون قيمة Rl هي 47K # تعريف RL 47 // قيمة المقاوم RL هي 47K إعداد باطل () // يعمل فقط مرة واحدة {Serial.begin (9600) ؛ // تهيئة COM التسلسلي لعرض القيمة} void loop () {float analog_value؛ تعويم VRL ؛ تعويم روبية ؛ تعويم رو لـ (int test_cycle = 1؛ test_cycle <= 500؛ test_cycle ++) // اقرأ الإخراج التناظري للمستشعر 200 مرة {analog_value = analog_value + analogRead (A0) ؛ // أضف قيم 200} analog_value = analog_value / 500.0 ؛ // خذ متوسط VRL = analog_value * (5.0 / 1023.0) ؛// تحويل القيمة التناظرية إلى الجهد // RS = ((Vc / VRL) -1) * RL هي الصيغ التي حصلنا عليها من ورقة البيانات Rs = ((5.0 / VRL) -1) * RL ؛ // RS / RO هو 3.6 كما حصلنا عليه من الرسم البياني لورقة البيانات Ro = Rs / 3.6 ؛ Serial.print ("Ro at fresh air =") ؛ Serial.println (رو) ؛ // عرض تأخير Ro المحسوب (1000) ؛ // تأخير من 1 ثانية}
ملحوظة: قيمة Ro ستكون متغيرة ، اسمح للمستشعر بالتسخين المسبق لمدة 10 ساعات على الأقل ثم استخدم قيمة Ro.
استنتجت أن قيمة Ro تساوي 30 KΩ لجهاز الاستشعار (عندما تكون R L هي 47kΩ). قد تختلف بعض الشيء.
قياس قيمة روبية:
الآن بعد أن عرفنا قيمة Ro ، يمكننا بسهولة حساب قيمة Rs باستخدام الصيغتين أعلاه. لاحظ أن قيمة Rs التي تم حسابها مسبقًا مخصصة لتكييف الهواء النقي ولن تكون هي نفسها عند وجود الأمونيا في الهواء. لا يعد حساب قيمة Rs مشكلة كبيرة يمكننا الاهتمام بها بشكل مباشر في البرنامج النهائي.
ربط نسبة Rs / Ro مع PPM:
الآن بعد أن عرفنا كيفية قياس قيمة Rs و Ro ، سنكون قادرين على إيجاد نسبتها (Rs / Ro). ثم يمكننا استخدام الرسم البياني (الموضح أدناه) لربط القيمة المقابلة لـ PPM.
على الرغم من أن خط NH3 (لون سماوي) يبدو أنه خطي ، إلا أنه في الواقع ليس خطيًا. المظهر هو لأن المقياس مقسم بشكل غير موحد للمظهر. لذا فإن العلاقة بين Rs / Ro و PPM هي في الواقع لوغاريتمية يمكن تمثيلها بالمعادلة أدناه.
log (y) = m * log (x) + b حيث ، y = النسبة (Rs / Ro) x = PPM m = ميل الخط b = نقطة التقاطع
لإيجاد قيمتي m و b علينا مراعاة نقطتين (x1، y1) و (x2، y2) على خط الغاز. نحن هنا نعمل مع الأمونيا لذا فإن النقطتين اللتين نظرت فيهما هي (40،1) و (100،0.8) كما هو موضح في الصورة أعلاه (باللون الأحمر) بعلامة حمراء.
م = / م = سجل (0.8 / 1) / سجل (100/40) م = -0.243
وبالمثل بالنسبة لـ (ب) دعنا نحصل على قيمة النقطة الوسطى (س ، ص) من الرسم البياني وهي (70،0.75) كما هو موضح في الصورة أعلاه (مميزة باللون الأزرق)
ب = تسجيل (ص) - م * سجل (س) ب = تسجيل (0.75) - (-0.243) * تسجيل (70) ب = 0.323
هذا هو الآن بعد أن حسبنا قيمة m و b يمكننا مساواة قيمة (Rs / Ro) بـ PPM باستخدام الصيغة أدناه
جزء في المليون = 10 ^ {/ م}
برنامج لحساب جزء في المليون باستخدام مستشعر MQ:
و برنامج كامل تعطى لPPM حساب باستخدام جهاز استشعار MQ أدناه. يتم شرح بعض الأسطر الهامة أدناه.
قبل متابعة البرنامج ، نحتاج إلى تغذية قيم مقاومة الحمل (RL) ، والمنحدر (م) ، والتقاطع (ب) وقيمة المقاومة في الهواء النقي (Ro). لقد تم بالفعل شرح إجراء الحصول على كل هذه القيم ، لذا دعنا نقم بإدخالها الآن
#define RL 47 // قيمة المقاوم RL هي 47K # تعريف m -0.263 // أدخل المنحدر المحسوب #define b 0.42 // أدخل التقاطع المحسوب #define Ro 30 // أدخل قيمة Ro التي تم العثور عليها
ثم اقرأ انخفاض الجهد عبر المستشعر (VRL) وقم بتحويله إلى Voltage (0V to 5V) لأن القراءة التناظرية ستعيد القيم من 0 إلى 1024 فقط.
VRL = analogRead (MQ_sensor) * (5.0 / 1023.0) ؛ // قياس انخفاض الجهد وتحويله إلى 0-5 فولت
الآن ، بعد أن تم حساب قيمة VRL ، يمكنك استخدام الصيغة التي تمت مناقشتها أعلاه لحساب قيمة Rs وكذلك النسبة (Rs / Ro)
النسبة = روبية / رو ؛ // البحث عن نسبة Rs / Ro
أخيرًا ، يمكننا حساب PPM باستخدام الصيغة اللوغاريتمية الخاصة بنا وعرضها على الشاشة التسلسلية كما هو موضح أدناه
ضعف جزء في المليون = الأسرى (10 ، ((log10 (نسبة) -b) / م)) ؛ // استخدام الصيغة لحساب جزء في المليون Serial.print (جزء في المليون) ؛ // عرض جزء في المليون
عرض قيمة PPM على الأجهزة مع Arduino و MQ-137:
يكفي من كل النظرية ، دعونا نبني دائرة بسيطة باستخدام المستشعر وشاشة LCD لعرض قيمة الغاز في جزء في المليون. هنا المستشعر الذي أستخدمه هو MQ137 الذي يقيس الأمونيا ، ويظهر أدناه مخطط الدائرة لإعداداتي.
قم بتوصيل المستشعر الخاص بك وشاشة LCD الخاصة بك كما هو موضح في مخطط الدائرة وقم بتحميل الكود المعطى في نهاية البرنامج. يجب عليك تعديل قيمة Ro كما هو موضح أعلاه. قم أيضًا بإجراء التغييرات في قيم المعلمات إذا كنت تستخدم أي مقاوم آخر مثل RL بخلاف 4.7K.
اترك الإعداد الخاص بك قيد التشغيل لمدة ساعتين على الأقل قبل أن تأخذ أي قراءات ، (يوصى بـ 48 ساعة للحصول على قيم أكثر دقة). يسمى هذا الوقت بوقت التسخين ، والذي يسخن خلاله المستشعر. بعد ذلك ، يجب أن تكون قادرًا على رؤية قيمة PPM والجهد المعروض على شاشة LCD كما هو موضح أدناه.
الآن للتأكد مما إذا كانت القيم مرتبطة حقًا بوجود الأمونيا ، فلنضع هذا الإعداد داخل حاوية مغلقة ونرسل غاز الأمونيا بداخلها للتحقق مما إذا كانت القيم تتزايد. ليس لدي مقياس PPM مناسب معي لمعايرته وسيكون من الرائع أن يختبر شخص ما لديه جهاز قياس هذا الإعداد ويخبرني بذلك.
يمكنك مشاهدة الفيديو أدناه للتحقق من اختلاف القراءات بناءً على وجود الأمونيا. آمل أن تكون قد فهمت المفهوم واستمتعت بتعلمه. إذا كانت لديك أي شكوك ، اتركها في قسم التعليقات أو للحصول على مساعدة أكثر تفصيلاً ، استخدم المنتدى هنا