SuncrestReef Posted July 18, 2020 Share Posted July 18, 2020 When I wrote my 8-part Apex Programming Tutorial series, all of the coding examples were applied to outputs where the Control Type was set to Advanced. Control Types are pre-set shortcuts to program an output for a specific device, allowing less experienced Apex users with a simple entry form to fill in the desired settings, and the Apex does the programming for you behind the scenes. The EB832 EnergyBar comes pre-programmed with each output set for specific Control Types, so you can just plug your lights into outputs 1 & 2, return pump in output 3, heater in output 4, etc. to get your system up and running quickly. However, these pre-programmed outputs can be changed to any Control Type you choose.To set a Control Type, first click the gear icon on the Fusion dashboard for the output you want to configure: The Control Type can then be selected from the dropdown list on the Output Configuration screen: There are 12 Control Types to choose from: Advanced Always ATO Chiller Feeder Heater Light pH Control ORP Control Powerhead Return Pump Skimmer When you select a Control Type, the screen will change to show you the settings specific to that device. After you fill in the settings and save it, you can change the Control Type to "Advanced" and the screen will change to show you the underlying program code. You can toggle back and forth between the pre-defined Control Type and Advanced. This is actually a good way to learn Apex programming because you can see how the code is changed when you alter the fill-in fields with different parameters, then toggle back to the Advanced view. However, if you manually modify the Advanced code and then toggle back to the specific Control Type, your manual changes will be lost. If you want to alter the automatically-generated program code, you must leave the Control Type set to Advanced.Below are screenshots of each Control Type, and then the automatically-generated code when switching it to Advanced. In screens where Fallback is mentioned, Fallback is the setting applied if the output's module is disconnected from the Apex, or if the Apex is not communicating with the module (such as when rebooting). Also, the Log checkbox is useful if you want to review a historic record of each time an output is turned on or off. This can be viewed in the Output Log screen.Control Type: AlwaysAlways should be used any time you want the output to remain On or Off 24/7. This is good for devices that you never want to turn off, or if you have an unused output and always want it to be powered off so if you plug something in it doesn't accidentally power on before you're ready. Here is the generated code for Always: Control Type: ATOATO should be used if you're configuring a non-Neptune ATO system. (Do NOT use this control type if you have the Neptune ATK. Please follow the instructions in my ATK Tutorial instead.)With this Control Type you specify the low water and high water switch ports, and how long to wait before turning on the pump. These are typically float switches attached to a Breakout Box, but could also be optical sensors attached to the FMM module. Here is the generated code for ATO: Control Type: ChillerChiller allows you to specify the high temperature to turn on your chiller, and the low temperature to turn it off. You also need to specify which temperature probe to use if you have more than one. This Control Type could also be used for a cooling fan rather than a refrigerated chiller. Here is the generated code for Chiller: Control Type: FeederFeeder is used to control the Neptune AFS automatic feeder. Of all the Control Types, this one is probably the most convenient because programming the AFS can be complicated. While this Control Type is convenient, it does not allow you to coordinate other devices such as pumps, skimmers, or powerheads to shut down during automated feedings. For this I wrote an entire tutorial topic on Apex Feed Cycles which covers how to automate all your devices during feeding.For the Feeder, you specify the time of day for the first feeding, how many times the AFS drum should rotate per feeding, how many times to feed per day, and if more than one feeding per day how long to wait between feedings. The Feed Cycle option is to choose which Feed button can be used to manually trigger the feeder outside of the scheduled times. Here is the generated code for Feeder. Please see my tutorial on Apex Timers for details on the OSC and If Time commands. Control Type: HeaterHeater allows you to specify the low temperature to turn on your heater, and the high temperature to turn it off. You also need to specify which temperature probe to use if you have more than one. Here is the generated code for Heater: Control Type: LightLight allows you to schedule the on and off times for a light, and a temperature to turn it off if the water gets too warm. You also need to specify which temperature probe to use if you have more than one. Hysteresis is the time (in MM:SS) to wait before turning the lights back on once the temperature drops below the limit. Here is the generated code for Light: Control Type: pH ControlpH Control allows you to turn on or turn off a device based on the pH probe reading. This is useful for controlling CO2 feed in calcium reactors, or to turn off dosing of certain additives that impact the pH of your water. You need to select your pH probe if you have more than one, the high pH reading, the low pH reading, and whether to turn on the device when pH is low or high. Here is the generated code for pH Control: Control Type: ORP ControlORP Control allows you to turn on or turn off a device based on the ORP probe reading. This is typically used to control an ozone generator. You need to select your ORP probe if you have more than one, the high ORP reading, the low ORP reading, and whether to turn on the device when ORP is low or high. Here is the generated code for ORP Control: Control Type: PowerheadPowerhead allows you to configure the output to turn on and off on a repeating timed cycle. This is typically only used for powerheads which do not have any variable speed control. The times are specified in MM:SS format. The Initial Off Time is typically used to offset the cycle from another powerhead to create an oscillating flow pattern. If you only have one powerhead, the Initial Off Time is of little value, but keep in mind the total amount of time the output is off will be the combination of the Initial Off Time and the Off Time. For example, if you want the powerhead on for 1 minute and off for 1 minute, but you are using the Initial Off Time, then split the 1 minute between the Initial Off Time field and the Off Time field, such as 0:30 and 0:30.The Feed Timer option will turn off the output when the selected Feed button is manually pressed, and the Feed Timer Delay is the number of additional minutes to remain off after the Feed timer has expired. See my tutorial on Apex Feed Cycles for more details. Here is the generated code for Powerhead. Please see my tutorial on Apex Timers for details on the OSC command. Control Type: Return PumpReturn Pump is pretty self explanatory. The Feed Timer option will turn off the output when the selected Feed button is manually pressed, and the Feed Timer Delay is the number of additional minutes to remain off after the Feed timer has expired. See my tutorial on Apex Feed Cycles for more details. Here is the generated code for Return Pump: Control Type: SkimmerSkimmer is also pretty self explanatory. The Feed Timer option will turn off the output when the selected Feed button is manually pressed, and the Feed Timer Delay is the number of additional minutes to remain off after the Feed timer has expired. See my tutorial on Apex Feed Cycles for more details.The Defer Time is the number of minutes & seconds to wait before turning on the skimmer, typically to allow the water level in the sump to normalize if the return pump was also shut down. This is to prevent skimmer overflows. Here is the generated code for Skimmer: I hope this article gives you better understanding of how Control Types can be used, and also provides a starting point to get into more advanced Apex programming. Be sure to read the tutorial series linked a the top of this article to expand your Apex programming skills.Happy reefing! 2 Quote Link to comment Share on other sites More sharing options...
SuncrestReef Posted July 18, 2020 Author Share Posted July 18, 2020 I published this as an Article over at Reef2Reef to go along with my Apex tutorial series. I’m just waiting on them to approve and post the article, but thought I’d post it here as well for all my local Apex friends. 😊 1 Quote Link to comment Share on other sites More sharing options...
Blue Z Reef Posted July 18, 2020 Share Posted July 18, 2020 Love these tutorials, makes figuring out Apex much easier! Only issue is I can’t see the pics on this...am I the only one? Looking on my iPhone 1 Quote Link to comment Share on other sites More sharing options...
Gumby Posted July 18, 2020 Share Posted July 18, 2020 Neptune needs to pay you for all your help. 1 Quote Link to comment Share on other sites More sharing options...
Optimusprime3605 Posted July 19, 2020 Share Posted July 19, 2020 Love these tutorials, makes figuring out Apex much easier! Only issue is I can’t see the pics on this...am I the only one? Looking on my iPhone Can't see pics, as well Sent from Atlantis 🤙 Quote Link to comment Share on other sites More sharing options...
SuncrestReef Posted July 19, 2020 Author Share Posted July 19, 2020 4 hours ago, Blue Z Reef said: Love these tutorials, makes figuring out Apex much easier! Only issue is I can’t see the pics on this...am I the only one? Looking on my iPhone 59 minutes ago, Optimusprime3605 said: Can't see pics, as well I updated the article with local images. They should show up now. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.