Gas Sensor (MQ-9) :
MQ-9 Gas Sensor is one kind of semiconductor which has very lower conductivity in open air. But in Carbon Monoxide, Methane and LPG gas it has good conductivity. By using ADC of pic microcontroller we can measure it. Let's take a look on MQ-9 sensor .
Datasheet of MQ-9
Basic Concepts :
The MQ-9 sensor will be connected with a pic microcntroller and a buzzer will also be connected with microcontroller. When LPG gas will be detected in sensor, it will provide voltage into microcontroller's RA1 pin(ADC). It will provide reading more than 590. At this situation microcontroller will turn on the buzzer and LED. That's the basic concept.
Basically ADC works like as a voltage divider. According to voltage It produce output.
bit 5 : VCFG0: Voltage Reference Configuration bit (VREF- source)
1 = VREF- (AN2)
0 = VSS or 0 volt
bit 4 :VCFG0: Voltage Reference Configuration bit (VREF+ source)
1 = VREF+ (AN3)
0 = VDD or 5volt
We will set VCFG0[bit 5]=0and VCFG0[bit4]=0. So we will get highest value 5volt[1023] and lowest value 0volt[0].The ADCON1 is a 10 bit register that means 2 to the power 10 is it's highest counting capacity and result is 1024. So this register can count from 0 to 1023. When 0 volt, we get reading at RA1 pin 0. When 5 volt, we get reading at RA1 pin 1023. It means 5volt equivalent to 1023 .
If 5 volt equal reading 1023 .
So 1 volt equal reading 1023/5
[When LPG Gas detect MQ-9 Sensor provide more than 2.93 volt at AO Pin]
So 3 volt equal reading (1023/5)*2.93 =599 When we get reading 599 at ADC channel, we understand that sensor detects LPG. So it makes PORTB.F6 pin high and Buzzer turns on .
ADC(Analog to Digital Converter ) :
We need a basic knowledge about ADC. Let's take a look at here :![]() |
ADCON1 Register |
Basically ADC works like as a voltage divider. According to voltage It produce output.
bit 5 : VCFG0: Voltage Reference Configuration bit (VREF- source)
1 = VREF- (AN2)
0 = VSS or 0 volt
bit 4 :VCFG0: Voltage Reference Configuration bit (VREF+ source)
1 = VREF+ (AN3)
0 = VDD or 5volt
We will set VCFG0[bit 5]=0and VCFG0[bit4]=0. So we will get highest value 5volt[1023] and lowest value 0volt[0].The ADCON1 is a 10 bit register that means 2 to the power 10 is it's highest counting capacity and result is 1024. So this register can count from 0 to 1023. When 0 volt, we get reading at RA1 pin 0. When 5 volt, we get reading at RA1 pin 1023. It means 5volt equivalent to 1023 .
If 5 volt equal reading 1023 .
So 1 volt equal reading 1023/5
[When LPG Gas detect MQ-9 Sensor provide more than 2.93 volt at AO Pin]
So 3 volt equal reading (1023/5)*2.93 =599 When we get reading 599 at ADC channel, we understand that sensor detects LPG. So it makes PORTB.F6 pin high and Buzzer turns on .
MikroC Source Code :
double source=0;
char txt[15];
void main() {
ADCON1=0x0D; // Configure RA1 pin as input
CMCON=7;
TRISB.F6=0;
ADC_Init();
while(1){
source=Adc_Read(1);
PORTB.F6=0;
if(source>600){
delay_ms(500);
PORTB.F6=1;
}
}
}