I was approached by my father in 2016 to design and build a new control system for his central heating and hot water system.

The problem he experienced was a lack of integration between the controls for his oil fired conventional system, and the electric immersion heater. 

As the price of heating oil fluctuates, it is sometimes cheaper for him to use the electric immersion heater to heat the hot water, particularly in summer when the heating is switched off.

Having done some research, he was unable to find a system that exactly matched his requirements. 

There are four basic requirements:

  • Provide a common scheduler system capable of driving both the conventional and electric systems from one control panel.
  • Provide a way to easily switch between oil and electric for the hot water.
  • Have a large, user friendly interface
  • Provide the basic functionality of the existing control system

Additional features of the system are as follows:

  • Configurable IO - A number of output and input sources can be assigned to individual physical IO channels (4 opto-isolated inputs, 5 mains voltage outputs)
  • Configurable maintenance counters and alarms - Provides a visual and optional audible alert of maintenance needs through three separate counters
  • The ability to pause the system during absence for vacations, and automatically reinstate when required
  • On Screen configuration of most control parameters, to allow the controller to be tailored to individual systems
  • Supercapacitor backup of real time clock functions, eliminating the need for battery replacement
  • Event log to provide a history of system state and operation
  • Digital temperature sensor to replace the existing electromechanical setting
  • Advanced scheduler, with two pages for summer / winter operation

It was decided to implement a two part system, one providing all the power and mains voltage switching, and another containing a keypad and display. The two parts would be based around the STM32F103 series of ARM Cortex M3 microcontrollers, connected by an RS-485 data link.

Both parts run FreeRTOS, a free to use embedded real-time operating system, built on ST's CubeMX package.