حسگر گاز MQ-2
آشنایی با حسگر گاز MQ-2 و اصل حسگری تنیور دیاکسید قلع گرمشده؛ سیمکشی به ورودی آنالوگ، خواندن مقدار با analogRead، آستانهٔ هشدار و درک محدودیتها و محدودیتهای ایمنی این خانواده.
آنچه در این درس میآموزید
- اصل کار حسگرهای خانوادهٔ MQ و نقش المان گرمشدهٔ SnO2 را توضیح دهید
- پینهای ماژول شکسته (VCC، GND، AO، DO) را بشناسید و به آردوینو سیمکشی کنید
- مقدار آنالوگ را بخوانید و یک هشدار آستانهای با LED بسازید
- بدانید مقدار آنالوگ چه نیست و چرا این ماژول ابزار ایمنی جان نیست
فهرست مطالب
گاز شهری و گاز LPG از راه نشتی شیرها و شلنگها وارد آشپزخانه میشوند و حس انسانی همیشه بهموقع بیدار نیست. حسگر MQ-2 ماژولی ارزان است که حضور گازهای قابل اشتعال و دود را تشخیص میدهد و خروجی آنالوگ میدهد؛ بلوک اولیهٔ ساخت اعلانهای آموزشی و نمونهسازی خانگی با آردوینو.
اصل کار: المان قلعِ گرمشده
قلب حسگر، المانی از تنیور دیاکسید قلع (SnO2) است؛ نیمهرسانایی که در هوای پاک مقاومتش بالاست. وقتی مولکولهای گاز قابل اشتعال با سطح گرمشدهٔ آن تماس بگیرند، رسانایی بالا میرود و مقاومت افت میکند. برای همین گرمایش، هیتر (heater) داخلی از تغذیهٔ ۵ ولت جریان قابلتوجهی میکشد؛ به همین دلیل بدنهٔ حسگر پس از چند دقیقه گرم لمسکردنی میشود — این طبیعی و لازم است.
پینهای ماژول
ماژولهای شکستهٔ MQ-2 معمولاً ۴ پین دارند:
| پین | نام | کارکرد |
|---|---|---|
| ۱ | VCC | تغذیهٔ ۵ ولت؛ هم هیتر و هم مدار مقایسهگر. از پین 5V آردوینو بگیرید |
| ۲ | GND | زمین مشترک |
| ۳ | AO | خروجی آنالوگ (Analog Out)؛ ولتاژ متناسب با مقاومت المان حسگری |
| ۴ | DO | خروجی دیجیتال (Digital Out)؛ مقایسهگر LM393 مقدار آنالوگ را با آستانهٔ مقایسه میکند |
روی برد ماژول یک پتانسیومتر آبی کوچک آستانهٔ DO را تنظیم میکند و یک LED هم روشنبودن هیتر را نشان میدهد.
گرمشدن و کالیبراسیون
بلافاصله پس از روشنشدن، عدد آنالوگ بالا و بیاعتبار است؛ پس از چند دقیقه پیشگرمایش، خوانشها روی یک پایهٔ پایدار مینشینند. دیتاشیت سازنده (هانوی الکترونیکس) برای حسگری که مدتها انبار شده، دورهٔ کار سخت اولیه (burn-in) حدود ۲۴ تا ۴۸ ساعت تغذیهٔ پیوسته را توصیه میکند؛ در کارهای آموزشی با ماژول تازه، چند دقیقه پیشگرمایش برای آزمایش کافی است، اما برای نتیجهگیری جدیتر به دیتاشیت پایبند باشید.
مفهوم کالیبراسیون در این خانواده چنین است: مقاومت المان در هوای پاک را Ro مینامند و همهٔ محاسبات روی نسبت Rs/Ro است؛ Rs مقاومت المان در حضور گاز است. یعنی اندازهگیری معنادار همیشه نسبی است، نه مطلق.
خواندن نمودار دیتاشیت
دیتاشیت MQ-2 برای هر گاز نموداری رسم میکند: محور افقی غلظت بر حسب ppm و محور عمودی نسبت Rs/Ro، هر دو لگاریتمی. طرز استفاده: از مقدار اندازهگیریشده نسبت Rs/Ro را حساب میکنید، روی نمودار بالا میروید و غلظت تقریبی را میخوانید. سه محدودیت را صریح بگوییم: نمودار با دما و رطوبت جابهجا میشود، حسگر بین گازهای مشابه تمایز نمیدهد، و بدون کالیبراسیون با گاز مرجع، خطای قابلتوجه است. پس این مسیر فقط «تقریب» میدهد و عدد بهدستآمده را ppm قطعی ننویسید.
سیمکشی و اسکچ خواندن
| Arduino Uno | ماژول MQ-2 |
|---|---|
| 5V | VCC |
| GND | GND |
| A0 | AO |
| — | DO در این اسکچ استفاده نمیشود |
const int AO_PIN = A0;
const int LED_PIN = 13;
const int THRESHOLD = 400; // sample value; tune for your sensor
void setup() {
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
int value = analogRead(AO_PIN);
Serial.print("Sensor: ");
Serial.println(value);
if (value > THRESHOLD) {
digitalWrite(LED_PIN, HIGH); // alarm on
} else {
digitalWrite(LED_PIN, LOW); // alarm off
}
delay(500);
}توضیح کوتاه: analogRead ولتاژ پین A0 را به عدد ۰ تا ۱۰۲۳ تبدیل میکند و همان عدد با پیشوند Sensor: چاپ میشود. آستانهٔ ۴۰۰ یک نمونه است: مقدار پایهٔ حسگر خودتان را بعد از پیشگرمایش در هوای پاک ببینید و THRESHOLD را کمی بالاتر از آن بگذارید. LED پین ۱۳ تا وقتی خوانش بالای آستانه باشد روشن میماند.
Sensor: 312 Sensor: 345 Sensor: 412 Sensor: 409 Sensor: 388
این اعداد نمونهاند: مقدار واقعی به حسگر، دما، رطوبت و هوای محل بستگی دارد و هر بار متفاوت خواهد بود. فرمت سطرها (Sensor: <عدد>) قطعی است، اما عدد هیچ واحد فیزیکی مثل ppm ندارد و فقط برای مقایسهٔ نسبی با مقدار پایه معنا میدهد.
خطاهای رایج و عیبیابی
| نشانه | علت رایج | راهحل |
|---|---|---|
| عدد صفر یا نزدیک صفر میماند | سیم AO به A0 وصل نیست یا AO را با DO اشتباه گرفتهاید | سیمکشی را با جدول بالا مقایسه کنید؛ خروجی آنالوگ باید به A0 برود |
| عدد ۱۰۲۳ میماند و نمیآید | مدار داخلی ماژول در آستانهٔ اشباع است؛ معمولاً نشانهٔ گرمنبودن یا تغذیهٔ ناپایدار | چند دقیقه پیشگرمایش کنید؛ تغذیهٔ ۵ ولت پایدار بدهید |
| عدد بالا گیر میکند و پایین نمیآید | پیشگرمایش ناکافی یا جریان هوای سرد روی حسگر | پس از گرمشدن کامل، در هوای پاک و بیجریان صبر کنید تا پایه بنشیند |
| DO همیشه در وضعیت هشدار است | پتانسیومتر آستانه خیلی پایین است | پتانسیومتر را در هوای پاک بچرخانید تا DO در حالت عادی برود؛ سپس با هوای بازدم یا بخار آرام آزمایش کنید |
تمرینها
تمرین
تمرین ۱ — محاسبهٔ مقدار پایه و فاصله از پایه
اسکچ را طوری تغییر دهید که در setup() میانگین ۲۰ خوانش را بهعنوان مقدار پایه (baseline) حساب کند و در loop() بهجای عدد خام، فاصلهٔ خوانش فعلی از پایه را با پیشوند Above: چاپ کند.
نمایش راهحل
میانگینگیری را در setup() انجام میدهیم و در loop() تفاضل را چاپ میکنیم:
const int AO_PIN = A0;
const int CAL_SAMPLES = 20;
long baseline = 0;
void setup() {
Serial.begin(9600);
long sum = 0;
for (int i = 0; i < CAL_SAMPLES; i++) {
sum += analogRead(AO_PIN);
delay(200);
}
baseline = sum / CAL_SAMPLES; // clean-air reference
Serial.print("Baseline: ");
Serial.println(baseline);
}
void loop() {
int value = analogRead(AO_PIN);
Serial.print("Above: ");
Serial.println(value - baseline);
delay(500);
}Baseline: 318 Above: 2 Above: -1 Above: 4
اعداد نمونهاند؛ نکتهٔ مفهومی این است که فاصلهٔ از پایه نسبت به شرایط شماست و وقتی مقدار پایه را میشناسید، هشدار آستانهای معنادارتر میشود. ::: :::
خلاصه
- MQ-2 با المان گرمشدهٔ تنیور دیاکسید قلع کار میکند؛ حضور گاز قابل اشتعال، مقاومت را پایین میآورد.
- ماژول چهار پین دارد: VCC با ۵ ولت، GND، خروجی آنالوگ AO و خروجی دیجیتال DO با آستانهٔ قابلتنظیم.
- خوانشها بعد از پیشگرمایش معنادار میشوند؛ پس از انبارش طولانی، دیتاشیت ۲۴ تا ۴۸ ساعت burn-in میخواهد.
- عدد آنالوگ واحد ppm ندارد؛ محاسبهٔ غلظت فقط از روی نسبت Rs/Ro و نمودار دیتاشیت بهصورت تقریبی ممکن است.
- این ماژول دتکتور ایمنی گواهیشده نیست و در کارهای آموزشی جای آن را نمیگیرد.
MQ-2 یک حسگر «همهکاره» است و دود و LPG و متان را همزمان میبیند؛ در درس بعدی با MQ-4 آشنا میشوید که روی یک گاز مشخص — متان یا همان گاز شهری — متمرکز است.