Solar water heater graph

Our solar water heater has been working pretty well since it got sunny, but its behavior wasn’t quite optimal–at night, it seemed to be sucking heat out of the storage tank and transferring it up to the roof, which isn’t what it should be doing. I suspected that because the pump controller only had two temperature probes, it wasn’t getting enough information to intelligently control the pump. So I’m building my own pump controller, using an Arduino and a bunch of DS18S20 digital temperature sensors. I’ve also got it hooked up to a 20×4 LCD for display, and a Logomatic data logger. The data logger is probably only there until I’ve got the thing finished and tuned. For now, it’s good for figuring out how the system works over time.

For example, based on yesterday’s data, I can tell that I probably need to move the temperature sensor on the roof:

The reading for “ROOF” should be the highest during the day, since that should be the hottest part of the system. Instead, it’s lower than the “XIN” line, which is the temperature of the heat exchange liquid right before it goes into the heat exchanger in the storage tank. I’m not sure why this is, but it’s good to know–either I need to move the probe, or I need to account for that when I’m writing the logic that turns the pump on and off.

The other values are TANK1, the temperature near the top of the storage tank; TANK2, the temperature near the bottom of the tank; and XOUT, the temperature of the exchange liquid after it’s been through the heat exchange wand. I have two more probes; I might use them to measure the temperature of cold water going into the tank and hot water coming out. Those would be just for fun, though, since I can’t think of any reason the pump controller logic would involve those.

This is a fun project. I’m really digging the Arduino platform, too. I’ve taken some pictures of the hardware, including the steps involved in making a temperature probe, if you’re interested in that sort of thing.