Redundant ATOs

Do you have a question on how to do something.
Ask in here.
Post Reply
wolfpack
Posts: 24
Joined: Thu Sep 06, 2012 10:11 pm

Redundant ATOs

Post by wolfpack »

I want to have both of my ATOs hanging down and be redundant. So essentially, if low ATO and high ATO are BOTH "active" or in the bottom gravity position. I want to add the ATO Timeout so when I run out of water, it won't keep running the ATO aqualifter pump forever and I'll get an alert.

Box1_Port6 is the ATO pump.

I thought this would work, but nope, it doesn't:

Code: Select all

    if(ReefAngel.HighATO.IsActive())
    {
        ReefAngel.SingleATOLow( Box1_Port6 );
    }
This works properly for both ATO, but it does not take in ATO Timeout, which I'd like to add:

Code: Select all

    unsigned long TempTimeout = 60;
    TempTimeout *= 1000;
    unsigned long ATOTime;
    
    if ( ReefAngel.LowATO.IsActive() && ReefAngel.HighATO.IsActive() && ( !ReefAngel.LowATO.IsTopping()) )
	{
		ATOTime = millis();
		ReefAngel.LowATO.StartTopping();
		ReefAngel.Relay.On(Box1_Port6);
	}

	// If the high switch is activated, this is a safeguard to prevent over running of the top off pump
	if ( !ReefAngel.HighATO.IsActive() || !ReefAngel.LowATO.IsActive() )
	{
		ReefAngel.LowATO.StopTopping();  // stop the low ato timer
		ReefAngel.Relay.Off(Box1_Port6);
	}
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: Redundant ATOs

Post by rimai »

Try this:

Code: Select all

ReefAngel.SingleATOLow( Box1_Port6 );
if(!ReefAngel.HighATO.IsActive()) ReefAngel.Relay.Off( Box1_Port6 )
Roberto.
wolfpack
Posts: 24
Joined: Thu Sep 06, 2012 10:11 pm

Re: Redundant ATOs

Post by wolfpack »

Thanks Roberto.

That works, however, problem:
Whenever the HighATO is trips (IsActive), it'll shut off the Relay and the Relay won't turn on again until !ReefAngel.LowATO.IsActive() and then ReefAngel.LowATO.IsActive(). Functionally speaking: In my configuration, when water is lower than both HighATO and LowATO, but HighATO is inadvertently triggered (thinking water level is high and LowATO didn't catch it), it will shut off the relay (GOOD!) however it will not reset until LowATO is floating and then not floating. This works fine unless I accidently trigger the HighATO, then I have no way of resetting it remotely. I'd have to manually trigger LowATO switch.

Does that make sense? Any suggestions for fixing? Thanks in advance!

Also, the code you provided works exactly the same as the one I posted originally that was missing the above mentioned functionality:

Code: Select all

if(ReefAngel.HighATO.IsActive())
    {
        ReefAngel.SingleATOLow( Box1_Port6 );
    }
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: Redundant ATOs

Post by rimai »

Try this:

Code: Select all

ReefAngel.SingleATOLow( Box1_Port6 );
if(!ReefAngel.HighATO.IsActive()) ReefAngel.Relay.Override(Box1_Port6 ,0);
This will override the relay to off, but you can put to auto remotely.
Roberto.
User avatar
cosmith71
Posts: 1437
Joined: Fri Mar 29, 2013 3:51 pm
Location: Oklahoma City

Re: Redundant ATOs

Post by cosmith71 »

I use a similar setup with a double float switch. If the bottom one fails, then the top one can still stop the pump.

I just wired the two switches in series and connected them to one port. That way you can just use SingleATOLow (or Hi) and not worry about additional coding.
Post Reply