pingswept.org
now with web 1.0 again

January 03, 2010

Sizing a gas boiler

When you own a house, you are forced into bizarre contortions to reduce the cost of maintenance. For example, our roof needs to be replaced, but part of that is repairing the chimney. We don't really even need the chimney, because we don't have any fireplaces left-- they were all removed decades ago, well before we owned the house. But, until late this fall, when we installed a new boiler and water tank, we still needed a way to vent our ancient and inefficient gas boiler and water heater, or the basement would fill up with carbon dioxide and soot. We realized that if we replace those first, we can buy efficient systems that need only a plastic pipe through a basement wall to vent, rather than a chimney. Our heating cost would drop, and we could just toss the chimney in a dumpster, which is cheaper than repairing it, and need only be done once. Also, when we do replace the roof, we don't have to worry about finding someone with the skills to make a reliable flashing around the chimney.

As a result, we decided to replace our gas boiler and water heater. (The water heater actually had some life left in it, but we just wanted to do this once and be done with it.) An added advantage is that we could tear out the matrix of steel pipes that undergirds our first floor and replace them with PEX tubing, so I no longer have to wear a helmet when I walk around the basement.

Knowing that we're going to replace the boiler and water heater, someone had to figure out how big the replacements should be. The water heater is fairly easy-- we had a 40 gallon tank, which was plenty for the two of us, given that our shower uses around 6 L (1.5 gallons) per minute. Given that we were replacing the boiler and the water heater at the same time, it made sense to install an indirect storage tank, rather than a separate water heater. With an indirect setup, the super-efficient boiler heats water to warm the radiators in the house, but it also has a second loop that runs through a heat exchanger in a water storage tank. The heat exchanger is necessary so you don't end up drinking water filled with radiator rust. The boiler manufacturer we considered most seriously, Viessmann, doesn't make a water storage tank smaller than 42 gallons, so that's what we chose. We also considered getting a boiler with an integral on-demand system (the WB2 6-24C), but the output looked a little shy of what we wanted. (She-who-takes-hot-showers overruled he-who-takes-long-showers on this one.)

Sizing the gas boiler is more difficult. Our old boiler was rated at 48 kW (164,000 BTU/h or 164 MBH). Our old boiler didn't modulate-- it either burned at full power or turned off. Using our gas meter and a stopwatch, I measured the full-power consumption at 3.0 ft3 per minute, which is 53.5 kW for natural gas, slightly above the nominal rating of the boiler. On a cold evening recently, when the temperature was holding constant for several hours around 33° F outside and 66° F inside, and there was no sun and little wind, I measured the duty cycle of our old boiler. Over a 133-minute period, it was burning 26 minutes, which is about 20%. This means that average power going into the boiler with a temperature difference of 33° F between inside and outside was 11 kW. Maybe 8 or 9 kW of that actually makes it into the house, while the rest goes up the chimney.

The choices

I was trying to choose between the Viessmann WB2 6-24 and the larger 8-32. (The parts of the names of the models after the hyphens are close to, but not equal to, their peak output in kW-- perhaps they were the design targets.) Both models are extremely efficient condensing boilers; depending on how they're loaded, they operate in the 90-98% efficient range. As they're loaded closer to peak power, their efficiency drops. It also drops with the returning water temperature-- if the water comes back from the radiators cold, it's draws in heat from the burner more efficiently than if it comes back warm. The radiators in our house were installed before insulation and storm windows were standard, so they're quite effective at distributing heat.

This suggested to me that our new boiler would probably be operating near the high end of its efficiency range; the real danger was that in the fall and spring, when just a little heat was needed, it would inefficiently cycle on and off, because its lowest level of modulation would be too high. The larger of the two models I was choosing between cut off at 11 kW, which, you'll recall, was what we were using at 33° F with a much less efficient boiler, so that made the smaller one seem like a better fit. (For those of you unfamiliar with the weather in Boston, the average daily high temperature in the coldest month is 36° F in January.) My estimation was that on a really cold night, we might have a temperatures outside in the single digits, and we'd keep the house in the upper 50's or low 60's, so call that a delta of 50 degrees, about 1.5 times the 8-9 kW we needed at 33 F-- call it 14 kW to be safe.

The last factor I thought about was wind. Our house is not particularly exposed, but I suspect a cold wind could double the heat loss, which would definitely max out the smaller boiler, which peaked at about 25 kW, allowing for boiler inefficiency. If that were the end of the story, I would have chosen the larger boiler, but there were three other factors. The first was that the new boiler would zone the radiators, so I could turn off less critical rooms if we were short on heat. The second was that I'd rather invest money in insulation than a bigger furnace. Finally, we were thinking about installing a woodstove (for strictly recreational purposes-- Sundays, crossword puzzles, and so forth).

The results, in which we learn whether Brandon is an idiot

Against the advice of the heating contractor, we got the smaller boiler. They did a beautiful job installing it in November. Last week, we had a very cold (sub-10° F), very windy night, and the system kept up with demand. We just got our first gas bill covering a month with the new boiler, and our gas usage dropped to 150 therms from around 250 therms for the same time last year, and last year was slightly warmer, so I'm pretty happy. The payback time on the added expense above the cost of an inefficient system will be less than 10 years, which is less than the warranty on the system (except the control electronics). The water storage tank, which is stainless steel, is warranted for the lifetime of the original owner in the original house.

I'd estimate that about half of the savings are from reductions in heated area (spare bedroom, attic) and half are from higher efficiency.

Shortcomings

But nothing is perfect. Because we replaced all the large, cast iron pipes in the basement with PEX tubing, the basement hovers in the low 50s in the winter, rather than in the low 60s. This was expected, but I decided I'd rather wear a winter hat than a helmet. Also, because we're not losing heat throughout the system, the boiler runs a little cooler than the old beast, which means that the radiant floor heat in the kitchen has trouble keeping up on the coldest days. I think I can probably fix that by tweaking the boiler target temperature and the circulation pump flow rates.

One other wrinkle is the control scheme used by the new system. Viessmann boilers come with an external temperature sensor, which is mounted outside on the north side of the house. Viessmann's intent (I think) is that the installer calibrates the system to drive the temperature of the hot water supplied to the radiators as a linear function of the outside temperature and the return temperature of the water. The idea is that when the temperature outside changes drastically, the boiler can react earlier than if it had to wait for the effect to be detectable in the radiator water or thermostats. Strangely, our boiler is set up to use the two programmable thermostats we used with the old boiler. The brain of the boiler targets 75° F, but the circulation pumps for the radiators and the floor heat only turn on when the thermostats call for heat. I'm not sure that this is actually worse, but it sure is strange to install an external sensor if you're not planning on using the signal.

Pictures

Here are the old system and the new system. If you click on the pictures of the new system, you'll get to Flickr, where I've added a few notes about what the different parts in the picture do.

Old system with headbanging pipes

The old gas boiler and the headbanging pipes

New system

The new boiler

Supporting plumbing for new system

Ancillary plumbing

January 01, 2010

Blogging like a so-called hacker

Back in the first decade of the 21st century, I used Wordpress to write this blog, at first running on a server in my garage, later hosted by Dreamhost. A few months ago, I ran across a blog post by a Mr. Tom Preston-Werner about Jekyll, which is sort of a blog compiler he wrote in Ruby. This is an unusual idea, the blog compiler, but it appeals to irritating people like me who care about the architecture of the systems they use.

What's this about a blog compiler?

Most blog software consists of a database and a pile of webpages with scripts embedded in them. When you request a page from the webserver, the skeleton of the page gets loaded, and the scripts are triggered, which query the database for the relevant text, categories, comments, and whatever else is associated with the page you're trying to read. To me, that seems like a lot of work just to load a blog post. It's not that I don't like databases-- in a situation where I might make the request, "Show me all posts with 'bollocks' in the title published in April of any odd-numbered year," a database would be exactly what is needed. But that's not what's happening here. Mostly, people are making requests like "Show me the post whose title I just clicked on."

For a long time, my thought was, "Eh, who cares? So the database is overkill. Whatever." But as this blog has aged, I've spent more and more time dealing with annoyances. My Wordpress install has been hacked twice, which had a few bad consequences-- my blog spent a few months unknowingly boosting the Google rankings of a casino website, I had to spend some time sorting out the problem, and I had to spend more time backing up the database, which is a little more complicated than just saving a pile of text files. I've had to upgrade Wordpress repeatedly, and manage an array of plugins to do things like generate images for equations.

What's the alternative?

The alternative is the blog compiler. I write all my blog posts as plain text, with a little bit of formatting like you might use in an email, like asterisks around a word for emphasis. (This is called the Markdown format.) When I've finished a post, I run the blog compiler, Jekyll. There are other blog compilers-- Chronicle, Webby-- but Jekyll what I started with. Jekyll takes my pile of posts and some templates and generates HTML that is approximately identical to what Wordpress previously generated when your web browser requested a page. All of the HTML pages for my ~130 posts are pregenerated in this manner, which takes about 5 seconds on my laptop. Once I'm satisfied with the output, I synchronize the updated pile of HTML pages with the pile on the blog server, and I'm done.

A few other details

There are a few other advantages and disadvantages. On the good side, I can now back up my blog with whatever backup tool I want. Also, if I decide that Jekyll is lousy and I want to change my blog around, my posts are in a reasonably future-proof format-- at worst, I can drop all the source files in a single directory on a webserver and call that my blog. I could also switch to Webby or some other blog compiler easily. Also, I now understand my blog layout very well, and the stylesheets are at least 5x shorter, so small tweaks to the layout will be easy,

Another advantage is speed. My host server only needs to deliver a static page, so there's no waiting around for the database server. While my blog places no noticeable load on the database server, now when someone else bogs down Dreamhost's database server, I won't care. (In the long run, I plan to host this blog on an embedded server on my desk. I'm serving pages at 250 kJ each, that is, 0.0004 page views per second at 100 W for a dedicated server. With an embedded server, I could reduce that by 10x (though in reality, a shared server probably wins by a long shot, as the vast majority of the time, both dedicated servers, embedded or not, would be idle.))

The biggest disadvantage so far has been the time I've spent getting this working. Getting the basics working took just an hour or two (and someone more familiar with Ruby than I am could have done it faster), but importing all the posts from Wordpress took a while, and there are still a few posts with broken images. Also, Jekyll doesn't have a good means for commenting beyond an external service like Disqus, but that's a fundamental problem of the architecture. (Would you want random people like you recompiling your blog?) Last, the system of categories that Jekyll uses isn't so great out of the box-- it uses a hierarchy of directories to represent a series of categories, which makes URLs unnecessarily complex. I'll have to do a little tweaking to fix that. (One other thought: I'm not sure that the RSS feed is working correctly-- I suspect the post dates may be wrong. If you're one of the RSS zealots out there, please comment or email about how the feed is deformed. If it is so horribly deformed that you can't read this, you're off the hook.)

Up next: a fascinating post about our new condensing boiler!

September 27, 2009

Watercooling with an aluminum waterblock

Last night, I finished assembling the waterblock for the new server in my basement. Since I'm new to this watercooling stuff, I decided that a design where the fluid path through the server has no potentially leaky fittings along it would be a good starting place. I made the waterblock from two chunks of 6061 aluminum, with a loop of copper tube sandwiched in the middle. I milled a semi-cylindrical groove in each plate of aluminum with a ball-end mill, and added relief on one side to allow space for a 180 bend in the tube. The plates are clamped together with 1/4-20 socket head cap screws. As I tightened the bolts, I could see the gaps around the tubes disappear, so thermal contact between the tube and the plates is at least decent. Unfortunately, the upper plate doesn't make good contact with the lower one. By design, there's a nominal 0.010 in gap between the two plates before the tubes are compressed. I tried adding shim stock between the two, but I couldn't easily balance the contact force between the tubes and the plates, so I left out the shims.

Half the waterblock

Half the waterblock

Disassembled view

The waterblock disassembled

I fired up the server, and it looks like watercooling is a lot more effective than I expected. The blue line is for the CPU that was air-cooled, and the purple line is for the watercooler. The blue line dives after 10 minutes or so because that's when I realized one of the fans aimed at CPU1 had stopped. If the fans all worked, I bet the watercooler would still win on absolute temperature, but the fans might win on efficiency.

watercool_chart_2009-09-26

The circulation pump, a Laing SM-909-NT-14 designed for hot tubs, I think, is rated for either 15 or 65 W, depending on which part of the label you believe. (I'll have to measure it to find out for sure.) It maxes out at a volumetric flow rate of 8 L/min, but with the small diameter copper tube attached, it drops to 2.4 L/min (40 cm3/s). The ID of the tube is 0.48 cm, which puts the mean velocity at 2.25 m/s. The Reynolds number for this flow is around 1000, which is below the transition to turbulent flow, which occurs around 2300. Looking at the jet coming out the end of the tube, it looks laminar.

Overview of the full setup

The watercooling mad scientist lair

Aluminum waterblock with copper piping in place

You'll notice that the tube is wearing a beautiful brass fitting. This is a fitting that I clamped on during the bending process to keep the tube from sliding into the pipe bender and crimping, rather than bending in a nice radius. Unfortunately, I failed to realize that the section of tube with the fitting would be trapped between bends.

Close up of waterblock

So, I call this a success. The next iteration of the waterblock will be made from copper, and I'm hoping to make two of them so I can actually run the server. I thought about trying to press tubes through reamed holes in a block, maybe with the help of a heater to expand the block, but I think I'll try a two-piece soldered design instead. My plan is to create a vaned cavity that guides a sheet of fluid across the processor, but I haven't figured out the details yet. Onward!

September 13, 2009

Building a green server

Ever since a brief stint as a network administrator in 2005, I've admired the discipline of data backup with undeserved zeal. A little more than three years ago, I decided that I should probably build my own server as a data repository; it could also serve this blog, store my email, and so forth. At the behest of my friend Mike, who once claimed that the massive data breach that Google will eventually suffer will be worse than September 11th, I also kicked my Gmail habit. (Mike has not kept up his end of the bargain, and still uses Yahoo Messenger. Also, he owes me a comic book about penguins.)

Last spring, as we were getting ready to move to Somerville, I had accumulated most of a server, but I didn't really have a good place to put it. Now that we've moved, I have an insulated attic, a moderately dry basement, and most importantly a killer garage. If the house burns down, the data is safe in the garage!

While I am definitely a sucker for an attractive rackmount server with hot-swap drives, I'm even more of a sucker for energy efficiency. I did some research and built what was, at the time, the greenest server I could build with consumer-level components. With the recent release of solid state hard drives, I don't think I can claim to be setting any records, but I think I'm doing pretty well in terms of required cooling power per processor cycle.

The rig:

Total power consumption started at 131 W with the processors idle, but I was able to reduce it to 102 W by replacing the stock fans with the quieter Antec fans. I haven't actually measured the peak power consumption yet judging by the processor specs, I expect it to be at least 200 W, but probably not more than 250 W.

I tried the server in the poorly-insulated garage this summer, and it overheated pretty quickly. The revised plan is to try the aforementioned moderately dry basement, which affords the additional interesting opportunity of building a geothermal cooling system for it. (Yes, it's a ridiculous idea-- ridiculous and awesome.)

I don't know if I'll ever get around to that, but I'm starting with a water cooling system, which I think is a necessary precursor to a geothermal system. If the water cooling works, I might turn it into a water pre-heater for our domestic hot water heater. I previously calculated our hot water load at around 2 kWh per day, which is an average power of 83 W, less than the average power of the server. We'd certainly lose a lot of the heat along the way, but if I'm going to dump waste heat somewhere, it might as well be into water I want to heat anyway.

(Before you go rushing off to Treehugger.com, note that this "heat your water with your PC" plan is not an economically sound proposition-- heat from electricity is about 4 times more expensive than heat from natural gas.)

older postsnewer posts