This past summer my wife and moved into a new house with a split HVAC system. Hot water rads for heating and a traditional A/C system for cooling. A few days after we moved in we replaced the existing thermostat with a Nest. It's a great thermostat but at $250 it's quite expensive.
This winter we have had trouble getting the heat to be even through out the house. To cold in one too, turn the heat up, then too hot in another. The solution is to split the hot water rads into multiple zones and place a thermostat in each of these zones. However I can justify spending $250 per zone on a Nest.
A little research led me to the Arduino. I actually have an education in software engineering but never took a job in the field. I've been out of practice for about 10 years now and never programmed much in C, just the usual 'Hello Word', but figured I could give it a shot.
Project Goals
-
Have a separate thermostat in each zone instead of just a temperature sensor. A thermostat in each zone will allow much better control allowing each zone to run on its on schedule.
-
Touch screen control. Having just a small touch screen will allow the easiest 'integration' in the rooms where the thermostats will be placed.
-
Calculate the time it will take to reach the current set point. This is necessary for the schedule to be followed correctly and have the room up to heat by the requested time. If the schedule calls for the temperature to be 22c at 8 am then the system will need to be turned on before 8 am.
-
Have a 'head' unit that can monitor the status of each zone controller and control the zone valves that will actually control the HAVC system.
At this point I have purchased an Arduino Uno, Adafruit TouchSheild v2, Dallas 18B20 temp sensor and the other necessary parts to get the first part, a zone controller, of the project up and running.
The basis of the code is in place for the zone controller. At this point it does almost everything I would expect of it however I few functions still need to be added. Since the program is running on a Uno I am quickly approaching the limits of its memory but with some code clean up it can be done.
Still to do
-
Add XBee into the system. The plan is send data back and forth with the 'head' unit. Time information and outdoor temp will be sent from the 'head' unit to each zone controller and the zone controller will send system status/requests to the 'head' unit.
-
Add minute-by-minute control. This will allow the Project Goal #3 to work properly. Currently the program only runs on an hour-by-hour basis.
-
Add cooling functionality. Since I have a split HVAC system it will be a challenge but it will be done one day.
Here is the hardware as it stands now; a little clean up needs to be done to the screen. Ignore the red on the screen as it's just being used to aid in the layout of the screen.
My biggest issue right now is trying to get the touch screen working properly. I am having some trouble getting it to accept a 'single' touch. That is, every time I touch the screen at least 2 touches are registered and it drives the set point up/down very quickly.
I will post the code below over a few posts to beat the 9500 char limit.
Any questions, comments, concerns, or help….I am all ears.
Steve