Timer circuit
Home Julian Rogers Home Central heating Boiler Circuit

The circuit is reasonably simple. The main elements are an Arduino, an Ethernet Shield, a real time clock module (DS3231 from Ebay - very cheap but supply a new branded backup battery), mains- rated relays (5 volt coils SDDT contacts from Rapid Electronics). The temperature sensors are SparkFun TMP102 with a bi directional logic level shifter also by SparkFun (Cool Components or Pimoroni).

The relays are driven by a couple of ZTX450 transistors or similar 1 amp general purpose transistors.

There are two three-position toggle switches providing manual control of the relays. In position 1 the relay coils are connected to the ZTX450’s collectors (i.e. controlled by the electronics). In position 2 they are connected to nothing (i.e. off). In position 3 they are connected to ground (i.e. continuously on). This provides absolute control of the system independent of the electronics or software (as long as the 5 volt supply is maintained!)

The switches are 2 pole. The second pole is used to let the Arduino know what the switch positions are (largely so they can be reported back to an application running on a remote computer. I used  analog input ports to do this to economise on ports used. The resistors and the LED form a potential divider whose output to the port varies with the position of the switch.

The LEDs are all tri-colour and are connected up to produce various displays according to the status of the timer. When a switch is in the timed position, the status LED shows red when timed to be on and faint green when timed to be off. When a switch is in the off position, the status LED shows flashing red when timed to be on and is off when timed to be off. When the switch is in the continuous position, the LED shows green at all times.

There are three buttons. One is reset (connected to the Arduino reset) and two advance the heating and water programs to the next timer event. (Advance is cancelled by pressing reset.)

There are three other LEDs. One indicates power is present, one indicates the advance function is in operation and one is linked to D1 on the Arduino. This pin is used in Arduino serial comms and if it is flashing, it indicates the Arduino is operating and not “hung” (just in case!)

Central Heating Timer Circuit

Parts list (reasonably comprehensive, I hope!)

1 x Arduino Uno

1 x Arduino Ethernet Shield

1 x 8 Gb micro SD card

1 or 2 x TMP102 breakout module, Sparkfun

1 or 2 x Bi-directional logic shifter, Sparkfun

1 x Real time clock DS3231 (search for this on Ebay)

1 x 2032 battery (don’t trust the one the DS3231 came with!)

 Some 0.1 pitch header strip

1 x ABS Hammond plastic box 191x110x61, Maplin N77BQ

1 of each Clifcon touch-proof plug and socket, Rapid Electronics 20-0807, 20-0810

2 x Taiway DPDT centre off toggle switches, Rapid Electronics 75-0214

2 x 4 way Camden Boss terminal block 5mm pitch, Rapid Electronics 21-4731

2 x Finder PCB mount relay 5VDC 10A SPDT, Rapid electronics 51-0535

5 x 5mm tricolour LEDs, Rapid Electronics, 55-0170

3 x Push to make switches, Rapid electronics, 78-0030

8 x 470 0hm resistors

2 x 4.7 k Ohm resistors

2 x 2.2 k Ohm resistors

1 micro Farad electrolytic capacitor

2 x 0.1 micro Farad capacitors

2 x 1N4001 diodes

2 x ZTX450 or similar transistors

1 x 7805 1A regulator

Strip board (Vero board or similar)

RJ45 sockets (I used these for the temperature sensors but other types would suit)

1 or 2 x BS box, grey, 80 x 40 x 17 Maplin SC80B - This might well be suited to the temperature sensors.


Connecting wire, nuts and bolts, solder etc.

12 volt power supply

Ethernet cable

Home Plug system if needed.

Arduino and Processing software (open source).