Apex controlled NSW mixer and Auto Water Change

insomniac2k2

Active member
Disclaimer: If you don't like mouse traps, click away now. This post if for those of you that like to work with unique situations and solutions. Probably just me...

The Problem: Apex does not have proper code handling for this type of operation. It's inability to call other ports(outlets) is a large limiting factor on what you can do with it.

Solution: Create a timing delayed system within the APEX programming limitations. Outlets look for the timers and fire when the criteria is met. Complex to wrap your head around at times, but creates the same effect in the end

Description:

Auto Water Change about 4.5 gallons of New salt water

My particular use case and reasoning:

I do not like storing NSW. I would much rather store twice the amount of fresh RO. For this reason, I created an almost fully automated NSW mixing and AWC system that fits my needs. This can be done many different ways, but I'm sharing mine ;)

Use:

Once a day (or multiple times) I fill up a standard plastic pyrex measuring cup (which is about 1.5 cups filled to the top. This makes 1.026 NSW in my case). I push a conveniently placed Garage door opener button which is hooked up to my Apex breakout box. I dump the salt in a 5 gallon bucket and walk away (or go to work in my case).

What happens:

The 5 gallon bucket is pre-filled with 4.5g fresh RO water. When the garage door opener button is pushed, a mixing powerhead is triggered. The salt mixes and when done feeds into the sump. Once drained into the sump, the 5g bucket is filled back up with OSW from the sump and then drained to sewer(or wherever). Once drained, the bucket is filled back up with fresh RO water. Ready for the next water change.

The process is complete in 80 minutes, but can be adjusted to suit your needs.


The code:

Virtual Timer outlets:


START_AWC (Timer which is triggered by either the APEX feed timer OR an APEX breakout connected to a garage door opener button(This is what i prefer, because its manual and right next to my salt))

Set OFF
Fallback OFF
If FeedC 000 Then ON
If Sw4 CLOSED Then ON
Min Time 030:00 Then ON (This means im mixing for 30m. I use Red Sea. YMMV)
If Outlet WaterChange = OFF Then OFF

NSW_TIMER (Triggered on delay after START_AWC is triggered. NSW is drained/pumped back to the sump after the 30m mix)

Fallback OFF
If Outlet WaterChange = ON Then ON
If Outlet START_AWC = ON Then OFF
If Outlet OSW_TIMER = ON Then OFF
If Outlet DRAIN_TIMER = ON Then OFF
If Outlet RO_REFILL = ON Then OFF
Min Time 006:15 Then OFF
If Outlet WaterChange = OFF Then OFF

OSW_TIMER (Triggered on delay after START_AWC is triggered. OSW is pumped from the sump into the 5g bucket)

Fallback OFF
If Outlet WaterChange = ON Then ON
If Outlet START_AWC = ON Then OFF
If Outlet DRAIN_TIMER = ON Then OFF
If Outlet RO_REFILL = ON Then OFF
Defer 006:30 Then ON
Min Time 010:15 Then OFF
If Outlet WaterChange = OFF Then OFF

DRAIN_TIMER (Triggered on delay after START_AWC is triggered. OSW is Drained to sewer)

Fallback OFF
If Outlet WaterChange = ON Then ON
If Outlet START_AWC = ON Then OFF
If Outlet NSW_TIMER = ON Then OFF
If Outlet RO_REFILL = ON Then OFF
Defer 012:00 Then ON
Min Time 012:15 Then OFF
If Outlet WaterChange = OFF Then OFF

RO_REFILL (Triggered on delay after START_AWC is triggered. 5g bucket is filled back up with fresh RO water from reservoir.)

Fallback OFF
If Outlet WaterChange = ON Then ON
If Outlet START_AWC = ON Then OFF
If Outlet NSW_TIMER = ON Then OFF
If Outlet OSW_TIMER = ON Then OFF
Defer 005:15 Then ON
Min Time 015:00 Then OFF
If Outlet WaterChange = OFF Then OFF

WaterChange (Triggered on delay after START_AWC is triggered. This closes up the sequence and turns off the RO water refill of the 5g bucket.)

Fallback OFF
Set OFF
If FeedC 000 Then ON
If Sw4 CLOSED Then ON
Min Time 080:00 Then ON

WC_Feed (This is completely optional. It is triggered by a feed cycle instead of a garage door opener)

Fallback OFF
Set OFF
If FeedD 000 Then ON

STIR_RO (This is completely optional as well. Although it will agitate the RO water in the 5g bucket every half hour to keep the water fresh.)

Set OFF
OSC 000:00/000:15/029:45 Then ON
Defer 000:15 Then ON
If Outlet WaterChange = ON Then OFF
If Sw3 CLOSED Then OFF



Actual outlets that are triggered from timers:

OSW (old salt water drain)

Fallback OFF
Set OFF
If Outlet OSW_TIMER = ON Then ON
If Outlet WaterChange = OFF Then OFF
If Sw3 OPEN Then OFF (this switch is the apex breakout switch that detects when the 5g metering reservoir is full)


Drain (5g bucket solenoid to drain)

Fallback OFF
Set OFF
If Outlet DRAIN_TIMER = ON Then ON
If Outlet WaterChange = OFF Then OFF


RO (Fill 5g bucket with new fresh water from reservoir)

Fallback OFF
Set OFF
If Outlet RO_REFILL = ON Then ON
If Outlet WaterChange = OFF Then OFF
If FeedD 000 Then ON
If Sw3 OPEN Then OFF (this switch is the apex breakout switch that detects when the 5g metering reservoir is full)


Mix (Powerhead mixer that lives in 5g bucket. It mixes when its triggered and also agitates water every now and then)

Fallback OFF
Set OFF
If Outlet START_AWC = ON Then ON
If Outlet WaterChange = OFF Then OFF
If Outlet STIR_RO = ON Then ON (This is what the mixer powerhead looks for timed agitations)


NSW (This is the other solenoid outlet that drains the New salt water back to the sump)

Fallback OFF
Set OFF
If Outlet NSW_TIMER = ON Then ON
If Outlet NEW_WC = OFF Then OFF


ASSIST (This is the assist pump directly attached to the 5g bucket. It assists water drainage to the sump or drain. Whichever solenoid is open determines where the water will go)

Fallback OFF
Set OFF
If Outlet NSW = ON Then ON (On when NSW solenoid is open)
If Outlet DRAIN = ON Then ON (On when Drain solenoid is open)


Attached is a general picture of my configuration. But its all just parts. You can do whatever you want! The Apex was by far the hardest part to figure out and perfect. So for that, your welcome :)

This has worked perfectly for over 6 months. It would be much easier and streamlined if you have a NSW reservoir. So if that is your preference, you should be able to easily modify what i posted to suit your needs.



Parts:

6 spare APEX ports (yes, that's right. 6!)
5g bucket
tubing (I used 1/2 inch push connect and fittings(including the 2 to 1 fittings and 1-way valves))

solenoids:
Electric solenoid valve: (Consider buying different ones or at least a backup for presumed failure) https://www.amazon.com/gp/product/B010LT2H1O/ref=oh_aui_search_detailpage?ie=UTF8&psc=1
Alternative solenoid valve: http://www.ebay.com/itm/1-2-Electri...C-G28E-/290791672658?var=&hash=item43b488cb52

Float valve in 5g bucket(buy 2!): http://www.ebay.com/itm/1-2-3-4-Aut...sories-/291644614049?var=&hash=item43e75fa5a1

Garage Door button (Any or these work. Get at homedepot/ACE): https://www.amazon.com/Garage-Opene...250&sr=8-1&keywords=garage+door+opener+button

Pumps: Whatever you got laying around. I used maxi-jets

Happy DIY'ing!
 

Attachments

  • AutoWaterChange.JPG
    AutoWaterChange.JPG
    41.5 KB · Views: 2
Last edited:
I like your set up. I like that it eould not rewuire a lot of space. I need to see if I can figure out a way to plum my tank for this.
 
Thanks. I'm actually quite happy with how it ended up.

Things to take into consideration:

Consider running a second manual float on the 5g bucket instead of T'ing NSW and OSW. This will reduce the need to run 2 - 1way valves (expensive). This also simplifies things a bit more. In the sense that one float is NSW, the other is OSW. Easy to troubleshoot if you run into some sort of issue. The only thing you want to make sure is that you cut in the floats at the same exact height. This way you are removing and replacing the exact volume of water. That said, if you run the digital float, it will tell your pumps to stop anyway. The manual valves are there to ensure that you do not ever pull or push too much water. At the time, i only had 1 manual float, so this ended up being my solution. I didn't want to wait 14 days for the next china order.

The second thing to consider is that im running motorized valves in lieu of diaphram based solenoids. I do this for higher flow. Diaphrams are considerable lower flow. The trade-off is that I know that the SS 304 will start pitting eventually. I should have disclaimed that in my OP. I do not see it as enough issue to be concerned with, but if you do, look into either a higher rated SS or a high flow diaphram based solenoid (such as the alternative solenoid that i posted in the OP). I have the alternative solenoid laying on my computer desk, just wanting on the first failure of my present valves. Fortunate for me, they are still chugging away without issues.

Last thing to consider is that I do not actually run the pump in my sump. I "T" off of my return pump which already feeds my skimmer. I run a 3rd solenoid instead. Its the exact same thing, just different means. I just figured that it would simplify the image and code for more people to understand if they are brainstorming ideas. Long story short. Anything is possible if you think it through :)

I like your set up. I like that it eould not rewuire a lot of space. I need to see if I can figure out a way to plum my tank for this.
 
Last edited:
How long has this been set up? My hesitation with something like this is that solenoids are prone to failing on contact with salt water, typically in whatever position will cause the largest headache.
 
Over 6 months. The whole point of this system was to ensure that no large amount of water can ever enter the tank without checks and balances to stop it.

Example:

The 5 gallon bucket that mixes NSW, and also meters the OSW and RODI has 2 checks to make sure that it does not overfill. The APEX breakout analog switch, and more importantly the manual float valve that absolutely will not allow the bucket to overfill past a certain amount.

If any solenoid were to fail the following would happen:

OSW solenoid fails- The bucket that is already full of resting RODI water (waiting for the next water change) will leave no room for the OSW to fill up any further. The manual float valve stops water. You can also have a secondary apex breakout float trigger an alert if you happen to have a failure in the manual float. (most people wont have this solenoid. They will run a pump to pump out OSW. Even safer.)

OSW drain solenoid fails - This means that whatever water you have in the bucket at the time goes to drain. No harm at all.

NSW solenoid fails - This means that whatever water is in the bucket, gets gravity fed back into the tank. At maximum, that's 4.5 gallons of fresh RO water or OSW. Depending on when it fails. No harm either way on reasonably sized water volumes (If its RODI). OSW is absolutely fine, regardless.


If anything fails during the RODI water pumping to the 5g bucket, the sequence has all the other redundancies, plus it is timed to stop automatically. No matter what, you still pump no more than 5-6 gallons somewhere. And that would have to be after so many other dependencies fail first (manual float, apex float, 1 way valve, and apex timer fail).

Not saying its bullet proof, but its damn close. And if its not enough for you, its easy to add some extra redundancy to it.

And again. There is a timer on every step of the process. If the apex fails in any way. The timer fails. All dependent outlets/pumps/solenoids, fallback into a stopped state.

How long has this been set up? My hesitation with something like this is that solenoids are prone to failing on contact with salt water, typically in whatever position will cause the largest headache.
 
Last edited:
Why wouldn't you drain the old water first? You are wasting a portion of the new water by draining second.
 
You could easily drain the old water first with a few changes. You would want to drain it to a separate bucket unless your sump is big enough to be 5 gallons low while waiting for the nsw to mix. I would probably set it up that way but have my return pump shut off drain 5 gallons, then refill with nsw, and return pump come back on.
 
Statistically, its not enough NSW wasted to matter. I Originally I set this system up to drain 5g first and had a butterfly valve that dropped the salt when the bucket filled up with rodi. I found it problematic. My next step was to do dual bucket for it's simplification. I opted against it because I do not want to give up the real estate.

You can certainly do whatever you want, The code here will support it. No matter what you do, you want to meter the same amount of water in and out.

Why wouldn't you drain the old water first? You are wasting a portion of the new water by draining second.
 
Many ball valve bodies are all made the same, with mounting holes for the motor unit, even if it is sold with a manual handle. You may be able to find a 316 valve body and mount your motor on it
 
I do "store" my salt water but wanted to chime in to let you know how I do my auto water changes using "stored" saltwater.
It all comes down to my APEX and my homemade ATO via apex. My ato process 1st determines the curr salinity of the tank and based on that, it will kick on my saltwater pump or my RODI pump to fill my sump until the ATO is no longer activated. (the salinity of tank is constantly monitored during this process and the APEX will switch from one source to other depending).
Using the above, it was easy to do an auto water change.. all I did was add a pump to my system which "sucks" the water from my sump and sends it to a drain. this runs automatically 3 times a day at 25 mins each. once the draining of the water activates the ATO, my ATO pump (whichever is needed - saltwater or RODI) is kicked on to make up the diff. i make 90 gals of salt water every 4 wks (for my 150gal sys).. and dont have to touch it in between. Obviously, this requires you to be sure your APEX salinity monitor is calibrated somewhat regularly (or at least checked by comparing it to refractometer).
 
Back
Top