Heating System Monitor

by JonMackey in Circuits > Arduino

688 Views, 0 Favorites, 0 Comments

Heating System Monitor

Fusion Bd Scr Shot.png

The heating system in our house was going into a “lock out” state about once a month. When this happened the only way we noticed the heating system wasn’t working was when cool air was coming from the vents or there was no hot water. This very simple project is designed to repurpose one or more of the landline phone jacks located around the house that many people are no longer using. The jack cover is replaced with a cover containing one red and one green LED. When there’s an error the red LED flashes. When running normally the green LED is energized.

Many burner controllers (aka Primary Control) have alarm terminals. This project reflects the state of these terminals to let you know when it isn’t working. I designed a simple board to do this. You don’t need a custom board. You could build this on a prototype board.

The board was designed using Eagle. The case was designed using Fusion 360.

If you’d like to build the board, the bare board is available on PCBWay.

Disclaimer: Modification of your household wiring should only be performed by a qualified electrician. Improper modifications may cause physical harm to you and/or your equipment and may void your heating system and/or phone equipment warranties.

The Board

Board.png

As noted, this project relies on the fact that many boiler controllers have terminals to attach an alarm. These two terminals on most controllers are the isolated dry contacts of a relay. When running normally the contacts are open. When an error occurs the contacts close.

There are lots of ways of creating a status indicator with two LEDs that behave as described in the introduction (555 timer, etc.). I decided to use an ATtiny13A mcu.

The ATtiny13A can be configured to use an internal pull up resistor on any of its 6 I/O pins. As noted, the normal state on the boiler controller alarm terminals is open. One of the alarm terminals is monitored by the ATtiny13A pin with the internal pull up resistor. The other alarm terminal is connected to the board’s ground plane. In addition to being able to pull up a pin you can also configure a pin change interrupt. The interrupt handler is called whenever the state of the pin (or pins) change. The normal state of the pin is high due to the internal pull up resistor. When a boiler error occurs, the contacts close and the ATtiny13A pin is connected to ground causing the interrupt handler to be called. When the boiler error is cleared the interrupt handler is called again when the pin returns to its normal high state.

You may ask, why use an interrupt handler when you could just as easily monitor the pin state in the sketch loop? In this case it really doesn’t matter, I just decided to use an interrupt handler. If you had to monitor several pins, the value of an interrupt handler becomes obvious.

The LEDs are controlled via N-channel MOSFETs indirectly off of two of the ATtiny13A I/O pins. MOSFETs are cheap and they also ensure that no more than the maximum 40mA current per ATtiny13A I/O pin is reached, as well as the overall ATtiny13A maximum of 200mA. You could eliminate the MOSFETs if you know that whatever is being driven by the MOSFETs is less than the I/O pin maximum. If you want to use MOSFETs on a prototype board with a TO-92 package, you can substitute 2N7000 for the SMD BSS138 specified in the schematic.

I’m not going to provide step by step assembly instructions for the board. I’ve provided detailed assembly instructions for other boards such as my Hiking Data Logger.

The bare board is available on PCBWay.

If you want to build just the most minimal circuit on a prototype board I’ve enclosed the schematic “Min Boiler Monitor.pdf”. The minimal circuit drives a single pair of LEDs without using MOSFETs. The circuit also assumes 5V will be provided somehow. The same sketch written for the board will work on this minimal circuit.

Load the Software

The Boiler Monitor sketch is available on GitHub. Download the entire Arduino-Tiny repository because you’ll need a file in the libraries folder. The sketch to build is BoilerMonitor.ino in the BoilerMonitor folder.

This sketch requires MCUDude’s MicroCore package. You can add this package by appending the URL below to the end of the “Additional Boards Manager URLs” in the preferences panel

"https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json"

Also in the prefs, set the “Sketchbook location:” to point to the Arduino-Tiny folder (the folder that contains both the BoilerMonitor and libraries folder.)

From the Arduino Tools menu, setup the board options for the ATtiny13 as shown below:

Arduino Settings

Using any 5V ISP, such as an “Arduino as ISP” or my AVR SD Hex Loader ISP, connect a 2x3 ICSP cable to the ICSP connector on the Boiler Monitor board. Note that the ISP will power the board via the ICSP cable.

Note that because the ICSP connection is only needed once, I don’t install a 2x3 ICSP header on my boards. I instead use an ICSP cable with pogo pins on one end and just hold the cable in place while performing any ISP operations.

Arduino Settings

After setting the ISP and Port from the Arduino Tools menu, select Burn Bootloader. If this is successful, upload the sketch.

If the sketch loads successfully the green LED should light up. Pressing the test button will make the red LED flash.

Print the Case

The case is composed of two parts. Both parts are printed using draft quality, 80% fill, support everywhere.

Boiler M Bottom.stl
Boiler M Top.stl

Install the LED Light Guides

There are two LEDs on the board for testing. When the board is mounted in its case the case needs to be fitted with two 2mm clear acrylic light guides. (source)

Note: The 2mm rods I purchased were slightly oversize. I had to use a 2.2mm drill bit to ream the holes.

Temporarily place the monitor board within the case. Insert a length of acrylic rod in one of the 2mm holes above the LEDs till it contacts the LED. Using a flush cutter, cut the acrylic rod. Do the same for the remaining LED hole. With fine sand paper mounted on a block, sand the ends of the rods flat. Remove the board from the case. Using a scrap piece of 3D printer filament, mix up a small amount of clear epoxy. Use the printer filament to dab a small amount of epoxy in each LED hole. From the inside of the case, insert the prepared rods till they are flush with the top of the case. Carefully wipe off any epoxy on the case surface. Put the case aside till the epoxy cures.

Assembly LED

Once the epoxy cures, cut pieces of heat shrink tubing to mask the surface of the rods within the case, only exposing the ends that face the LED. Shrink the tubing.

Remote Status

Status Panel.JPG

As noted in the introduction, this project repurposes one or more phone jacks as status indicators. In my case the jacks are installed within US standard 1-Gang electrical boxes. I chose not to remove the original 6P4C RJ12 connector (see last picture in step.) I created an adapter using an RJ12 6P6C plug with a short piece of Cat5 wire. As noted in the photo below, you need a minimum of 3 wires, preferably 4.

4P4C

Locate the wire serving the phone jack to be repurposed and disconnect it from the telephone network interface.

Note about US phone jack wiring:
When wired correctly these lines are “home run”, meaning a wire for each jack runs back to a common location in a star pattern. In incorrectly wired homes some or all of the jacks are daisy chained together. Hopefully you had a qualified electrician or, if your house is old enough, it was wired by the phone company. Older homes in the US will generally have several 3 or 4 wire cables all converging on the network interface located in your basement or mounted on the outside of the house.

You can use whatever color code you desire. Because my house has a distribution panel in the basement with an RJ45 connector for each phone line it was easy to disconnect the phone line by removing its patch cable. I then made a custom patch cable from RJ45 to a RJ9 connector on the boiler monitor board using a short length of Cat5. The diagram below shows the three connector types used at my house and the color codes.

Color Codes

Patch Cable:

Patch Cable

If your phone jack is mounted in a 1-Gang box as shown below, you can mount the LEDs on a blank box cover using epoxy. Because the blank cover isn’t very thick, I used two thin pieces of wood to serve as a spacer so that the LEDs don’t extend too far on the cover face.

Status Panel Wiring

I suppose if you don’t want to change the box wiring at all, you could make something that you plug into the existing RJ11/RJ12 jack and mount it to the existing cover with velcro or double stick tape. Note that doing this is a bit risky. If someone plugs this into a live phone connection one or more of the LEDs will burn out. If you look at the color code I used, I avoided the blue/white blue pair because on a live phone line these are energized to around 48V. Depending on the age of the phone lines in your house any of the wires may be energized.

Boiler Alarm Connection

Boiler Alarm Conn.JPG

You need to run a 2 conductor wire between your boiler controller and the monitor board. I used shielded 2 conductor 22 AWG wire that I had left over from another project. Anything that is approved for low voltage house wiring such as 2 conductor thermostat wire, alarm wire, or even Cat5 wire. Note that if you use Cat5 wire it may freak out the heating company service technician. Be neat about it so that it has the look of a professional installation.

Connect, Assemble and Mount the Monitor Board

Assembly Main.JPG

Connect the 2 conductor alarm wire to the alarm connection as shown in the picture below. It doesn't matter which alarm wire goes where on the terminal block.

Board Wiring

Enclose the case around the board using (4) M2x8 pan head screws.

Connect one or more of the status LED wires to the RJ9 connectors.

Mount the Case to the wall or cabinet using a strip of 25mm wide Velcro. (source)

Conclusion

I hope you found the information contained in this instructable useful. Send me a message if you have any questions.

FYI - We haven’t had any issues with the heating system for a few months.