💨 سنسور گاز MQ-2 (MQ-2 Gas Sensor)
| اسم انگلیسی | MQ-2 Gas Sensor |
|---|---|
| در ووکوی (Wokwi) | wokwi-gas-sensor |
| دسته | 🌡️ سنسورها |
| در شبیهساز فارسی | مود ساده (بدون کد) و مود آردوینو · رایگان |
سنسور گاز MQ-2 (MQ-2 Gas Sensor) ماژولی است با یک استوانهی توریدار که داخلش یک گرمکن کوچک و یک لایهی دیاکسید قلع است. وقتی دود، گاز شهری، پروپان یا هیدروژن به این لایهی داغ برسد، مقاومتش کم میشود و ولتاژ خروجی بالا میرود. ماژول دو خروجی دارد: آنالوگ برای «چقدر گاز» و دیجیتال برای «از آستانه گذشت یا نه». با آن هشدار نشت گاز، دودسنج آشپزخانه یا بخش گاز یک ایستگاه ایمنی میسازی. اینجا سنسور را در ووکوی میچینیم و هشداری میسازیم که هوای تمیز را خودش یاد میگیرد.
سنسور گاز در ووکوی (Wokwi)
شناسهی سنسور در ووکوی wokwi-gas-sensor است و چهار پایه دارد: AOUT (خروجی آنالوگ)، DOUT (خروجی دیجیتال)، GND و VCC. حین اجرا روی سنسور کلیک کن تا بتوانی مقدار گاز را تغییر بدهی و واکنش کد را ببینی. یک wokwi-buzzer هم برای آژیر گذاشتهایم.
{
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
{ "type": "wokwi-gas-sensor", "id": "gas1", "top": -130, "left": 140, "attrs": {} },
{ "type": "wokwi-buzzer", "id": "bz1", "top": -120, "left": 330, "attrs": {} }
],
"connections": [
[ "gas1:VCC", "uno:5V", "red", [] ],
[ "gas1:GND", "uno:GND.1", "black", [] ],
[ "gas1:AOUT", "uno:A0", "orange", [] ],
[ "gas1:DOUT", "uno:3", "green", [] ],
[ "bz1:1", "uno:GND.1", "black", [] ],
[ "bz1:2", "uno:8", "red", [] ]
]
}
| پایه در ووکوی | وصل به |
|---|---|
gas1:VCC و gas1:GND | uno:5V و uno:GND.1 |
gas1:AOUT | uno:A0 |
gas1:DOUT | uno:3 |
bz1:1 و bz1:2 | uno:GND.1 و uno:8 |
در تینکرکد فارسی هم MQ-2 در هر دو مود رایگان است، پس همین منطق را آنجا هم میتوانی امتحان کنی.
سیمکشی با آردوینو
| پایهی قطعه | وصل به |
|---|---|
| VCC | 5V |
| GND | GND |
| AOUT (روی بعضی ماژولها A0) | A0 |
| DOUT (روی بعضی ماژولها D0) | پین 3 |
| بازر یا پیزو (+ و −) | پین 8 و GND |
گرمکن MQ-2 حدود ۱۵۰ میلیآمپر میکشد و سنسور واقعاً داغ میشود؛ این طبیعی است. پیچ آبی روی ماژول آستانهی DOUT را تنظیم میکند. سطح DOUT هنگام هشدار در همهی ماژولها یکی نیست (در بیشترشان LOW میشود)، برای همین کد ما تصمیم را با خروجی آنالوگ میگیرد و DOUT را فقط چاپ میکند.
کد نمونه
بهجای یک عدد ثابت مثل ۴۰۰ که در هر اتاق و هر سنسور فرق میکند، این برنامه بعد از گرم شدن ۵۰ نمونه از هوای تمیز میگیرد و میانگینشان را «خط پایه» میکند. هر وقت عدد ۱۵۰ واحد از خط پایه بالاتر رفت، آژیر بوق میزند. زمان گرم شدن را در ووکوی صفر کن. ایدهی میانگینگیری را در درس صاف کردن عدد سنسور (Smoothing) کاملتر میبینی.
// MQ-2: learn the clean-air value, then beep when gas rises above it.
const int GAS_PIN = A0;
const int DOUT_PIN = 3;
const int BUZZER_PIN = 8;
const unsigned long WARMUP_MS = 20000; // real sensor: minutes; Wokwi: 0
const int MARGIN = 150; // how far above clean air means gas
int baseline = 0;
void setup() {
Serial.begin(9600);
pinMode(DOUT_PIN, INPUT);
Serial.println("Warming up...");
delay(WARMUP_MS);
long sum = 0; // average 50 clean-air readings
for (int i = 0; i < 50; i++) {
sum += analogRead(GAS_PIN);
delay(20);
}
baseline = sum / 50;
Serial.print("Clean air baseline = ");
Serial.println(baseline);
}
void loop() {
int value = analogRead(GAS_PIN);
Serial.print("gas:");
Serial.print(value);
Serial.print(" dout:");
Serial.println(digitalRead(DOUT_PIN));
if (value > baseline + MARGIN) {
tone(BUZZER_PIN, 2500, 200); // short beep on every reading
}
delay(400);
}
خروجی با قالب gas: چاپ میشود تا در نمودار سریال، بالا رفتن گاز را مثل یک کوه ببینی.
اشتباههای رایج
- خواندن بدون گرم شدن: MQ-2 سرد عددهای بالا و بیثبات میدهد و خط پایه را خراب میکند. سنسور نو را بار اول چند ساعت روشن بگذار و هر بار هم چند دقیقه صبر کن.
- آستانهی عددی ثابت: عدد هوای تمیز با دما، رطوبت و خود سنسور عوض میشود. خط پایهی خودکار یا کالیبره کردن دستی را جا نینداز.
- انتظار تشخیص یک گاز خاص: MQ-2 به چند گاز با هم حساس است و نمیگوید کدام آمده. برای مونوکسید کربن سنسور جدا لازم است.
- تکیه برای ایمنی واقعی: این مدار برای یادگیری است. برای حفاظت از خانه، دستگاه هشدار گاز استاندارد نصب کن و این پروژه را فقط کنارش داشته باش.
آموزشهای مرتبط
- سنسور گاز MQ-2 با آردوینو: گرم شدن، آستانه و آژیر
- سیستم اعلام حریق با MQ-2 و سنسور دما
- ۳۰ مدار ESP32، از جمله هشدار نشت گاز
- پیزو بزرگ برای آژیر بلندتر
- سریال مانیتور و نمودار سریال
سؤالهای رایج
سنسور MQ-2 چقدر باید گرم شود؟
سنسور نو را بار اول چند ساعت روشن بگذار تا پایدار شود و هر بار هم بعد از روشن شدن چند دقیقه صبر کن. در ووکوی گرم شدن لازم نیست و میتوانی زمانش را در کد صفر کنی.
خروجی DOUT و AOUT در MQ-2 چه فرقی دارند؟
AOUT یک ولتاژ پیوسته است که با بیشتر شدن گاز بالا میرود و با analogRead خوانده میشود. DOUT فقط میگوید از آستانهی پیچ روی ماژول گذشته یا نه؛ در بیشتر ماژولها هنگام هشدار LOW میشود.
MQ-2 مونوکسید کربن را تشخیص میدهد؟
MQ-2 برای دود و گازهای قابل اشتعال مثل گاز شهری و پروپان ساخته شده و برای مونوکسید کربن قابل اعتماد نیست. برای CO سنسور جدا مثل MQ-7 یا دستگاه هشدار استاندارد لازم است.