My new Black&Decker VSP and DIY pool controller

hexabc

Silver Supporter
Bronze Supporter
Earlier this year I bought a Black & Decker 3HP VSP on poolpartstogo.com and have just finished its integration with the pool.

bd_pump_view_2.png

The pump is quiet and energy efficient. Here are some numbers:

2400 RPM (priming only) - 2.85A, 683W
2000 RMP (cleaning and/or intensive skimming) - 1.74A, 420W
1600 RPM (normal speed for chlorinating, 80% of running time) - 1.03A, 247W

Compare these numbers to my previous single-speed Jandy PHPM1.0, running always at 3450 RPM and consuming 1600 watts! When B+D is not running, its VSD drive draws 145mA, which is about 35W.

The controller is pretty simple. It runs node-red flows on Raspberry Pi with two Sequent Microsystems HATs: Building Automation and Eight Relays. High-power devices (Circupool RJ-60 SWCG and Polaris PB4-60 pump) are switched with Omron G7 relays installed in a separate relay box. Low-power contacts, such as for controlling B+D pump, are switched directly by the Eight Relays HAT.

stand_view_2.png

An important part of the controller is the current transducer Senva C-2344. I have set it to 30A range and wired inside the electrical subpanel with 3 wraps of one of the lines off 20A 2-pole GFCI breaker feeding the B+D pump, so the transducer converts 0 - 10A current to 0 - 10V voltage, which is passed to one of 0 - 10V inputs (analog to digital converters) of the Building Automation HAT.

The transducer is pretty precise, with the output very close to the one derived from the B+D display by dividing power by 240V (or whatever voltage one has between the two lines ;)). The output from the transducer is used by the node-red flows to provide a safety mechanism preventing SWCG and Polaris booster pump from running when B+D pump is not running at appropriate speed. Here is a screenshot of the dashboard's Pool Status panel (the water temperature 10k sensor is not inserted into the pipe yet, it shows the air temperature):

cleaning.png

Now a couple of notes on the B+D automation panel. The original panel is swapped with the automation one, which allows for 1) BAU programming of speeds 2) remote selection of one of the three preset speeds. The programming of speeds is easy: set mode to manual, press speed1 button and set it to a desired value, press speed2 and set the value, and so on. The speeds programmed this way are remembered after power disconnect. The speeds can be modified when the panel is in manual mode, but only if the pump is not currently running. (BTW, the manual mode is the only valid mode with the automation panel.)

One more thing, which is not mentioned in the automation manual.

BD_automation.png

The priorities of inputs in the above diagram, from the highest to the lowest, are: IN1, IN2, IN3. This allows for multiple speeds to be scheduled at the same time, the highest priority input being effectively selected. To lower the number of entries in the schedule, we can superimpose higher priority speeds on top of the lower ones, like in the schedule below:

schedule.png

Controller features:
[EDITED 9/30/2023]
  • VSP scheduling at three preconfigured speeds, with one-click schedule disabling/enabling:
    • priming (Speed1 = 2200 rpm)
    • cleaning (Speed2 = 1800 rpm)
    • chlorinating (Speed3 = 1600 rpm)
  • SWCG scheduling, with one-click schedule disabling/enabling.
  • Polaris pump scheduling, with one-click schedule disabling/enabling.
  • Allowing the user to manually start/stop the VSP (for any of the preconfigured speeds), Polaris pump and SWCG.
  • Monitoring the VSP speed with a current transducer.
  • Preventing the user and the scheduler from starting the Polaris pump when the VSP current transducer doesn't report Speed2.
  • Automatic stopping of the Polaris pump if the VSP current transducer stops reporting Speed2.
  • Preventing the user and the scheduler from starting SWCG if the VSP current transducer doesn't report any speed (reports just a 140mA standby current).
  • Automatic stopping of SWCG when the VSP current transducer stops reporting any speed (reports just a 140mA standby current).
  • Measuring pool water temperature.
  • Measuring enclosure temperature.
  • On-off controlling, with temperature hysteresis, of the enclosure fan.
  • Charting temperatures of water, controller enclosure and Raspberry Pi CPU for the last 12 hours.
  • Sending an email alarm when the VSP current exceeds expected values, indicating, for example, an obstruction in water flow.
  • Sending an email alarm when the VSP current is close to 0, which may indicate a tripped circuit breaker.
  • Sending "alarm cleared" email when the VSP current returns to normal levels.
  • Secure, password protected and TLS-encrypted Internet-wide UI.

A link to this project's public repository on github:
[GitHub - hexabc/pool-ctrl: Raspberry Pi / node-red based pool controller]
 

Attachments

  • cleaning_2.png
    cleaning_2.png
    6.5 KB · Views: 29
Last edited:
I love the dashboard - I use Wireless Tags for pool temp and I'm just about to replace the old single speed Hayward with a similar VSP pump. I also have a couple of Raspberry PIs hanging around ;)
 
Cool project. The use of a current sensor is interesting, don't remember anyone else doing that.

I have a fairly large node red program running parts of my smart home stuff, really like it.

Impressed by how neat your wiring is, my wiring is embarrassing by comparison, but it works.

Did you use anything special to make your dashboard? I don't know how to make fancy looking screens like that with NR, I've only made very basic ones.

One suggestion when you install your temp sensor, try to install somewhere in the shade. The sun heats the pipes during the day, can throw temps off.

Congrats
Randy
 
I love the dashboard - I use Wireless Tags for pool temp and I'm just about to replace the old single speed Hayward with a similar VSP pump. I also have a couple of Raspberry PIs hanging around ;)
The beauty of the node-red dashboard is that you get it for free. Basically, user interface "widgets" are also nodes and are components of flows! Nothing new to learn once you get the hang of node-red. All nodes that I utilized in this project are available in public repositories, accessible directly from the node-red web editor, for example excellent Sequent Microsystems nodes for their Raspberry Pi HATs, or a great scheduler node-red-contrib-ui-time-scheduler.
 
Cool project. The use of a current sensor is interesting, don't remember anyone else doing that.

I have a fairly large node red program running parts of my smart home stuff, really like it.

Impressed by how neat your wiring is, my wiring is embarrassing by comparison, but it works.

Did you use anything special to make your dashboard? I don't know how to make fancy looking screens like that with NR, I've only made very basic ones.

One suggestion when you install your temp sensor, try to install somewhere in the shade. The sun heats the pipes during the day, can throw temps off.

Congrats
Randy
Thanks Randy.
Long, long time ago I worked as a control engineer in an oil refinery during its startup. So I might had acquired this wiring neatness OCD back then... :)

The user interface is based on node-red-dashboard. It's actually very basic.

It seemed like a good idea to give node-red an authoritative feedback on the pump's currently running speed, and the Senva transducer is a good match for the building automation HAT's 0-10V inputs. I bought it here: C-2344 | Analog 0-10VDC, 30/60/120A, split core | Senva Sensors.

Thanks,
Jerzy
 
Last edited:
The beauty of the node-red dashboard is that you get it for free. Basically, user interface "widgets" are also nodes and are components of flows! Nothing new to learn once you get the hang of node-red. All nodes that I utilized in this project are available in public repositories, accessible directly from the node-red web editor, for example excellent Sequent Microsystems nodes for their Raspberry Pi HATs, or a great scheduler node-red-contrib-ui-time-scheduler.
OMG - I so did not need another Nerd project...but I can feel the siren call of a new time-sink.... LOL
 
  • Haha
Reactions: Newdude
Nice! Just got my Calimar pool pump installed today but my automation board is on backorder. Was thinking of doing something extremely similar with an ESP32 and Home Assistant.

Unfortunately, the user manual for the automation board is extremely confusing to me for some reason. What is the difference between scheme 1 and scheme 2? Is it one or the other, or both?

If I wanted to just turn the pump on and off with the relays at certain times (determined elsewhere, not by the pump times), would that be possible?
 
Manual is confusing, it seems like with scheme 2, when you close the relay to IN4, pump will start at Speed 1 for the programmed time, then go to Speed 2 for the programmed time, then to 3 and 4.
My guess is the pump will stop when you open the relay, so if you program Speed 2 for long enough, it would only go to Speed 1 and 2. Seems like you would want to set Speed 1 for a short time at high speed to prime the pump.

With scheme 1, close relay 1 to set to speed 1. Seems like it will run for the programmed time, and it looks like it wants a pulse there, to close the relay and open it a short time later.
"IN1/IN2/IN3 is controlled by external relays. After the relay is opened and closed, the running time corresponding to the speed can be realized."

Scheme 1 is strange if this is how it really works. With my Hayward, you close the relays and it starts up, primes and then goes to the speed you've choosen.

Good luck
Randy
 
  • Like
Reactions: tidnab

Enjoying this content?

Support TFP with a donation.

Give Support
Nice! Just got my Calimar pool pump installed today but my automation board is on backorder. Was thinking of doing something extremely similar with an ESP32 and Home Assistant.

Unfortunately, the user manual for the automation board is extremely confusing to me for some reason. What is the difference between scheme 1 and scheme 2? Is it one or the other, or both?

If I wanted to just turn the pump on and off with the relays at certain times (determined elsewhere, not by the pump times), would that be possible?
I'm a bit confused on how the interface works with Wifi relays myself. Check out the link below. @FloridaGary may be able to help you out.

 
Nice! Just got my Calimar pool pump installed today but my automation board is on backorder. Was thinking of doing something extremely similar with an ESP32 and Home Assistant.

Unfortunately, the user manual for the automation board is extremely confusing to me for some reason. What is the difference between scheme 1 and scheme 2? Is it one or the other, or both?

If I wanted to just turn the pump on and off with the relays at certain times (determined elsewhere, not by the pump times), would that be possible?
Yes, the automation brochure is not very clear, to say the least.

Scheme 1 allows for external starting/stopping of any of the three pre-programmed speeds. The speeds are pre-programmed with the pump automation panel (the way I described in my post above). But the time of starting/stopping is programmed in your pool controller, which closes/opens controller-provided contacts connected to IN1, IN2 and IN3 terminals of the pump automation panel. The IN1, IN2, IN3 terminals correspond to Speed1, Speed2, Speed3 speeds. The values of those speeds cannot be set by your pool controller. To implement scheme 1, just make the connections as depicted in the diagram "Remote control scheme 1".

Scheme 2, to me, is not very useful. Basically, it allows for external starting/stopping of the whole schedule consisting of multiple triples (start time, duration, speed) preprogammed with the pump automation panel.

Back to scheme 1. As I mentioned in the post, the speeds have priorities, determined by the pump automation panel's input terminals to which the controller contacts are connected. This allows for a very concise schedule, where the background Speed3 (a single schedule entry, let's say from 8am to 8pm) is overriden by Speed2 intervals (pool cleaning, which may coincide with a Polaris schedule or just work as intensive skimming periods), and Speed2 is overriden by Speed1 (pump priming from 8am to 8:03am).
 
Last edited:
I'm a bit confused on how the interface works with Wifi relays myself. Check out the link below. @FloridaGary may be able to help you out.

With scheme 1, I think the correct approach is to have 3 independent schedules, one per each speed. Basically, we can treat those 3 speeds as three pumps. Then, utilizing IN1, IN2, IN3 priorities (see my post), WiFi relays can be programmed in a simple, non-confusing way.
 
  • Like
Reactions: SJPoe
Back to scheme 1. As I mentioned in the post, the speeds have priorities, determined by the pump automation panel's input terminals to which the controller contacts are connected. This allows for a very concise schedule, where the background Speed3 (a single schedule entry, let's say from 8am to 8pm) is overriden by Speed1 (pump priming from 8am to 8:03am) and by Speed2 intervals (pool cleaning), which may coincide with a Polaris schedule or just work as intensive skimming periods.
This makes sense. My DIY automation (link in sig) uses an Intellicom 2 Interface Adapter that allows the use of digital inputs for control of my Pentair IntelliFlo VS. I simply use Alexa Routines for control/programming of pump speeds and schedules (in addition to valve actuators. SWG, and spa blower). It works for me, but as I mentioned in my earlier post, I wish I had the ability to do what you did.

Great Job!
 
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.