A friend of mine recently installed a masonry heater in his home along with an attached oven and hot water tank. He asked me if I could help him automate a water pump that passes hot water from the masonry heater to his hot water heater using temperature readings from the masonry heater as well as logging these temperature readings for later analysis.
The rest of this page contains details on how we automated his system including Arduino code, a data visualization web app, and a parts list.
Following are descriptions for each of the major modules:
- We attached a monochrome 16x2 LCD for easy local readings.
- You can cycle through the temperature readings using the left and right direction buttons.
- The LCD's backlight powers down after a minute of unuse.
- Using Adafruit's LCD backpack and corresponding library, assembling and integrating an LCD was painless.
Arduino Mega + Ethernet Shield
- We choose the Mega to ensure we had enough pins for future expansions.
- The Arduino is loaded with a web-server that serves system uptime, pump state, and temperature readings both in HTML and JSON formats.
- The web-server uses DHCP.
PowerSwitch Tail 2
- To control the water pump we decided to try out the self contained PowerSwitch.
- Interfacing the PowerSwitch with the Arduino only requires two pins, GRND and a digital pin to control the relay.
- The pump is hard-coded to turn on when any of the thermocouple sensors detect a temperature in excess of 180 degress Fahrenheit.
- In order not to thrash the pump we only check once a minute to see if the pump's state should change (although flucuations in and around 180 degrees are probably
not that great).
- We went with four thermocouples to measure the temperatures in the oven, masonry heater firebox, water tank, and chimney.
- I also added an analog temperature sensor to track the ambient temperature and make sure the Arduino and sensing array don't get too hot!
- Adafruit's MAX31855 boards and corresponding library made interfacing with the thermocouples easy, which is a good thing since dealing with the sensitive thermocouples was a pain in the butt.
Data Logging + Visualization
- Originally my friend simply wanted the temperature readings served as HTML which he would scrape with a logging tool like Mango.
- I added JSON support and whipped up a clientside data visualization app as well called "dash" short for "dashboard" not "dachshund".
Here is a list of all the hardware used above as well as links to providers we used and recommend:
- 4 x K-Type Thermocouples
- 4 x MAX31855 Boards (now includes 0.1 uF capacitors)
- PowerSwitch Tail II
- Arduino Mega
- Arduino Ethernet Shield
- Adafruit LCD Shield Kit
- TMP36 Analog Temperature Sensor
Passive PoE Injector Cable Set (if you are going to go that route)
Software and Dash Demo
The code for the Arduino web-server can be found on github. The dash app can be found in the same repo. An example dash instance (running off of simulated data) is also available if you would like to see it in action at demo-dash.herokuapp.com
Authors and Contributors
Chris Cacciatore (@cacciatc)
Support or Contact