Introduction: Gas Burner Controller

I am a homebrewer, making all grain extract beer.

I am in the process of automating my brewery, which I am doing just for the fun of it, as automation is not really needed on a process that takes 5 hours and has about ten minutes of actual work!

My brewing rig uses a propane burner to heat water for mashing (soaking grains in hot water) and boiling the wort (the liquid extracted from the grain).

To automate the process, I needed to be able to start and stop the gas burner under program control. It needed to be safe as well, considering there is gas involved.

I decided to make a stand alone contoller with only one purpose in life: start and stop the burner safely and turn the gas off if there is no flame. Also, it should not start up or let gas escape if an external signal is disconnected or power is lost.

I will be making a Brewery Controller that will attach to this burner controller via the Command input to turn the burner on and off.

If you desire to control the temperature that is influenced by the burner controlled by this burner controller, you could buy an off the shelf PID contoller and attach the output of thr PID to the command input of this controller.

Example PID Controller.

If the link is stale just search for PID on Ebay.

The controller is based on the Arduino Uno (I used a Sparkfun Redboard which is equivalent). A switch can turn the burner on locally, or it can be turned on remotely via a single TTL active low signal on its Command Input.

The controller shows its status via 3 leds for Off, Lighting and On states. A TTL Status line indicates on/off status for remote use by the brewery controller.

The controller works off a 12Vdc input. This powers the Arduino which produces its own +5Vdc. The 12V is used to power the gas solenoid valve.

A cable from my Brewery Controller will provide 12Vdc, GND, Command signal and receive the status signal. 4 wires.

Parts List

(1) Arduino Uno or equivalent
(2) arduino compatible relay modules
(1) single pole switch
(3) leds
(3) 330 ohm 1/4 watt resistors
(1) arduino compatible buzzer module
(1) project box
(1) 12Vdc solenoid valve suitable for propane gas and fittings.
1/4" hose barb fittings X 2 to fit your valves
& hose clamps X2
(1) aftermarket BBQ igniter (modified)
Cables, connectors, wire etc


Step 1: Controller Assembly

I used a small plastic waterproof project box. Waterproof since it is used around water in the brewery. Any openings in the box are on the bottom so any water spilled on the controller will not get in.

For ease of assembly, I assemble the parts on the shallower top of the box and use it as the control/display as well. The rest of the box can be mounted where you need it. If you need to do some work on the circuitry, you can simply remove the front panel and take it to the "laboratory"

Cut access holes for cables. Drill holes for leds, switch and cables.

Mount the Arduino, relay modules and leds. I just use a few dabs of epoxy to mount the parts. It's a little permanent and makes it difficult to replace parts, but it is "easy peasy"!

Wire the project according to the diagram provided.

Make your solenoid, sensor and igniter cables the right length for your application.

Step 2: Igniter

I bought an igniter module on Ebay for $10.

The module runs on 3Vdc. Has a switch input to connect to the burner controllers relay.

It also has an led that lights up when it's sparking.

The outputs are high voltage 12KV and will spark over a 1/4" gap to ground.

WATCH OUT! This sucker will zap you if you are not careful.

I used two aaa batteries to power the unit.

Step 3: Adding the Igniter Electrode

Got an electrode from an old replacement bbq starter.

In order to ignite the gas, the electrode needs to be positioned so as to spark in an air/gas mixture. This is accomplished by making a small "tent" out of sheet metal to capture the gas and positioning the electrode within the "tent"

I cut the electrode to the right length wit wire cutters, being careful to hold the keeper part with vise grips on the metal part so as not to damage the ceramic insulator.

The ground output of the igniter is attached to the "tent".

Step 4: Gas Solenoid Valve Installation

Install the hose barbs in your solenoid valve using teflon tape to seal the threads.

Cut the hose from the gas regulator near the burner. Install the valve using stainless hose clamps.

NOTE: make sure you install the valve with the flow arrow in the gas flow direction (see photo).

Attach the hose to your burner and the regulator to the tank.

Turn on the gas and check for leaks using dish soap & water solution. Fix any leaks befor proceding!

If no leakes, energise the solenoid valve and check for gas flow.

Your done this step.

Step 5: Flame Sensor

I used a flame sensor that measures infra red light levels. has them for $3.11 with free shipping if you're willing to wait 3 weeks to get it.

It has a sensitivity adjustment that you can use to set the flame level that it considers "lit"

It requires 5Vdc, GND and has an output signal indicating presence of flame.

I made an L-shaped bracket with a hole to "see" the flame and another hole to allow adjusting the sensitivity pot on the board. The board is mounted on a standoff. I had to cover the back and sides of the sensor led to keep ambient light out.

The bracket provides shelter from the burner heat so the sensor does not melt!

Step 6: Software

The software for this project was created using the Arduino Integrated Development Environment (IDE) and atmel Studio(not required)

Go here to get the IDE. Go to the download tab.

A finite state machine model was used in order to provide clarity neccessary to ensure no bugs that could result in unsafe operation

To learn a little about finite state machines see the following

The state machine library for Arduino is here.

There are only four states the controller can be in. Off, Lighting, On and Alarm. These states and triggers for transitions between states are described in the diagram.

You can get your own free copy of my arduino code at.


Guerilla Design Contest

Participated in the
Guerilla Design Contest

Burn It! Contest

Participated in the
Burn It! Contest