making a large low metal tray
Sunday, July 3 2011
For some reason I spent the night down in the basement Gunther Room (the smaller of our two guest rooms), and it was good that I did so, because it exposed me to an odd behavior from the solar controller in the boiler room next door. There was a thunderstorm approaching, and with nearly every stroke of lightning, the controller would reboot and I'd hear the hot water heater bypass relay engage and release a couple times. This might have been due to either a voltage surge or a voltage dip (the master Atmega328 is set to reboot during a brownout, and its power supply is on a surge suppressor). That wasn't such a big deal, since the controller wasn't doing anything at the time and is supposed to be able to recover quickly from any scenario. It's supposed to, but at some point it rebooted and then fell into a rapidly-cycling reboot loop, causing the hot water heater bypass relay to chatter like an overheated katydid. I could tell that the master Atmega328 was never able to boot into any of the code I'd written, as there was never any six second pause in the chatter (which my code will insert randomly every 20th reboot or so very early in its initialization). I tried disconnecting cables (both the serial cable and the sensor/actuator cable), but the only way to stop the reboot loop was to power down the controller and then power it back up again. Evidently it had entered a state that required an actual power cycle to cure. There isn't supposed to be any such state on an Atmega328 running an Arduino bootloader.
But I wasn't actually running an Arduino bootloader, I was running a similar bootloader called Optiboot, which makes a number of speed improvements and also permits use of the built-in watchdog timer. I did some research and found that the Optiboot bootloader does indeed have a bug that, if a reset happens at an inopportune time, will cause such a reboot loop. The details are all a bit technical and have to do with the state of an internal register. But at least there is a fix. It's difficult to tell what that fix is on that page, but by looking at the original Optiboot hexdump and comparing it to the hexdumps on that page, I determined that the fix was the large block of hex codes set on a single lime green background, coupled with two more lines on a white background. Hoping that this would finally make my solar controller perfectly reliable, I installed the fixed Optiboot bootloader into the master Atmega328 and hoped for the best. I'm pretty confident this time, but I've been confident before. Embedded controllers are just supposed to work!
It was rainy for much of the day, but that didn't keep me from driving around Ulster County to take care of business. I had a meeting this afternoon between Woodstock and Saugerties with a guy who has had me working on a speculative website for a year and a half now. I've never been paid, and the business model keeps changing, meaning I'm always having to alter things I've already built. Gretchen is fed up with this nonsense and I am too, but the problem with sunk costs is that it's impossible to know when you should abandon them, and so the sunk costs get bigger and you're paradoxically less likely to abandon them.
While I was in town, I bought groceries for the kitchen and liquor for the laboratory liquor cabinet (which, as I've mentioned before, has no top shelf). Finally I went into Home Depot with one goal in mind: to search for a flat, shapeable, waterproof membrane at least 24 inches wide. The ideal material would have been a sheet of flat metal having no pleats. I looked high and low in Home Depot, but it's hard to find supplies there that don't cater to a fairly narrow spectrum of suburban home improvement tasks. Eventually, though, over in the section where they stock dimensional bars of steel and aluminum, I managed to find precisely what I needed: a sheet of galvanized steel measuring three feet by two feet. It cost about $20.
Back at the house, I used a pair of wide welding pliers to bend up three of the edges of the metal sheet such that it took the shape of a three-sided tray. The sides were all very low, measuring only about a quarter inch. As I began, I thought the pliers might ruin the sheet of metal, especially as little buckles and bows formed in the sides I was making. This is inevitable when you don't use a bending brake (I have one, but it's too small). Fortunately, though, I found that these imperfections gradually faded away as the edges approached their final position.
I'd made this tray specifically to catch the water spilling over the top of the rain barrel atop the tower at the northwest corner of the house. The overflow water has been splashing against the house, so I wanted to divert it gently away. The goal was to catch it with the tray and then divert it northward, away from the house. I though I might even use the overflow to occasionally fill buckets on the ground.
To get the new tray under the tank, I first had to drain it of its 440 pounds of water. I'd hoped to do this before the rains had ended so the tank would be filled again before sunny weather returned, but that wasn't to be. So I collected most of the drained water in buckets and dumped it back into the tank once the tray was installed. (Since the top of the tank is nearly eight feet above the ground, this was a fair amount of work for very little value.)
This evening Gretchen made pupusas for dinner for the first time ever. She even made the curdito (sour shredded cabbage) that goes with it, and it ended up being just another in a long line of excellent meals my wife has dutifully prepared for me. Since going vegan, I've missed pupusas; they're just not very good if all they contain is beans. Fortunately, though, Daiya-brand vegan cheese, while not a perfect cheese substitute, works well inside a pupusa when combined with beans. Gretchen wants to take some Daiya with us to our local Kingston pupuseria to see if they'll make us pupusas with it.
For linking purposes this article's URL is:feedback
previous | next