Automate Temperature of Gas Water Heater

I am new to the arduino world and I am looking for a way to automate the temperature in my gas water heater. I want to use an arduino to turn the knob on my water heater from high to low during times I do not think anyone will use the shower. Then have it turn it up during hours where I believe the water will need to be hot.

Any suggestions? I read a servo might work but I am not sure how I would attach it to the arduino and then attach something to it to turn a knob. I am not sure what kind of arduino I would need, how to hook it up and program it.

My water heater knob looks like this -

Any help is appreciated.

Given the legend on that knob, and your level of understanding, do you really want to risk it?

Are you talking about the risk in getting burned with the heater setting? I don't really see much risk in the knob. It goes from Warm to Very Hot. I already have my water heater set to level B now as it is. There is only one level above that. I just want the arduino to move the knob from warm to Level B and back when needed.

I don’t think the result would be good.

Try getting some understanding on stepper motors if you want to accomplish this your way, or get a proper variable thermostat for it to make it safe.

What AWOL was referring here is that in case this system fails, someone might get burned. Or in case it fails, this might create a condition that will make the water boiler fail and cause severe damage to your house. Have you got a spare boiler on which you can test this extensively and create fail safes in your code and hardware?

Don’t get me wrong. I’m not saying it’s not possible or that you can’t do it, I just don’t like it when people assume it is safe to do something just because it is possible to do so.

Hi, If the main thing you want to do is shut the heater down during hours of little/no use, then consider simply switching the power to it off with a relay.

People have done this for years with electric water heaters. I do it with my LP fired water heater.. it's controlled by time with an X10 override to turn it on 100% if desired.

That way the 'user' temperature isn't being changed and there's no danger of setting the temp to that RedZone..

See stuff about relays here:

Any suggestions?

Have you an electric schema of the installation? if so ==> please post it, if not ==> skip this project.

I don't think I can use a relay since my water heater is gas. There is no electricity going to my water heater. Turning it off and on would be fine but to turn it off the pilot will go out. I would have to relight it. The only way I know how to turn down the water heater is with the knob.

I am not worried about burning anyone, my water heater is almost at the highest temperature now. If the knob were to go to the highest temperature for some strange reason it would be fine.

A servo sounds like the most natural approach. If you want to ensure that the control can't be moved passed the highest safe point, you could attach an arm to the control knob and have a pushrod down to the servo horn, and mount the servo so that the highest point on the servo horn corresponded to your maximum position on the control knob. If the servo moves past that point, the knob would be moved back to lower settings.

I can't imagine this being very practical or reliable, though. What is going to happen the first time somebody needs a shower and the heater decides to be 'cold'? My guess is that the remains of your Arduino would soon end up in the bin.

Is your heater providing the water directly to the shower or is it heating a tank of water which is then used by the shower? I am surprised your gas heater control is so basic, how old is it?

radman: I am surprised your gas heater control is so basic, how old is it?

That is a pretty standard control on all gas water heaters (at least in the U.S.).

tech324: considering the torque requirements and modest angular change, you may want to consider a stepper with geared or toothed belt pulley arrangement. I suspect with a large enough stepper, you could drive it directly. Regarding ending up at the highest setting inadvertently, most shower controls today have anti-scald features, so that is less worrisome.

Not sure how much you will save versus say installing an added insulation blanket around the heater. Take some data if you go down this path; others may be interested.