آموزش آردوینوپروژه های آردوینو

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

ماژول سنسور الکل MQ3 را به پروژه بعدی آردوینو خود اضافه کنید تا دستگاه شما توان تشخیص الکل در هوا و همچنین تخمین غلظت آن را داشته باشد. اگر می‌خواهید یک دستگاه ساده همانند الکل‌سنج تنفسی بسازید تا مقدار الکل موجود در نفس فرد را تعیین کنید، ماژول MQ3 انتخاب مناسبی است.

سنسور الکل MQ3

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

نمای جلوی ماژول سنسور الکل MQ3

سنسور الکل MQ3 با تغذیه 5V DC کار می‌کند و مصرف حرارتی آن حدود 800mW است. محدوده تشخیص غلظت الکل توسط این سنسور بین 25 تا 500 ppm می‌باشد.

دوره آموزش آردوینو دوره آموزش ESP32 دوره آموزش اینترنت اشیا حرفه ای دوره آموزش AVR

ppm چیست؟

Parts-per-million یا ppm رایج‌ترین واحد برای اندازه‌گیری غلظت گازها است. ppm نسبت مولکول‌های یک گاز به مجموع مولکول‌ها را نشان می‌دهد. برای مثال 500 ppm الکل یعنی در میان یک میلیون مولکول گاز، 500 مولکول الکل و 999500 مولکول سایر گازها وجود دارند.

ساختار داخلی سنسور MQ3

MQ3 یک سنسور مبتنی بر هیتر است. روی آن دو لایه مش بسیار ریز از استیل ضدزنگ وجود دارد که به «شبکه ضدانفجار» معروف است. این مش‌ها از ایجاد شعله یا انفجار جلوگیری می‌کنند زیرا سنسور برای تشخیص یک گاز قابل اشتعال (الکل) طراحی شده است.

دو لایه مش استیل محافظ (شبکه ضدانفجار) روی سنسور

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

حفاظ مش و فیلتر برای جلوگیری از ورود ذرات معلق
سنسور پس از برداشتن مش بیرونی و پایه با شش پایه اتصال

پس از برداشتن مش بیرونی، ساختار سنسور به‌صورت ستاره‌ای با شش پایه که از بزل باکلیت بیرون زده‌اند دیده می‌شود. دو پایه از این شش پایه که با H مشخص می‌شوند، نقش گرم‌کن را بر عهده دارند و با یک سیم پیچ نیکل-کروم به هم متصل شده‌اند؛ این سیم‌پیچ همان عنصر گرم‌کن است.

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

عنصر حسگر لولهای با بستر سرامیکی و پوشش SnO2

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

شماتیک عملکرد لایه SnO2 هنگام حضور و عدم حضور الکل

به‌طور خلاصه، سیستم گرم‌کن شامل سیم‌پیچ نیکل-کروم و سرامیک AL2O3 است و سیستم حسگر از سیم‌های پلاتینیومی و پوشش SnO2 تشکیل می‌شود.

نحوه کار سنسور MQ3

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

با ورود الکل، اکسیژن جذب‌شده روی سطح با الکل واکنش می‌دهد و تراکم اکسیژن سطحی کاهش می‌یابد؛ این امر مانع پتانسیلی را کاهش می‌دهد. در نتیجه الکترون‌ها آزاد شده و وارد SnO2 می‌شوند و جریان الکتریکی به‌راحتی از سنسور عبور می‌کند.

نمای ماژول MQ3 همراه با خروجی آنالوگ و دیجیتال

مرور سخت‌افزار ماژول MQ3

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

نمودار رابطه بین غلظت الکل و ولتاژ خروجی آنالوگ

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

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید
مدار مقایسهگر LM393 موجود روی برد ماژول

این سیگنال آنالوگ توسط یک مقایسه‌گر دقیق 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

حالا به پین‌ها می‌پردازیم.

عکس پین اوت ماژول MQ3 با برچسب VCC, GND, D0, A0

VCC تغذیه ماژول را تأمین می‌کند. آن را به خروجی 5V آردوینو متصل کنید.

GND پین زمین (گراند) ماژول است.

D0 حضور الکل را نشان می‌دهد. D0 زمانی که غلظت الکل از مقدار آستانه تنظیم‌شده (توسط پتانسیومتر) فراتر رود، مقدار LOW می‌دهد و در غیر این صورت HIGH خواهد بود.

A0 ولتاژ خروجی آنالوگ متناسب با غلظت الکل را تولید می‌کند؛ هر غلظت بالاتر باعث ولتاژ بالاتر و غلظت پایین‌تر باعث ولتاژ پایین‌تر می‌شود.

کالیبره کردن سنسور MQ3

از آنجا که MQ3 یک سنسور مبتنی بر هیتر است، کالیبراسیون آن ممکن است اگر برای مدت طولانی در انبار نگهداری شود دچار تغییر شود.

اگر سنسور بعد از یک دوره طولانی نگهداری (یک ماه یا بیشتر) برای اولین بار استفاده شود، باید به‌صورت کامل 24 تا 48 ساعت گرم‌کاری (preheat) شود تا دقت حداکثری حاصل شود.

اگر سنسور اخیراً استفاده شده باشد، معمولاً 5 تا 10 دقیقه زمان برای رسیدن به گرم‌کاری کامل کافی است. در طول دوره گرم‌کاری مقدار خوانش معمولاً ابتدا بالا است و به‌تدریج کاهش می‌یابد تا پایدار شود.

آزمایش 1 — اندازه‌گیری غلظت الکل با خروجی آنالوگ (A0)

در آزمایش اول، خروجی آنالوگ را می‌خوانیم تا غلظت الکل را اندازه بگیریم و سطح مستی را تخمین بزنیم.

سیم‌کشی

MQ3 را به آردوینو وصل کنید.

ابتدا پین VCC را به پین 5V آردوینو و پین GND را به زمین آردوینو متصل کنید. سپس پین A0 ماژول را به پایه آنالوگ شماره 0 آردوینو وصل کنید.

شماتیک سیمکشی ماژول MQ3 به آردوینو برای خواندن A0

یافتن مقادیر آستانه

برای تخمین سطح مستی باید مقادیر خروجی سنسور را قبل از نفسی که حاوی الکل است و بعد از آن ثبت کنید.

کافی است اسکچ زیر را اجرا کرده و مقادیر را یادداشت کنید.

توجه:

اگر از نظر قانونی اجازه مصرف نوشیدنی الکلی ندارید، از بطری ایزوپروپیل الکل یا اسپری یا ژل ضدعفونی‌کننده برای تست استفاده کنید. مراقب باشید الکل با سطح سنسور تماس مستقیم نداشته باشد! به‌جای دمیدن، از فشردن بطری برای ورود بخارات الکل به سمت سنسور استفاده کنید و مقادیر را بخوانید.

#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 آردوینو متصل کنید.

سیمکشی ماژول به آردوینو با استفاده از پین دیجیتال D0

تنظیم آستانه

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

تنظیم پتانسیومتر تا روشن و خاموش شدن 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
}

شما باید خروجی مشابهی را در مانیتور سریال مشاهده کنید.

نمایی از خروجی سریال هنگام تشخیص الکل با D0
5 (2 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *