joshrhykerd
New member
I decided to write some custom Apex programming for my Tunze 6055 powerheads so I could get a more sporadic wav pattern in my tank throughout the day. When I first sat down to do this I had a very difficult time finding any really good examples to follow so I thought maybe I'd contribute what I came up with to help anyone else out who may be attempting to accomplish the same or similar. Prior to this programming my corals were not responding very well, aka were not growing with the flow pattern I had been giving them. This new program is a complete change and has made a HUGE difference in the growth and overall health of my corals. Not to mention they look a-lot better while waving in the breeze(flow).
My plan was to come up with multiple different, essentially "œtimers", that control the powerheads at different intensities for different lengths of time all throughout the day. The first thing I'll do is talk about these "œtimers" which were created mainly using Apex Virtual Outputs and the Oscillate(OSC) command. I will list each Output I defined below along with a short description of what it is and how its working. Each of these Virtual Outputs will eventually be tied directly to and control an Apex Profile. An Apex Profile contains the specific commands needed to vary the voltage and duration that these powerheads will use in order to provide the necessary varying wav pattern we are after.
I should also note somewhere in here that although I'm using Tunze 6055's, I do not have the power on the controllers turned the whole way up. At the current time I'm running them at approximately 25% of their max. I could probably turn the powerhead power up and manipulate the power output via the Apex, but for now I chose not to do so.
Please note that the {curly braces} below are not required in the programs, but rather are just being used in the post to separate the actual code from the description.
VIRTUAL OUTPUTS
"œVirtual Outputs - General Timers"
These timers are generally defined and then used as variables inside other timers.
Daylight:
ON during all sunlight hours"¦ Used in other Outputs to trigger that its "œDaytime" and not night.
{
Set OFF
If Sun 000/000 Then ON
}
FlowDskDwn:
ON during sunrise & sunset hours to signal Dusk & Dawn
{
Set OFF
If Sun 000/000 Then ON
If Sun 060/-060 Then OFF
}
"œVirtual Outputs - Constant Daylight Wav Timers"
These timers are used during daytime hours in order to repeat 4 different wav patterns EACH hour of the day.
FlowWave1:
ON for 15 minutes beginning at midnight, then OFF for 45 minutes, then repeats continually throughout the day. Only during Daylight hours.
{
Set OFF
OSC 000:00/015:00/045:00 Then ON
If Output Daylight = OFF Then OFF
}
FlowWave2:
OFF for 15 minutes beginning at midnight, then ON for 15 minutes, then OFF for 30 minutes, then repeats continually throughout the day. Only during Daylight hours.
{
Set OFF
OSC 015:00/015:00/030:00 Then ON
If Output Daylight = OFF Then OFF
}
FlowWave3:
OFF for 30 minutes beginning at midnight, then ON for 15 minutes, then OFF for 15 minutes, then repeats continually throughout the day. Only during Daylight hours.
{
Set OFF
OSC 000:30/015:00/015:00 Then ON
If Output Daylight = OFF Then OFF
}
FlowWave4:
OFF for 45 minutes beginning at midnight, then ON for 15 minutes, then repeats continually throughout the day. Only during Daylight hours.
{
Set OFF
OSC 000:45/015:00/000:00 Then ON
If Output Daylight = OFF Then OFF
}
"œVirtual Outputs - Sporadic Daylight Wav Timers"
These timers are used during daytime hours in order to make the daytime wav pattern even more sporadic and not just constant ALL day long.
FlowFlush:
This timer is used to trigger some special Flushing profiles which are used to help keep the tank clean by flushing each side at a time for an extended period of time at full power.
OFF for 120 minutes(2 hours) beginning on Jan 1, 1996 @ midnight, then ON for 2 minutes, then repeats.
{
Set OFF
OSC 120:00/002:00/000:00 Then ON
If Output Daylight = OFF Then OFF
}
FlowStorm:
This timer is used to trigger a "œstorm" or "œchoppy" water, approximately every 10 hours for 25 minutes on MWF.
ON for 25 minutes beginning at on Jan 1, 1996 @midnight, then OFF for 600 minutes(10 hours), then repeats. Only during Daylight hours on Monday, Wednesday, or Friday.
{
Set OFF
OSC 000:00/025:00/600:00 Then ON
If Output Daylight = OFF Then OFF
If DoW S-T-T-S Then OFF
}
PROFILES
"œProfiles - General"
Name: FlowFull
When this profile is triggered, It turns on and remains on at 100% intensity. Mainly just used for testing what 100% intensity looks like at the current powerhead controller setting. I do not use this profile programmatically, but rather just as a switch directly on the Apex Fusion dashboard.
Type: Pump
Synchronize: No
Divide by 10: No
Initial Off Time: 0
On Time: 1
Off Time: 0
Minimum Intensity: 100
Maximum Intensity: 100
Name: FlowNight
This profile is used at nighttime. It turns on and remains on at 35% intensity all night long. The Tunze powerheads require at-least 35% power to run. Anything less than that and they will completely turn off. Some people report 30%, but for me it was 35%.
Type: Pump
Synchronize: No
Divide by 10: No
Initial Off Time: 0
On Time: 1
Off Time: 0
Minimum Intensity: 35
Maximum Intensity: 35
Name: FlowDskDwn
This profile is used at Dusk & Dawn in order to slowly build up or slow down the current flow. It will ramp up over a 15 second period from 35% to 75% intensity.
Type: Ramp
RampTime: 15
Start Intensity: 35
End Intensity: 75
"œProfile's - Constant Daylight Wavs"
These profiles are used to create the constant back and forth WAV we are trying to achieve during the day that our corals like. I have 8 main profiles, two for each 15 minute increment in an hour. One controls the Left powerhead and one controls the Right. Alternating in turning them on and off. The numbers I used for my intensity and my on/off time intervals are probably unique to my tank(BioCube 32) and you will need to play around with them and change them according to the size and shape of your own tank. Also of note is that an intensity of 0 here is the same as OFF, so 0 & 100 means OFF to 100% intensity. As stated earlier if you didn't want the powerheads to turn completely off you would set the intensity to a minimum of 35%.
Name: FlowWave1L
Type: Pump
Synchronize: No
Divide by 10: Yes
Initial Off Time: 0
On Time: 10
Off Time: 10
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowWave1R
Type: Pump
Synchronize: Yes
Divide by 10: Yes
Initial Off Time: 10
On Time: 10
Off Time: 0
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowWave2L
Type: Pump
Synchronize: No
Divide by 10: Yes
Initial Off Time: 0
On Time: 14
Off Time: 14
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowWave2R
Type: Pump
Synchronize: Yes
Divide by 10: Yes
Initial Off Time: 14
On Time: 14
Off Time: 0
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowWave3L
Type: Pump
Synchronize: No
Divide by 10: Yes
Initial Off Time: 0
On Time: 12
Off Time: 12
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowWave3R
Type: Pump
Synchronize: Yes
Divide by 10: Yes
Initial Off Time: 12
On Time: 12
Off Time: 0
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowWave4L
Type: Pump
Synchronize: No
Divide by 10: Yes
Initial Off Time: 0
On Time: 16
Off Time: 16
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowWave4R
Type: Pump
Synchronize: Yes
Divide by 10: Yes
Initial Off Time: 16
On Time: 16
Off Time: 0
Minimum Intensity: 0
Maximum Intensity: 100
"œProfiles - Sporadic Daylight Wavs"
These profiles are triggered sporadically throughout the day in order to mix up the flow pattern a little bit.
These profiles get triggered in order to not only mix up the flow pattern a bit, but also kick up and mix up and dirt or food that has settled out on the bottom of the tank. They alternate on and off back and forth for 60 seconds at max intensity.
Name: FlowFlushL
Type: Pump
Synchronize: No
Divide by 10: No
Initial Off Time: 0
On Time: 60
Off Time: 60
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowFlushR
Type: Pump
Synchronize: Yes
Divide by 10: No
Initial Off Time: 60
On Time: 60
Off Time: 0
Minimum Intensity: 0
Maximum Intensity: 100
These profiles get triggered to simulate a storm or choppy water and are used to mix up the normal wav flow pattern. They are very similar to the normal wav profile except they are much quicker and more violent.
Name: FlowStormL
Type: Pump
Synchronize: No
Divide by 10: Yes
Initial Off Time: 0
On Time: 4
Off Time: 4
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowStormR
Type: Pump
Synchronize: Yes
Divide by 10: Yes
Initial Off Time: 4
On Time: 4
Off Time: 0
Minimum Intensity: 0
Maximum Intensity: 100
OUTPUTS
Last but certainly not least are the actual Output programs directly associated with each powerhead. These programs utilize the Virtual Outputs & Profiles that we listed above and ties them all together. By default they Fallback & Set themselves to the FlowNight profile just incase something were to happen to the Apex. Then from that point forward they evaluate from top to bottom to True OR False where each new True statement takes precedence.
PHead-Left:
Left powerhead program"¦
{
Fallback FlowNight
Set FlowNight
If Output FlowWave1 = ON Then FlowWave1L
If Output FlowWave2 = ON Then FlowWave2L
If Output FlowWave3 = ON Then FlowWave3L
If Output FlowWave4 = ON Then FlowWave4L
If Output FlowFlush = ON Then FlowFlushL
If Output FlowStorm = ON Then FlowStormL
If Output FlowDskDwn = ON Then FlowDskDwn
If Output Daylight = OFF Then FlowNight
If Output FlowFull = ON Then FlowFull
If Output FlowOff = ON Then OFF
}
PHead-Right:
Right powerhead program"¦
{
Fallback FlowNight
Set FlowNight
If Output FlowWave1 = ON Then FlowWave1R
If Output FlowWave2 = ON Then FlowWave2R
If Output FlowWave3 = ON Then FlowWave3R
If Output FlowWave4 = ON Then FlowWave4R
If Output FlowFlush = ON Then FlowFlushR
If Output FlowStorm = ON Then FlowStormR
If Output FlowDskDwn = ON Then FlowDskDwn
If Output Daylight = OFF Then FlowNight
If Output FlowFull = ON Then FlowFull
If Output FlowOff = ON Then OFF
}
Thats all I can think to post at the moment. If you have any questions or comments please feel fee to post them below or to message me.
Thanks
Josh
My plan was to come up with multiple different, essentially "œtimers", that control the powerheads at different intensities for different lengths of time all throughout the day. The first thing I'll do is talk about these "œtimers" which were created mainly using Apex Virtual Outputs and the Oscillate(OSC) command. I will list each Output I defined below along with a short description of what it is and how its working. Each of these Virtual Outputs will eventually be tied directly to and control an Apex Profile. An Apex Profile contains the specific commands needed to vary the voltage and duration that these powerheads will use in order to provide the necessary varying wav pattern we are after.
I should also note somewhere in here that although I'm using Tunze 6055's, I do not have the power on the controllers turned the whole way up. At the current time I'm running them at approximately 25% of their max. I could probably turn the powerhead power up and manipulate the power output via the Apex, but for now I chose not to do so.
Please note that the {curly braces} below are not required in the programs, but rather are just being used in the post to separate the actual code from the description.
VIRTUAL OUTPUTS
"œVirtual Outputs - General Timers"
These timers are generally defined and then used as variables inside other timers.
Daylight:
ON during all sunlight hours"¦ Used in other Outputs to trigger that its "œDaytime" and not night.
{
Set OFF
If Sun 000/000 Then ON
}
FlowDskDwn:
ON during sunrise & sunset hours to signal Dusk & Dawn
{
Set OFF
If Sun 000/000 Then ON
If Sun 060/-060 Then OFF
}
"œVirtual Outputs - Constant Daylight Wav Timers"
These timers are used during daytime hours in order to repeat 4 different wav patterns EACH hour of the day.
FlowWave1:
ON for 15 minutes beginning at midnight, then OFF for 45 minutes, then repeats continually throughout the day. Only during Daylight hours.
{
Set OFF
OSC 000:00/015:00/045:00 Then ON
If Output Daylight = OFF Then OFF
}
FlowWave2:
OFF for 15 minutes beginning at midnight, then ON for 15 minutes, then OFF for 30 minutes, then repeats continually throughout the day. Only during Daylight hours.
{
Set OFF
OSC 015:00/015:00/030:00 Then ON
If Output Daylight = OFF Then OFF
}
FlowWave3:
OFF for 30 minutes beginning at midnight, then ON for 15 minutes, then OFF for 15 minutes, then repeats continually throughout the day. Only during Daylight hours.
{
Set OFF
OSC 000:30/015:00/015:00 Then ON
If Output Daylight = OFF Then OFF
}
FlowWave4:
OFF for 45 minutes beginning at midnight, then ON for 15 minutes, then repeats continually throughout the day. Only during Daylight hours.
{
Set OFF
OSC 000:45/015:00/000:00 Then ON
If Output Daylight = OFF Then OFF
}
"œVirtual Outputs - Sporadic Daylight Wav Timers"
These timers are used during daytime hours in order to make the daytime wav pattern even more sporadic and not just constant ALL day long.
FlowFlush:
This timer is used to trigger some special Flushing profiles which are used to help keep the tank clean by flushing each side at a time for an extended period of time at full power.
OFF for 120 minutes(2 hours) beginning on Jan 1, 1996 @ midnight, then ON for 2 minutes, then repeats.
{
Set OFF
OSC 120:00/002:00/000:00 Then ON
If Output Daylight = OFF Then OFF
}
FlowStorm:
This timer is used to trigger a "œstorm" or "œchoppy" water, approximately every 10 hours for 25 minutes on MWF.
ON for 25 minutes beginning at on Jan 1, 1996 @midnight, then OFF for 600 minutes(10 hours), then repeats. Only during Daylight hours on Monday, Wednesday, or Friday.
{
Set OFF
OSC 000:00/025:00/600:00 Then ON
If Output Daylight = OFF Then OFF
If DoW S-T-T-S Then OFF
}
PROFILES
"œProfiles - General"
Name: FlowFull
When this profile is triggered, It turns on and remains on at 100% intensity. Mainly just used for testing what 100% intensity looks like at the current powerhead controller setting. I do not use this profile programmatically, but rather just as a switch directly on the Apex Fusion dashboard.
Type: Pump
Synchronize: No
Divide by 10: No
Initial Off Time: 0
On Time: 1
Off Time: 0
Minimum Intensity: 100
Maximum Intensity: 100
Name: FlowNight
This profile is used at nighttime. It turns on and remains on at 35% intensity all night long. The Tunze powerheads require at-least 35% power to run. Anything less than that and they will completely turn off. Some people report 30%, but for me it was 35%.
Type: Pump
Synchronize: No
Divide by 10: No
Initial Off Time: 0
On Time: 1
Off Time: 0
Minimum Intensity: 35
Maximum Intensity: 35
Name: FlowDskDwn
This profile is used at Dusk & Dawn in order to slowly build up or slow down the current flow. It will ramp up over a 15 second period from 35% to 75% intensity.
Type: Ramp
RampTime: 15
Start Intensity: 35
End Intensity: 75
"œProfile's - Constant Daylight Wavs"
These profiles are used to create the constant back and forth WAV we are trying to achieve during the day that our corals like. I have 8 main profiles, two for each 15 minute increment in an hour. One controls the Left powerhead and one controls the Right. Alternating in turning them on and off. The numbers I used for my intensity and my on/off time intervals are probably unique to my tank(BioCube 32) and you will need to play around with them and change them according to the size and shape of your own tank. Also of note is that an intensity of 0 here is the same as OFF, so 0 & 100 means OFF to 100% intensity. As stated earlier if you didn't want the powerheads to turn completely off you would set the intensity to a minimum of 35%.
Name: FlowWave1L
Type: Pump
Synchronize: No
Divide by 10: Yes
Initial Off Time: 0
On Time: 10
Off Time: 10
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowWave1R
Type: Pump
Synchronize: Yes
Divide by 10: Yes
Initial Off Time: 10
On Time: 10
Off Time: 0
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowWave2L
Type: Pump
Synchronize: No
Divide by 10: Yes
Initial Off Time: 0
On Time: 14
Off Time: 14
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowWave2R
Type: Pump
Synchronize: Yes
Divide by 10: Yes
Initial Off Time: 14
On Time: 14
Off Time: 0
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowWave3L
Type: Pump
Synchronize: No
Divide by 10: Yes
Initial Off Time: 0
On Time: 12
Off Time: 12
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowWave3R
Type: Pump
Synchronize: Yes
Divide by 10: Yes
Initial Off Time: 12
On Time: 12
Off Time: 0
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowWave4L
Type: Pump
Synchronize: No
Divide by 10: Yes
Initial Off Time: 0
On Time: 16
Off Time: 16
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowWave4R
Type: Pump
Synchronize: Yes
Divide by 10: Yes
Initial Off Time: 16
On Time: 16
Off Time: 0
Minimum Intensity: 0
Maximum Intensity: 100
"œProfiles - Sporadic Daylight Wavs"
These profiles are triggered sporadically throughout the day in order to mix up the flow pattern a little bit.
These profiles get triggered in order to not only mix up the flow pattern a bit, but also kick up and mix up and dirt or food that has settled out on the bottom of the tank. They alternate on and off back and forth for 60 seconds at max intensity.
Name: FlowFlushL
Type: Pump
Synchronize: No
Divide by 10: No
Initial Off Time: 0
On Time: 60
Off Time: 60
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowFlushR
Type: Pump
Synchronize: Yes
Divide by 10: No
Initial Off Time: 60
On Time: 60
Off Time: 0
Minimum Intensity: 0
Maximum Intensity: 100
These profiles get triggered to simulate a storm or choppy water and are used to mix up the normal wav flow pattern. They are very similar to the normal wav profile except they are much quicker and more violent.
Name: FlowStormL
Type: Pump
Synchronize: No
Divide by 10: Yes
Initial Off Time: 0
On Time: 4
Off Time: 4
Minimum Intensity: 0
Maximum Intensity: 100
Name: FlowStormR
Type: Pump
Synchronize: Yes
Divide by 10: Yes
Initial Off Time: 4
On Time: 4
Off Time: 0
Minimum Intensity: 0
Maximum Intensity: 100
OUTPUTS
Last but certainly not least are the actual Output programs directly associated with each powerhead. These programs utilize the Virtual Outputs & Profiles that we listed above and ties them all together. By default they Fallback & Set themselves to the FlowNight profile just incase something were to happen to the Apex. Then from that point forward they evaluate from top to bottom to True OR False where each new True statement takes precedence.
PHead-Left:
Left powerhead program"¦
{
Fallback FlowNight
Set FlowNight
If Output FlowWave1 = ON Then FlowWave1L
If Output FlowWave2 = ON Then FlowWave2L
If Output FlowWave3 = ON Then FlowWave3L
If Output FlowWave4 = ON Then FlowWave4L
If Output FlowFlush = ON Then FlowFlushL
If Output FlowStorm = ON Then FlowStormL
If Output FlowDskDwn = ON Then FlowDskDwn
If Output Daylight = OFF Then FlowNight
If Output FlowFull = ON Then FlowFull
If Output FlowOff = ON Then OFF
}
PHead-Right:
Right powerhead program"¦
{
Fallback FlowNight
Set FlowNight
If Output FlowWave1 = ON Then FlowWave1R
If Output FlowWave2 = ON Then FlowWave2R
If Output FlowWave3 = ON Then FlowWave3R
If Output FlowWave4 = ON Then FlowWave4R
If Output FlowFlush = ON Then FlowFlushR
If Output FlowStorm = ON Then FlowStormR
If Output FlowDskDwn = ON Then FlowDskDwn
If Output Daylight = OFF Then FlowNight
If Output FlowFull = ON Then FlowFull
If Output FlowOff = ON Then OFF
}
Thats all I can think to post at the moment. If you have any questions or comments please feel fee to post them below or to message me.
Thanks
Josh