Deja Vu (it got really cold again), Test Plan

After writing a similar post on 1/15/2012 I find myself saying basically the same thing, after a -10F night the boiler has kept up. Additionally except for a 12 hour period when I made some boiler modifications the boiler has run continuously for 14 days. There are several differences however. The software is 100% better and controlling the temperature to within a few degrees. The burner is now a waterfall type burner that is much safer and runs more consistently. The hopper and auger setup is much more consistent and dependable as a worm and worm gear than the chain and sprocket setup from last year. Most significantly the burner has proved it can run on chips as well as pellets. During these colder nights it is more difficult for the burner to keep up with chips because of the density differences. The chips are much less dense and because of this the auger must feed significantly more of them. The auger motor may need to be changed to accommodate this burning however during weather that does not require so much energy the chips will burn just fine. I could have easily burned chips for most of December with no issues if they had been dry enough. Which brings me to my second topic.

A test plan. I have taken the Holidays off but it is now the new year and time to make some constant progress. To facilitate the test plan I want to make some incremental improvements in the software. The first change in the software is to gather more data to make better decisions.  To do this I am going to first add the date and outside temperature readings to both the LCD display and the data collected.  By knowing these I can correlate the feed times to temperature and see how close a relationship between them exists. Next I would like to total the run time of the auger per minute and correlate that to both outside temperature and fuel usage. Armed with this additional data I can then make various burner modifications and see the differences if any graphically. The data is good now but could be better. As you can see from the data below the software is not working properly now. The derivative portion of the formula is not contributing at all. This needs to be fixed in the software.

Data collected on SD card

Data collected on SD card

Thinking about PID control

Proportional, Integrative, Differential control.  There is a function in Arduino that implements this and I started thinking about how I would do this and if it would be appropriate.  The function, really an algorithm is all based on error and time.  In this case the error is the difference between the set point and the actual tank temperature.

All three functions Proportional, Integrative and Differential have a factor, Kp, Ki and Kd.  For example let’s calculate each portion of the formula starting with the proportional contribution Kp, if the current temperature of the tank is 100°F and the set point is 140°F the error is 40.  The integrative portion of the formula adds the contribution of the error over time.  This would be the Ki factor multiplied by 40 and added to the previous Ki*error for every time period.  The differential portion is the Kd multiplied by the difference in the tank temperatures or in other words the tank temperature at the beginning of the time period  minus the tank temperature at the end of the time period.  Let’s take some of the data collected by the OpenLog microSD card and take a stab at this in Excel. We’ll assume Kp=6, Ki=.6 and Kd =.2. The time period is one minute.

Raw data imported into Excel with PID data calculated

Raw data imported into Excel with PID data calculated

Now in practical terms how is the the fire being controlled now?  The auger time is being controlled.  Of course practically the fire must not go out so there is a minimum time the auger must run, since in this program the auger is on a fixed time of 5 secs this really means that all of the control comes from varying the time the auger is not running.  But again the fire can’t go out so I figure the max amount of time between the fixed auger feeds of five seconds is forty seconds.  So that is the slowest the fire can go.  How fast can it go?  Well theoretically the feed could run continuously but again we are dealing with a chemical process that cannot simply absorb 100% fuel feed.  In this case the auger motor added a practical aspect by limiting the feed to a duty cycle of 50%, so the maximum time that the feed can be on is half the time.

Since the PID control is based on time periods and the data collection time period is one minute,lets choose a time of 1 minute for argument.  In one minute at max run the feed will be on 30 seconds and off 30 seconds.  In one minute at min run the feed will be on for 5 secs, off for 40 secs, on for 5 secs and then off for the remaining 10 seconds of the minute.  So again we don’t control the on time only the off time and the difference between the max on time (min off time) and min on time (max off time) is 30 secs on, 30 secs off for the max and 10 secs on and 50 secs off for the min.   So the only control between full bore and idle is the difference between 50secs and 30 secs or 20 secs per minute.
This explains some of the challenge,  the other challenge is the inertial effect of the combustion reaction especially if unburned fuel has built up.  So now that the PID output has been calculated I’m having a hard time wrapping my mind around how this would translate to control of the time, I know I could set up a simple proportion between the PID output and the 0-20 scale of  auger off time dwell.  However in this example the PID output  increases as the error decreases.  I guess that’s the beauty of a spreadsheet I will play around with Kp, Ki and Kd to see if I can get this to work a little better.

Electrical box and paint, Step 7 of a DIY record

It took me longer than I would like, but the hopper/auger assembly is now painted and the electrical box is mounted and the wiring is functional.  I have mounted the Arduino and LCD display.  That box also contains the board that accommodates the thermistor electronics, which are the sensors that read various temperatures.

The main electrical box is a stainless steel box  I picked up used from a scrap yard, putting the frugal in  That’s the reason that there are so many holes in the box,  however it was such a good deal I thought it was worth it, despite the cosmetics.  The cover was just too ugly to leave be, so I attempted to skin the cover with a plate which I plasma cut in “”.  This doesn’t show up too well, I probably should paint a background behind it to make it stand out better. Painting a background seems low on the to do list right now, so I think I will skip that task and focus on the burner.

The CNC was invaluable in the production of the electrical mounting plate, mounted inside the electrical box.  It was great to not have to drill any holes to mount anything.   All the holes were cut with the CNC and fit just fine.

So the final task is complete before the burner is welded up and tested.

This slideshow requires JavaScript.

Adding wheels, Step five of a DIY Record.

I often have to cut multiple parts, so when I do, I take the opportunity to experiment a bit.  In this series of cuts I changed the amperage of the Plasma cutter, a Hypertherm 45.  Hypertherm plasma cutters are American made, designed and built, only about a 45 minute drive away from me.  I still haven’t gotten my free T shirt for buying and registering the machine but I guess that’s another story…  anyway, amazingly enough there really is not a lot of difference in the dross or slag between the three different amp settings I tried.  I’ll keep experimenting to try to optimize the cut quality and speed of the CNC machine, plasma cutter combination.

The auger pipe connects the burn plate which attaches to the boiler and forms the interface between the auger feed and the boiler/burner units.  I took a piece of 6″ pipe and welded it to the boiler plate and this attaches the plate to the auger feed via screws that tighten. With this assembly I can detach the auger and hopper and test a different burner simply by loosening 6 screws. Modular design for ease of design changes and maintenance.

Burn plate attached to auger via screws tightened 120° apart

I attached the hopper plate first because this determines the wheel height required. I slotted the holes in the saddle plates so that there is about 3/8″, or about a centimeter of adjustment up or down adjustment.  Then after careful alignment I assembled the entire assembly with clamps and threaded rods. I did cut and weld in some cross pieces with gussets

Cross bars with CNC cut gussets and CNC cut caster plates

Close up of carriage assembly welded to auger tube

This will make maintenance of the boiler, ash removal, scraping of the burner holes, boiler tube cleaning very easy by simply rolling the auger/hopper assembly out of the way.

Mounting the auger drive motor. Step four of a DIY record.

In this step I mount the auger drive motor, it has a built in right angle drive and speed reducer which adds torque.  The motor comes complete ready for wiring and mounting using four screws.  Again I drew up the parts in SketchUp and then cut them out on the CNC plasma cutter, it was almost too easy.   The further I get down this path the more I take advantage of the CNC’s capabilities.  Note the rounded corners, I also added an extra hole on top of the motor mount plate to make adding a wire routing clip easier in the future.  I remade the worm drive plate to improve some of the adjustment capabilities and added at the same time some decoration, rounded corners and used less material.

I used a Lovejoy type shaft connector to connect the motor to the worm shaft with a Buna-N spider in between to minimize any vibration or backlash to the motor, although with the worm and worm gear combination there should be none.

Adding the worm gear and worm. Step three of a DIY record.

This step was made simple by the use of the CNC  plasma cutter to make a part which I then bent up on both ends using my homemade brake.  But first let’s revisit the old configuration for comparison.

Chain drive transmission of the auger drive, used on the last configuration

I had to rob the motor and some parts from this transmission so it is in disarray but you get the idea of the complexity.  It  requires four sprockets, two chains, a motor and two chain tensioners. Here is a picture of the newly implemented and untested solution for mounting the worm and worm gear.

Worm gear keyed to shaft, worm gear mounted on cross shaft.

The CNC made it easy to slot the holes for adjustment, so the vertical adjustment comes from the plate to plate mounting screws, and the bearing mounting holes are slotted to get correct in and out adjustment to the keyed worm. After cutting the part and mounting it I decided what to change in the next iteration.   I modified the part to round all the corners so that there are no sharp edges and extended the plate to pick up a second set of holes so the plates are attached with four screws instead of two.   I think this part is perfectly functional so I won’t implement the changes but at least the SketchUp drawing has been updated.

Adding the Auger. Step two of a DIY record.

It may seem like a small bite but step two actually requires some machining and tweaking to get correct.  In this step I am going to add the auger to the pipe assembly I have already built.  To do this I need to support the auger with bearings so the shaft will be cantilevered in the pipe.  The auger should not touch the pipe and needs to be centered in the pipe, at least within a reasonable distance.  To do this I cut some 1 x 2 square tubing and then drilled holes on the Bridgeport using the Digital Readout to measure the distance so that the bearings would fit perfectly.  These particular bearings are an oil impregnated bronze bushing in a pillow block configuration.  The pillow block configuration is aluminum which makes machining the pillow block easy.  Here’s a picture of the key way which I machined into a piece of  1″ cold rolled.  If you have the choice cold rolled is much easier to work with then hot rolled for shafts.  Of course this is really not shaft stock it is round stock but it works just fine and is inexpensive.

Shaft with key way machined and auger ready to weld onto shaft

After welding the auger onto the shaft I do the calculations to center the shaft in the pipe. To make the shaft centered I have to mill some of the pillow block bearing, as you can see in the picture I had to use a circular shim to get the auger centered in the pipe.

End view showing the machine pillow block bearings mounted onto 1 x 2 square tubing

Finally after some adjustment you can see the end result of the auger centered in the feed pipe.

Auger centered in pipe, cantilevered with two pillow block bearings

Auger Feed Rebuilding, Step one a DIY Record

After last winter’s experience,  I  decided to start from scratch on the auger/hopper assembly.  I varied the height several times through different burner designs.  Now it looks  like it was modified once too many times.  The other main reason to rebuild the hopper assembly is the difficulty removing the burner from the boiler because it must stay balanced.  I don’t remember exactly my thoughts at that point, I probably just had two wheels around the shop and was in a hurry.

2011 Hopper and Auger Assembly

2011 Hopper and Auger Assembly

So this fall I am rebuilding the hopper with a different auger drive system, and additional wheels and supports to make it much more robust and simple.  The foundation of  improvement in the new assembly  is the ability to draw the parts in SketchUp as well as cut the parts with the CNC. Here’s a view of the cut out parts.

The parts laid out I call the saddle, angle iron, and side alignment plate.

The parts below are the angle iron plate with the side alignment plate. The angle iron plate is tabbed to fit into the slots of the side alignment plate, this way the parts are self aligning and jigging. Adding strength and ease of assembly. This makes the welding so much easier.

Finally here is the assembly on the welding table ready to weld, note the threaded rod, which also aids in the rigidity and ease of adjustment to make sure all the pieces are square and parallel prior to welding.

Unwelded auger drive weldment ready to be welded

And finally the partially finished welded assembly, this assembly will be the foundation to cantilever the auger in the feed pipe as well as support the auger drive motor and gears.

End view of the welded assembly

The CAD designed parts combined with the CNC, combined with self jigging design for success make a nice finished assembly with light material for cost savings combined with good strength.

Feed improvments fix the LCD garbling!

The sprockets have been replaced and improved with key ways cut into the jack shaft and auger.  This allows positive feeding without slippage.  The jack shaft placement was constrained so adjustment of the chains is limited to what linkages can be removed or replaced with half links and adding a slack tension device on the slack side of the roller chain.  With this complete the LCD problems appear to be fixed.  Without proper tension the chain did not ride on the sprockets smoothly and the tension could take up suddenly adding a jerk to the system.  Without this mechanical jerk in the system the motor can work more smoothly allowing the LCD to not get the power fluctuations that garble the display.  The feed problems appear to be fixed but in the last test the unit ran for four days without fail and at this point although there is a marked improvement that time has not been surpassed.  Next on the list is the hopper extension to allow feeding of two bags of pellets.  This will allow 16 hours of run time without any software improvements.

Top view of roller chain drive of auger feed

Good test for the boiler with -5°F overnight temperature

I restarted the boiler with a friend on Friday afternoon on the 13th of January.  At present it is Sunday morning at 6:45.  Thirty nine hours since starting, in that time the temperature has dropped to a low of -5°F which is the current temperature and the fuel usage has been a total of 5 bags.  The house is still comfortable and has not shown any dip or problems in maintaining temperature.  The only noticeable differences are two things.  The lack of the oil fired boiler running which I can hear upstairs and always makes me a little twitchy.  The second difference is the temperature of my office.   My office is off the utility room which holds the furnace and so is normally quite warm after a cold night.  Today it is the temperature the thermostat is set to maintain.

A few numbers, I paid $215/ton for the pellets, so the cost per 40 lb bag is $4.30.  The hours per bag is approx. 7.8.  This will need a  longer time average to confirm but is probably a reasonably good number so in rough terms this is 3 bags per day for a cost of $12.90/day.  I looked back to see if I had a furnace run time data which I did have a limited amount.  On October 17, 2007 the furnace ran a total of 4.1 hours on a day that had a high of 51 and a low of 33 for a total Heating Degree Day of 22.7.  (Heating Degree Days are calculated as (in °F) 65-(day’s max temp-day’s min temp)/2 or to restate 65-average temp) .  Taking the furnace run time as 4.1 hours x nozzle rate of 1 gal per hour this translates to 4.1 gals usage for a total cost at $3.85 per gallon of $15.78 for one day relatively mild day.  Yesterday’s HDD calculation using a high of 29 and a low of 11 yeilds and average of 20.  So 65-20=41.  Using a simple ratio of HDD/Furnace Run time would calculate to a furnace run time of 7.4 hours per day for a cost of $28.50 per day.  Contrasting this with the pellet costs yields a savings of $15.60 for that one day.

So is that accurate?  That was a lot of math using some not very exact calculations.  The math was done correctly but Heating Degree Day calculations are notoriously rough.  Many oil companies have moved onto more sophisticated methods and of course this is just a snap shot of one day.  But as an reality check  at this point I am confident 5 tons of pellets would easily get this building through the winter for a total cost of $1075.   If I used 800 gals of oil throughout the heating season this would cost me $3080 at a cost of $3.85 per gallon.  So yeah I think the numbers are reasonably accurate if not conservative.  Wait until I try chips at a cost of $40/ton……too fun.