1) The first condition in the STABLE subroutine is a simple bypass:
If temperature = tempold then goto StableBypass
Pretty much self-explanatory — bypass around the subroutine
if the fire temperature is stable or constant.
2) The second condition is based upon time and temperature:
If (tempOld - temperature) >=3 then
The fire temperature is falling within the tolerance range, so
action must be taken to prevent the oscillations. The temperature
has cooled three degrees in 10 seconds, so open the damper
one step (remember this subroutine runs every 10 seconds). This
is a fast cooling-off period.
3) The third condition is also time based:
If (tempOldMinute - temperature) >=6 then
The temperature has cooled six degrees in 60 seconds, so
open the exhaust damper. Note this loop runs every 10 seconds,
so 6 x 10 iterations = 60.
This is a slower cooling-off period, but action is still required.
Notice the second state has cooled three degrees in 10 seconds
and in this check, the temperature has cooled six degrees in 60
seconds (one degree in 10 seconds).
4-5) The fourth and fifth conditions are the opposites of cooling
off — they are for increasing the temperature.
If (temperature - tempold) >=3 then
‘Temperature has risen 3 degrees in 10 seconds
‘ so close damper
If (temperature - tempOldMinute) >=6 then
‘Temperature has risen 6 degrees in 60 seconds
‘ so close damper
1) The first state condition is simple, but necessary:
If exhaustopenlimitbit = 1 then skip
If the exhaust damper is already wide open, skip this
subroutine. The damper cannot be opened any further; either
the fire is going out intentionally or it needs wood. A buzzer
could be added to warn of this condition.
2) The second state condition actually opens the damper one
step position, depending on its temperature:
If temperature < lowtemp and exhaustmovedopenbit = 0
then gosub exhaustopen
I was naive to think this was the only code necessary to
control the fire temperature. The exhaustmovedopenbit is used so
that the code does not try to open the damper twice within a
10-second period (possibly called by a different IF statement).
This line opens the damper in one step increments.
3) The third condition is directly time based:
If temperature = tempold and temperature < lowtemp
and AttemptsLow >= 6 and exhaustmovedopenbit = 0 then
AttemptsLow = 0
Do the above if Temperature is below lowtemp limit and has
also not changed for one minute (six loop iterations x 10 seconds).
It is necessary to raise the temperature if it is too low. It may
be out of wood, but until the damper is wide open, we should try
opening it one stepper position every minute.
Please note! This code is not a direct duplicate of the
TempLowCheck subroutine. This is because the fire can increase
its temperature much more quickly than decreasing it.
Remember, it is more dangerous having a hot fire than a cold one.
1) The first state condition is a safety condition and not used in
the templowcheck subroutine:
If exhaustopenlimitbit = 1 then gosub exhausttohot
The exhaustopenlimitbit is set to 1, showing us the damper is
wide open, yet the fire is too hot over the temphigh limit. The
subroutine exhausttohot will close the damper 20 steps for a
quick reduction in temperature.
Exhaustopenlimitbit = 0
For I = 1 to 20
2) The second state condition is the same as the templowcheck
subroutine condition, but is based on a high temperature:
TEMPERATURE SENSORS AND
In the process of my design, I had numerous temperature sensors left over, so I decided to add indoor and outdoor
temperatures to a wall-mounted display. Daily outdoor
temperature data is stored in the Atom’s EEPROM. A DS1302
real time clock was added for temperature over time considerations, as well as data logging of daily temperatures. For a
list of all components and exactly what this project consists
of, I encourage you to download the separate file “Features.txt”
from the Nuts&Volts website ( www.nutsvolts.com). This file
will show you all the items my wood stove controller consists
of, giving you an idea of what this project entails. Indoor and
outdoor temperature readings are not necessary for fire
control, so you may consider these as additional features. A
real time clock is also not strictly necessary, but it makes things
a lot easier. As you will see, many fire temperature decisions
are based upon the rate of change over time.
October 2008 37