Control of the Heating, Ventilation
and Air Conditioning System:
The Thermostat Node
There are two HVAC systems in my home: the bedrooms are taken care of by a heat pump in the attic, while the main floor and basement are handled by a gas fired furnace. By having separate systems, I can shut down the HVAC in the unused portion of the home, which saves energy. Until now, the upstairs heat pump was controlled by a single low voltage X-10 relay (which allows simple On/Off control), and the downstairs furnace is controlled by a programmable setback thermostat (no X-10 or remote control). It seemed natural to one day unify the control of these two major appliances with the home control system. For this to occur, I would need to build two thermostat nodes that talked to the central Home Automation controller. I finally found the time during the Spring of 1999, and started construction on the thermostat for the main (downstairs) HVAC unit.
The thermostat node incorporates a 20x4 backlit LCD panel, three pushbuttons, and one full spectrum LED on the front panel. The three switches allow the user to navigate the user interface, where one switch selects the menu item, and the other two provide a capability to modify the quantity (set point, mode select etc.). Any of these quantities can of course be controlled from the GUI on the main PC. The full spectrum LED serves as the indicator of the current heating and cooling mode. For example, red means heating, blue means cooling, green means fan only etc. In addition, if there is 485 network traffic, it will flash off briefly so I can tell the network status.
The thermostat node during development. The LCD panel is a 20x4 backlit unit,
and the LED is full spectrum allowing it to indicate a wide range of colors. Note that
the display reads: "Thermostat Node", the time, the inside temperature (71F),
and the outside temp (63F via the weather node).
The photo above shows my favorite method for construction. I first start with a plastic 'clamshell' style case. This case has four parts. The main two are the top and the bottom parts of the clamshell (only the ivory top is shown in the above picture). In addition, there are two panels forming the front and back (black panels on the end of the circuit board on the left above). The main perf circuit board is fastened to the front and back panels with small metal angle brackets and screws. The panels can therefore serve as feet when the circuit board is placed onto a table. One is also able to easily access the front and back of the circuit board. As a rule, any connections to the top and bottom clamshells must be done with removable cables (rainbow ribbon cable in the photo). This wide open design allows easy access to any component, and the case can easily be closed without messing with standoffs.
The circuitry of the thermostat node incorporates the following components:
- Main controller in the form of a PIC16C77 running at 14.31818 Mhz.
- Temperature sensor and temperature watch dog in the form of a Dallas Semiconductor DS1620. This communicates with the controller via a serial protocol, sending it temperature data.
- Support for the Dallas 1-Wire interface (DS1820 devices) so that many other temperatures in remote locations can be monitored.
- Real time clock in the form of an EPSON RTC-65271. This has a battery backed clock and non volatile RAM to store information such as set points and run time.
- RS485 network interface with a MAX487. This connects to the home automation network for data and control.
- Three relays to control the gas furnace's heat, cool and fan functions.
- A hardware temperature watchdog/override circuit using the DS1620 as temperature sensor.
- Miscellaneous drivers for the LEDs, relays and LCD backlight.
Circuitry of the thermostat node. Note the integral battery holder on the real
time clock chip (bottom left). One battery is installed, the other is not. The
ribbon cable on the right is going to my PIC emulator (for fast program
development), and the one on the right goes to the front panel.
The hardware temperature watchdog circuit uses dedicated outputs from the DS1620 to protect the system. This latter chip has settable discrete high and low limit outputs. If the temperature should exceed 90F, the 'heat on' relay is disabled. On the other hand if the temperature should go below 50F, the 'cool on' relay is disabled and the 'heat on' relay is enabled. These functions prevent temperature overheat or freezing of water pipes should the thermostat node hang while the house is unoccupied for a long duration. In addition, these features serve to protect the home even when the thermostat node is erroneously set up.
In addition to the DS1620, the thermostat node has support for the Dallas DS1820 which uses the '1-Wire bus'. This system allows me to scatter temperature sensors around the house by running just two wires to the locations. Using this system, I have a temperature sensor on the evaporator coil outside of the home, and temperature sensors in the HVAC air handler to determine temperature rise or drop. The latter quantity may help me determine the overall health of the system (more details below).
Providing more intelligent control via the home automation PC has several advantages, one of which is energy savings. Since one of the heating/cooling zones is a heat pump, knowledge of the outside temperature will help in reducing energy usage. For example, when temperatures are very low (<10F?), I can shut off the heat pump and run only on resistance heat since the efficiency of the heat pump will be so low under those circumstances. Similarly, if its is warm (>45F), I can prevent the resistance backup heat from turning on and let the heat pump bring the house temperature up slowly.
Another source of savings is the turning down of the systems when we are away from home. This occasion is signaled to the Home Automation System when the alarm is armed during the day. For example, with the help of the power node, the power consumption of the main air conditioner was determined to be about 5kW. Power can cost as much as 9 cents a kWhr during the day on weekdays (and be as low as 2 cents per hour at night). Thus a savings of as much as a dollar can be accomplished without us having to walk to the thermostat to turn it down when we leave. Upon return, the Home Automation System starts the HVAC units as soon as we walk into the door.
The Home Automation system 'maps' the HVAC system to an X-10 unit (E-13). When an 'ON' command is received for this unit, the set points are changed to 70F for heating and 80F for cooling. An 'OFF' command resets the set points to 65F and 85F respectively. This latter setting represents the 'setback' condition. Subsequent 'DIM' commands moves the set points one degree lower and 'BRIGHT' commands moves them one degree higher. With this feature, I can control the HVAC system in a variety of ways, including any phone and my watch.
The above screen shot shows the window that was created for the thermostat node's user interface. In normal operation, the window is reduced in size such that only the top left portion (set point, current temp and status) is visible. This was necessary because of the limited available space on the screen, and allows an informative screenful from any TV in the home (when tuned to the PC's channel). If more information on the HVAC system is needed, the user can zoom the window out and the above image results.
Starting with the top left of the window, the current set point range is visible (here 70 to 80 degrees). If the system is in Auto mode, cooling will occur if the current temperature goes above the top set point, and heating will occur if the current temperature is below the bottom set point. The current HVAC status is also visible, here shown as 'Idling', thus no heating or cooling is currently occurring. If the user presses on the 'Up' button, both temperature set points are increased by one degree; the opposite occurs if the 'Dn' button is pressed. Moving below that is shown the current 'Mode'. This will normally be 'Auto', and the user can query the thermostat node, or set it from this window. In the top right, the output of the 1-Wire interface units scattered about are shown. The 'Outside' is the temperature at the condensor/compressor unit outside of the home; the 'Intake' is the air temperature before the heating/cooling air exchanger; and 'Output' is the temperature after heating and cooling. Below these quantities are the current cumulative heating and cooling times.
Over the next few months I hope to find the correlation between the temperature drop at the air handler and the outside temperature (during cooling). This will allow me to trend the health of the system in the coming years. For example, a uncharacteristic increase in temperature drop may mean a clogged air filter. On the other hand, if that temperature drop is reduced, it may mean that the unit needs a charge of refrigerant and has reduced cooling power. Similarly, I may be able to look at the performance of the system while heating.
In the initial few days of use I have noticed that the temperature drop thru the air handler is about 17 degrees F when the outside temperature is 85F, however if the outside temp cools to 74F, I observer a 19 degree drop. This makes sense because a lower condenser coil (outside) temperature means more heat can be rejected to the environment.
A month after installation of the thermostat node, I added two 1-Wire devices to the heat pump in the attic to track its performance, and a sensor in the attic itself. Acquisition of this data will help me fine tune the operation of the system from the point of view of energy savings. For example, at some point it will become too cold for the heat pump to be effective, and I should just run on the electric resistance heat. Using the power node and the temperature data, I will be able to calculate this temperature. I will eventually build a control box for the heat pump so that I can have centralized control of both HVAC units. The energy analysis is in the section below.
These additional sensors, pushed the length of the 1-Wire bus to
100 feet. This caused some problems with the high speed protocol
(pulses a few useconds in length) used on the 1-Wire bus. To
this, I had to actively drive the bus while clocking out the command
address. This is not following Dallas' recommendation of using
4.7k pullup to let the bus float high. By doing this, I was able
to obtain sharper and more controlled waveforms during the portion of
that the PIC controls the 1-Wire bus.
Analysis of the Heat Pump DataAfter collecting data for about two years, I was able to characterize the heat pump's operation. The data is graphed in the chart below:
Temperature rise of the heat pump (vertical scale) vs. the outside temperature (horizontal scale).
Note that the efficacy of the heat pump lowers as it gets colder outside. This is because it is more difficult to extract heat from the environment as the temperature drops. The equation of the first order curve fit is shown in the bottom part of the chart. This data was taken during the winter of 1999-2000. During the summer of 2000, I had the refrigerant refilled. The resulting improvement (yellow and pink dots) is noticeable. This chart will allow me to track the overall health of the unit. If the current operating point is much below this line, I know the system needs service.
The above data, and the power draw measured by the power node allows us to derive a quantity relating the economy of the system : Watts per degree rise. Thus is the amount of power needed to increase the output temperature of the heat pump by one degree. If we plot this versus outside temperature, we can find the economical balance of the system.
Cost per degree rise (vertical) vs. outside temperature (horizontal).
The above data on Watts used includes an estimate of the power used during periodic automatic defrosts of the outside coil. When this occurs, the supplementary electric heating coils are turned on, and the system is operated in Air-Conditioning mode. This pumps heat from the inside to the outside unit to melt any accumulated ice. The supplementary electric heat is two-staged, with a total power of about 16 kWatts. The characteristics of this heater is 253 Watts per degree rise. Thus in the region to the left of the vertical line, it is more economical to operate the electric heater, and shut off the heat pump's compressor. This configuration is known as 'Emergency Heat' on the heat pump's control.
Based on the chart above, we can see that at approximately 11F
temperature, we should switch from normal operation to Emergency
In reality, the break even point is a little to the right of that
the above estimate of cost does not include wear and tear on the
It is more economical to shut off the compressor at a higher
to reduce its total operating time. For this reason, I have
the region of 15-20F to shut off the heat-pump for our system (see
below for an update).
January 2009 Update:
On a very cold night I decided to do an expermiment, and switched from heat-pump to electric furnace only (so-called "Emergency Heat" on a heat-pump thermostat). The graph below shows the results. The switch over occurred at 3 am. The outside temperature remained fairly constant, and was 9F (heat-pump period) to 8F (electric furnace only). The intake temperature averaged 63F, showing that the inside temperature did not change appreciably over this period.
Plot for analyzing break-even point for heat-pump vs. electric furnace.
Light blue=heat pump intake temp, Dark blue=total power, Green=Outside temp.
Inspection of the duty cycles readily tell the story, during this
experiment, it was more efficient to use the heat-pump than the
furnace. Here are the actual numbers: During the heat-pump
period, the average power was 5.14kW ( (2*16.5)+8*2.3)/10 ), while the
average power for furnace-only was 11.42kW ( (3*0.5)+15*13.6)/18
). This shows that even at a cold temperature of 8F, it still
makes a lot of sense to use my heat pump. Note that this does not
include the cost of wear on the mechanical parts.
Energy Analysis of Gas Furnace
|Cost of natural gas||1.17
power (winter night)
power (summer day)
operation (gas dominates)
- Source Code (written in C, compiled with CCS's Compiler)
- Schematic in pdf format
- Dallas Semiconductor
- Gas usage rates
- Power usage rates
Long term update
- Late Spring 1999 - Construction was started.
- August 1999 - The unit was installed for continuous duty.
- September 1999 - Three more 1-Wire temperature sensors were added. The track the attic temperature, and the heat pump intake and exhaust temps.
- November 2000 - Added energy analysis of heat pump unit.
- May 2003 - Changed PIC to FLASH (used to be windowed type). Updated schematic and source.
- 2004 - Found note characterizing inaccuracy with older DS1820 units. A problem I have seen with the older units that I have. Link here.
- January 2005 - Energy Analysis of main furnace (see above).
- January 2009 - Energy Analysis of heat pump.