I live in a yurt heated with a pellet
stove, specifically a
Quadra-Fire Santa Fe
. I've grown to have a
serious dislike for pellet stoves because they're so fussy,
require constant attention and baby sitting. I was excited to find
that there are pellet stoves that can light themselves and are
controlled with a regular old thermostat. That's why I bought the
Santa Fe: freedom from having to turn the thing on and off.
Unfortunately, the reality is not so
simple because of this switch:
Even though the stove lights itself, I
still have to select High, Medium or Low manually. I can't just set
it on high and leave it alone, it has to be constantly managed based
on the the outdoor temperature. If it is too warm, having the stove
on high means that it cycles on and off frequently. That translates
into inefficient pellet burning and a premature accumulation of ash
and “clinkers”. If it is set too low, then it doesn't keep up
with the changing temperatures. The switch ends up having to be
changed several times per day as the conditions change.
So the automation offered by the
thermostat really isn't a complete solution. There are are so many
manual adjustments that must be made, the thermostat doesn't really
help much.
If I open the control box of this
pellet stove, I can see that the high/medium/low switch is just a
standard SPDT center off switch. In otherwords, given poles A, B and
C, high is when AB are connected, low is when BC are connected and
medium is when there is no connection at all between the wires. I
could easily do that with a relay.
Then I was introduced to the
Nest thermostat
and its ability to handle three stage heat. If I could
fool the Nest into thinking that this pellet stove was a three stage
furnace, I could get Nest to run the pellet stove in a far more
automated manner than I have been able to achieve.
In my dissection of the pellet stove, I
see that the high/medium/low switch has three wires: Yellow, Orange
and Blue. Three stage heat for a thermostat is a three wire job,
too:
W1
,
W2
,
W3
. I need a way to translate the three wires of the
thermostat into the three wires of the pellet speed control.
However, before I begin this project I
have several goals in mind:
- automate the selection of pellet stove feed (high/medium/low)
- no matter what changes happen to the stove, there must be a single switch to restore it back to its original dumb manual operating mode.
- any additions to the stove must be completely electrically isolated from both the thermostat and the pellet stove.
- no error state can cause damaging behavior to any other component
- don't burn the yurt down
The first thing to do is start with a
logic table. Given a set of inputs, what are the outputs that I
want? This defines the premise of the project:
- W1 , W2 , W3 are the three control wires coming in from the thermostat
- PSW is the original pellet stove thermostat white wire input.
- Bl is the pellet stove internal blue wire – engergized means run the stove on low
- Or is the pellet stove internal orange wire – energized means run the stove on high
Input | Output | ||||||||
W1 | W2 | W3 | PSW | Bl | Or | ||||
0 | 0 | 0 | 0 | X | X | ||||
0 | 0 | 1 | 0 | X | X | ||||
0 | 1 | 0 | 0 | X | X | ||||
0 | 1 | 1 | 0 | X | X | ||||
1 | 0 | 0 | 1 | 1 | 0 | ||||
1 | 0 | 1 | 1 | X | X | ||||
1 | 1 | 0 | 1 | 0 | 0 | ||||
1 | 1 | 1 | 1 | 0 | 1 | ||||
PSW = W1 | |||||||||
Bl = ~W2~W3 | |||||||||
Or = W3 | |||||||||
- “0” in this table means voltage is off
- “1” means voltage is on or high
- “X” means I don't care. While I have three input lines, not all of the possible combinations can happen. So I don't care what the output is for the undefined input states.
From this table, I can see that
PSW
follows the same state as
W1
. Since I want electrical isolation, I
will use Relay 1 to translate the Nest first heat stage into
the “
call signal
” that will start and stop the pellet stove.
Bl
gets power only when
W2
and
W3
are
both off. I assign Relay2 to
W2
and Relay3 to
W3
.
Bl
gets power
from the pellet stove's internal Yellow wire. I can feed that first
into the Relay3 switch 1 and then into Relay2 switch 1. When either
of those relays is energized, power will be interrupted to
Bl
and
Bl
will be in the “off” state.
Or
should get power only when
W3
has
power.
Or
gets its power also from the pellet stove internal Yellow
wire. Since it is already going into Relay3 switch 1, I can just
assign it to the other leg of the switch. This also ensures that
Bl
and
Or
can never be on at the same time.
This translates into this schematic:
In this schematic, R1 , R2 , and R3 are relays 1, 2 and 3 respectively that pass the signal from W1 , W2 and W3 to the pellet stove.
The " manual bypass switch " is my failsafe. Flipping this switch into the position shown reverts the effects of my internal changes to the pellet stove. The stove goes back to start/stop controlled by the thermostat, and the power level controlled by my index finger in conjunction with that infernal high/medium/low switch.
In turn, my implementation of the schematic looks like this:
This project is in progress.On the first test of the system, the Nest recognized the system as a three stage heat source, but did not run it correctly. It started heating with Stage 1, but then jumped to Stage 3 without first passing through Stage 2. I lost a lot of time speculating as to why it would do that.
Here's the Nest starting the heating. The indoor temperature was 70℉ and the goal was 72℉. The outdoor temperature was 39℉:
Here's what Nest had commanded fifteen minutes later. The indoor temperature was now 68℉. We'd lost ground trying to heat on Level 1.
Nest then skipped directly to Level 3.
Nest then skipped directly to Level 3.
It never seemed to want to try using Stage 2. In my research, I'd noticed that sometimes Level 3 head is called "Emergency Heat". Perhaps the Nest had recognized that it was losing ground and it took drastic action. Drastic action was the only thing it ever did. Perhaps the the air temperature in a yurt is just too volatile for the Nest to understand and it panics. All heating in a yurt is an emergency.
Unfortunately, that behavior was pretty degenerate as it was little different than running with a normal single stage thermostat. However, since the Nest was in "learning mode", I decided to give it a chance to prove itself. I'd give it a week to learn what to do.
Meanwhile, I'd keep hacking.
Eight Days Later
:
After a little more than a week of running the stove poorly, I got frustrated. I had studied and studied my schematic. I checked the circuits with a voltmeter, an ammeter and a divining rod. It was all correct, yet it just didn't work right.
I started to plan a new phase for this project: a finite stage machine constructed with 5V TTL logic. Why not mix some 1970s tech into my 1950s electromechanical invention and twenty-first century thermostat. I got excited about the project and starting logic diagrams when I was distracted by a sound. It was the sound of the pellet stove running on Level 2.
The last time I had heard that sound was when I last ran the stove manually. I watched carefully for 15 minutes and saw it progress through the stages correctly. I got out a video camera so I could record several hours of activity and then review it.
Lo and behold, it was working perfectly. Suddenly, the nest was saying, "I grok this furnace, I know what to do". Just like the Nest manual says, waiting a week before judging its behavior will yield rewards. I'm impressed. I'm excited.
I'm disappointed that the TTLFSM project is cancelled. What other problem in my life could I apply TTL logic to?