Forced air HVAC Smart Pseudo-Zoning

Overcome temperature imbalances in homes with forced air built before modern HVAC design using a variable speed booster fan.

Similar projects worth following
This project attempts to fix areas with poor conditioning in homes retrofitted with forced air HVAC by controlling 0-10V booster fans on weak zones. Older homes often don't allow for an optimal duct layout and options for supplemental heating / cooling are not cheap.

The requirements for the hardware are:
1. Monitor 3 24VAC Thermostat lines (heat, cool, main fan)
2. Monitor 2 or more temperature sensors (1 near main thermostat, 1 in area of weak conditioning)
3. Control a PWM signal for 0-10V booster.
4. Close the Main Fan circuit to override the thermostat to turn the fan on.

HVAC takes time to cycle and feel the impact of changes, so it would be good to collect data vs attempt to do things by feel.
5. Log thermostat, temperature, PWM and Override signals.
6. Monitor fan tach signal and alarm / log if the fan is not spinning when commanded.

This has been a project I've been cooking up in my brain for a while after hearing "You can't fix a bad design with a booster fan" when discussing how the upper floor of my bungalow gets warmer than the lower floor. Before the obvious is assumed, I've done excellent insulation but the heat differential in the house is present in all seasons because the air stratifies and there is insufficient draw from a return duct in the upper floor. During renovation I've placed in the highest location possible based on a recommendation from an HVAC contractor.

I've installed a Fantech 6 inch booster fan in the return duct and have proven that this fixes the issue by running it manually on a constant basis with the main furnace fan. That is similar to how commercial buildings are controlled but for residential purposes it is a little wasteful. The two fans should always be running together but they do not have to be running 24/7.  Ideally we are calling them when the thermostat calls for heat / cool.

Additionally the system should be able to trigger the main furnace fan so the combined system can redistribute the stratified air. In a cooling season, this would eventually trigger the thermostat to call for conditioning. In a heating season it would just be actively fighting the temperature differential, potentially reducing the need for heating by redistributing the warm air to lower floors.

I expect that the need for 'boost speed' from this fan may be different during winter vs summer vs shoulder seasons. Also, while the house is vacant, the temperature differential is not so much of a concern. In order to avoid wasting energy and reduce cycles on the system, actively fighting the temperature differential should only be done when needed.

Also the inline fan services my bedroom so I would want to place some speed / noise / cycling constraints on the system at different hours of the day. This is why I'm not just doing this with a relay.

That's a brief description of the project goals. I'm still a bit of newbie when it comes to low level electronics but I've made some decent progress with this. I'm hoping the Hackaday community can help me out with the last few bits and bring it home.

Thanks for stopping by.

Adobe Portable Document Format - 75.35 kB - 03/10/2022 at 21:54



overally sys diagram

Portable Network Graphics (PNG) - 282.46 kB - 03/09/2022 at 18:35


  • 1 × FreeTronics EthereTen Arduino Clone with SD Card and Ethernet built in.
  • 2 × DS18B20 Temperature Sensors
  • 1 × 0-10V Inline Fan, Ex: Fantech EC series

  • Updated Picture and Schematic

    EcPc03/10/2022 at 21:59 0 comments

    Went and showed this to my co-workers with a bunch of old images and information... how unprofessional... Here's updated content:

    New board
    New schematic:

  • We are in business.

    EcPc12/06/2021 at 02:36 0 comments

     Finally working PCB!

    At the moment it is working as expected with no issues but with a reduction in functionality vs what was originally intended.  The temperature monitoring is not implemented or hooked up. Also the SSR used to trigger the furnace fan is not being used. Fundamentally, the problem is solved but I'd like to take it a step further.

    Optos were replaced with a K844P quad opto. With the extra board space I reduced the complexity of the installation by having this device simply sit between the thermostat and the furnace. Adjacent to each connected screw terminal on the left side in the picture is a terminal connected via a direct trace. This prevents having to jam multiple wires into a single screw terminal. Just makes it clean and easy.

    Based on the arduino serial print, the boost fan speed is being ready correctly.  I've got the board running on a sparkx arduino clone but will move to a FreeTronics EtherTen shortly once I have a place to monitor the data.

  • BreadBoarding to Victory

    EcPc09/04/2021 at 03:34 0 comments

    On a breadboard on my basement finally is a working revision of this. I had spun so many boards and wasted so many components i went back to basics....
    I realize that an early schematic i made and had working must have been a stroke of luck because i never recreated the control and measurement I had at that time.

    I intend to do a new PCB shortly that encapsulates everything. If that works on a traditional arduino, I'm going to try it on the EtherTen from Freetronics and try to get the ethernet communication side of the code up and running again.

    Major changes I made:

    1. Consolidated my 4 optos into one component. Made board layout much tighter and compact.

    2. I learned that since the fans onboard control circuit has its own isolation, there's little risk of issues or noise so there was no worry about hooking ground to ground between my fan controls and the 'duino. I feel the etherten might have been a little more sensitive but we will soon see.

    3. Figured out that a little pull up help on the Tachometer circuit does wonders for a clean and reliable reading. I was using INPUT_PULLUP but it seems it's just a tad weak.

    4. Instead of jamming my thermostat wires into a terminal block and Tee'ing off of them in an attempt to share conductors, I decided that I'm going to have my board pass the thermostat signals across it. At the moment I've doubled the moment of screw terminals and bonded the adjacent terminal to minimize the amount the ac signals traverse the PCB.

    Does it work? Yeah it appears to.
    Did i learn stuff? Sort of. The open collector circuit on the fan i still don't 100% grasp the purpose of all the components on the fan side but i don't think that matters.

  • Prospective Opto Replacements

    EcPc03/16/2021 at 02:15 0 comments

    I'm using the H11AA1 for everything because... I got it to work... and then yeah i just used it in every position in every iteration. I told myself this was good because "it reduces part count". I'm ordering 10, not 10 million but I was just lazy.  Time to for baby bird to leave the nest and find some new components.

    My home base:

    24 VAC signals from thermostat:

    This looks like a suitable analog... but requires an order of 1000 from digikey. Just not ready for that level of commitment.

    This has similar properties and I don't know the ins and outs

    Fan tachometer and 10V PWM:

    Thinking about this one:

  • Current Status and Issues

    EcPc03/14/2021 at 15:44 0 comments

    I've attached a link to my current schematic here which I've also uploaded to the project.

    Additionally here is the interface schematic for the fan.

    Here is how I interface to it on the board:

    I am using the H11AA1 optoisolator on the 24VAC lines and also using another one (out of convenience) to drive the PWM signal for the 10v fan control line.  The schematic does not show an optoisolator on the tach feedback circuit and I believe I need to add one as once this connection is made, the board stops working. Looking at my old test boards, I realized that the grounds were tied together between the fan and the Arduino. Attempting that now seems to lock the board up and it seems more straightforward to add more isolation. Not sure how it worked last time. Perhaps I just got lucky.

    I have been using the same part number as I use for the AC lines out of convenience but should swap this to a DC component. Additionally to conserve board space, I'd like to get select a multi-channel component for this. Still through hole because I'm not set up or skilled enough for surface mount. 

    So that's Goal #1 for the next revision: 
    Fully isolate fan circuit with proper dual channel DC optoisolator component.

    Here is an clip of the thermostat monitoring section of the board: 

    This is working as expected, however after moving to the EtherTen board and using Freetronics Protoboard Short as a footprint template, it would be much more convenient to be able to get these condensed into a single component. Additionally, I don't think I actually need the 4th circuit monitored but given that some thermostats have different levels of heat and cool for multi-stage systems, it would be convenient to be able to do that. Also, I don't think I'll be able to find a Tri-Channel vs a Quad-Channel so no reason to remove it at this point.  Difficulty in this is finding a suitable product as my background in these things is pretty weak.

    So there's goal #2 for the next revision:
    Use a 4 channel optoisolator to handle the thermostat signals to reduce board space.

    Here is a snippet over the fan override circuit.  I have yet to test this but will do so prior to the next board being ordered. It would be convenient to find out if it doesn't work ahead of time, no?  Anyone reading this that can tell me why this would not be able to safely switch 24VAC, I would appreciate feedback.

    The EtherTen board I'm connecting this to has some issues pulling this off with the shield connected but works fine running the code without anything attached. I think the most glaring issue is the motor interface circuit at the moment. Additionally I have not used the temp sensor circuits at all. so that is not a factor yet.

    Any help / wisdom /  "WTF.. that is stupid" / guidance is appreciated. I have thick skin, go nuts.

View all 5 project logs

Enjoy this project?



EcPc wrote 03/16/2021 at 01:32 point

Thank you for your feedback @Bharbour.  I need to put together some sort of full system diagram together if I'm going to solicit help.

I'll clarify something on the fan circuits. I am attempting to control two fans actually.
There's the main furnace fan circuit which I would in most cases, treat as read only. That is 24VAC, simple relay logic. I am using the 24VAC common to see if the Heat / Cool / Fan lines are hot.  If there's a temp differential detected I want to resolve when there is no call for conditioning, I need override the thermostat to force the furnace fan on. To do this I connect the 24VAC hot to the fan line Fan. This is using the AQY211EH and is simple on off, no pulsing. Not yet tested. It's actually a lower priority item to be totally honest.

The 10V circuit is entirely separate, and yes,I'm feeding that from the 10V power coming from the fan and keeping them separate from the control board with the optos. Definitely goofed the tach input.

In reference to your other comment from the hack chat, the internal pullups I think are in the order of 20k and the signal looked stable using one of those simple pocket oscilloscopes. The signal doesn't require any conditioning and works as a nice digital as desired.

  Are you sure? yes | no

Bharbour wrote 03/14/2021 at 19:43 point

The opto choice on the inputs looks OK. The fan drive opto relay looks OK as long as you are either switching the fan on 100% or off  or the frequency on your PWM is really slow.

One thing I noticed is that you are showing 24V control for the fan, but the fan control lists 0-10V. The schematic just below the fan data sheet shows 10V signals. I am not sure which it is. The fan control signal is most likely a DC signal. It looks like the fan power is 120V.

It looks like you could use the 10V output as the power for your control input. The fan control shown below the fan data sheet fragment looks like it should work. I am not sure about the LED current, in one place the Panasonic data sheet shows the LED current should be between 1.2 and 3mA and the next table shows it between 5 and 30mA. I would say to leave the 330 resistor (R5) like it is.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates