Tutorial: Breathalyzer using Alcohol Gas Sensor with Arduino

In this tutorial, we will demonstrate how to use the gas sensors and also how you can make a homemade Breathalyzer using an alcohol sensor, Arduino and LEDs

 

Material List

1x Arduino

1x Alcohol Sensor

1x Breadboard

7x LEDS

6x Resistor 330Ω

1x Resistor 10KΩ

Some jumpers

1. How it works

1.1) Gas Sensor

The gas sensor operates as potentiometer, but instead of get the resistance variation, we will take the variation of gas concentration(0d to 1023d).

1.2) LEDs (Bargraph)

Arduino will transform the variation of gas concentration, that ranging 0d to 1023, in a scale of 6 LEDs using the function map(maxreading01023, 0, qtyLED).

1.3) Adaptations

For this aplication we use a mouthwash, so we changed  the scale of (0d to 1023) to (0d to 200d), because the mouthwash not contain a high level of alcohol. So we use the funcion map(maxreading0200, 0, qtyLED).

2. The Sketch


#define qtyLED 6  //Declare the quantity of LED's for the bar graph
int LEDs[qtyLED]; //Array to store the states of the LEDs
int sensorPin = 0; //Variable that will hold the current value of the sensor
int time; //Variable that will hold the amount of time for the sensor to be read
int maxreading; //Variable to store the maximum value read during the last reading
//For loop counting variables
int i;
int j;
 
void setup()

  //Initialize the counting variables
  i=0;
  j=2;
  
  while(i < qtyLED) //While i is less than the number of defined LED's
  {                 //...save the value of i+2 in the LEDs array. we add 2 so that it represents one of our digital pins
    LEDs[i] = j;
    i++;
    j++;
  }
  
  for(i=0;i<qtyLED;i++) //Define the LED Pins as outputs. In this case 2->7
  {
    pinMode(LEDs[i], OUTPUT);
  }
  pinMode(13, OUTPUT); //Define pin 13 as an output so we can show when we are not taking a reading from the sensor(Blinkin
                       //...Or when we are taking a reading from the sensor (Solid)
}

void loop()
{
  PORTB = PORTB ^ 100000;  //Invert pin 13 to give the LED a blinking effect
  delay(100); //Delay so that the user can see the blinking happen
  int sensor = analogRead(sensorPin); //Read the sensors value and store it in the sensor variable
  if(sensor >= 40) //If the value is less that 40(value for the chemical being used in this example)
  {  
    digitalWrite(13, HIGH); //Turn on the blue LED indecating that the sensor detected a minimal amount of alcohol (sensor >= 40)
    maxreading = 0;         //Initiate the max reading to 0
    for(time = 0;time <= 5000;time++) //Read the sensor for 5 seconds
    {                                 //...every millisecond update the value of the max reading of the sensor
      int sensor = analogRead(sensorPin);
      delay(1);
      if(sensor > maxreading)
      {
        maxreading = sensor;
      }
    }
    digitalWrite(13, LOW); //As soon as the reading is complete turn off the blue LED
    int level = map(maxreading, 0, 200, 0, qtyLED); //Map the value from 0 to 200(reading from sensor) to 0 and the number of LEDs which is 6
                                                    //...0 to 6(LEDs) level determines how many of them turn on.
    for(i=0;i<qtyLED;i++) //Compare all the leds current state with the value of the level that was read
    {                     //if for example the level read was 5, then LEDs 2->6 would turn on.
      if (i < level) //If the current LED being checked is less that the level
      {
        digitalWrite(LEDs[i], HIGH); //...Turn it on
      }
      else //If the current LED being checked is higher than the level
      {
        digitalWrite(LEDs[i], LOW); //...Turn it off
      }
    }
    delay(10000); //Wait 10 seconds for the user to get the reading from the led bar graph
    for(i=0;i<qtyLED;i++) //Turn off all the LEDs
    {
      digitalWrite(LEDs[i],LOW);
    }
  }
}

3. The Circuit

Reference:

https://www.sparkfun.com/products/8880

Views: 4330

Tags: Alcohol, Arduino, Breathalyzer, Gas, Sensor

Comment

You need to be a member of GarageLab (arduino, electronics, robotics, hacking) to add comments!

Join GarageLab (arduino, electronics, robotics, hacking)

Latest Activity

Profile IconJack Gromek, pratik and KEKELI LOGAH joined GarageLab (arduino, electronics, robotics, hacking)
1 hour ago
GarageLab posted a blog post

Stanford’s cheap nanomaterial filter could solve the air pollution problem

The rapidly increasing industrialization in many parts of the world comes with economic benefits,…See More
1 hour ago
GarageLab posted a blog post

Blub Uno Clock Displays Time with One Nixie Tube

We’ve seen our share of Nixie tube clocks, but the Blub Uno is different. This is a clock that…See More
yesterday
GarageLab's blog post was featured

LEGO X Converts Creations into 3D Models in Real Time: Body and Soul

Created by Gravity Research Club, LEGO X creates a 3D model of whatever you’re building while…See More
Wednesday
sathiyakumar is now a member of GarageLab (arduino, electronics, robotics, hacking)
Tuesday
GarageLab posted blog posts
Tuesday
Profile Iconaymen hleli, gunawan eko, Dean Sanders and 1 more joined GarageLab (arduino, electronics, robotics, hacking)
Monday
GarageLab posted a blog post

Street Fighter Played with Pianos: Sound Fighter

Back in 2014 we saw an piano that was turned into…See More
Monday
GarageLab posted blog posts
Feb 20
Profile IconRobert Choi and Pierre Gelinas joined GarageLab (arduino, electronics, robotics, hacking)
Feb 20
David Wachter commented on GarageLab's blog post DARPA is developing a sensing bionic hand
"This would be nice for all of the military amputees that have been 'produced' since the…"
Feb 18
GarageLab's blog post was featured

AirBoard: The Flying Segway

Currently up for funding on…See More
Feb 18
GarageLab posted a blog post

DARPA is developing a sensing bionic hand

Not content just to chip in creating better mind-controlled bionic limbs, DARPA is focusing on…See More
Feb 18
Profile IconAmr Anwar and recca joined GarageLab (arduino, electronics, robotics, hacking)
Feb 18
GarageLab posted a blog post

Voltera V1 Circuit Board Printer: Print-A-Sketch

The latest in the growing niche of circuit board printers, the Voltera V1 can print up to two…See More
Feb 16
GarageLab posted a blog post
Feb 13
Profile IconBill Meng and Prem Patel joined GarageLab (arduino, electronics, robotics, hacking)
Feb 13
John R. replied to awet kidane's discussion how can i simulate sd card with arduino uno in proteus
"Awet, I am not entirely sure what you are trying to do or why, but you may want to check into an…"
Feb 11
GarageLab posted blog posts
Feb 11
Profile Iconsajol, daniel gabriel, Alex Rosas and 3 more joined GarageLab (arduino, electronics, robotics, hacking)
Feb 9

© 2015   Created by Marcelo Rodrigues.

Badges  |  Report an Issue  |  Terms of Service