Monday, January 28, 2013

Water Heater Power Control

In the last post I talked about how short burst of high power usage can be OK, but long periods of high power usage can kill me.  Remember, I'm on demand billing where they average the usage across every sixty minute period and charge me a ton of money if I let my peak period usage get too high.  I discuss this extensively on my Power Usage page <link>.  I've managed to keep it at or under 2Kw for quite a while and saved a lot of money on power bills.

However, the water heater has been a continuing problem.  I have a solar water heater for the house and it will make hot water for free if there is sun.   One wouldn't think that is a problem here in Arizona, but occasionally we get several days of overcast weather and that means no hot water.  The water heater works great if there is sun, even if it's 30F outside.  The collector temperature goes up to 150F pretty quickly and that's enough to create plenty of hot water.  When the weather is overcast and especially when it's rainy, the collector won't generate any hot water and I have to rely on a heating element inside the device as a back up.  Obviously, I don't want that heating element drawing power during the peak period because it will pull at least a couple of Kw and mess up all my work saving power.  I actually had this happen once <link> and it cost me a whole lot more than the water was worth.

At first, I had an Intermatic timer that worked quite well, but since I live in the realm of power failures, it wouldn't stay on time.

If I lived where the power was more reliable, this would have been fine, but I often lose power during thunderstorms and sand storms, so I looked for another solution.  Since I had X10 controls in the house to operate the outside lights, I went with that solution.  Yes, I could have gotten a digital timer for the water heater that has a built in clock with battery backup to keep the time, but I had already given up on a $60 device and I didn't want to spend that much again.  I got an X10 appliance module from an ebay vendor, a contactor from an A/C supplier, and an electrical box from a neighbor and built a remote control for the water heater.  Frankly, I didn't save any money, but I had remote control and my light timers for the house could turn the power on and off to the water heater.

X10 sucks.  Sure, that's a little severe, but if you're using it for anything that isn't monitored all the time, you have trouble.  X10 will false, fail to receive, and just refuse to work.  In unattended circumstances, this will turn on lights, leave them on when they're not supposed to be, and turn them off for no reason at all.  Same with water heaters.

So, last Saturday I decided to turn on the water heater for the day to get enough hot water for a nice long shower.  It wouldn't turn on.  I even changed the appliance module, but nothing seemed to work.  It was chilly, and raining, but I turned off the breaker, dried off, and bypassed the stupid thing to force the water heater on.  Then, I started reprogramming my Garage Controller <link> and House Controller <link> to take over this job.  I had two unused relays in the garage controller and lots of memory on the House Controller, so a little rewiring and programming and I had control of the power to my water heater.

I use regular text transmitted from XBee to XBee to control and monitor status for the various controls I've built around the house, so every 15 seconds or so, the garage transmits: 'garage,closed,closed,off<cr>'
with the items being the two garage doors and the water heater, so it knows the state of the garage devices.  To change the state of the heater, I have the controller transmit, 'waterheateron', or 'waterheateroff'.  Using text like this allows me to debug things with a sniffer <link> that I can watch the various devices with.  I can also transmit the commands by hand using the XBee X-CTU configuration tool.  All of my household commands are sent in broadcast mode so they can be seen by any device.

I also added items to the web interface the House Controller supports so that I can see the state of power to the water heater using a web browser.  There's also a button to turn the power on and off as needed.  This means the house controller can schedule power to the heater as needed with the garage controller having final say in the situation.  For example, I have the water heater hard coded to turn off just before the peak billing period and back on just after.  This keeps the water heater off when the prices are high.  If the power fails, the water heater defaults to off; I may change that if it becomes a problem.  Here's a picture of the Garage controller with the new wires in it from the water heater:

And here is the electrical box that houses the contactor that actually controls the power to the water heater:

I still have one relay left in the Garage Controller, wonder what I'm eventually going to use it for.