Project tutorial
Central Heating Boiler Control Box

Central Heating Boiler Control Box © GPL3+

A better and cheaper alternative to a climate-dependent control for your central heating boiler. Especially if you have in-floor heating.

  • 56 respects

Components and supplies

Ph a000066 iso (1) ztbmubhmho
Arduino UNO
Relay Module (Generic)
8 relay module
LCD Display 20 x 4

About this project


If you have a central heating with a gas boiler in your home, with a room thermostat in your living room, the thermostat switches off the boiler if the living room is warm enough. The boiler is switched off for the entire house then and it is impossible to heat other rooms in the house. So if you have an open fire place or a woodburning stove in your living room the rest of the house is cold when you use it. Your boiler supplier will normally solve this by installation of a weather dependent control or climatic control system. Such a system has disadvantages though, e.g. the high gas bill. And it works lousy in combination with a floor heating. The boiler control box is a better and cheaper solution.


  • Gives the opportunity to heat other rooms in the house, even if the living room thermostat tells the CH boiler to switch off (override function.)
  • Has switches on the front panel for both temporary and permanent override
  • Maximum boiler water temperature adjustable on front panel.
  • Front panel LCD (4 x 20) showing measured boiler temperature, set maximum boiler temperature, override on or off with remaining time or 'permanent override', valve protection program if it is active (with remaining time), number of times the valve protection program has run, REBOOT if a reboot has occurred.
  • 'Fail safe, ' i.e. if the Boiler Control Box (BCB) is unpowered the room thermostat will operate the CH boiler in a normal way and the heating wil function normally.
  • Watchdog that causes the BCB to reboot in the unlikely event of a software crash.
  • The system needs an electric valve (motorized valve) to be placed in the floor heating hot water supply. If there is a weather dependent control system in the current CH installation, this valve is already in place.
  • The built in Valve Protection Program prevents the motorized valve from getting stuck by closing and opening it once every approx. 24 hours.
  • Optimal water temperature in floor heating pipes, unlike an old school weather dependent control system. Water temperature in floor heating is independent of outside temperature.
  • No pendeling of boiler.


  • Heating of all rooms in the house is possible and independent of living room temperature.
  • Comfortable living room temperature due to optimal water temperature in floor heating pipes. Full control over water temperature in floor heating pipes (unlike a conventional climatic control system / weather dependent control system).
  • Lower gas bill than with an old school weather dependent control system.
  • Longer lifetime of your boiler and less repairs of boiler parts like pump and fan.

How it works

The BCB is connected to (the thermostat contacts of) the boiler, the living room thermostat and to an electric valve (motorized valve) placed in the floor heating hot water supply. The BCB is also connected to an NTC placed on the hot water output pipe of the boiler, measuring the temperature of the output hot water.

On the frontpanel of the BCB is a display, showing the temperature of the output hot water (Tmeasured), the adjusted maximum water temperature if "override" is active (Tset), override on, off or permanent override and the number of times the valve protection program has run.

If the BCB is not in the "override" mode, or if the BCB is unpowered, the living room thermostat is connected to the boiler and the floor heating valve is open. The living room thermostat now controls the CH boiler directly. As if the BCB wasn't there. The LED on the front panel is off and the display says: "Override: OFF." If the living room thermostat tells the boiler to switch off, it is off regardless of the temperature in other rooms in the house.

If we want heating in one of the other rooms in the house we can "override" the living room thermostat by using one of the two buttons on the front of the BCB. The tumbler switch can be used to override the living room thermostat permanently. The push button can be used for a temporary override. If it is pushed a temporary override of one to eight hours can be chosen as shown on the display. (0-1-2-3-4-5-6-7-8-0... etc. hours). If the BCB is in the override mode it says so in the display and the LED on the front panel is on.

In override mode the BCB takes over control of the CH boiler. It switches the boiler off if the measured temperature of the boiler output water exceeds the adjusted maximum temperature Tset (on the picture 59 °C). It switches the boiler on if the measured temperature drops below (Tset - h), h being the hysteresis of 20 °C. So in our case the BCB switches the boiler on if the output water temperature drops below 39 °C. The hysteresis h can be changed in the sketch if desired. The BCB now keeps the water temperature of the CH between 39 °C and 59 °C. Each room can be heated independently of the living room thermostat. Room temperatures can, if desired, be controlled by thermostatic valves on the radiators.

The living room temperature is now controlled by the living room thermostat by opening or closing the electric valve in the floor heating.

How to build it

Building it is fairly straightforward. Connect the components as shown in the schedule. The 5V output of the Arduino Uno must be linked to all the +5V connections (arrows.) Also interconnect all ground pins.

The BCB is powered by an external power supply of 12 V DC connected to the Arduino. The +5V power output of the Arduino is not powerful enough to power both the LCD and the relay module so the relay-circuitry on the latter is powered by a seperate 5V switched power supply, the LM2596. The LM 2596 gets its power directly from the external 12V power supply. The jumper on the relay module, connecting Vcc and JD-Vcc, needs to be removed. Please carefully follow the schematics.

Download the sketch and upload it to your Arduino and you're done.

What you need:

  • Arduino Uno
  • 8-Relay Module
  • LCD display 2004A
  • LM2596 5V switched power supply module
  • 12 V DC external power supply
  • B+B Thermo Technik TS-NTC-103 (10kΩ)
  • Metalfilm resistor 10kΩ, 0, 1% tolerance
  • Potmeter 10kΩ linear (chassis)
  • Trim potmeter 10kΩ
  • Resistor 820 Ω (tolerance not important, 10%, 5% or better will do)
  • Resistor 1500 Ω (tolerance not important, 10%, 5% or better will do)
  • Resistor 10 kΩ, tolerance not important (2 pieces)
  • Capacitor 0, 1 uF (=100nF) 16V (2 pieces)
  • Elco 470 uF 16V
  • Pushbutton (normally off)
  • Tumbler switch
  • 4 connectors 2.5mm (chassis)
  • 1 power connector (chassis)
  • 4 connectors single 2.5 mm
  • LED, low current, e.g. Kingsbright L53 LYD yellow
  • Enclosure


Plug in the connectors of the electric valve, the living room thermostat and the CH boiler to the appropriate connectors of the BCB. Make sure the leads of the NTC are properly isolated, e.g. with shrink sleeves. Install the NTC on the hot water output valve of the boiler with tie wraps. Plug in the connector of the NTC to the appropriate connector of the BCB. Plug in the 12 V power supply to the power connector of the BCB and plug in the power supply connector to the mains wall outlet.

Starting up the BCB

After plugging in the power supply connector to the mains wall outlet the BCB will show a message that it is booting. It will also show the version of the sketch in the screen.

If the tumbler switch for permanent override is in the off position the following screen will appear after the BCB has booted. The screen shows the measured temperature of the output boiler water (Tmeasured), the adjusted maximum temperature of the output boiler water (Tset), the override status (off) and it shows that the BCB has booted.

To erase the message "BOOTED" put the tumbler switch in permanent override position and push the temporary override button. The LED will lit. The boiler may be switched on by the BCB while doing this.

In the display the message "BOOTED" is now replaced by the message "#VP=0" indicating that the Valve Protection Program (#VP) has run 0 times since the BCB booted (See Valve Protection Program.)

Put the permanent override tumbler switch back in the off position. The LED will switch off.

Valve Protection Program

The Valve Protection Program will run every approximately 24 hours. It closes the electric valve and opens it again to prevent it from getting stuck. Each time the VPP runs the counter #VP is incremented. After #VP=99 it returnes to zero. While running, the VPP shows the remaining time in the display of the BCB. Total time of the program is 15 minutes. This may seem rather long, but many electric valves take several minutes to respond. If the override function has been used, the first VPP execution will be approximately 24 hours after the override function has been switched off.


In the unlikely event of a software crash the built in watchdog will reboot the BCB. While rebooting, the message "REBOOT IN PROGRESS" is shown in the LCD. After the reboot the BCB will function normally. The message "#VP=.." will be replaced by "REBOOT" to inform the user that a reboot has occurred. The message can be erased as described under "Starting up the BCB."


Boiler Control Box sketch v 1.3




Similar projects you might like

Herb Box Eco System

Project tutorial by Walter Heger

  • 365 respects

Servo Control with TV Remote Control

Project showcase by eldo85

  • 48 respects

Connect Your Central Heating to Arduino

Project tutorial by Jiří Praus

  • 18 respects

Shadow Light Box - Control by IR Remote with Arduino

Project tutorial by engineer2you

  • 7 respects

Control an LED with the Remote Control

Project showcase by Nicholas_N

  • 26 respects

Arduino Heating Element Control

Project tutorial by engineer2you

  • 1 comment
  • 21 respects
Add projectSign up / Login