There’s a principle in hydronic heating control called “outdoor reset”, where the heat produced by the heating system is adjusted based on the outdoor temperature. The warmer the outside temperature, the less energy it takes to maintain the indoor temperature. There’s a bit more to it than that, but that’s the general idea. Outdoor Reset systems can reduce energy consumption by 15% or more versus a typical wall thermostat.
Commercially available Outdoor Reset controls for residential steam systems all lacked certain features I was looking for and were expensive to boot, so I decided to write my own using Phidgets and VB.NET. The software runs on a re-purposed laptop running Windows XP, which also hosts the home lighting control system (Insteon, for anyone who's interested). I put the system online in data acquisition mode during the 2010-2011 heating season, and gave it control of the boiler in January 2012.
Control Features
The control features of the system include:
- • Outdoor Reset Control using either time-proportional or heat loss mathematical models
• Redundant indoor and outdoor temperature sensors, with configurable sensor selection (High/Low/Average/First Good)
• Automatic sensor switchover if one of the indoor or outdoor sensors fails
• Option to fetch current local wind-chill temperature from the internet, and use it as the outdoor temperature in outdoor-reset calculations.
• Eliminates boiler short-cycling on pressure by applying a thermal lockout when the high pressure limit is reached
• 7-day, 4-period-per-day temperature setback scheduling
• 7-day, 4-period-per-day Domestic Hot Water heating schedule
• On-demand DHW heating when hot water flow is detected during scheduled OFF times
• Highly configurable – many parameters can be adjusted to tune the system to its environment
• Records peak pressure and temperature during a heating cycle
• Logging of continuous analog data, heating cycle events, and cycle history
• Automatically reverts to wall thermostat control in the event of a critical failure.
• Web-accessible thermostat-style display, interfaced via the Phidgets Dictionary.
I’m using an 1018 Interface Kit 8/8/8 and a 1051 single-input temperature sensor for my I/O.
The 1018 has the following sensors attached to it:
- • (2) 1124 Precision Temperature sensors for indoor and outdoor temperature
• (5) 1121 Voltage Dividers with 10K NTC thermistors for backup indoor and outdoor temperatures, un-tempered and tempered Domestic Hot Water temperatures, and steam condensate return temperature
• (1) 1132 4-20 ma Adapter with a 0-3 psi pressure transmitter attached
• (2) thermal switches digital input. The switches close at 180 degF and are used to report the presence of steam at various points in the system.
• (1) flow switch digital input. This switch is installed in the hot water supply line feeding the tankless coil on the boiler, and closes when flow is detected to indicate hot water demand.
• (1) 3051 Dual Relay board, 2 discrete outputs. One of the relays switches control of the oil burner between the wall-mounted thermostat and the Phidget control system, and is provided as a backup in case I have to take the Phidgets control offline for one reason or another. The other relay turns the oil burner on and off when the first relay is in “Phidget control mode”.
I created classes for the Phidgets AI, DI, and DO I/O to extend the capability of the basic I/O.
The Analog Input class extensions include:
- • Tag name, description, range and units for each I/O
• Display range, separate from the device range, so that a narrower range can be shown on the faceplate or other displays.
• Alarms for High Limit, Low Limit, and Bad PV (bad sensor). The alarms have configurable limits and can be enabled/disabled.
• Optional High and Low control limits. If used, the control software can take action when the sensor value is higher than the High Limit or lower than the Low Limit.
• Optional Setpoint control. If used, the control software can take action when the sensor value is above or below this limit.
• PV Offset allows a bias to be applied to the sensor value.
- • Tag name and description for each I/O
• A Discrete Alarm. This alarm can be configured on a per-sensor basis to alarm when on or off. The alarm can be enabled or disabled.
• Invert Input allows the raw I/O value to be inverted, often used with normally-closed switches.
- • Tag name and description for each I/O
• An Uncommanded Change alarm alerts if the output changes without being commanded to do so
The system saves data to an event log whenever a system event occurs, such as transitioning from one state to another (Idle to Preheat, for instance). Depending on the event, it may store several lines of event data. For instance, when transitioning from Idle to Preheat, it logs the event change, current outdoor/indoor/comfort setpoint temperatures, burner status, and the length of time the boiler has been off since the last heating cycle.
The attached screenshot shows the event data collected during a typical heating cycle.Continuous History Logging
The system saves analog and discrete data values to a continuous history log whenever one of the analog inputs or digital input values changes beyond a configured change threshold, as well as whenever a system event occurs. This data is stored in .csv format, and is used to generate trend charts.
The open source package “LiveGraph” is used to generate trend charts from .csv file data. LiveGraph is available for free download at: http://www.live-graph.org/.
The attached graph shows trends for the following analog inputs:
- Outdoor temperatures are blue
Indoor temperatures are green
Condensate temperature is yellow
Tempered and un-tempered Domestic Hot Water are red
Steam Pressure is purple. The system operates at less than 2 ounces of pressure, so this value is scaled by a factor of 100 so it appears with the other data in the chart.