Spring is here and the summer pool season opening is just a few weeks away. Over the past few weeks I have been working hard to make key improvements to the pool pump controller I mentioned here. For the uninitiated, a few years ago I upgraded the motor on my pool pump from a 1.5HP single speed motor to a dual speed motor. The high speed setting is great for vacuuming the pool and performing the necessary maintenance tasks, but eats an incredible amount of power – 10A @ 230V. When maintenance tasks are complete, I can set the motor to low speed and keep circulating and filtering the water, but consume only a few amps. Perfect until the heater turns on. The water flow is too low at the low speed and the water starts to boil in a heater. No way I am going to blow up a $2000 heater. Last season I built the automatic controller, which set the pump speed according to the difference in water temperature as it enters and leaves the heater. For the most part it worked great, but it had a few faults:
- Sometimes the controller would reset when the motor started at high speed, shutting everything down until the controller came back up.
- If the controller did not reset, then the display would crash and show no data
- The latest code revision was forgetting to read the thermometers
In order to resolve the reset and display issues, I added a few large capacitors to the power bus, increasing the power source fluctuation tolerance. Now it should be able to survive a one second full power outage without reset. While I was adding capacitors, I also added a bridge rectifier to the board power input. The bridge protects the board from Mr. Fumblefingers accidentally applying reverse polarity to the board. It also would allow me to use an AC power source, if necessary. Links to the schematics are at the bottom of the post.
In one of the last code revisions I published to the controller last year, the controller lost its ability to read the water temperature. This was not an issue in August, when the problem was not how to heat the pool, but how to cool it! Now, however I do need the controller to work correctly. Finding the bug was not easy, as it turned out. In a previous code cleanup, I had for some reason deleted the one line that requests the temperature from the sensors. I finally found the missing line by comparing the current release with older releases until I found the missing parameter. Although the Arduino coding environment is not really great as an IDE, it does have an archive function, and I have made it a habit to version my code and archive each version. I also make sure to display the running version on the controller display. You can take a closer look at the code here. Download Eagle schematics here. http://www.youtube.com/watch?v=yhiJS3RcnJU