Solar Variable & Circuit Controller

matthewsunshineflorida

Gold Supporter
Sep 28, 2018
225
Tampa, FL
Pool Size
13000
Surface
Plaster
Chlorine
Salt Water Generator
SWG Type
Pentair Intellichlor IC-40
EDIT [Source Code]:
https://www.dropbox.com/sh/k0feg94ucntjhgi/AACU6vqU088z4NSxl2gSLIFga?dl=0

TLDR: I've been thinking about the relationship between GPM and solar heat delivered to the pool and believe it to be more nuanced than the efficiency chart we've all seen. I put together a little variable speed solar controller using nodejsPC and python to regulate the pump depending on the solar temperature, with the goal of reducing cost with no lost efficiency when solar is heating the water less but while maximizing actual heat transfer when there's more heat on the roof. The first photo is the temperature of the solar return pipe and water temp with about 27-28 GPM (via flowvis) and the second is the temperature at around 45-46 GPM, with the roof sensor around 125 degrees:

2023-05-05 15.04.20.jpg2023-05-05 15.10.16.jpg

Once we get into summer, this difference will be much more drastic with temperatures over 140.

The primary reason I did this is because my board's solar sensor terminals got damaged during Ian, so I had to change the solar valve to a regular actuator and just run the pump around 35GPM with solar on a 10am-sunset schedule. This became a problem when the solar started to get to 91, 92, and I realized I really NEEDED a way to regulate it. I also didn't like that I had solar on during cloudy/rainy times. The basic functionality was relatively easy to script in python thanks to the incredible work done by @tagyoureit and @rstrouse helping me here and on github. However, I thought it would be interesting to see how it would behave with a variable speed. So far, it's only 4 stepped speeds because there doesn't seem to yet be a way to change speed through the API and you only get 8 pump circuits - but it does the job fine enough until I can just send GPM directly through.

I've convinced myself it's both somewhat cheaper to run and provides more effective heating because:
  1. Even before the heat transfer itself is considered, the hotter the water is heated, the closer the water temperature is to the temperature of the heat source, reducing the efficiency of the actual heating going on in the pipes. Easy way for me to think about this was if I left the water in the panels on the roof for 30 minutes, as they approach their maximum temperature, let's say 150 degrees, the rate at which temperature increases goes down as it settles closer and closer to the maximum temperature as its asymptote.
  2. When the water is moving through the pipes off the roof and under ground, it is losing heat to the much relatively cooler environment. This effect is increased with a greater temperature differential between the heated water and the air or ground it moves through.
  3. When the temperature between the return water is already so much closer to the air/ground temp but still far from the solar temp, I don't see any way you're losing much heat by running it far slower to save money.

I have the script currently logging each time it turns on/off and changes speed from 25, to 35, to 45, to 55, and have mapped the true cost to run the pump at each RPM with my multimeter, so I'm going to have the solar controller rotate every other day between variable and fixed solar, allowing me to estimate the cost and efficiency of each method for a while. Maybe it will be marginal - but it's interesting to me anyway.
 
Last edited:
EDIT [Source Code]:
https://www.dropbox.com/sh/k0feg94ucntjhgi/AACU6vqU088z4NSxl2gSLIFga?dl=0

When my "Fall Bub Low" circuit group is scheduled to run, it activates a 1500RPM feature circuit on pump 2 and a Fall Valve feature tied to an actuator to send water to both the bubbler and sheer descent. Now that nodejsPC is on a tablet outside, friends/myself/wife will put the "Fall Bub High" or "Max" circuits to play with kids (or I like Medium when I'm in). However, when any of these circuits are turned off, it turns off both the pump setting (good) AND the Fall Valve which the "Fall Bub Low" group is still using. It isn't intuitive to turn "Fall Bub Low" off and back on to reset it. There are similar issues with my "Skim 1hr" setting, which turns off 55gpm after it's finished even if other circuit groups are using it.

Using the /state/circuitGroups module, it now cycles through all of the active circuit groups and their dependencies - when one turns off while its circuit group is on, nodejsPC turns it back on. The circuit monitor and solar controller start with the rbpi 5 minutes after njsPC using PM2. Fairly simple - I'm wondering why intellicenter doesn't have that built in as I don't see any downsides.

The 4 speed solar controller has also been an interesting project to watch this past week as I think it's saving something like $10-$15/mo yet increasing heating efficiency. It's keeping the temperature differential around 2-4 degrees all day long which is mostly 25 or 35gpm, 45gpm for a much shorter time, and rarely 55gpm. On sunny days, it usually hits temperature and turns off before it would need to ramp up above 35, and on partly cloudy days, it hangs out between 25 and 35 all day. To run at 50gpm (minimum recommended by Helicol) for 8 hours costs me about $28/mo. However, as it seems to average around 25gpm for 4 hours, 35gpm for 1.5hr, 45gpm for 1.5hr, 55gpm for 1hr - it now costs around $10. Obviously that's an over estimated savings because it's going to turn off early most summer days and there's less sun during other seasons, but I like the concept.
 
Last edited:
  • Like
Reactions: TaylorN
Thanks Matthew for the post and code. I'm definitely going to have to look into your code and nodejs-poolController.

I just posted today about a desire to have more control over RPMs based on water temperature:
 
Thread Status
Hello , This thread has been inactive for over 60 days. New postings here are unlikely to be seen or responded to by other members. For better visibility, consider Starting A New Thread.