Arduino Temperature Monitor
Radiant Floor Monitoring
My house has in-floor radiant heat installed in both the basement and garage floors. I’ve always wondered how often and when the circulator pumps run. I investigated getting some hour meters to see how much time accumulated for each pump, but most hour meters are run off of 12 Volts, and the pumps are 120 volt AC connected to 24 volt AC thermostats.
Doing some more investigation, I found an Arduino microcontroller could be used to monitor the pump status quite easily.
Arduino is an 8 bit microcontroller powered by a 16 Mhz ATMEL ARM processor. Each Arduino contains several General Purpose Input Output pins that you can use to connect to various devices and sensors.
The more I looked into the Arduino, the more capabilities I found it had. You can quite literally do anything with an Arduino!
To the Lab!
My original idea was to use an Arduino Uno to monitor the 24 volt AC that controls the relays to the pumps. I had to get an optocoupler to connect 24 volt AC to an Arduino friendly 5 volt DC signal. I purchased a dual optocoupler and started to breadboard a circuit. Once I was satisfied with the circuit, I moved it to a prototyping shield and soldered it all up.
The initial build was to include 2 temperature sensors, one colocated with each hydronic thermostat using the extra wires to the thermostats. I originally looked at using analog temp sensors, but I was concerned that the long cable runs would skew the readings. I then decided on the Dallas 1-Wire digital temp sensors. Using a single pair of wires, it is possible to power and read the sensors on a bus. You simply attach each additional sensor to the bus.
I found another blog post that showed temperature sensors epoxied to the water pipes in a solar heating set up. This gave me the idea to expand the system to monitor not only the ambient temperature, but also the inlet and outlet temperature of each zone and the boiler.
Rather than using epoxy, I had some thermal compound left over from a PC project, so I used it to thermally bond the temp sensor to the water pipe. I used zip ties to mechanically mount the sensors to the pipes. This seems to work quite well, as the temp sensors are consistent with the mechanical temperature gauges installed in the pipes.
How to monitor it all
The next step was to determine how I wanted to monitor all of the inputs. From my research, it looked like the Arduino is usually hooked up to a host PC or an ethernet sheild is used. Being the network professional that I am, the ethernet shield was my first choice.
Having decided upon ethernet as the transport protocol, I found an ethernet shield with Power over Ethernet built in! This allowed me to run just a single Cat 5 cable to the Arduino, and I didn’t have to get AC to the wall.
The most popular method of accessing data on the Arduino is to create a web server. While looking into the web server, I found an SNMP package. Once I saw I could do SNMP to the Arduino, I decided to go ahead and use MRTG to monitor the inputs. 4 birds killed with a single stone!
The Whole Setup