Hello Readers, welcome to my Blog BloggerTipsTricks. com - A Blog For Bloggers By A Blogger. I'm Arun, an entrepreneur Blogger from India.

Analog MQ-8 Hydrogen Gas Sensor Interfacing with ATmega16 and LCD Display

1074
Mark as Favourite

In this project, we will learn Analog MQ-8 Hydrogen Gas Sensor Interfacing with AVR ATmega16 microcontroller and LCD Display. Here, we will interface an Analog MQ-8 Hydrogen Gas Sensor with ATmega16 microcontroller and we will display the Analog MQ-8 Hydrogen Gas Sensor value in the 16X2 Alphanumeric LCD.

Since, the output of the Analog MQ-8 Hydrogen Gas Sensor is analog in nature and these analog signals cannot be processed directly by the ATmega16 microcontroller. So, first this signal needs to be converted to digital value to be processed by the microcontroller. The conversion can be done with the help of ADC of the AVR ATmega16 microcontroller. After converting the analog signal to digital, the microcontroller will display the digital value of Analog MQ-8 Hydrogen Gas Sensor in the 16X2 Alphanumeric LCD.

Now, we will use some source of Hydrogen Gas near Analog MQ-8 Hydrogen Gas Sensor and we will see the changes in the output of Analog MQ-8 Hydrogen Gas Sensor in the 16X2 Alphanumeric LCD.

Softwares Required

Hardwares Required

Name / Unit Price Quantity Total Price
12V, 1A DC SMPS Adaptor
Rs. 130.00
1pc
Rs.130.00
AVR Trainer Board-100 with ATmega16
Rs. 700.00
1pc
Rs.700.00
AVR USB Programmer
Rs. 350.00
1pc
Rs.350.00
RG1602A 16X2 Alphanumeric LCD Green
Rs. 150.00
1pc
Rs.150.00
Analog MQ-8 Hydrogen Gas Sensor Board
Rs. 270.00
1pc
Rs.270.00
1 to 1 Connector-Female to Female
Rs. 4.00
6pc
Rs.24.00
10 to 10 FRC Female to Female Connector
Rs. 15.00
2pc
Rs.30.00
TOTAL Rs.1654.00

Circuit Diagram

C Program

Fullscreen
 

//**************************************************************//
//System Clock                            :1MHz
//Software                                   :Atmel Studio 6
//LCD Data Interfacing                :8-Bit
//**************************************************************//

#include<avr/io.h>
/*Includes io.h header file where all the Input/Output Registers and its Bits are defined for all AVR microcontrollers*/

#define           F_CPU          1000000
/*Defines a macro for the delay.h header file. F_CPU is the microcontroller frequency value for the delay.h header file. Default value of F_CPU in delay.h header file is 1000000(1MHz)*/

#include<util/delay.h>
/*Includes delay.h header file which defines two functions, _delay_ms (millisecond delay) and _delay_us (microsecond delay)*/

#define           LCD_DATA_PORT           PORTB
/*Defines a macro for the lcd.h header File. LCD_DATA_PORT is the microcontroller PORT Register to which the data pins of the LCD are connected. Default PORT Register for data pins in lcd.h header file is PORTA*/

#define           LCD_CONT_PORT           PORTD
/*Defines a macro for the lcd.h header File. LCD_CONT_PORT is the microcontroller PORT Register to which the control pins of the LCD are connected. Default PORT Register for control pins in lcd.h header file is PORTB*/

#define          LCD_RS          PD0
/*Defines a macro for the lcd.h header file. LCD_RS is the microcontroller Port pin to which the RS pin of the LCD is connected. Default Port pin for RS pin in lcd.h header file is PB0*/

#define           LCD_RW          PD1
/*Defines a macro for the lcd.h header file. LCD_RW is the microcontroller Port pin to which the RW pin of the LCD is connected. Default Port pin for RW pin in lcd.h header file is PB1*/

#define           LCD_EN          PD2
/*Defines a macro for the lcd.h header file. LCD_EN is the microcontroller Port pin to which the EN pin of the LCD is connected. Default Port pin for EN pin in lcd.h header file is PB2*/

#include<avr/lcd.h>
/*Includes lcd.h header file which defines different functions for all Alphanumeric LCD(8-Bit Interfacing Method). LCD header file version is 1.1*/

#include<avr/adc.h>
/*Includes adc.h header file which defines different functions for Analog to Digital Converter. ADC header file version is 1.1*/

int main(void)
{

DDRB=0xff;
/*All the 8 pins of PortB are declared output (data pins of LCD are connected)*/

DDRD=0x07;
/*PD0, PD1 and PD2 pins of PortD are declared output (control pins of LCD are connected)*/

int mq8_hydrogen_gas_sensor_output;
/*Variable declarations*/

lcd_init();
/*LCD initialization*/

adc_init();
/*ADC initialization*/

lcd_string_write(“ABLab Solutions”);
/*String display in 1st row of LCD*/

lcd_command_write(0xc0);
/*Cursor moves to 2nd row 1st column of LCD*/

lcd_string_write(“www.ablab.in”);
/*String display in 2nd row of LCD*/

_delay_ms(500);
_delay_ms(500);
_delay_ms(500);
_delay_ms(500);
/*Display stays for 2 second*/

/*Start of infinite loop*/
while(1)
{

lcd_command_write(0x01);
/*Clear screen*/

lcd_string_write(“MQ-8 Value:-“);
/*String display in 1st row of LCD*/

lcd_command_write(0xc0);
/*Cursor moves to 2nd row 1st column of LCD*/

mq8_hydrogen_gas_sensor_output=read_adc_channel(0);
/*Reading MQ-8 Hydrogen Gas Sensor output of channel 0*/

lcd_number_write(mq8_hydrogen_gas_sensor_output,10);
/*MQ-8 Hydrogen Gas Sensor output value is displayed in 2nd row of LCD*/

_delay_ms(500);
/*Display stays for 500ms*/

}

}
/*End of Program*/

  

//**************************************************************//
//System Clock                            :1MHz
//Software                                   :Atmel Studio 6
//LCD Data Interfacing                :8-Bit
//**************************************************************//

#include<avr/io.h>
/*Includes io.h header file where all the Input/Output Registers and its Bits are defined for all AVR microcontrollers*/

#define           F_CPU          1000000
/*Defines a macro for the delay.h header file. F_CPU is the microcontroller frequency value for the delay.h header file. Default value of F_CPU in delay.h header file is 1000000(1MHz)*/

#include<util/delay.h>
/*Includes delay.h header file which defines two functions, _delay_ms (millisecond delay) and _delay_us (microsecond delay)*/

#define           LCD_DATA_PORT           PORTB
/*Defines a macro for the lcd.h header File. LCD_DATA_PORT is the microcontroller PORT Register to which the data pins of the LCD are connected. Default PORT Register for data pins in lcd.h header file is PORTA*/

#define           LCD_CONT_PORT           PORTD
/*Defines a macro for the lcd.h header File. LCD_CONT_PORT is the microcontroller PORT Register to which the control pins of the LCD are connected. Default PORT Register for control pins in lcd.h header file is PORTB*/

#define          LCD_RS          PD0
/*Defines a macro for the lcd.h header file. LCD_RS is the microcontroller Port pin to which the RS pin of the LCD is connected. Default Port pin for RS pin in lcd.h header file is PB0*/

#define           LCD_RW          PD1
/*Defines a macro for the lcd.h header file. LCD_RW is the microcontroller Port pin to which the RW pin of the LCD is connected. Default Port pin for RW pin in lcd.h header file is PB1*/

#define           LCD_EN          PD2
/*Defines a macro for the lcd.h header file. LCD_EN is the microcontroller Port pin to which the EN pin of the LCD is connected. Default Port pin for EN pin in lcd.h header file is PB2*/

#include<avr/lcd.h>
/*Includes lcd.h header file which defines different functions for all Alphanumeric LCD(8-Bit Interfacing Method). LCD header file version is 1.1*/

#include<avr/adc.h>
/*Includes adc.h header file which defines different functions for Analog to Digital Converter. ADC header file version is 1.1*/

int main(void)
{

DDRB=0xff;
/*All the 8 pins of PortB are declared output (data pins of LCD are connected)*/

DDRD=0x07;
/*PD0, PD1 and PD2 pins of PortD are declared output (control pins of LCD are connected)*/

int mq8_hydrogen_gas_sensor_output;
/*Variable declarations*/

lcd_init();
/*LCD initialization*/

adc_init();
/*ADC initialization*/

lcd_string_write(“ABLab Solutions”);
/*String display in 1st row of LCD*/

lcd_command_write(0xc0);
/*Cursor moves to 2nd row 1st column of LCD*/

lcd_string_write(“www.ablab.in”);
/*String display in 2nd row of LCD*/

_delay_ms(500);
_delay_ms(500);
_delay_ms(500);
_delay_ms(500);
/*Display stays for 2 second*/

/*Start of infinite loop*/
while(1)
{

lcd_command_write(0x01);
/*Clear screen*/

lcd_string_write(“MQ-8 Value:-“);
/*String display in 1st row of LCD*/

lcd_command_write(0xc0);
/*Cursor moves to 2nd row 1st column of LCD*/

mq8_hydrogen_gas_sensor_output=read_adc_channel(0);
/*Reading MQ-8 Hydrogen Gas Sensor output of channel 0*/

lcd_number_write(mq8_hydrogen_gas_sensor_output,10);
/*MQ-8 Hydrogen Gas Sensor output value is displayed in 2nd row of LCD*/

_delay_ms(500);
/*Display stays for 500ms*/

}

}
/*End of Program*/

Connection Guide

The step-by-step connection guide for Analog MQ-8 Hydrogen Gas Sensor Interfacing with ATmega16 and LCD Display is as follows:

  • Insert the DC Pin of 12V, 1A DC Adapter to the DC Socket of AVR Trainer Board-100.

    Steps - 1 ( 0f 10 )

  • Connect PortB header with LCD data header in AVR Trainer Board-100 with a 10 to 10 FRC Female Connector.

    Steps - 2 ( 0f 10 )

  • Connect RS, RW & EN pins of LCD control header with PD0, PD1 & PD2 pins of PortD header respectively in AVR Trainer Board-100 with 1 to 1 Connectors.

    Steps - 3 ( 0f 10 )

  • Connect the 16X2 Alphanumeric LCD to the LCD header of AVR Trainer Board-100.

    Steps - 4 ( 0f 10 )

  • Connect the VCC, GND & O/P pins of Analog MQ-8 Hydrogen Gas Sensor header to VCC, GND and PA0 pins of PortA header of AVR Trainer Board-100 respectively with 1 to 1 Connectors.

    Steps - 5 ( 0f 10 )

  • Connect the ISP header of AVR Trainer Board-100 with AVR USB Programmer header of AVR USB Programmer with a 10 to 10 FRC Female Connector.

    Steps - 6 ( 0f 10 )

  • Connect the AVR USB Programmer to the PC/Laptop's USB Port directly or with the help of USB AM-AF Cable.

    Steps - 7 ( 0f 10 )

  • Switch on the power with the help of Power Switch of AVR Trainer Board-100.

    Steps - 8 ( 0f 10 )

  • Download Analog MQ-8 Hydrogen Gas Sensor Interfacing with ATmega16 and LCD Display Hex file to AVR Trainer Board-100 with the help of SinaProg Hex downloader and AVR USB Programmer.

    Steps - 9 ( 0f 10 )

  • Use some source of Hydrogen Gas near the Analog MQ-8 Hydrogen Gas Sensor and see the change in output.

    Steps - 10 ( 0f 10 )

  • Insert the DC Pin of 12V, 1A DC Adapter to the DC Socket of AVR Trainer Board-100.

    Steps - 1 ( 0f 10 )

  • Connect PortB header with LCD data header in AVR Trainer Board-100 with a 10 to 10 FRC Female Connector.

    Steps - 2 ( 0f 10 )

  • Connect RS, RW & EN pins of LCD control header with PD0, PD1 & PD2 pins of PortD header respectively in AVR Trainer Board-100 with 1 to 1 Connectors.

    Steps - 3 ( 0f 10 )

  • Connect the 16X2 Alphanumeric LCD to the LCD header of AVR Trainer Board-100.

    Steps - 4 ( 0f 10 )

  • Connect the VCC, GND & O/P pins of Analog MQ-8 Hydrogen Gas Sensor header to VCC, GND and PA0 pins of PortA header of AVR Trainer Board-100 respectively with 1 to 1 Connectors.

    Steps - 5 ( 0f 10 )

  • Connect the ISP header of AVR Trainer Board-100 with AVR USB Programmer header of AVR USB Programmer with a 10 to 10 FRC Female Connector.

    Steps - 6 ( 0f 10 )

  • Connect the AVR USB Programmer to the PC/Laptop's USB Port directly or with the help of USB AM-AF Cable.

    Steps - 7 ( 0f 10 )

  • Switch on the power with the help of Power Switch of AVR Trainer Board-100.

    Steps - 8 ( 0f 10 )

  • Download Analog MQ-8 Hydrogen Gas Sensor Interfacing with ATmega16 and LCD Display Hex file to AVR Trainer Board-100 with the help of SinaProg Hex downloader and AVR USB Programmer.

    Steps - 9 ( 0f 10 )

  • Use some source of Hydrogen Gas near the Analog MQ-8 Hydrogen Gas Sensor and see the change in output.

    Steps - 10 ( 0f 10 )

Downloads

Analog MQ-8 Hydrogen Gas Sensor Interfacing with ATmega16 and LCD Display C File
  • 2 downloads
  • 4 Kb
Analog MQ-8 Hydrogen Gas Sensor Interfacing with ATmega16 and LCD Display Circuit Diagram
  • 2 downloads
  • 86 Kb
Alphanumeric LCD Header File v1.0
  • 1416 downloads
  • 1 Kb
ADC Header File v1.0
  • 956 downloads
  • 2 Kb
Analog MQ-8 Hydrogen Gas Sensor Interfacing with ATmega16 and LCD Display Hex File
  • 2 downloads
  • 2 Kb

Comments