Did you know that you can enjoy many members-only features simply by quickly registering (no CAPTCHA!)?
Registering gives you access to our giveaways, forum features, increased search performance, access to our Download Library, create your own blog & gallery, and more!
Once you have registered, stop by in 'Hello World', and introduce yourself.
Critical Ponds Water Levels Control
Posted 21 July 2012 - 06:36 PM
For this situation we have HAI OmniPro II, UPB is employed, we have pumps (simple) set up for automation.
I have some ponds that have a critical water level regulation requirement, ...within inches tolerance, so typical float or water/wet sensor won't work.
Obviously with a large outdoor water body you have issues such as wind and rain to deal with, as well as evaporation, etc, etc.
Right now I have to monitor and run the pumps manually for maintaining the water level, i.e., we are glued to having to keep a physical eye on it. I cannot rely on automations for those, although I have the pumps all tied into my automations.
The client has the following method setup on his ponds... example: the drain is an 8" pipe that faces straight up, and is cut off just above the desired level of the pond. He tries to keep the water level just below that. What he wants is if any more than a smidge (couple inches [he says "a half-inch", but I think that's impossible]) drop below the top, and the pumps should go on until the water begins flowing into the drain pipe's upward facing orofice, and then turn off.
Since I cannot allow the pumps to be hammered by on and off commands, I am looking for a way to compensate for the wave-action factor (in wind, rain, etc). I saw two recommendations elsewhere on this forum for resources for water sensors, which happened to include some depth-pressure sensors, and I thought "hmm, I wonder if this is the answser?...".
In reviewing the products only briefly I am wondering if a depth "pressure" sensor mat be the answer, however, I am out of my depth in trying to understand millibars response factors, and how the tolerances work when waves kick up (add/subtract pressure down below?), and/or other factors. I.e., for all I know, up to a certain agitation factor the sensor may not see any "change in depth" ...etc???
I am wondering what your recommendations may be for tackling our problem?
Right now I am dealing with two bodies of water about the size of small swimming pools. The locale is one of my client's estates (a ranch) in Wisconsin. If you need more information I am happy to assemble that for you.
THANKS for your thoughts and reflections!!
Posted 21 July 2012 - 08:24 PM
If you are concerned about waves, you can put the float switch in a section of PVC. Cap the bottom and drill a small hole to serve as an orifice - like a shock absorber. Make sure the top is vented; otherwise, the water will compress the air slightly resulting in level difference.
Edited by jpmargis, 21 July 2012 - 08:25 PM.
Posted 22 July 2012 - 08:25 AM
Float switches can be very accurate and putting them in a baffle as suggested will solve your wave action issue. A single small hole will completely stop wave action (just make sure to do something to ensure the hole doesn't get plugged with debris).
Posted 25 July 2012 - 05:38 PM
Sorry for the late reply... way many things on my plate these days !
I am going to talk to the coo about these great suggestions, he's the one who has been onsite looking after this situation, and who has been struggling to make a workable solution.
I found it interesting that float switches and such he has tried have not pleased him... he is a retired builder, and I have seen some of the pools and stuff he has put in (grade A), ...so perhaps there is more to his dilemma than I yet understand.
Keeping this open, and will post as things progress.
Thanks for these great suggestions!
Posted 26 July 2012 - 09:58 AM
This post deserves to be in the automation hall of fame.
Posted 31 July 2012 - 09:00 PM
Thank you again!
Posted 12 June 2013 - 06:14 PM
Tags: Pond fill, Pump, Sprinklers, Flags, Automation
I want to follow-up in this post. There was not a lot of time last year for troubleshooting the whole system fully (before winter kicked in), which includes sprinklers and pond fill, and as it turns out the code I wrote then for managing this was not efficient enough. This spring I had to do a bit of troubleshooting and re-write the code, and there may be something in the code logic here, and use of flags, that others may find useful.
For those sort of new to, or working on further, understanding (better) use of flags, there is a tutorial on the forums here from "cornutt" that is really helpful here.
So here we go...
- The pond float switch the technicians put in turns out to be very sensitive, and there seems to be no real hysteresis management, so I need to do it with code.
- The pond fill pipe-channel/line-feed is tied into the same pump that runs the sprinklers.
- The pond fill and sprinkler pipe-channels each have their own valve shutoffs and electronic actuation switches, with no hardware safety for alleviating pressure if, say, a valve is shut off prior to turning off the pump - which can result in pressurized lines, so I have to code for that as well. (I keep telling them this results in more money spent on coding than it costs to install better hardware, and also that the code cannot be relied on to fully protect the system, but anyway...)
- The pondfill switch is a "ZONE", while the Pondfill and Sprinkler valves are UNITS
So here's an example of how I set up a custom hysteresis affect using two interactive code blocks with timer flags.
Also in the code is a button... which is used by the automation handling, but can also be used by a person.
Included you will see flags that are used for sibling sprinkler systems awareness (and vice-versa, but that's not shown here).
Logic Base: activity regulation/management logic (needs, concerns)...
- allow the pond level to self-monitor, and also allow the user/owner a switch to turn it on (off too, but not discussed here)
- protect the pump and pondfill channel/line from pressure buildup,
- address brackish water situations, so actions will not try to toggle on and off sporadically (the switch is very sensitive),
- augment behavior in response to the sibling sprinklers system,
- check pond level following enforced 'off periods' timing out,
- seasonal response (disables itself during off-season)
- self correction when the system~timing~sequencing or power 'wanders' due to any number of adverse influences (for instance, if there is a hang or sluggish influence upon a response-mechanism in play, sometimes code triggers/affects can occur late or out of sequence !)
- self adjust if code stalls (which may happen due to any number of chaotic-influences reasons),
- protect the pump from over use... limits are 3 hours runtime maximium, with minimum of 0.5 hr rest period in between... so if the pondfill ever had to be used for a long period (say it was emptied to some extent for maintenance or whatever), make it so the pondfill can run safely over an extended period (even days) with self-monitoring having full integration with the other timing features (that take place over day/nite transitions).
Special circumstances in this particular case:
- sibling sprinklers system is run at nite, so it is convenient to affect pondfill timeout overnight
The Code: Now, rather than post code and then lengthy individual descriptions, I am posting the code with line comments. The exercise then is for you to start somewhere, and then follow the path of affect. You will need to create scenarios in your mind, such as "what if the switch immediately toggles due to brackish water" in this/that situation, or "what if someone comes along and hits the button" or "what if the pump is turned off" or what if the thing hiccups and just keeps running", and stuff like that.
***!***TO NOTE: Let me bring your attention particularly to the "Actuate Pond Fill", "Deactuate Pond Fill", and the "Pond Fill Button" macros.
The two De/Actuate macros cross-monitor the Pond Fill Switch Zone Ready / Secure states and the relevant "SEC/NR" flags are used to set the hysteresis response! The pondfill button facilitates manual interaction, as well as automating the on/off switching of the pondfill.
So far my logs show this is working as expected, but as I find the need to tweak, I will come back here and update.
Here we go....
note: when stuff runs off the right side, click on the line and drag right, it should scroll into view...
######### POND FILL ON BUTTON ###################### ================================================= --------- POND FILL BUTTON --------------------------- 134. WHEN Sprnk_Turn_Z6PondFill_ON_Btn AND IF PumpSeason ON AND IF SprinklerOnFlag OFF <<do not respond if sprinklers running AND IF PondFloatSwitch SECURE <<only allow on if level is down, this allows calling this button when the hold-off-timer goes off, and if needed, the pondfill can continue filling AND IF SprnkZ6_HoldOff_timer OFF <<--Limiter Timer: -30min timeout: must be Off for PondFill to be allowed ON THEN PondFill_On_Flag ON FOR 1 MINUTES <<lets SprinklerPumpSwitchOnBtn know this btn called, and also lets "Sprinkler On Direct" command check know. Only ever called once (here) THEN Sprinkler Z6 Pond Fill ON <<indefintely. When filled again trigger is 'Not Ready' THEN SprnkZ6Timout_timer ON FOR 3 HOURS << Limiter Timer: Set a timer check for 3 hrs max runtime everytime this button is called THEN Sprinkler Z1 Stream OFF <<these make sure sprinkler channels are closed THEN Sprinkler Z2 South Pond OFF | can be safely done because SprinklerOnFlag is OFF THEN Sprinkler Z3 Beach OFF | these are all UNITS THEN Sprinkler Z4 North Pond OFF THEN Sprinkler Z5 West Pond OFF THEN RUN SprinklerPumpSwitchOnBtn 134. // ######### POND FILL AUTOMATION (2 macros) ######################## --------- ACTUATE POND FILL -Trigger queries for when/(does?) the pond needs filling --------------------------- 136. WHEN PondFloatSwitch SECURE WHEN PondFloatSwitch_NR_Fl OFF <--flag toggles off upon HOLD Timeout if******************* TIMED 5:00 AM MTWTFSS <<--5am check if Pond needs water WHEN SprnkZ6_HoldOff_timer OFF << Limiter Timer- when goes off, check if filling needed AND IF PumpSeason ON <<its not winter AND IF SprinklerOnFlag OFF <<do not respond if sprinklers running AND IF PondFloatSwitch SECURE <<allows the timed and flagged trigger operation AND IF PondFloatSwitch_NR_Fl OFF <<if pond fill Zone is NOT HELD in NR WAIT State AND IF SprnkZ6_HoldOff_timer OFF <<--Limiter Timer -30min timeout: must be Off for PondFill to be allowed ON AND IF Sprinkler Z6 Pond Fill Off <<--Not if PondFill already On AND IF Sprnk_6Disabled_Flag Off <<--Not if PondFill is Disabled AND IF TIME IS GREATER THAN 4:18 AM <<--Not During Sprinklers Hours AND IF TIME IS LESS THAN 10:15 PM <<--Not During Sprinklers Hours (turned off 1/5hr prior to sprnks to allow pump to rest if its been running hard THEN PondFloatSwitch_SEC_Fl ON FOR 10 MINUTES <<Holds Secure State in case of brakish water action. Pond Cannot Deactuate until this goes Off THEN RUN Sprnk_Turn_Z6PondFill_ON_Btn <<run the pondfill --------- DEACTUATE POND FILL --------------------------- 137. WHEN PondFloatSwitch NOT READY WHEN PondFloatSwitch_SEC_Fl OFF <--called upon HOLD Timeout if******************* AND IF PumpSeason ON AND IF SprinklerOnFlag OFF <<do not respond if sprinklers running AND IF PondFloatSwitch NOT READY <<allows the timed and flagged trigger operation AND IF PondFloatSwitch_SEC_Fl OFF <<if pond fill Zone is NOT HELD IN SEC WAIT State. AND IF Sprinkler Z6 Pond Fill On <<--Not if PondFill already Off THEN PondFloatSwitch_NR_Fl ON FOR 10 MINUTES <<Holds NotReady State in case of brakish water action. Pond Cannot Actuate until this goes Off THEN PondFill_Off_Flag ON FOR 2Mins <<Called only once (here). Triggers Pump Off Command, then 2min later turns PondFill Off (allows for pressure relief) --------- Sprinkler Z6 POND FILL OFF COMMAND --------------------------- 139. WHEN PondFill_Off_Flag OFF <<called by Not Ready after 2 min delay, allowing pump to go off first before closing pondfill channel THEN Sprinkler Z6 Pond Fill OFF <<there is one trigger set for when this goes off for resetting the Limiter Timer -------- Reset Limiter------- reset the Z6Timout timer whenever the unit goes off 1xx. WHEN Sprinkler Z6 Pond Fill OFF <<this is the Pondfill UNIT: reset the Z6Timout timer whenever the unit goes off THEN SprnkZ6Timout_timer SET VALUE TO 0 <<--reset without triggering OFF so the SprnkZ6_HoldOff_timeris not triggered THEN LOG SprnkZ6Timout_timer RESET to ZERO -------- When Reset Limiter Triggered------- ----- Limiter Timer: When Flag Times out, Hold PondFill Off for at least 1/5 hour---------- 1xx. WHEN SprnkZ6Timout_timer OFF <<--not reset, but actually timing out, which means pondfill has been on this whole time THEN SprnkZ6_HoldOff_timer ON FOR 30 MINS <<--set a flag that will disable the pond fill for up to 30mins THEN LOG SprnkZ6Timout_timer Trig_OFF THEN LOG SprnkZ6HoldOff_timer ON FOR 30Mins THEN PondFill_Off_Flag ON FOR 2 MINUTES <<-Triggers Pump Off Command, then 2min later turns PondFill Off (allows for pressure relief) 140. // ############################################### // -------- Sprinkler Pump Control -------------- // PumpOn responds only if flag criteria met // Pump Off 3 mins before last Sprnkler Stops. // "Sprinkler Pump-Src OnLast,Ofirst ON" is the actual pump UNIT/DEVICE. 141. // Pump On affected by Button +++++++++++++++++++++++++++++++++++++++++++++++++ ####### SPRNK PUMP ON COMMAND ####### 142. WHEN SprinklerPumpSwitchOnBtn <<consider making this a flag later AND IF PumpSeason ON <<pumpseason is spring to early fall AND IF SprinklerOnFlag ON <<IF a sprinkler On-button actuated, this flag is set and runs while sprinkler does OR AND IF PumpSeason ON AND IF PondFill_On_Flag ON <<OR IF the PondFill On-Button actuated THEN SprinklerPump ON 143. // SEE AHEAD FOR OFF CODe: WHEN SprinklerOnFlag OFF, THEN Sprinkler Pump-Src OnLast,Ofirst // goes OFF 144. // ####### PUMP ON DIRECT COMMAND ########### // If pump device switched on directly and no sprinklers are on, // OR, Whenever a SprnkLine is deactivated, and 20 secs later the pump is still on, // then turn the pump back off, and pressure-relieve the lines... // (these are units here) 145. WHEN SprinklerPump ON AND IF Sprinkler Z1 Stream OFF AND IF Sprinkler Z2 South Pond OFF AND IF Sprinkler Z3 Beach OFF AND IF Sprinkler Z4 North Pond OFF AND IF Sprinkler Z5 West Pond OFF AND IF Sprinkler Z6 Pond Fill OFF THEN SprinklerPump OFF THEN Sprinkler Z1 Stream ON FOR 40 SECONDS THEN Sprinkler Z2 South Pond ON FOR 40 SECONDS THEN Sprinkler Z3 Beach ON FOR 40 SECONDS THEN Sprinkler Z4 North Pond ON FOR 40 SECONDS THEN Sprinkler Z5 West Pond ON FOR 40 SECONDS THEN Sprinkler Z6 Pond Fill ON FOR 40 SECONDS 146. // Sprinkler On Direct (Unit) Command // If sprinkler turned on and pump not activated, then turn it back off 147. WHEN Sprinkler Z1 Stream ON WHEN Sprinkler Z2 South Pond ON WHEN Sprinkler Z3 Beach ON WHEN Sprinkler Z4 North Pond ON WHEN Sprinkler Z5 West Pond ON WHEN Sprinkler Z6 Pond Fill ON AND IF SprinklerOnFlag OFF <<Sprinkler Button was not used AND IF PondFill_On_Flag OFF <<PondFill Button was not used AND IF SprinklerPump OFF <<And Pump was not activated AND IF Sprnk_LeftOn_Flag OFF <<make sure the left on flag is not already counting down THEN Sprnk_LeftOn_Flag ON FOR 45 SECONDS <<Set timinout to turn off all sprinks (Line 166) CHECK THIS 155. // ------------------------------------------- // When PumpOff button or a sprinkler directly turned off, check sprinkler timeout: // When an off command is given, make sure the sprinkler that was in use stays open for a // little while, and then turns off. In automations this happens normally, but in the case // of a user button, or sending a direct command, these sequences keeps things in proper // check 156. // Pump Off via Automations: This is the normal control off sequence. The rpinkler that was // running has already turned off (for 3 mins), then the automation flag triggers this for // finally turning off the pump... ####### SPRNK PUMP OFF COMMAND ####### 157. WHEN SprinklerOnFlag OFF <<happens 2mins before a sprinkler is set to go off per its buttn WHEN PondFill_Off_Flag ON <<when pondfill toggles to NOT Ready, this turns the pump off immediately (assuming timeout not being held), then pondfill off in 3mins (time to decompress) AND IF SprinklerPump ON THEN SprinklerPump OFF 158. // Sprinklers Off Button Command: non-automated button control of the sprinklers.... 159. WHEN Sprinklers_Turn_Off_Button < AND IF Sprnk_LeftOn_Flag OFF <<make sure the left on flag is not already counting down THEN Sprnk_LeftOn_Flag ON FOR 45 SECONDS <<when times out, all sprinks off @Ln166 THEN SprinklerOnFlag OFF <<--turns off the pump (and lines are depressurizing) 160. // Sprinklers Off Trigger: non-automated off control of sprinks uses flag, automated uses // same for now, possibly direct later. Also resets the SprinklerOnFlag. When Sprink Units // go off, nothing else is actuated, so this works ok. Exception is when Z6 goes off, the Z6 // Limiter flag is put thru some motions, but I see no conflicts having this here 166. WHEN Sprnk_LeftOn_Flag OFF AND IF SprinklerPump OFF THEN Sprinkler Z1 Stream OFF THEN Sprinkler Z2 South Pond OFF THEN Sprinkler Z3 Beach OFF THEN Sprinkler Z4 North Pond OFF THEN Sprinkler Z5 West Pond OFF THEN Sprinkler Z6 Pond FIll OFF <<--this added, we'll see how it goes 167. // ------------------------------------------------------- // Protect Pump if someone directly turns off a sprinkler, <snip>
Well I hope this is helpful to anyone. I appreciate the good help I get here at Cocoontech.
Edited On 2013-07-24: I made some changes to "Pond fill Button", and Actuate and DeActuate PondFill code groups, and the Reset Timer function.
Edited by twohawks, 24 July 2013 - 03:30 PM.
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users