Introduction: Arduino BAC Monitor

The purpose of this project is to use an arduino and an MQ-3 alcohol sensor to make a simple breathalyzer which monitors BAC levels. The project involves designing and constructing a simple circuit and writing code in arduino. This monitor is very simple and prone to error and should therefore not be used to determine intoxication and ability to drive.

Step 1: Building the Circuit

The MQ-3 has 6 pins. We soldered wires to each pin in order to connect other components. The middle pins are connected to the heater. We connected the wires to a +5V DC power supply. The other pins are for connecting a power supply and reading a voltage. A 5V DC power supply was used and the positive terminal was connected to the top "A" pin and the ground was connected to the bottom "A" pin. The output voltage was read from the top "B" pin and the bottom "B" pin was connected to ground.

We soldered these wires to a circuit board in order to make the connections more permanent and compact.

Step 2: Connecting the Circuit to the Arduino

We used an arduino uno and a LinkSprite LCD shield to display messages. These components were connected together and the arduino connected to a computer using a USB cable in order to power the arduino and upload the code.

The ground from the power supply was connected to the arduino ground pin. The output wire from the "B" port of the MQ-3 was connected to the anolog input.

Step 3: Writing the Code

We wrote the arduino code to give instructions to the user and output a BAC reading.

The code starts running when the user presses a button. It instructs the user to blow in for 5 seconds and records the data from the arduino. The maximum value is recorded and converted to a BAC reading based on calibration data. We used vials of dilute alcohol which we knew corresponded to BAC levels. We used two levels 0.02 and 0.08. The analog values were observed using the Serial Monitor. We set cutoff levels for various BAC readings based on our calibration data. These levels could be changed in the code based on your own calibration data.

We decided to use vials because blowing on the on the MQ-3 changed the temperature of the heater and the output readings.

Step 4: Using It

The MQ-3 takes a while to heat up. We attached it to the power supply for several minutes and monitored the analog output signal until it stopped changing. We then held the vial next to the sensor for 5 seconds and then removed it. It is important to use a consistent procedure in order to get a consistent output. We have uploaded our operating procedure as an example, you can modify it as you please to fit whatever use you need it for.

More calibration would allow for a greater range of operation. We had limited time to complete the project so we only used two common BAC levels but more could be included using the same procedure.