THE MQ-3 is suitable for detecting Alcohol, Benzine, CH4, Hexane, LPG, CO. The sensitivity of the sensor can be adjusted by using the potentiometer.
FEATURES
* High sensitivity to alcohol and small sensitivity to Benzine .
* Fast response and High sensitivity
* Stable and long life
* Simple drive circuit
APPLICATION
They are suitable for alcohol checker, Breathalyser.
There are a lot of these modules – here is an image of some of them
Schematic
Here is a schematic of the module
Parts List
Connection
Arduino | Gas Sensor |
---|---|
5V | VCC |
GND | GND |
NC | NC |
Analog A0 | SIG |
Code
To build a reliable alcohol level sensor using the MQ-3, we need to determine the R0 of the device first. We can use this sketch for that:
Basic example
void setup() { Serial.begin(9600); } void loop() { float sensorVolt; float sensorValue; sensorValue = analogRead(A0); sensorVolt = sensorValue/1024*5.0; Serial.print("sensor voltage = "); Serial.print(sensorVolt); Serial.println("V"); delay(1000); }
To build a reliable alcohol level sensor using the MQ-3, we need to determine the R0 of the device first. We can use this sketch for that:
void setup() { Serial.begin(9600); } void loop() { float sensor_volt; float RS; // Get the value of RS via in a clear air float R0; // Get the value of R0 via in Alcohol float sensorValue; for(int i = 0 ; i < 100 ; i++) { sensorValue = sensorValue + analogRead(A0); } sensorValue = sensorValue/100.0; //get average of reading sensor_volt = sensorValue/1024*5.0; RS = (5.0-sensor_volt)/sensor_volt; // R0 = RS/60.0; // 60 is found using interpolation Serial.print("R0 = "); Serial.println(R0); delay(1000); }
Open the serial monitor of Arduino IDE. Write down the value of R0 – this is required for the next sketch example. Please write down the R0 after the reading stabilizes.
Replace the R0 below with value of R0 tested above . Expose the sensor to any one of the gases listed at the start.
void setup() { Serial.begin(9600); } void loop() { float sensor_volt; float RS_gas; // Get value of RS in a GAS float ratio; // Get ratio RS_GAS/RS_air float BAC; int sensorValue = analogRead(A0); sensor_volt=(float)sensorValue/1024*5.0; RS_gas = (5.0-sensor_volt)/sensor_volt; // omit *RL /*-Replace "R0" with the value of R0 with the value earlier*/ ratio = RS_gas/R0; // ratio = RS/R0 BAC = 0.1896*ratio^2 - 8.6178*ratio/10 + 1.0792 //BAC in mg/L Serial.print("BAC = "); Serial.println(BAC*0.0001); //convert to g/dL Serial.print("\n\n"); delay(1000); }
MQ-3
Link