Automatic Home Humidistat

Hemi345

Senior Member
There's a saying in Colorado, "If you don't like the weather, wait 20 minutes." So keeping my home at the right relative humidity (rH) was a challenge. I had a "whole house humidifier" installed when our home was built but it had a manual humidistat. Since it can be 70°F one day and 30°F the next during the winter months, the rH level was a moving target. If I set it too high, condensation would develop on the windows and if left too long, mildew would form. If it was set too low, dry skin and enough static electricity that you risked zapping the end of your finger off turning on/off the lights was a problem ;) When the manual humidistat bit the dust, I thought this would be the perfect opportunity for a PICAXE project to automate our homes rH.

The old humidistat was mounted in the return-air ductwork on the furnace. Basically it would measure the rH of the air as it traveled from the rest of the home towards the furnace to be heated/cooled. My plan was to design something that fit in that space and make it easy enough that the rest of my family could use it. In order to make this automatic, I needed to measure the temperature outdoors so the home rH was correctly matched. There is an established table for indoor rH levels to temperature, they are:

Outside Temperature & Recommended Relative Humidity %
---------------------------------
RHzone tempF rH TriColor
---------------------------------
6 +40°F 45% Red
5 +30°F 40% Orange
4 +20°F 35% Yellow
3 +10°F 30% White
2 0°F 25% Green
1 -10°F 20% Blue
0 -20°F 15% Purple
---------------------------------

I have added two additional columns to this table, RHzone and TriColor for my application. The RHzone is a pointer to the registers of the EEPROM that store the rH values. The colors are for an RGB LED that indicates what "zone" the system is currently operating in.

The major components of this project are:
PICAXE 18M2+
SAA1064 I2C 7 segment driver
Honeywell HIH-5031 humidity sensor
Dallas/Maxim DS18B20 temperature sensor
Crydom LC241 solid state relay for switching on/off the 24VAC water solenoid on humidifier
two-digit 7 Segment display
5V regulator (for PICAXE/SAA1064/etc)
3.3V regulator (for HIH-5031)
Red LED (for indicating when 7seg is displaying temperature)
Blue LED (for indicating when 7seg is displaying rH)
RGB LED (for indicating when water solenoid is on and which rH zone the system is operating in)
1 push button for cycling 7seg display up
1 push button for cycling 7seg display down
1 push button for configuring/saving custom rH levels

Since the water solenoid for the humidifier operates on 24VAC and is only on when the furnace is on, I figured this was a good power source for this project. I used a bridge rectifier and voltage regulator to get about 10VDC to send to the project. From there, I stepped the voltage down again to 5V for a majority of the components and 3.3V for the humidity sensor (which could very well have been run at 5V).

When the furnace blower turns on, the 24VAC source is active, thus the PICAXE is powered up. The PICAXE immediately starts reading the temp and humidity sensors but waits about 20 seconds so it has a more accurate rH reading. This project is down in the basement and the humidity level down there is usually 5-10% LOWER than the rest of the home so waiting 20 seconds lets the humidity sensor get a reading from the air that is upstairs on it's way to the furnace to be heated (or cooled in the summer). At this 20 second reading, it determines whether or not the rH is at the target levels. If it's too low, it turns on the water solenoid (the RGB LED will light with the color of the current temp/rH). This check is only performed once on each cycle of the furance.



Led on the left is the tricolor, led in the middle is red and the one on the right is blue. The button on the left is the configuration button, the one in the middle is for moving up, and the one on the right is for moving down. The 3 pin connection on the top left is for the programming cable, the two pin connection at the bottom is for powering the device on batteries when the furnace isn't running (e.g., if I want to adjust the rH level while the furnace is off -- I made the video with the device powered on batteries). Also a rocker switch is present as a manual override to turn the whole thing off (if needed).

Here's some more pictures and a video of it in action.

In the video, I press the up button and toggle through three options. The first that is shown, is the temperature (49°F) and the middle red light is on to indicate temperature. Then I toggle it to relative humidity (rH) which is 29% and the blue light is on to indicate rH. Then I toggle it to the power supply voltage (Pr) which is 48 (read as 4.8V, the red and blue lights are off). Then I toggle it back to temperature (tF). Then I hit the configuration button (CF). This is so if I find the recommended humidity level is too high or too low, I can adjust it. First it shows the temperature zones (middle red light is on). The RGB LED is blinking to indicate it is in config mode. I cycle through the different zones going down. The tricolor LED change colors to also indicate the zone. When I choose a zone (6) for 40°F, I hit the config button and it shows me the target humidity level (which for the video was 35% not the recommended 45%) and the blue light comes on. Then I can use the up and down buttons to adjust it by 1% steps. When I have it where I want, (I just go down and back up to 35%), I hit config button again and it saves the rH setting to the EEPROM in the 18M2+. Then the little swirly animation is when it's checking the temp and humidity levels. It displays what zone it is now operating in (6), and the red light in the middle comes on to tell me what the display is showing (temperature) and since the RGB LED is still on, that means the water solenoid for the humidifier is active so it's adding humidity to the house (because the humidity in the house is currently 29% and the target I saved is 35%). Off camera, I changed the target rH back to the recommended 45%.

The temperature sensor is connected to the project using about 30ft of CAT5E cabling. The sensor itself (and 4.7K pull up resistor) is 'housed' inside a little plastic bottle and sealed up with silicone. In the picture, you can see it fastened to a fence post outside my home.

Things I would have done differently:
- Simplify the powersupply. I initially designed it so I could use a dual anode/common cathode diode for the dual power sources (10V one side, 4.5/4.8V battery on the other), but the voltage drop through the 5V regulator was too much to power the device on batteries, so I ended up adding another diode for it and bypassing the dual diode and VR.
- I want to redo the faceplate out of some stronger/thicker plastic. The white plastic used isn't strong enough to stay flat and has bowed out because the ductwork isn't flat that it is attached to.
- I maybe could have used a three or four digit 7-segment display, but I was concerned about fitting all of this in the existing hole in the ductwork where the old humidistat was. Also, I initially thought I was going to design a custom PCB for this ($$) but decided to try Veroboard (my first project on it!).

Things since that I have done:
- I have added labels to all the buttons and a little instruction "sticker" for how to operate it (not pictured).

- I have added is the ability for this project to send stats to my PICAXE webserver (a 14M2 and Wiznet module) so I can see from a web browser what the last reading/mode was for the humidistat. When the humidistat does it's ~20sec check, it sends this data to the webserver where it is stored in an EEPROM. Here's a screenshot of the webpage:
 

Attachments

Last edited:

Axel87

Senior Member
Very nice project!
Live in ND, same temp/humidity issues would like to try this someday.
Thanks for sharing
 

Hemi345

Senior Member
Thanks Axel.

A while back, I worked on my PICAXE-powered webserver to display the stats in a graph and with some history. The stats are logged each time the furnace kicks on. In the Winter, I get about 4-5 months of stats on the 512K EEPROM (using the first 1024 bytes for the webpage code) before it rolls over. Here's what it looks like for the last day and a half:
 

Attachments

Top