top of page
Writer's pictureSanskruti Ashtikar

Gas Sensor System Using 8051 Microcontroller

Updated: 3 days ago

Introduction


Gas sensors are crucial for detecting hazardous gases in the environment and ensuring safety in various settings such as homes, industries, and laboratories. In this project, we will design a gas sensor system using the 8051 microcontroller. The system will use an MQ-2 gas sensor to detect the presence of gases such as LPG, propane, methane, and smoke. When gas is detected, an alarm will be triggered, and the gas concentration will be displayed on an LCD.





Components Required


  • 8051 Microcontroller (e.g., AT89S52)

  • MQ-2 Gas Sensor

  • Buzzer

  • 16x2 LCD Display

  • ADC0804 (8-bit ADC)

  • Resistors (10kΩ, 1kΩ)

  • Capacitors (33pF, 100μF)

  • Crystal Oscillator (11.0592 MHz)

  • Breadboard and Connecting Wires

  • Power Supply (5V)


Circuit Diagram


The MQ-2 gas sensor provides an analog output that needs to be converted to a digital signal using an ADC. The 8051 microcontroller reads this digital value to determine the gas concentration. If the concentration exceeds a predefined threshold, a buzzer is activated, and the concentration is displayed on the LCD.


+5V ----- +5V
          |
          |
         MQ-2
         +---+
   +5V --|VCC| 
         |    |
         |OUT |------- Vin+ (ADC0804)
         |    |
   GND --|GND | 
         +---+
ADC0804
Vin+ to MQ-2 output
VCC to +5V
GND to Ground
CS to Ground
RD to P2.0 of 8051
WR to P2.1 of 8051
INTR to P2.2 of 8051
D0-D7 to P1.0-P1.7 of 8051
Vref/2 to 2.5V (using a voltage divider)
Buzzer
Anode to P3.0 of 8051 through 1kΩ resistor
Cathode to Ground
LCD
RS to P3.6 of 8051
RW to Ground
E to P3.7 of 8051
D4-D7 to P2.4-P2.7 of 8051




Pin Connections


  • MQ-2 Gas Sensor:

  • VCC to +5V

  • GND to Ground

  • OUT to Vin+ of ADC0804

  • ADC0804:

  • Vin+ to MQ-2 output

  • VCC to +5V

  • GND to Ground

  • CS to Ground

  • RD to P2.0 of 8051

  • WR to P2.1 of 8051

  • INTR to P2.2 of 8051

  • D0-D7 to P1.0-P1.7 of 8051

  • Vref/2 to 2.5V (using a voltage divider)

  • Buzzer:

  • Anode to P3.0 of 8051 through 1kΩ resistor

  • Cathode to Ground

  • LCD Display:

  • RS to P3.6

  • RW to Ground

  • E to P3.7

  • D4-D7 to P2.4-P2.7


Software Implementation


The code is written in C using Keil uVision IDE. It involves initializing the ADC, reading the analog value from the gas sensor, converting it to a digital value using the ADC, and then displaying it on the LCD. If the gas concentration exceeds a threshold, the buzzer is activated.


#include <reg51.h>
#include "lcd.h"
sbit RD = P2^0; // Read signal for ADC
sbit WR = P2^1; // Write signal for ADC
sbit INTR = P2^2; // Interrupt signal from ADC
sbit BUZZER = P3^0; // Buzzer pin
void delay(unsigned int count) {
    int i, j;
    for(i=0; i<count; i++)
        for(j=0; j<1275; j++);
}
void adc_init(void) {
    WR = 0; // Start conversion
    delay(1);
    WR = 1; // End conversion
}
unsigned char adc_read(void) {
    unsigned char value;
    while(INTR); // Wait for conversion to complete
    RD = 0; // Read the value
    value = P1; // Get the digital value
    delay(1);
    RD = 1;
    return value;
}


void main() {
    unsigned char gas_value;
    float gas_concentration;
    unsigned char threshold = 50; // Example threshold value
    
    lcd_init(); // Initialize LCD
    adc_init(); // Initialize ADC
    BUZZER = 0; // Turn off buzzer initially
    
    while(1) {
        gas_value = adc_read(); // Read digital value from ADC
        gas_concentration = (gas_value * 5.0 / 255.0) * 100; // Convert to gas concentration
        
        lcd_cmd(0x80); // Move cursor to first line
        lcd_write_string("Gas: ");
        
        lcd_cmd(0xC0); // Move cursor to second line
        lcd_write_number(gas_concentration); // Display gas concentration
        
        if(gas_concentration > threshold) {
            BUZZER = 1; // Turn on buzzer
        } else {
            BUZZER = 0; // Turn off buzzer
        }
        
        delay(1000); // Update every second
    }
}




Explanation


  1. Initialization:

  2. LCD Initialization: The lcd_init() function sets up the LCD.

  3. ADC Initialization: The adc_init() function prepares the ADC for conversion.

  4. Buzzer Initialization: The buzzer is initially turned off.

  5. Reading Gas Concentration:

  6. The adc_read() function reads the analog voltage from the MQ-2 sensor, converts it to a digital value using the ADC0804, and returns it.

  7. Gas Concentration Conversion:

  8. The digital value is converted to gas concentration using the formula: gas_concentration = (value 5.0 / 255.0) 100, assuming a 5V reference voltage for the ADC.

  9. Displaying Gas Concentration:

  10. The gas concentration is displayed on the LCD using lcd_write_string() and lcd_write_number() functions.

  11. Buzzer Control:

  12. If the gas concentration exceeds the predefined threshold, the buzzer is activated. Otherwise, the buzzer is turned off.


Conclusion


This project demonstrates the use of the 8051 microcontroller to create a gas sensor system. The system is capable of reading gas concentration data from the MQ-2 sensor, converting it to a digital format using the ADC0804, and displaying it on an LCD. Additionally, an alarm is triggered if the gas concentration exceeds a predefined threshold. This project is a great way to learn about sensor interfacing, ADCs, and using microcontrollers for safety and monitoring applications.


Want us to guide through your project or make the project for you ?






Create Various Projects

Check out our Free Arduino Projects Playlist - Arduino Projects 

Check out our Free Raspberry Pi Projects Playlist - Raspberry Pi Projects 

Check out our Free TinkerCAD Projects Playlist - TinkerCAD Projects 

Check out our Free IoT Projects Playlist - IoT Projects 

Check out our Free Home Automation Projects Playlist - Home Automation Projects 

Check out our Free NodeMCu Projects Playlist - NodeMCu Projects 



12 views0 comments

Related Posts

See All

Comments


bottom of page