I am thinking about implementing a continuos water change and have two Spectapure dosing pumps that are up to the task.
I am switching to internal memory and was wondering if there is a way to turn my stand alone Avastmarine ATO off when the pumps are set to withdraw water/replace water? (I plan to replace the water every 9 min.)
Is there also a way to reduce the offset off when one pump turns off and the other turns on using internal memory as well?
Can you mix hard coding and coding to internal memory in the sketch?
I would just put a statement if either spectrapure pump is on then turn off the ato relay. However the offset you mentioned would prob leave a window where neither is running? Can you elaborate with the on/off timeline of what you want?
lnevo wrote:I would just put a statement if either spectrapure pump is on then turn off the ato relay. However the offset you mentioned would prob leave a window where neither is running? Can you elaborate with the on/off timeline of what you want?
Yes you can mix hard coded and memory
I plan to have the pumps change 18 mL every 9 minutes, 24 hours a day, 7 days a week. This comes out to 150x a day.
I would like Pump 1 to remove 18 mL of water from the tank which would take 6.17 seconds (it pumps 175 ml/min). Then as soon as Pump 1 is finished Pump 2 would add 18 mL of fresh saltwater to the tank which would take 5.4 seconds (it pumps 200 mL/min). I would like to minimize the offset if possible. I do not know how to code and copy and paste bits and pieces as I need them. Could you please tell me how to code the if statement. My ATO is currently on an expansion relay box 1 Relay 14. The pumps will be on 5 and 6 of relay box 1.
I am not dosing 2 part. I was going to use the dosing pump function in the wizard to get the pumps to turn on/off to change my water. I was going to have it coded to the memory so if I need to change it later I can through the portal or RA app on my phone.
Ok. cool. That will certainly be the easiest way, but it will have a built in offset between dosing pump 1 and dosing pump 2. We can do it one of two ways. I can work on some code to know when the first pump is triggered and keep the ATO off, or we can manually setup the two dosing pumps to use the internal memory but not have an offset in between. While either pump is off the ATO won't trigger. Let me know you're preference with that, the main thing would be how customizable do you want the offset between the pumps... or if you want to drain, then add, then ato pump back on.
Just for shits and giggles...another option you could do is to add some water first, then remove some water. Since the amount of water changed is the same it won't kick on your ATO and we won't have to do anything custom. Since you're changing so little water, it really won't make that much of a difference. What do you think of that? It's certainly the easiest and most flexible code-wise...
lnevo wrote:Ok. cool. That will certainly be the easiest way, but it will have a built in offset between dosing pump 1 and dosing pump 2. We can do it one of two ways. I can work on some code to know when the first pump is triggered and keep the ATO off, or we can manually setup the two dosing pumps to use the internal memory but not have an offset in between. While either pump is off the ATO won't trigger. Let me know you're preference with that, the main thing would be how customizable do you want the offset between the pumps... or if you want to drain, then add, then ato pump back on.
Just for shits and giggles...another option you could do is to add some water first, then remove some water. Since the amount of water changed is the same it won't kick on your ATO and we won't have to do anything custom. Since you're changing so little water, it really won't make that much of a difference. What do you think of that? It's certainly the easiest and most flexible code-wise...
I was thinking to drain then fill with ATO off. But more importantly I would like to be able to adjust the amount of water being pumped in/out using internal memory if changes need to be made with minimum hassle. I am a new parent and my priority is my daughter. As a result I have not been able to do water changes as often as I like. If it works out better to fill then remove then I game for that.
Thanks. Its an amazing feeling when you become a parent. I find having a child is like having a reef tank, a lot of work but one of the greatest things you can do in life.
Main Relay
1. Skimmer
2. LED fan
3. LED power supply 1
4. LED power supply 2
5. RW8
6. MJ1200 water mixing station
7. Heater
8. DC3000
Expansion Relay 1 1. ATO
2. Not Used
3. Not Used
4. Not Used 5. Autowater change 1
6. Autowater change 2
7. Not Used
8. Not Used
In the INO below I set the relays for the autowater change 1 & 2 pumps to not used because I was not sure what to choose from in the wizard.
Put this in the custom code section. Btw, you had Box1_Port1 on/off with your lights... you can change it back if that's your preference.
If you need to switch around the ports below, go ahead. But this is pretty much the easiest. You'll add a few ml of water, and then take a few ml of water out. It really won't be a big difference considering your frequency and this way it won't mess with the ATO and you won't have to disable during the operation.
lnevo wrote:Put this in the custom code section. Btw, you had Box1_Port1 on/off with your lights... you can change it back if that's your preference.
If you need to switch around the ports below, go ahead. But this is pretty much the easiest. You'll add a few ml of water, and then take a few ml of water out. It really won't be a big difference considering your frequency and this way it won't mess with the ATO and you won't have to disable during the operation.
ReefAngel.Relay.On( Box1_Port1 ); // ATO port is always on
ReefAngel.DosingPumpRepeat1(Box1_Port6); // AWC change 2 (add)
ReefAngel.DosingPumpRepeat2(Box1_Port5); // AWC change 1 (drain)
Sorry for this dumb question but how would I change the values of how long they run? I have always hard coded by settings. I have my ATO on a timer because it is so loud that it has woken me up at night so I set to turn on with the lights since I am usually up by then. Should I take the first line off so that way it follows the time schedule?
Yeah you can go back to the daylights code you had for it before if that works for you. As far as the changes I'm assuming you have wifi? You can set the values through the portal or universal app
lnevo wrote:Yeah you can go back to the daylights code you had for it before if that works for you. As far as the changes I'm assuming you have wifi? You can set the values through the portal or universal app
I am sorry to bother you again. I was looking through the reef angel app and did not see dosingpump repeat1 or dosingpumprepeat2. I am not sure not sure which memory location I should input a value. Also is the value in seconds? can I do tenths of seconds?
rimai wrote:Use the dosing pump repeat timer and interval memory locations
Found that the Dosing Pump Timer is the length of time the dosing pump is on but is this in seconds or is it like our lighting that has a max of 225ish.
Also found that the DosingPump Repeat Interval sets the time between each time the pumps will run. Is this in seconds, minutes, or what? I would like to run my dosing pumps every 9 minutes, so would I just write a 9 for that location?