سنسور الکل MQ3 چگونه کار میکند؟ + کد آردوینو

ماژول سنسور الکل MQ3 را به پروژه بعدی آردوینو خود اضافه کنید تا دستگاه شما توان تشخیص الکل در هوا و همچنین تخمین غلظت آن را داشته باشد. اگر میخواهید یک دستگاه ساده همانند الکلسنج تنفسی بسازید تا مقدار الکل موجود در نفس فرد را تعیین کنید، ماژول MQ3 انتخاب مناسبی است.
سنسور الکل MQ3
MQ3 یکی از پرکاربردترین اعضای خانواده سنسورهای MQ است. این یک سنسور MOS (Metal Oxide Semiconductor) است. سنسورهای اکسید فلزی به دلیل تغییر مقاومت ماده حسگر در مواجهه با گاز، به نام Chemiresistors شناخته میشوند؛ یعنی حساسیت مبتنی بر تغییر مقاومت است.

سنسور الکل MQ3 با تغذیه 5V DC کار میکند و مصرف حرارتی آن حدود 800mW است. محدوده تشخیص غلظت الکل توسط این سنسور بین 25 تا 500 ppm میباشد.
ppm چیست؟
Parts-per-million یا ppm رایجترین واحد برای اندازهگیری غلظت گازها است. ppm نسبت مولکولهای یک گاز به مجموع مولکولها را نشان میدهد. برای مثال 500 ppm الکل یعنی در میان یک میلیون مولکول گاز، 500 مولکول الکل و 999500 مولکول سایر گازها وجود دارند.
ساختار داخلی سنسور MQ3
MQ3 یک سنسور مبتنی بر هیتر است. روی آن دو لایه مش بسیار ریز از استیل ضدزنگ وجود دارد که به «شبکه ضدانفجار» معروف است. این مشها از ایجاد شعله یا انفجار جلوگیری میکنند زیرا سنسور برای تشخیص یک گاز قابل اشتعال (الکل) طراحی شده است.

این حفاظ همچنین از سنسور محافظت میکند و ذرات معلق را فیلتر مینماید، بهطوری که تنها اجزای گازی میتوانند وارد محفظه شوند.


پس از برداشتن مش بیرونی، ساختار سنسور بهصورت ستارهای با شش پایه که از بزل باکلیت بیرون زدهاند دیده میشود. دو پایه از این شش پایه که با H مشخص میشوند، نقش گرمکن را بر عهده دارند و با یک سیم پیچ نیکل-کروم به هم متصل شدهاند؛ این سیمپیچ همان عنصر گرمکن است.
چهار پایه باقیمانده برای سیگنال (A و B) هستند و با سیمهای پلاتینیومی به بدنه عنصر حسگر متصلاند. این سیمها تغییرات کوچک جریان عبوری از عنصر حسگر را منتقل میکنند.

عنصر حسگر از یک زیرلایه سرامیکی بر پایه Aluminum Oxide (AL2O3) به شکل لولهای ساخته شده و با یک پوشش از Tin Dioxide (SnO2) پوشانده شده است. پوشش SnO2 مهمترین بخش حسگر است چون نسبت به الکل حساس است. زیرلایه سرامیکی کارایی گرمسازی را بهبود میبخشد و باعث میشود منطقه حسگر به دمای کاری برسد و بهصورت پیوسته گرم بماند.

بهطور خلاصه، سیستم گرمکن شامل سیمپیچ نیکل-کروم و سرامیک AL2O3 است و سیستم حسگر از سیمهای پلاتینیومی و پوشش SnO2 تشکیل میشود.
نحوه کار سنسور MQ3
وقتی لایه نیمهرسانای SnO2 تا دمای کاری گرم میشود، مولکولهای اکسیژن روی سطح جذب میشوند. در هوای پاک، الکترونها از باند رسانش SnO2 به سمت مولکولهای اکسیژن جذب میشوند. این پدیده لایهای از کاهش الکترون (electron depletion layer) را درست زیر سطح ذرات SnO2 ایجاد کرده و یک مانع پتانسیلی پدید میآورد. در نتیجه، فیلم SnO2 مقاومت بالایی پیدا میکند و جریان الکتریکی را محدود میسازد.
با ورود الکل، اکسیژن جذبشده روی سطح با الکل واکنش میدهد و تراکم اکسیژن سطحی کاهش مییابد؛ این امر مانع پتانسیلی را کاهش میدهد. در نتیجه الکترونها آزاد شده و وارد SnO2 میشوند و جریان الکتریکی بهراحتی از سنسور عبور میکند.

مرور سختافزار ماژول MQ3
ماژول MQ3 کار با سنسور را ساده میکند و دو خروجی متفاوت ارائه میدهد: یک خروجی دیجیتال که حضور الکل را بهصورت باینری نشان میدهد و یک خروجی آنالوگ که متناسب با غلظت الکل تغییر ولتاژ میدهد.

ولتاژ خروجی آنالوگ ماژول در پایه A0 متناسب با غلظت الکل افزایش یا کاهش مییابد؛ یعنی هرچه غلظت الکل بالاتر باشد ولتاژ خروجی بالاتر خواهد بود و بالعکس. تصویر بالا رابطه بین غلظت الکل و ولتاژ خروجی را نشان میدهد.

این سیگنال آنالوگ توسط یک مقایسهگر دقیق LM393 دیجیت شده و در خروجی دیجیتال D0 در دسترس قرار میگیرد.

ماژول دارای یک پتانسیومتر برای تنظیم حساسیت خروجی دیجیتال (D0) است. با تنظیم آن میتوانید یک آستانه تعیین کنید تا وقتی غلظت الکل از آستانه بیشتر شد، خروجی دیجیتال مقدار LOW بدهد و در غیر این صورت HIGH باشد.
چرخاندن پیچ پتانسیومتر در جهت ساعتگرد حساسیت را افزایش میدهد و در جهت پادساعتگرد حساسیت را کاهش میدهد.
علاوه بر این، ماژول دو LED دارد: LED تغذیه که هنگام روشن بودن ماژول روشن میشود و LED وضعیت که هنگام عبور غلظت الکل از آستانه تنظیمشده روشن میشود.
مشخصات فنی
مشخصات ماژول به صورت زیر است:
| ولتاژ کاری | 5V |
| مقاومت بار | 200 KΩ |
| مقاومت هیتر | 33Ω ± 5% |
| مصرف گرمایشی | <800mw |
| مقاومت حسی | 1 MΩ – 8 MΩ |
| محدوده دقت | 25 – 500 ppm |
| زمان پیش گرماش | Over 24 hour |
پین اوت ماژول MQ3
حالا به پینها میپردازیم.

VCC تغذیه ماژول را تأمین میکند. آن را به خروجی 5V آردوینو متصل کنید.
GND پین زمین (گراند) ماژول است.
D0 حضور الکل را نشان میدهد. D0 زمانی که غلظت الکل از مقدار آستانه تنظیمشده (توسط پتانسیومتر) فراتر رود، مقدار LOW میدهد و در غیر این صورت HIGH خواهد بود.
A0 ولتاژ خروجی آنالوگ متناسب با غلظت الکل را تولید میکند؛ هر غلظت بالاتر باعث ولتاژ بالاتر و غلظت پایینتر باعث ولتاژ پایینتر میشود.
کالیبره کردن سنسور MQ3
از آنجا که MQ3 یک سنسور مبتنی بر هیتر است، کالیبراسیون آن ممکن است اگر برای مدت طولانی در انبار نگهداری شود دچار تغییر شود.
اگر سنسور بعد از یک دوره طولانی نگهداری (یک ماه یا بیشتر) برای اولین بار استفاده شود، باید بهصورت کامل 24 تا 48 ساعت گرمکاری (preheat) شود تا دقت حداکثری حاصل شود.
اگر سنسور اخیراً استفاده شده باشد، معمولاً 5 تا 10 دقیقه زمان برای رسیدن به گرمکاری کامل کافی است. در طول دوره گرمکاری مقدار خوانش معمولاً ابتدا بالا است و بهتدریج کاهش مییابد تا پایدار شود.
آزمایش 1 — اندازهگیری غلظت الکل با خروجی آنالوگ (A0)
در آزمایش اول، خروجی آنالوگ را میخوانیم تا غلظت الکل را اندازه بگیریم و سطح مستی را تخمین بزنیم.
سیمکشی
MQ3 را به آردوینو وصل کنید.
ابتدا پین VCC را به پین 5V آردوینو و پین GND را به زمین آردوینو متصل کنید. سپس پین A0 ماژول را به پایه آنالوگ شماره 0 آردوینو وصل کنید.

یافتن مقادیر آستانه
برای تخمین سطح مستی باید مقادیر خروجی سنسور را قبل از نفسی که حاوی الکل است و بعد از آن ثبت کنید.
کافی است اسکچ زیر را اجرا کرده و مقادیر را یادداشت کنید.
توجه:
اگر از نظر قانونی اجازه مصرف نوشیدنی الکلی ندارید، از بطری ایزوپروپیل الکل یا اسپری یا ژل ضدعفونیکننده برای تست استفاده کنید. مراقب باشید الکل با سطح سنسور تماس مستقیم نداشته باشد! بهجای دمیدن، از فشردن بطری برای ورود بخارات الکل به سمت سنسور استفاده کنید و مقادیر را بخوانید.
#define MQ3pin 0
float sensorValue; //variable to store sensor value
void setup() {
Serial.begin(9600); // sets the serial port to 9600
Serial.println("MQ3 warming up!");
delay(20000); // allow the MQ3 to warm up
}
void loop() {
sensorValue = analogRead(MQ3pin); // read analog input pin 0
Serial.print("Sensor Value: ");
Serial.println(sensorValue);
delay(2000); // wait 2s for next reading
} وقتی اسکچ را اجرا کنید باید خوانشهایی مشابه موارد زیر ببینید:
- در نبود الکل (حدود 120)
- در حضور الکل (حدود 500)

این تست ممکن است نیاز به آزمون و خطا داشته باشد. پس از تهیه خوانشها میتوانید از آنها بهعنوان آستانه برای راهاندازی یک عمل استفاده کنید.
کد آردوینو (آنالوگ)
اسکچ زیر سطح مستی را با استفاده از مقادیر آستانه زیر تخمین میزند:
- < 120 is sober
- 120-400 is drinking – but within legal limits
- > 400 is drunk
/* Replace these values with your own readings */
#define Sober 120 // Define max value that we consider sober
#define Drunk 400 // Define min value that we consider drunk
#define MQ3pin 0
float sensorValue; //variable to store sensor value
void setup() {
Serial.begin(9600); // sets the serial port to 9600
Serial.println("MQ3 warming up!");
delay(20000); // allow the MQ3 to warm up
}
void loop() {
sensorValue = analogRead(MQ3pin); // read analog input pin 0
Serial.print("Sensor Value: ");
Serial.print(sensorValue);
// Determine the status
if (sensorValue < Sober) { Serial.println(" | Status: Stone Cold Sober"); } else if (sensorValue >= Sober && sensorValue < Drunk) {
Serial.println(" | Status: Drinking but within legal limits");
} else {
Serial.println(" | Status: DRUNK");
}
delay(2000); // wait 2s for next reading
} اگر همه چیز درست باشد، باید خروجی مشابهی در مانیتور سریال ببینید.

آزمایش 2 — تشخیص حضور الکل با خروجی دیجیتال (D0)
در آزمایش دوم از خروجی دیجیتال برای تشخیص حضور الکل استفاده میکنیم.
سیمکشی
مدار آزمایش قبلی را بازاستفاده میکنیم. کافی است اتصال به پایه ADC (A0) را قطع کرده و پین D0 ماژول را به پایه دیجیتال شماره 8 آردوینو متصل کنید.

تنظیم آستانه
ماژول یک پتانسیومتر داخلی برای تعیین آستانه غلظت الکل دارد که بالاتر از آن خروجی دیجیتال مقدار LOW میدهد و LED وضعیت روشن میشود.

برای تنظیم آستانه، اجازه دهید بخارات الکل وارد سنسور شوند و پتانسیومتر را در جهت ساعتگرد بچرخانید تا LED وضعیت روشن شود. سپس پتانسیومتر را برگردانید در جهت پادساعتگرد تا LED خاموش شود. حالا ماژول آماده به کار است.
کد آردوینو (دیجیتال)
اکنون اسکچ زیر را روی آردوینو آپلود کنید.
#define MQ3pin 8
int sensorValue; //variable to store sensor value
void setup() {
Serial.begin(9600); // sets the serial port to 9600
Serial.println("MQ3 warming up!");
delay(20000); // allow the MQ3 to warm up
}
void loop() {
sensorValue = digitalRead(MQ3pin); // read digital output pin
Serial.print("Digital Output: ");
Serial.print(sensorValue);
// Determine the status
if (sensorValue) {
Serial.println(" | Alcohol: -");
} else {
Serial.println(" | Alcohol: Detected!");
}
delay(2000); // wait 2s for next reading
} شما باید خروجی مشابهی را در مانیتور سریال مشاهده کنید.












