Simple BAC Detector Device




Introduction: Simple BAC Detector Device

Overall Goals:

To build a working Blood Alcohol Concentration Analyzer using a Pt-electrode gas sensor that will measure alcohol in the breath to 10% accuracy. The circuit will also use an Arduino Uno, a LCD screen, and a Arduino shield that will receive the input from the sensor and convert it to blood alcohol concentration and display it on the screen. The combined cost for all the parts is anywhere from $60-$100.

Important to note:

This project requires some knowledge in circuits, soldering, and Arduino coding. Additionally, ideal calibration is impossible to achieve due to many factors that affect BAC measurements, including but not limited to: weight, humidity, temperature, mathematical conversion from output voltage or resistance to BAC, etc.

This project is not to be used for serious applications and should not be used as a determinant for one's ability to operate machinery.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Requirements, Specifications, & Materials


Accurately measure real-world level blood alcohol levels roughly in the concentration range of 0.04 mg/L - 4.0 mg/L alcohol, and other obtainable BAC's using an alcohol oxidizer sensor. Our system will measure the required BAC values upon reaching certain thresholds. When the BAC exceeds 0.08, we have developed a calibration curve to provide further resolution. Additionally, our device has a self-calibrating mechanism that constantly measures the alcohol content of the error and our measurements correct for any discrepancies.


The sensor is composed by a micro AL2O3 ceramic tube, Tin Dioxide (SnO2) sensitive layer, measuring electrode and heater are fixed into a crust made by plastic and stainless steel net. The heater provides necessary work conditions for work of sensitive components. The enveloped MQ-3 have 6 pin ,4 of them are used to fetch signals, and other 2 are used for providing heating current.


Heater Voltage = 5.0 V +/- 0.2V

Heater Resistance = 31 Ohms +/- 3 Ohms @ Room Temperature

Sensing Resistance = 2000-20,000 Ohms

Operating Temperature = 20 degrees C

Operating Humidity = 65%

Parts List with Datasheets

a. MQ-3 Gas Sensor


(Order form)

b. Potentiometer with load range 100K-470K Ohms


(Order form)

c. 9V DC Battery

d. Arduino Uno and LCD Keypad Shield for Arduino (LinkSprite)

e. Small Breadboard and wires

f. Plastic Enclosure for Arduino (LinkSprite)

Step 2: BAC Sensor Operation

How it works:

1. The device is turned on.

2. The LCD display reads "BAC Sensor, Warming Up..." for 7 seconds. This allows for the heating element in the MQ-3 to heat up properly. During this time, the sensor is reading 100 samples and calibrating itself.

3. After the calibration is complete, the LCD display reads "Hold & Blow 10 s". This instructs the user to push and hold the button located on the left below the LCD display as they blow. During this time, the sensor is measuring samples every 0.1 seconds. Throughout the 10 seconds operation, the sensor continuously makes new measurements, but saves the largest measurement. Therefore, once the user stops blowing and releases the button, the largest sensor measurement is used to calculate the final BAC.

4. After the user releases the button, the LCD display reads “BAC: _____ , Wait 30 sec…”

The blank will be the user’s calculated BAC and the device instructs the user to wait 30 seconds before making another measurement. This 30 second interval allows the MQ-3 to recalibrate.


Inside the MQ-3 is an Aluminum Oxide (Al2O3) tube covered by Tin Dioxide (SnO2), an electrode, and the heating coils. The target molecule for this sensor is ethanol. Heat generated by the heating coils facilitates a chemical reaction, in which ethanol molecules in the air come in contact with the electrode, forming acetic acid. In other words, ethanol is oxidized into acetic acid, producing 2 electrons. A greater concentration of ethanol leads to more electrons generated and ultimately, a greater current. Our code translated the changes in current to a measureable voltage. Vials marked with BAC values were used to calibrate the breathalyzer. The Serial Monitor feature was used to check the sensor output voltage for a specific BAC.

Ethanol in breath --> Chemical reaction in MQ-3 produces electrons --> Free Electrons form current --> Changes in electron current translated to voltage --> Voltage converted to BAC measurement.

Step 3: The Circuit

The MQ-3 has 6 pins, but we only need the 4 pins labeled: A, GN, B, H.

A = voltage source

GN = ground

B = output voltage from gas sensor

H = heating element


The goal is to wire the MQ-3 to a small breadboard and connect the breadboard to corresponding ports on the Arduino Uno.

B-pin on MQ-3 connects to the same node that the middle port (#2) of the 100K-470K Ohm potentiometer is connected to. A wire from this same node runs to port #1 of the Male-to-Female Header (MFH),

A-pin on MQ-3 and H-pin on MQ-3 connect to port #2 of the Male-to-Female Header (MFH), which was soldered to the breadboard. A wire connect this same port to the 5V port of the Arduino.

GN-pin on MQ-3 connects to the designated ground node on the breadboard. The ground port (marked as #3 on the schematic) of the MFH is connected to the same node. A wire runs from the GN port on the Arduino to the ground port (#3) of the MFH. Another wire runs from the same ground node to the top node (#1) of the potentiometer.

Finally, port #1 of the MFH connects to the A1 port of the Arduino.

NOTE: The A0 port on the Arduino corresponds to the output from the buttons on the Arduino.

Step 4: Additional Schematics

Step 5: Code Implementation and Calibration

Our BAC can accurately measure vials of known ethanol concentrations and prints the corresponding BAC. Additionally, our calibration algorithm is runs every time the device is turned on to ensure the device is measuring according to its environment.

Be the First to Share


    • Backyard Contest

      Backyard Contest
    • Silly Hats Speed Challenge

      Silly Hats Speed Challenge
    • Arduino Contest 2020

      Arduino Contest 2020

    3 Discussions


    4 years ago

    Thanks for ino file.


    4 years ago

    Thanks for ino file.


    5 years ago on Introduction

    Very nice! Was this for a school project? It seems like I've seen a couple of these today.