Ryan Herbst

Pool Pump & Heater Control With Linux & xPL

When we moved into our new house we found that the pool pump control timers where pretty archaic. Only two timers existed to control three circuits and the shock protection cover on one of the timers was missing. I recall winching each time I reached into the control box to switch the main pump on or off just millimeters away from unprotected 220V lugs.

One big problem was that the pool heater was connected to the same timer as the main pool pump. On/Off control of the pool heater was done at the heater and the settings could only be adjusted when the main pump was running. The preferred method of operating a pool heater is to make sure the heater is turned off 20 minutes before the main pump to ensure all of the residual heat in the heater makes its way into the pool. The existing setup did not allow this and the two units would turn off at the same time. The timer box was not large enough to add an additional timer. Another disadvantage to this setup was that the heater had the potential to operate run day after day if I forgot to manually turn it back off after a period of short term use.

Since I started with home automation my main goal hasĀ  always been to avoid using any external timers and keep all time based control in software. I had the same goal for my pool equipment in the new house. I decided the best way to solve this problem was to make use of my existing FPGA Input/Output board. I had a number of spare relay outputs left on this board providing me with at least three switch 24VAC channels which I could use to control the pool pumps and heater.

I purchased three 24VAC controlled 220V 30AMP contactors online. The 24VAC from my FPGA board (normally used to activate irrigation valves) closes or opens these contactors switching the two hot lines of a 220V circuit. The wiring diagram of the three circuits are shown below:

Circuit Diagram

The incoming 220V line is connected to the input of the first switched channel. The output of this first switch is connected to the primary filter pump as well as the inputs of the remaining contactors. The output of the second channel is connected to the pool sweep pump while the output of the third channel is connected to the pool heater (the heater is gas and the 220V is only used for control power). Connecting the inputs of channels 2 & 3 to the output of channel 1 ensures that the pool sweep and/or pool heater are never powered when the primary pump is turned off. This ensures that a software bug or operator error does not result in damage of either the pool sweep pump or heater.

A picture of the resulting wiring is shown below:

Pump/Heater Control Wiring

The wiring is very clean and contained easily within the existing timer box. Once this wiring was completed I have never had to open this box again. Controlling either pump or heater is done by simply pulling out my iPhone and accessing my web based home control panel. This is very convenient when cleaning the pool sweep or filters.

Operation of the heater is also more convenient. I can now turn the heater on permanently at its control panel and set the desired temperature at a relatively high value (~95 degrees). I can then control the pool set point in software since I have access to the current pool temperature through the environmental monitoring portion of my home automation setup. When the pool reaches the desired software set temperature the pool heater is automatically turned off. I can easily control how often I want to use the pool heater with my scheduler and I am never surprised by my gas bill because the heater was accidentally left on. More importantly I can ensure the heater is turned off long enough before the main pump to allow all of its residual heat to make its way into the pool.

To Do List:

  • Add a software controlled chlorination system and appropriate sensors.




Amaroq Weather Station

temp: ()
humidity: %
wind: From the at MPH