Arduino based Co2 meter | কার্বন-ডাই-অক্সাইড মিটার

আগের টিউটোরিয়ালে আমরা MQ-135 সেন্সর দিয়ে অ্যালকোহল টেস্টার তৈরী করেছিলাম। এবার, ঐ একই সেন্সর দিয়েই একটি কার্বন-ডাই-অক্সাইড মিটার তৈরী করব। মিটারটি এর চারপাশের কার্বন-ডাই-অক্সাইডের ঘনত্ব PPM(Parts per million) এককে দেখাবে। কার্বন ডাই অক্সাইডের ঘনত্ব পরিমাপ করা এয়ার কোয়ালিটি মনিটরিং এবং মেনটেইনেন্সের জন্য খুবই জরুরী। কারন, কোনো এলাকায় কার্বন-ডাই অক্সাইডের আধিক্য শুধু স্বাস্থ্যহানীই ঘটায় না, মৃত্যুও ডেকে আনতে পারে।

প্রয়োজনীয় যন্ত্রপাতি পরিমাণ প্রোডাক্ট লিংক
Arduino UNO-R3(China) 1   এখানে ক্লিক করুন
Gas sensor MQ-135 1   এখানে ক্লিক করুন
LCD module advanced 1   এখানে ক্লিক করুন
Male to male jumpers 6   এখানে ক্লিক করুন
Male to female jumpers 3   এখানে ক্লিক করুন
Female to female jumpers 2   এখানে ক্লিক করুন
Breadboard 1  এখানে ক্লিক করুন
2s li-ion battery 1  এখানে ক্লিক করুন

সার্কিট কানেকশনঃ

MQ-135 নিয়ে কাজ করতে গেলে একটি কাজ অবশ্যই করতে হবে। অন্তঃতপক্ষে ২৪ ঘন্টা সেন্সরটিকে পাওয়ার দিয়ে রাখতে হবে। একে বলে সেন্সর প্রি-হিট করা।

প্রি- হিট করার পর আরডুইনো এবং MQ-135 এর মধ্যে নিচের কানেকশনটি সম্পন্ন করুন।

Arduino UNO-R3 MQ-135
5V VCC
GND GND
A0 A0

আরডুইনো এবং এলসিডির মধ্যে নিচের কানেকশনটি সম্পন্ন করুন।

Arduino UNO-R3 LCD module advanced
12 RS
11 En
D4 5
D5 4
D6 3
D7 2
VCC VDD
GND VSS

MQ-135 এর ইন্টারনাল ডায়াগ্রামঃ

ক্যারেকটারিস্টিক গ্রাফঃ

MQ-135 এর ডেটাশিটে আমরা নিচের গ্রাফটি দেখতে পাই। লক্ষ্য করুন, এটি একটি লগারিদমিক গ্রাফ। কার্বন-ডাই অক্সাইড, কার্বন মনোক্সাইড, অ্যামোনিয়ার ঘনত্বের (PPM) সাথে MQ-135 এর RS এবং R0 এর অনুপাতের পরিবর্তন লগারিদমিক স্কেলে প্রকাশ করা হয়েছে।

এখানে, R0 অপরিবর্তনশীল। ডেটাশিটের ভাষ্যে MQ-135 এর নির্মাতারা R0 পরিমাপ করেছেন বিশুদ্ধ বাতাসে ১০০ পিপিএম অ্যামোনিয়া গ্যাসের উপস্থিতিতে।

Rs হচ্ছে সেন্সর রেজিস্টেন্স যা গ্যাসের ঘনত্বের সাথে পরিবর্তিত হয়। এই RS এর হ্রাস-বৃদ্ধি পরিমাপ করেই গ্যাসের ঘনত্ব বোঝা যায়।

যেহেতু, আমাদের উদ্দেশ্য একটি কার্বন-ডাই অক্সাইড মিটার বানানো; সেহেতু, উপরের গ্রাফের সবটুকু আমাদের দরকার নেই। আমরা শুধু কার্বন-ডাই-অক্সাইডের অংশটুকু আলাদা করে নেব এবং গ্রাফ থেকে প্রাপ্ত ডেটা বিশ্লেষন করে প্রোগ্রাম লিখব।

ডেটাশিটের গ্রাফ থেকে সমীকরণ নির্ণয়ঃ

গ্রাফ থেকে ডেটা এক্সট্রাক্ট করার জন্য আমরা ব্যবহার করব WebplotDigitizer। এই লিংকে ক্লিক করে নিচে দেখানো ধাপগুলো অনুসরন করুন।

চিত্র অনুযায়ী Align axes সিলেক্ট করুন
Proceed এ ক্লিক করুন
মাউস দিয়ে ক্লিক করে X1,X2,Y1,Y2 এই সিরিয়ালে গ্রাফের মূল বিন্দুগুলো সিলেক্ট করুন।
ডানদিকে এই মেসেজটি দেখা যাবে। Complete ক্লিক করুন
গ্রাফের ক্যালিব্রেশন সিলেক্ট করুন
বিন্দুগুলোর স্থানাংক এবার দেখা যাবে। Download.CSV ক্লিক করুন।
Download.CSV ক্লিক করলে একটি এক্সেল শিটে এভাবেই ডেটাগুলো সাজানো হয়ে যাবে। এবার Scatter ফাংশনের সাহায্যে ডেটাগুলো দিয়ে গ্রাফ আঁকতে হবে।
Format axis এ ক্লিক করুন।
প্রাপ্ত গ্রাফটিকে দেখতে ডেটাশিটের গ্রাফের মতই লাগছে তাই,না? আরেকটু কাজ বাকি আছে।
ট্রেন্ডলাইন অপশনে ক্লিক করুন।
লগারিদমিক ট্রেন্ডলাইন সিলেক্ট করুন। Display equation on chart অপশনটি অন করুন।

প্রাপ্ত সমীকরন থেকে R0 নির্নয়ঃ

উপরের সমীকরন থেকে আমরা দেখতে পাচ্ছি,

RS/R0=-0.455ln(PPM)+3.1447।

এখানে, RS= সেন্সর রেজিস্টেন্স। যা গ্যাসের ঘনত্বের সাথে সাথে পরিবর্তিত হয়।

RL=লোড রেজিস্টেন্স। এই রেজিস্টরের মাধ্যমে গ্যাস সেন্সরের আউটপুট পিনটি গ্রাউন্ডের সাথে সংযুক্ত থাকে। আমাদের ব্যবহৃত সেন্সরটিতে RL=1K।

আবার, RS=(1024*RL/analogread(0)-RL)।

আরডুইনোতে সেন্সর কানেক্ট করা অবস্থায় A0 পিন রিড করলে আমরা RS=(1024*RL/analogread(0)-RL) সমীকরন থেকে RS নির্ণয় করতে পারি। এবার, R0 নির্ণয়ের পালা। R0 হচ্ছে কোনো একটি নির্দিষ্ট গ্যাসের নির্দিষ্ট ঘনত্বে পরীক্ষাধীন সেন্সরের রেজিস্টেন্সের মান। অর্থ্যাৎ, R0 নির্ণয় করতে কোনো একটি স্থানে কার্বন ডাই অক্সাইডের PPM এবং RS জানা থাকা প্রয়োজন। বায়ুমন্ডলে প্রতিদিনের কার্বন ডাই অক্সাইডের ঘনত্ব সহজেই জানা যায় https://www.co2.earth › daily-co2 ওয়েবসাইট থেকে।

খোলা আকাশের নিচে আরডুইনোর সাথে কানেক্টেড অবস্থায় গ্যাস সেন্সরটি রাখুন। Arduino IDE ‘র Examples অপশন থেকে AnalogReadSerial প্রোগারামটি আরডুইনোতে আপলোড করুন। সিরিয়াল মনিটরে প্রদর্শিত A0 এর ভ্যালু থেকে RS নির্ণয় করুন। তারপর https://www.co2.earth › daily-co2 ওয়েবসাইট থেকে বায়ুমন্ডলে কার্বন-ডাই-অক্সাইডের ঘনত্ব দেখে নিন।

আমাদের এক্সপেরিমেন্টের দিন বায়ুমন্ডলে অক্সিজেনের ঘনত্ব ছিল 408.08 PPM। আর খোলা আকাশের নিচে analogread(0) এর মান ছিল 13। এই ভ্যালুগুলো গ্রাফ থেকে প্রাপ্ত সমীকরনে বসিয়ে আমাদের নির্ণয়কৃত R0 ছিল 190144 ওহম।

কোডঃ

উপরের ধাপগুলোতে প্রাপ্ত সমীকরনের ধ্রুবক ও R0 এর মান বসিয়ে নিচের কোডটি লেখা হয়েছে।

#include <LiquidCrystal.h>
long RL=1000;
long R0=190144;
float a=-.455;
float c=3.02174;
// the setup routine runs once when you press reset:
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
  // initialize serial communication at 9600 bits per second:
  lcd.begin(16, 2);
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // print out the value you read:
  long RS=(1024*RL/sensorValue-1000);
  float ratio=(float) RS/(float) R0;
  float alnppm=ratio-c;
  float lnppm=(float)alnppm/a;
  float ppm=exp(lnppm);
  Serial.print(sensorValue);
  Serial.print(",");
  Serial.print("PPM=");
  Serial.println(ppm);
  lcd.setCursor(0, 0);
  // print the number of seconds since reset:
  lcd.print("CO2 PPM=");
  lcd.print(ppm);
  delay(800);        // delay in between reads for stability
}

কোডটি আরডুইনোতে আপলোড করলে এলসিডিতে কার্বন ডাই অক্সাইড এর ঘনত্ব দেখা যাবে।

সেন্সরটির সামনে একটু নিঃশ্বাস ফেলে, ফুঁ দিয়ে কিংবা কথা বলে দেখুন। পিপিএমের মান বৃদ্ধি পাবে। একটি লাইটার বা ম্যাচের কাঠি জ্বালালেও পিপিএমের বৃদ্ধি প্রকটভাবে চোখে পড়বে। আমাদের কার্বন-ডাই অক্সাইড মিটার তৈরী।

রেফারেন্সসমূহঃ

১)MQ-135 Datasheet

২)Davide Gironi’s Blog

5/5 - (1 vote)
Share with your friends
Default image
A. R
Articles: 116

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.