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
Vì 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
- Cảnh báo rò rỉ khí Gas (Sensor MQ-2) sử dụng NodeMCU ESP8266 và App Blynk
- Cách thức hoạt động của cảm biến mực nước (Water Sensor) với Arduino
- Sử dụng cảm biến độ ẩm đất (Soil Moisture Sensor) với Arduino
- Hướng dẫn sử dụng cảm biến âm thanh (Sound Sensor) với Arduino
- Hướng dẫn sử dụng cảm biến khí Gas MQ2 (Gas Sensor) với Arduino