Giới thiệu cảm biến MG811 khí CO2 carbon dioxide
Cảm biến MG811 đo khí CO2, có thể tùy chỉnh khuếch đại tín hiệu ngõ ra. Cảm biến MG-811 có độ nhạy cao với khí CO2 và độ nhạy thấp hơn với Alcohol và khí CO. Thích hợp cho môi trường không khí bình thường, quá trình lên men, môi trường khép kín, phòng thí nghiệm,… Điện áp ngõ ra của mạch tăng theo độ tăng của khí CO2.
Có chỉ báo đầu ra tín hiệu Đầu ra tín hiệu kép (đầu ra analog và đầu ra điện áp phẳng TTL);
Tín hiệu hợp lệ đầu ra TTL ở mức thấp. (Đèn tín hiệu bật khi đầu ra ở mức thấp và có thể kết nối trực tiếp với vi điều khiển) Đầu ra analog 0-2V. Độ nhạy cao và độ chọn lọc tốt đối với carbon dioxide;
Chức năng các chân
- VCC : Chân nguồn 5V
- GND : Chân nguồn 0V
- D0 : Chân đọc tín hiệu Digital.
- A0 : Chân đọc tín hiệu Analog.
Nguyên lý hoạt động cảm biến MP135 chất lượng không khí
Cảm biến phát hiện chất lượng khí CO2 MG811 hoạt động dựa trên nguyên lý phản ứng hóa học khi tiếp xúc các khí trong môi trường. Nguyên tắc hoạt động của nó là khi các khí trong môi trường như khí CO2 tiếp xúc với phần tử bên trong cảm biến, làm cho các electron được giải phóng vào Thiếc Dioxide cho phép dòng điện chạy qua cảm biến một cách tự do.
Khi được làm nóng, phần tử cảm biến sẽ tạo ra phản ứng hóa học với các khí tiếp xúc và làm thay đổi điện trở của phần tử cảm biến. Cảm biến MG811 đo lường các biến đổi điện trở này và chuyển đổi chúng thành tín hiệu điện analog hoặc Digital.
Thông số kỹ thuật cảm biến khí CO2 MG811
- Điện áp hoạt động: 6V DC.
- Đầu ra Analog: 0 – 2V.
- Dải đo khí CO2: 0 – 10000ppm.
- Ngõ ra tín hiệu tương tự và số.
- Có led báo mạch hoạt động và led báo nguồn.
- Tốc độ hồi đáp và độ nhạy cao, chạy ổn định, tuổi thọ dài.
- Thích hợp với các ứng dụng có sử dụng vi điều khiển.
- Kích thước: 31 mm X 22mm X 29mm.
Chương trình Test sản phẩm
Nguyên lý kết nối
Chương trình
/*******************Demo for MG-811 Gas Sensor Module V1.1***************************** Lisence: Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0) Note: This piece of source code is supposed to be used as a demostration ONLY. More sophisticated calibration is required for industrial field application. /************************Hardware Related Macros************************************/ #define MG_PIN (A0) //define which analog input channel you are going to use #define BOOL_PIN (2) #define DC_GAIN (8.5) //define the DC gain of amplifier /***********************Software Related Macros************************************/ #define READ_SAMPLE_INTERVAL (50) //define how many samples you are going to take in normal operation #define READ_SAMPLE_TIMES (5) //define the time interval(in milisecond) between each samples in //normal operation /**********************Application Related Macros**********************************/ //These two values differ from sensor to sensor. user should derermine this value. #define ZERO_POINT_VOLTAGE (0.220) //define the output of the sensor in volts when the concentration of CO2 is 400PPM #define REACTION_VOLTGAE (0.030) //define the voltage drop of the sensor when move the sensor from air into 1000ppm CO2 /*****************************Globals***********************************************/ float CO2Curve[3] = {2.602,ZERO_POINT_VOLTAGE,(REACTION_VOLTGAE/(2.602-3))}; //two points are taken from the curve. //with these two points, a line is formed which is //"approximately equivalent" to the original curve. //data format:{ x, y, slope}; point1: (lg400, 0.324), point2: (lg4000, 0.280) //slope = ( reaction voltage ) / (log400 –log1000) void setup() { Serial.begin(9600); //UART setup, baudrate = 9600bps pinMode(BOOL_PIN, INPUT); //set pin to input digitalWrite(BOOL_PIN, HIGH); //turn on pullup resistors Serial.print("MG-811 Demostration\n"); } void loop() { int percentage; float volts; volts = MGRead(MG_PIN); Serial.print( "SEN0159:" ); Serial.print(volts); Serial.print( "V " ); percentage = MGGetPercentage(volts,CO2Curve); Serial.print("CO2:"); if (percentage == -1) { Serial.print( "<400" ); } else { Serial.print(percentage); } Serial.print( "ppm" ); Serial.print("\n"); if (digitalRead(BOOL_PIN) ){ Serial.print( "=====BOOL is HIGH======" ); } else { Serial.print( "=====BOOL is LOW======" ); } Serial.print("\n"); delay(500); } /***************************** MGRead ********************************************* Input: mg_pin - analog channel Output: output of SEN-000007 Remarks: This function reads the output of SEN-000007 ************************************************************************************/ float MGRead(int mg_pin) { int i; float v=0; for (i=0;i<READ_SAMPLE_TIMES;i++) { v += analogRead(mg_pin); delay(READ_SAMPLE_INTERVAL); } v = (v/READ_SAMPLE_TIMES) *5/1024 ; return v; } /***************************** MQGetPercentage ********************************** Input: volts - SEN-000007 output measured in volts pcurve - pointer to the curve of the target gas Output: ppm of the target gas Remarks: By using the slope and a point of the line. The x(logarithmic value of ppm) of the line could be derived if y(MG-811 output) is provided. As it is a logarithmic coordinate, power of 10 is used to convert the result to non-logarithmic value. ************************************************************************************/ int MGGetPercentage(float volts, float *pcurve) { if ((volts/DC_GAIN )>=ZERO_POINT_VOLTAGE) { return -1; } else { return pow(10, ((volts/DC_GAIN)-pcurve[1])/pcurve[2]+pcurve[0]); } }
Liên hệ làm mạch
- Phone: 0967.551.477
- Zalo: 0967.551.477
- Email: dientunhattung@gmail.com
- Chi tiết : Nhận làm mạch và hướng dẫn đồ án sinh viên
Tham khảo chương trình mẫu và thông tin linh kiện chi tiết tại:
Đánh giá
Chưa có đánh giá nào.