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। এই লিংকে ক্লিক করে নিচে দেখানো ধাপগুলো অনুসরন করুন।
-
Launch এ ক্লিক করুন
-
ডেটাশিট থেকে প্রাপ্ত গ্রাফটি লোড করুন।
-
কার্বন-ডাই অক্সাইডের সরলরেখাটির বিন্দুগুলো মাউস দিয়ে এক এক করে ক্লিক করুন। তারপর View data ক্লিক করুন।
-
ডেটাশিটের গ্রাফটির সাথে মিলিয়ে উপরের ছবি অনুযায়ী X-অক্ষকে ফরম্যাট করুন।
-
অনুরুপভাবে Y-অক্ষকেও ফরম্যাট করুন।
-
এই সমীকরন থেকেই আমরা কার্বন-ডাই -অক্সাইডের ঘনত্ব নির্ণয় করব।
প্রাপ্ত সমীকরন থেকে 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
}
কোডটি আরডুইনোতে আপলোড করলে এলসিডিতে কার্বন ডাই অক্সাইড এর ঘনত্ব দেখা যাবে।
সেন্সরটির সামনে একটু নিঃশ্বাস ফেলে, ফুঁ দিয়ে কিংবা কথা বলে দেখুন। পিপিএমের মান বৃদ্ধি পাবে। একটি লাইটার বা ম্যাচের কাঠি জ্বালালেও পিপিএমের বৃদ্ধি প্রকটভাবে চোখে পড়বে। আমাদের কার্বন-ডাই অক্সাইড মিটার তৈরী।
রেফারেন্সসমূহঃ