Arduino powered motorhome water heating system

So, my parents are lucky enough to have a motorhome.  It’s not new but it fits most of our needs just right. It is a Ford Rimor Korsaro from 1994 so some of the equipment is showing some signs of it’s age. One of the most important pieces of equipment in a motorhome (as far as comfort of living goes) is the water heating system (also known as boiler). This is a sealed container where an LPG flame burns and heats water. Ours has a capacity of 10 liters and it was made by Atwood. It’s a Jolly Boiler, a model that as far as I could find on the internet, was greatly appreciated by the owners of one. This brand was acquired some time ago by a company that also produces motorhome equipment called Truma.

The Jolly Boiler was controlled by an electronics box that had a small remote where we could select the temperature (50ºC or 70ºC) and see if the flame was lit or not (green and red LEDs, respectively). This box started having problems a few years ago (the boiler wouldn’t start) and I solved those problems by re-soldering all of the solders (re-heat them and add a bit more of solder). However, more or less a year ago it broke again and this treatment did not work. We spent the past year without heated water (because most of the use of the motorhome is during the summer and it is hot enough that a fresh shower is almost revitalizing. During this time, we looked at the solutions on the market that were:

  • Replace the PCB with a new one or
  • Buy a new boiler system

The first solution was the less expensive one but also the most difficult. When the boiler started having problems we researched the price of a new PCB that was around 400€. Now, in 2017, when I contacted a company that sells material from Atwood I did not even get an answer. So, this solution wouldn’t work.

The second solution would be the wiser one amongst the two: we would have an upgrade in material but it is the most expensive: the prices start at 700€ and we were quoted around 1000€ with installation.


With all of this is mind, I decided that I would take a look at the boiler before moving into the previous solution. My thoughts were that even if the boiler could not be fixed at all, at least I could remove it from the motorhome and then search for an used one at a lower price that I could install myself. But I was going to try to fix it anyway.

As soon as I got it outside I came to the conclusion that I could fix it. The system works the following way:

  1. The user selects a temperature (this is what turns the system “on”);
  2. The boiler opens the gas valve (a 12V solenoid) and turns on a sparking unit, liting the fire;
  3. When the fire is detected, the sparking unit is turned off and the gas valve remain open until the thermostat reaches the set temperature.

So I set making a few plans and sketching in paper and in my head how I could fix this using an Arduino and a few other parts. My initial fear was how to control the gas: I did not know there was a solenoid but as soon as I saw it I knew that I could use it with a 5V relay. The sparking unit could not be used because it was on the old PCB. However, a few months ago I disassembled an old home water heat that also ran on gas and salvaged the sparking unit. My intention was to use it in the motorhome fridge (more on this in a later post) but instead, I used it here. It runs on 2 1.5V D cells and is controlled, again, by a 5V relay.

In this part of the process, what I didn’t know exactly was how I would detect the flame. The ideas that came into my head were either a LDR or a Carbon Monoxide detector. I had the first one laying around but not the second one. When testing with the LDR I trying fixing it on a little glass window that the boiler has and serial read the values from the boiler, with the arduino. I was having a few problems reaching perfectly distinctive values (lit VS non lit) and thought about using an IR sensor however this had to be soon dismissed because IR do not travel through glass and I did not want to open said glass window. It was in this moment while I scratched my head that I decided to try and find out how the old PCB was detecting a flame: with a flame rod (something I didn’t even knew it existed). From what I can understand, the flame rod acts as a “flame rectificator device“. I still had a few problems getting data that I could use from this sensor but in the end, I managed to do it. I will go into further detail a little bit later.

Initial Prototype

So, with all the parts on hand I set trying to prototype something to work on. After a while, this is what I had:

I tested everything manually (me controlling instead of the Arduino controlling) and started coding. You can find a semi-final version of the code here. At the moment of writing I still have a few things to improve but that is functioning.



After a few hours, I had something closer to a final product: we select the temperature and a LED (orange) is lit. The boiler opens the gas valve and ignites a fire. If it fails 3 times, an error red LED is lit and it stops everything until we manually reset it. This can happen because the gas ran out or a problem with the igniter. Since I am playing with something dangerous here and safety is always first, in this mode nothing else can happen. If the fire is lit and it is detected by the flame rod, it is kept on until the set temperature is reached. This temperature is obtained by the thermal switches that the boiler already had. Finally, it stays waiting for the temperature to drop bellow the target and if it does, it fires up again.

As for the flame rod, I had to put a pull up resistor between the 5V line and the SerialInput where the rod is connected. This way, when there isn’t any fire, the voltage that is read in pretty much all the time 5.00V. When a fire is present, it lowers bellow 4.00V. This way I have a definite range that is far between each end that I can use to implement a while condition on the Arduino

In the pictures above you can see the almost finished stage of this project. At the moment I am waiting for a new Arduino to arrive and a shield with screw terminals to permanent mount everything. The cabling is all labeled (yay labelmakers!) and I have everything documented so that if needed, I can change anything in a few months or years without having to re-do everything again. This system is mounted on the motorhome at the moment and has been tested for around a week. Everything is working great!

I will implement a few modifications in the future: a thermal switch of 85ºC that cuts the energy if for some reason that temperature is reached and maybe a box with all the hardware.

If you have any questions, send me an email or leave a comment. Thanks!