Hướng dẫn sử dụng cảm biến nồng độ cồn MQ3 (Alcohol Sensor) với Arduino

Hướng dẫn sử dụng cảm biến nồng độ cồn MQ3 (Alcohol Sensor) với Arduino

Cảm biến nồng độ cồn MQ3 là một loại cảm biến phổ biến được nhiều sinh viên và học sinh sử dụng cho quá trình học tập. Thông qua bài viết này, mình sẽ hướng dẫn cho các bạn cách dùng MQ3 để chế tạo một máy đo nồng độ cồn, phục vụ cho quá trình giám sát tình trạng say rượu khi tham giao thông.

Để tạo động lực cho Team có nhiều bài viết chất lượng hơn để đóng góp vào sự phát triển của cộng đồng Arduino, hãy nhấn vào nút Donate để ủng hộ cho Team mình nhé.

Cảm biến nồng độ cồn MQ3

Cảm biến MQ3 là một trong những cảm biến dòng MQ phổ biến nhất được sử dụng trong các ứng dụng khác nhau. Được xây dựng dựa trên nguyên tắc MOS (Metal Oxide Semiconductor), cảm biến này đo sự thay đổi điện trở khi tiếp xúc với cồn, còn được gọi là cảm biến oxit kim loại.

Cảm biến nồng độ cồn MQ3 hoạt động trên nguồn điện 5V DC và tiêu thụ khoảng 800mW. Nó có khả năng phát hiện nồng độ cồn từ 25 đến 500 ppm.

Đọc thêm: Cảnh báo rò rỉ khí Gas (Sensor MQ-2) sử dụng NodeMCU ESP8266 và App Blynk

Cấu tạo Cảm biến nồng độ cồn MQ3

Cảm biến MQ3 được bao phủ bởi hai lớp lưới thép không gỉ mịn được gọi là “anti-explosion network” nhằm bảo vệ khỏi nguy cơ cháy nổ do tiếp xúc với cồn.

Ngoài ra, cảm biến còn được trang bị một lớp bảo vệ và lọc các hạt bụi trong không khí, chỉ cho phép các phần tử khí đi qua.

Bên trong, cảm biến có sáu chân và có cấu trúc hình ngôi sao. Hai chân (H) được sử dụng để làm nóng bộ phận cảm biến và được kết nối với nhau bằng một sợi dây Niken-Crom.

Bốn dây còn lại (A và B) được sử dụng để truyền tín hiệu và kết nối với phần thân của cảm biến thông qua dây bạch kim. Những dây này truyền tín hiệu khi dòng điện trong cảm biến thay đổi.

Phần ống ở giữa của cảm biến được làm bằng gốm dựa trên Oxit nhôm (AL2O3) và phủ một lớp Thiếc Dioxide (SnO2). Thiếc Dioxide là một vật liệu quan trọng vì nó nhạy cảm với khí dễ cháy. Ngoài ra, bề mặt gốm cũng cải thiện khả năng làm nóng và đảm bảo cảm biến được duy trì ở nhiệt độ làm việc liên tục.

Đọc thêm: Máy đo nồng độ cồn bằng cảm biến MQ-135 sử dụng Arduino

Cảm biến nồng độ cồn MQ3 hoạt động như thế nào?

Cảm biến cồn MQ3 hoạt động dựa trên nguyên lý điện trở. Nó sử dụng một lớp màng mạ mỏng từ SnO2 (Oxit Thiếc) làm vật liệu chính. Khi cồn tiếp xúc với màng SnO2, phản ứng hóa học xảy ra, làm thay đổi điện trở của màng.

Cảm biến MQ-3 có một bộ điều chỉnh tỷ lệ dòng điện để tạo điều kiện làm nóng cho màng SnO2. Khi cấp điện cho cảm biến, dòng điện được chạy qua màng SnO2, làm nóng màng lên nhiệt độ làm việc. Khi khí cồn tiếp xúc với màng SnO2, các phản ứng hóa học xảy ra và làm thay đổi điện trở của màng. Thay đổi điện trở này được đo và chuyển đổi thành tín hiệu analog hoặc digital để xác định mức độ cồn trong không khí.

Điện trở của màng SnO2 thay đổi tương ứng với nồng độ cồn có mặt trong không khí. Cảm biến MQ-3 sẽ tạo ra một tín hiệu đầu ra có biên độ thay đổi phụ thuộc vào nồng độ cồn. Từ đó, thông qua quá trình hiệu chỉnh và xử lý tín hiệu, có thể xác định được mức độ cồn có trong môi trường xung quanh.

Tổng quan về Module Cảm biến nồng độ cồn MQ3

Module cảm biến MQ3 Arduino khá đơn giản có hai đầu ra AO và DO, có nhiệm vụ dùng để phát hiện cồn có ở trong không khí.

Sự thay đổi điện áp của chân đầu ra của cảm biến (tại chân AO) thay đổi tỷ lệ thuận với nồng độ cồn. Nồng độ cồn càng cao, điện áp đầu ra càng cao; nồng độ cồn càng thấp, điện áp đầu ra càng thấp.

Tín hiệu điều khiển được số hóa bằng cách sử dụng một IC so sánh LM393 với độ chính xác cao và được ký hiệu ở chân Digital (DO) của cảm biến.

Module sử dụng một biến trở vuông để điều chỉnh độ nhạy của cảm biến khi đo nồng độ cồn trên chân Digital (DO). Các bạn có thể sử dụng để đặt ngưỡng khi nồng độ cồn vượt quá giá trị ngưỡng, module sẽ xuất ra trạng thái LOW nếu không thì ở mức HIGH.

Ngoài ra, module còn có hai đèn LED. Một đèn LED báo nguồn và một đèn LED để báo trạng thái sáng khi nồng độ cồn vượt quá giá trị ngưỡng.

Thông số kỹ thuật

Operating voltage 5V
Load resistance 200 KΩ
Heater resistance 33Ω ± 5%
Heating consumption <800mw
Sensing Resistance 1 MΩ – 8 MΩ
Concentration Range 25 – 500 ppm
Preheat Time Over 24 hour

Sơ đồ chân Cảm biến nồng độ cồn MQ3

  • AO: Phát hiện nồng độ cồn, ở chân này điện áp tỷ lệ thuận với nồng độ cồn nên nồng độ cồn cao thì điện áp cũng sẽ cao và ngược lại.
  • DO: Phát hiện nồng độ cồn. Khi nồng độ cồn vượt ngưỡng D0 ở mức LOW thành HIGH và ngược lại
  • VCC: là chân nguồn, điện áp cấp cho cảm biến là 5V.
  • GND: là chân nối đất

Tinh chỉnh Cảm biến nồng độ cồn MQ3

cảm biến nồng độ cồn MQ3 là một cảm biến hoạt động bằng cách làm nóng các bộ phận bên trong, độ nhạy của cảm biến có thể bị sai lệch nếu không được sử dụng trong một khoảng thời gian dài.

Khi sử dụng lần đầu sau một thời gian không sử dụng (một tháng trở lên), cảm biến phải được làm nóng trong 24-48h để đảm bảo độ chính xác.

Nếu cảm biến được sử dụng thường xuyên, nên làm nóng từ 5-10 phút. Cho cảm biến đọc ở mức cao và giảm dần cho đến khi ổn định.

Các linh kiện cần thiết cho dự án

TÊN LINH KIỆN SỐ LƯỢNG NƠI BÁN
Arduino Uno R3 1 Shopee | Cytron
Cảm biến nồng độ cồn MQ3 1 Shopee | Cytron
Dây cắm 1 Shopee | Cytron
Breadboard 1 Shopee | Cytron

Code 1: Phát hiện nồng độ cồn MQ3 sử dụng chân Analog (A0)

Sơ đồ đấu nối Cảm biến nồng độ cồn MQ3 với Arduino

Arduino Uno R3 Cảm biến nồng độ cồn MQ3
5V VCC
GND GND
A0 A0

Tìm các giá trị ngưỡng của MQ3 Arduino

Để xác định được nồng độ cồn có trong cơ thể, biết được khi không uống là bao nhiêu và khi say thì giá trị ngưỡng là bao nhiêu. Để thực hiện thí nghiệm này bạn cần chuẩn bị một chai rượu và tiến hành để sát cảm biến vào chai để tiến hành đo đạt.

Dưới đây là một đoạn code dùng để tìm ra các giá trị ngưỡng:

#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
}
  • Trong trường hợp không có rượu (khoảng 120)
  • Khi có rượu (khoảng 500)

Code cảm biến MQ3 Arduino

/* 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
}

Đây là một đoạn code dùng để đo nồng độ cồn trong cơ thể, từ giá trị ngưỡng có được ở trên, mình sẽ có giá trị như sau:

  • <120 là tỉnh táo
  • 120-400 có uống rượu, nhưng ở mức cho phép
  • >400 vượt mức cho phép

Code 2: Phát hiện nồng độ cồn MQ3 sử dụng chân Digital (D0)

Sơ đồ đấu nối Cảm biến nồng độ cồn MQ3 với Arduino

Arduino Uno R3 Cảm biến nồng độ cồn MQ3
5V VCC
GND GND
8 D0

Tìm các giá trị ngưỡng của MQ3

Trên module của cảm biến MQ3 được tích hợp sẵn một biến trở vuông dùng để tinh chỉnh độ nhạy của cảm biến, khi đo nồng độ cồn bằng chân Digital. Trong trường hợp này, khi phát hiện cồn thì cảm biến sẽ ở mức LOW và đèn LED sẽ sáng và ngược lại.

Để cài đặt ngưỡng, hãy đặt cảm biến gần hơi cồn và xoay biến trở cho đến khi đèn LED sáng. Sau đó, xoay biến trở theo chiều ngược lại cho đến khi đèn LED tắt.

Code cảm biến nồng độ cồn MQ3 Arduino

#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
}

Kết quả, được hiển thị trên Serial Monitor.

Bài viết liên quan

Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments