Sorry in advance for the long reply
They will draw significantly more power when there is load (IE water) pushing on them. Like 3-4x as much. Retracting will be the same as you see now (or less with the water assist) but both running at the same time, one extending and one retracting will put you over 10-12a easily. Altho those boards claim 15A+ they are not properly heatsinked to support anywhere near that (they usually melt down around 7 in my experience.) If it's getting hot at 30s with no load that's not a great sign.
You'll need to watch out for voltage drops (and heat) with long runs - the electric motor in the actuator will fry pretty easily if you undersize the wiring. Optimally you don't really want the wiring to be > 10-12ft total on each actuator. The relays fix that issue and are super cheap/easy. At the end of the current actuator 6ft cable should be the relay -- which is tied directly into the battery. From there you can run your relay controls where ever you want with no concerns around load. If you just add the relays to your setup nothing else has to change. Wiring example - just use your relays in place of the switch http://www.instructables.com/id/Troubleshooting-Testing-and-Bypassing-SPDT-Power-/
Although preferred <10-12ft, below is a helpful table - electric motors are in the 3% drop class. Each actuator run needs a 15A line as per specs, so you may need 8AWG depending on total length between actuator and battery (including actuator 6ft - realistically to the dash you're going to be over 30ft, it adds up quickly.) Or you can just toss a relay there and run 16-18AWG as far as you want since there's < 200ma on it!
Incase it helps, here's the logic ripped out of mine for the deploy/retracts that will fix your long run time - no need for delays. Similar logic to yours, i just use an array to reduce the code. coolDown is a period to prevent the actuator from running in the opposite direction too quickly if i'm bouncing around speed limit or GPS has issues -- currently 500ms. On mine tabTime is specific to the profile loaded and can be adjusted on demand with a pot to adjust the deployment- you can just set it to a static number for your config.
surf=0/1/2 (off, left, right)
tabMap[0] =off, tabMap[1] = left, tabMap[2] = right (this is just for reporting on a small screen and phone app I have, and serial)
deployed[ ] is 0 off, 1= left 2= right.. etc.. for all the other ones. Timers are -1 when they are not running.
I call tabTimers() at the start of my loop() and goSurf() after I have collected GPS data/etc in the loop.
void deployTab(int tab) {
Serial.print("Deploying: ");
Serial.println(tabMap[tab]);
for (i = 1; i < 3; i = i + 1) { // loop thru to see if we need to retract anything before starting. Skipping cooldown currently to reduce any lags since this should only be for transfers.
if(i != tab and (deployed[i] == 1 or deployTimers[i] > 0)) {
retractTab(i);
}
}
//Do deploy start logic here
deployTimers[tab] = millis();
}
void retractTab(int tab) {
Serial.print("Retracting: ");
Serial.println(tabMap[tab]);
//do retract start logic here
retractTimers[tab] = millis();
}
void goSurf() {
if(surf > 0) { // Is surf enabled? surf 1=left surf2=right
if(speedlimit ==1) { // Are we in a deploy speed range
if(deployTimers[surf] == -1 and retractTimers[surf] ==-1 and deployed[surf] != 1 and (millis()- coolDownTimers[surf]) > coolDown) { // are we not deploying or retracting and not deployed and not in a cooldown for this actuator?
deployTab(surf);
}
}
// Check if we have anything to retract
if(speedlimit ==0) { // Are we outside of a deploy speed range
for (i = 1; i < 3; i = i + 1) { // loop thru both to see if we need to retract
if(retractTimers[i] == -1 and deployTimers[i] ==-1 and deployed[i] == 1 and (millis()- coolDownTimers[surf]) > coolDown) { // are we not deploying or retracting and deployed and not in a cooldown for this actuator?
retractTab(i);
}
}
}
} else { // auto-retract when surf is off
for (i = 1; i < 3; i = i + 1) { // loop thru both to see if we need to retract
if(retractTimers[i] == -1 and deployTimers[i] ==-1 and deployed[i] == 1 and (millis()- coolDownTimers[surf]) > coolDown) { // are we not deploying or retracting and deployed and not in a cooldown for this actuator?
retractTab(i);
}
}
}
}
void tabTimers() {
// Check timers for status
for (i = 1; i < 3; i = i + 1) {
if(deployTimers[i] > 0 and (millis()- deployTimers[i]) > tabTime[i] and retractTimers[i] == -1) {
deployed[i] = 1;
//Do your deploy complete logic here, IE: set pins
Serial.print("Deploy complete: ");
Serial.println(tabMap[i]);
deployTimers[i]=-1;
coolDownTimers[i] = millis();
}
}
for (i = 1; i < 3; i = i + 1) {
if(retractTimers[i] > 0 and (millis()- retractTimers[i]) > tabTime[i] and deployTimers[i] ==-1) {
deployed[i]=0;
//Do your retract complete logic here, IE: set pins
Serial.print("Retract complete: ");
Serial.println(tabMap[i]);
retractTimers[i]=-1;
coolDownTimers[i] = millis();
}
}
}