- Cảm biến khí MQ6
- Làm thế nào để đo PPM bằng cảm biến MQ Gas?
- Các thành phần bắt buộc
- Sơ đồ
- Cảm biến MQ với lập trình PIC
Dòng MQ Cảm biến khí là loại cảm biến rất phổ biến được sử dụng trong Máy dò khí để phát hiện hoặc đo lường một số loại Khí nhất định. Các cảm biến này được sử dụng rộng rãi trong tất cả các thiết bị liên quan đến Khí như từ Máy phát hiện khói đơn giản đến Máy theo dõi chất lượng không khí công nghiệp. Chúng tôi đã sử dụng các cảm biến khí MQ này với Arduino để đo một số khí độc hại như Amoniac. Trong bài này, chúng ta sẽ học cách sử dụng các cảm biến khí này với Vi điều khiển PIC, để đo giá trị PPM của khí và hiển thị trên màn hình LCD 16x2.
Như đã đề cập trước đó, có nhiều loại cảm biến dòng MQ khác nhau có sẵn trên thị trường và mỗi cảm biến có thể đo các loại khí khác nhau như thể hiện trong bảng dưới đây. Vì mục đích của bài viết này, chúng tôi sẽ sử dụng cảm biến Khí MQ6 với PIC có thể được sử dụng để phát hiện sự hiện diện và nồng độ khí LPG. Tuy nhiên, bằng cách sử dụng cùng một phần cứng và phần sụn, các cảm biến dòng MQ khác cũng có thể được sử dụng mà không cần sửa đổi lớn trong phần mã và phần cứng.
cảm biến | Phát hiện |
MQ-2 | Mêtan, Butan, LPG, khói |
MQ-3 | Rượu, Ethanol, khói |
MQ-4 | Khí mêtan, khí CNG |
MQ-5 | Khí tự nhiên, LPG |
MQ-6 | LPG, khí butan |
MQ-7 | Carbon Monoxide |
MQ-8 | Khí hydro |
MQ-9 | Carbon Monoxide, khí dễ cháy. |
MQ131 | Khí quyển |
MQ135 | Chất lượng không khí (Benzen, Rượu, khói) |
MQ136 | Khí hydro sunfua |
MQ137 | Amoniac |
MQ138 | Benzen, Toluen, Rượu, Axeton, Propan, Khí fomanđehit, Hydro |
MQ214 | Mêtan, khí tự nhiên |
MQ216 | Khí tự nhiên, Khí than |
MQ303A | Rượu, Ethanol, khói |
MQ306A | LPG, khí butan |
MQ307A | Carbon Monoxide |
MQ309A | Carbon Monoxide, khí dễ cháy |
MG811 | Carbon Dioxide (CO2) |
AQ-104 | Chất lượng không khí |
Cảm biến khí MQ6
Hình ảnh dưới đây cho thấy sơ đồ chân cảm biến MQ6. Tuy nhiên, hình ảnh bên trái là cảm biến MQ6 dựa trên mô-đun để giao tiếp với khối vi điều khiển, sơ đồ chân của mô-đun cũng được hiển thị trong hình ảnh đó.
Chân 1 là VCC, chân 2 là GND, chân 3 là đầu ra kỹ thuật số (Logic thấp khi phát hiện khí.) Và chân 4 là đầu ra Analog. Nồi dùng để điều chỉnh độ nhạy. Nó không phải là RL. Điện trở RL là điện trở bên phải của đèn LED DOUT.
Mỗi cảm biến dòng MQ có một bộ phận làm nóng và một điện trở cảm ứng. Tùy thuộc vào nồng độ của khí, điện trở cảm nhận được thay đổi và bằng cách phát hiện điện trở thay đổi, nồng độ khí có thể được đo. Để đo nồng độ khí trong PPM, tất cả các cảm biến MQ đều cung cấp đồ thị logarit, điều này rất quan trọng. Biểu đồ cung cấp một cái nhìn tổng quan về nồng độ khí với tỷ lệ RS và RO.
Làm thế nào để đo PPM bằng cảm biến MQ Gas?
RS là điện trở cảm giác khi có một loại khí cụ thể trong khi RO là điện trở cảm giác trong không khí sạch mà không có bất kỳ loại khí cụ thể nào. Biểu đồ logarit dưới đây được lấy từ biểu dữ liệu cung cấp cái nhìn tổng quan về nồng độ khí với điện trở cảm biến của cảm biến MQ6. Cảm biến MQ6 được sử dụng để phát hiện nồng độ khí LPG. Do đó, cảm biến MQ6 sẽ cung cấp một lực cản cụ thể trong điều kiện không khí sạch, nơi không có khí LPG. Ngoài ra, điện trở sẽ thay đổi bất cứ khi nào khí LPG được cảm biến MQ6 phát hiện.
Vì vậy, chúng ta cần vẽ biểu đồ này vào phần sụn của mình tương tự như những gì chúng ta đã làm trong Dự án máy dò khí Arduino của mình. Công thức là có 3 điểm dữ liệu khác nhau. Hai điểm dữ liệu đầu tiên là điểm bắt đầu của đường cong LPG, ở tọa độ X và Y. Dữ liệu thứ ba là độ dốc.
Vì vậy, nếu chúng ta chọn đường cong màu xanh đậm là đường cong LPG, điểm bắt đầu của đường cong theo tọa độ X và Y là 200 và 2. Vì vậy, điểm dữ liệu đầu tiên từ thang logarit là (log200, log2) là (2,3, 0,30).
Hãy làm cho nó là, X1 và Y1 = (2.3, 0.30). Phần cuối của đường cong là điểm dữ liệu thứ hai. Bằng quá trình tương tự được mô tả ở trên, X2 và Y2 là (log 10000, log0,4). Như vậy, X2 và Y2 = (4, -0,40). Để có được độ dốc của đường cong, công thức là
= (Y2-Y1) / (X2-X1) = (- 0,40 - 0,30) / (4 - 2,3) = (-0,70) / (1,7) = -0,41
Biểu đồ chúng ta cần có thể được đưa ra dưới dạng
LPG_Curve = {bắt đầu X và bắt đầu Y, độ dốc} LPG_Curve = {2.3, 0.30, -0.41}
Đối với các cảm biến MQ khác, lấy dữ liệu trên từ biểu dữ liệu và biểu đồ lôgarit. Giá trị sẽ khác nhau dựa trên cảm biến và khí được đo. Đối với mô-đun cụ thể này, nó có một chốt kỹ thuật số chỉ cung cấp thông tin về khí có hay không. Đối với dự án này, nó cũng được sử dụng.
Các thành phần bắt buộc
Các thành phần cần thiết để giao tiếp cảm biến MQ với vi điều khiển PIC được đưa ra dưới đây-
- Nguồn điện 5V
- Breadboard
- Điện trở 4,7k
- LCD 16x2
- Điện trở 1k
- Tinh thể 20Mhz
- Tụ 33pF - 2 cái
- Bộ vi điều khiển PIC16F877A
- Cảm biến dòng MQ
- Berg và các dây nối khác.
Sơ đồ
Sơ đồ cho cảm biến khí này với một dự án PIC là khá đơn giản. Chân Analog được kết nối với chân RA0 và chân kỹ thuật số với RD5 để đo điện áp tương tự do mô-đun cảm biến Gas cung cấp. Nếu bạn hoàn toàn mới làm quen với PIC, thì bạn có thể muốn xem hướng dẫn PIC ADC và hướng dẫn PIC LCD để hiểu rõ hơn về dự án này.
Mạch được xây dựng trong một breadboard. Sau khi kết nối hoàn tất, thiết lập của tôi trông như thế này, được hiển thị bên dưới.
Cảm biến MQ với lập trình PIC
Phần chính của mã này là chức năng chính và các chức năng ngoại vi liên quan khác. Chương trình hoàn chỉnh có thể được tìm thấy ở cuối trang này, các đoạn mã quan trọng được giải thích như sau
Hàm dưới đây được sử dụng để nhận giá trị điện trở của cảm biến trong không khí tự do. Khi kênh Analog 0 được sử dụng, nó sẽ nhận dữ liệu từ kênh tương tự 0. Điều này dùng để hiệu chỉnh cảm biến MQ Gas.
float SensorCalibration () { int count; // Hàm này sẽ hiệu chỉnh cảm biến trong free air float val = 0; for (count = 0; count <50; count ++) {// lấy nhiều mẫu và tính giá trị trung bình val + = Calcul_resistance (ADC_Read (0)); __delay_ms (500); } val = val / 50; val = val / RO_VALUE_CLEAN_AIR; // chia cho RO_CLEAN_AIR_FACTOR sinh ra Ro return val; }
Hàm bên dưới được sử dụng để đọc các giá trị tương tự của cảm biến MQ và tính trung bình nó để tính giá trị Rs
float read_MQ () { int count; float rs = 0; for (count = 0; count <5; count ++) {// lấy nhiều lần đọc và tính trung bình. rs + = tính_độ_trở (ADC_Read (0)); // rs thay đổi theo nồng độ khí. __delay_ms (50); } rs = rs / 5; trả lại rs; }
Hàm dưới đây dùng để tính điện trở từ điện trở bộ chia điện áp và điện trở tải.
float Calcul_resistance (int adc_channel) {// cảm biến và điện trở tải tạo thành một bộ chia điện áp. vì vậy sử dụng giá trị tương tự và giá trị tải trả về (((float) RL_VALUE * (1023-adc_channel) / adc_channel)); // chúng ta sẽ tìm điện trở cảm biến. }
RL_VALUE được xác định ở đầu mã như hình dưới đây
#define RL_VALUE (10) // xác định điện trở tải trên bo mạch, tính bằng kilo-ohms
Thay đổi giá trị này sau khi kiểm tra khả năng chịu tải trên bo mạch. Nó có thể khác với các bảng cảm biến MQ khác. Để vẽ dữ liệu có sẵn vào thang đo nhật ký, hàm dưới đây được sử dụng.
int gas_plot_log_scale (float rs_ro_ratio, float * curve) { return pow (10, (((log (rs_ro_ratio) -curve) / curve) + curve)); }
Đường cong là đường cong LPG được xác định ở trên của mã đã được tính toán trước đó trong bài viết của chúng tôi ở trên.
float MQ6_curve = {2.3,0.30, -0,41}; // Vẽ đồ thị, thay đổi điều này cho cảm biến cụ thể
Cuối cùng, chức năng chính bên trong mà chúng tôi đo giá trị tương tự, tính toán PPM và hiển thị nó trên màn hình LCD được đưa ra bên dưới
void main () { system_init (); clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Đang hiệu chỉnh…."); Ro = SensorCalibration (); // clear_screen (); lcd_com (FIRST_LINE); lcd_puts ("Xong!"); // clear_screen (); lcd_com (FIRST_LINE); lcd_print_number (Ro); lcd_puts ("K Ohms"); __delay_ms (1500); gas_detect = 0; while (1) { if (gas_detect == 0) { lcd_com (FIRST_LINE); lcd_puts ("Có khí"); lcd_com (SECOND_LINE); lcd_puts ("Khí ppm ="); float rs = read_MQ (); tỷ lệ float = rs / Ro; lcd_print_number (gas_plot_log_scale (ratio, MQ6_curve)); __delay_ms (1500); clear_screen (); } else { lcd_com (FIRST_LINE); lcd_puts ("Không có gas"); } } }
Đầu tiên, RO của cảm biến được đo trong không khí sạch. Sau đó, chốt kỹ thuật số được đọc để kiểm tra xem có gas hay không. Nếu có khí thì khí được đo bằng đường cong LPG đã cung cấp.
Tôi đã sử dụng bật lửa để kiểm tra xem giá trị PPM có thay đổi khi phát hiện khí gas hay không. Những chiếc bật lửa xì gà này có khí LPG bên trong, khí này khi thoát ra ngoài không khí sẽ được cảm biến của chúng tôi đọc và giá trị PPM trên màn hình LCD thay đổi như hình dưới đây.
Toàn bộ hoạt động có thể được tìm thấy trong video ở cuối trang này. Nếu bạn có bất kỳ câu hỏi nào, vui lòng để lại chúng trong phần bình luận, hoặc sử dụng diễn đàn của chúng tôi cho các câu hỏi kỹ thuật khác.