■ FIGURE 2
sensitivity range. The MAX6675 reads temperature changes virtually
in real time and is well worth the extra effort it entails to use.
I decided upon a semi-closed loop system. I call it “semi”
because although the stepper motor does not directly have
position output information, I do have feedback coming from the
temperature sensor mounted in the flue pipe.
For safety reasons, I also installed a manual shut-off switch to
the stepper motor. I had thought this might be necessary in case
of problems, however, I never have needed it. In any case, it is
there to give me a warm, safe feeling inside!
The software maintains the fire temperature within a user-controlled limit setting. I have found that a 50 degree tolerance
range is about the tightest control possible with the fire in the
wood stove. Any tighter a range and control problems become
insurmountable. From the display panel, you can change these
limits while the fire is burning.
The above synopsis seems simple since only three major
components are needed. On the software side, it is not that easy
because the design entails considerable pitfalls and errors that
will develop seemingly on their own. There is a lot more to
controlling the fire than simply, If temp > high_limit then gosub
Believe me, I was naive enough to think it would be that
easy. I’ll enlighten you on these pitfalls as we discuss the software.
Because this is a lengthy project, I will only go into detail
regarding the fire temperature control and closed loop feedback
software. I will give a brief description of the rest of the program’s
temperature recording, but I encourage readers to contact me for
any further details at firstname.lastname@example.org.
If you refer to the main program woodstove.bas on the Nuts
& Volts website, you will see that I have laid out the program in
sections named as follows: Constants, Variables, Setup code and
Setup subroutines, Main program, LCD display subroutines,
Exhaust damper control subroutines, Temperature subroutines,
Manual switch control subroutines, and Clock subroutines.
These can be broken down into further subroutines. For
example, the Temperature subroutine block contains fire, indoor,
and outdoor temperature routines. The clock subroutine contains
not only clock routines, but also data storage routines. In addition,
the program has direct switch control over temperature low and
high limit settings. (Please note that all discussion here will take
place using the Fahrenheit system.)
As mentioned earlier, for my application I found that a
■ FIGURE 3
tolerance of 50°F was optimal. Any tighter control and the fire will
become unstable. The variables called lowtemp and hightemp are
hard-coded in the program, but may be changed using the panel
switches in real time while the program is running. This feature
allows you to control your overall inside home temperature. If it is
too cold inside, simply raise the limits using the manual switches.
Fire Control: Closed Loop
Accurate control of the fire temperature was an involved
process and wasn’t easy to do. Refer to Schematic 2 for the fire
feedback control. The feedback diagram looks simple — and
electrically it is — however, the software must perform various
functions depending on exactly what the fire is doing in real time.
There are 14 different temperature-over-time checks that I make
and I change the exhaust damper output based upon them.
(Please refer to the separate program ExhaustDamperControl
outines.doc available on the Nuts & Volts website. This program is
simply the relevant control loop code removed from the main
woodstove.bas program so that it is easier for you to read.)
Now let’s take a look at the pertinent subroutines and label
each of the methods as I come to them. Every single one of these
14 steps is very necessary for their own reasons. One thing to
■ SCHEMATIC 1
October 2008 35