Reef Central Online Community

Go Back   Reef Central Online Community > General Interest Forums > Do It Yourself
Blogs FAQ Calendar

Notices

User Tag List

Reply
Thread Tools
Unread 05/10/2014, 10:41 PM   #51
redtop03
moved slow
 
redtop03's Avatar
 
Join Date: Apr 2008
Location: Barbourville,Ky.
Posts: 1,390
here's another feature I think a lot of folks will love, this is the automatic partial water change program built into this controller, it is completely programmable for any day or every day of the week, depending on how much you wanna change

I altered the text on this pic of Fernandos to English for better understanding for us English talking peoples and I hope I'm explaining this correctly



if I'm understanding this correctly, when the AWC ( or TPA in Portuguese ) is activated, pump 1 will drain water from a Quarantine tank into the house drain or septic system until it triggers the float switch in that tank.....

at which time, pump 1 stops and pump 2 starts, pumping water from the sump back into the Quarantine tank, the sump has 2 float sensors, somehow those 2 sensors tell pump 2 to stop and pump 3 to start.....

pump 3 pulls water from a reservoir with newly mixed saltwater to refill the sump.....

this does a partial water change of the main system as well as change the water in the Quarantine system...

I'm thinking that with a little adjusting of the float sensor positions, this will be a very accurate system


__________________
Willie McDaries

Last edited by redtop03; 05/10/2014 at 10:52 PM.
redtop03 is offline   Reply With Quote
Unread 05/11/2014, 08:48 AM   #52
fefegarcia1
Registered Member
 
fefegarcia1's Avatar
 
Join Date: Jul 2011
Location: Sao Paulo, Brazil
Posts: 193
Perfect explanation.


fefegarcia1 is offline   Reply With Quote
Unread 05/11/2014, 08:49 AM   #53
fefegarcia1
Registered Member
 
fefegarcia1's Avatar
 
Join Date: Jul 2011
Location: Sao Paulo, Brazil
Posts: 193
Quote:
Originally Posted by redtop03 View Post
alright, I couldn't wait til tomorrow, I ran the LEDs up and snapped a few pics LOL

as you can see, the green is now green, and it's the same on every LED screen with the bar graphs
Now is better.


fefegarcia1 is offline   Reply With Quote
Unread 05/11/2014, 09:13 AM   #54
redtop03
moved slow
 
redtop03's Avatar
 
Join Date: Apr 2008
Location: Barbourville,Ky.
Posts: 1,390
Quote:
Originally Posted by fefegarcia1 View Post
Perfect explanation.
nice, I was hoping I got that correct...it took me a while to figure out what was going on there

the Quarantine tank could be skipped and just pump the old water from the sump and refill it from the reservoir, looks easy enough to change to suite anybody else needs too, I like it

Quote:
Originally Posted by fefegarcia1 View Post
Now is better.
my first set of pics were actually a little too soon to post but I wanted to get started LOL


__________________
Willie McDaries
redtop03 is offline   Reply With Quote
Unread 05/11/2014, 03:31 PM   #55
redtop03
moved slow
 
redtop03's Avatar
 
Join Date: Apr 2008
Location: Barbourville,Ky.
Posts: 1,390
Fernando, for the auto water change system, what pumps are you using ?

I assume any small pump would work fine but would 3 peristaltic dosing pumps be a better option, or would they be too slow ?


__________________
Willie McDaries
redtop03 is offline   Reply With Quote
Unread 05/11/2014, 05:07 PM   #56
perkint
Registered Member
 
Join Date: Jan 2014
Location: Robin hood country, UK
Posts: 817
If it's float switch driven and works how you describe, the rate of the pumps shouldn't matter. They'll just run until the switch changes state

Just to add - not posted before, but been reading from the start. Software looks very good

Tim


perkint is offline   Reply With Quote
Unread 05/11/2014, 05:44 PM   #57
redtop03
moved slow
 
redtop03's Avatar
 
Join Date: Apr 2008
Location: Barbourville,Ky.
Posts: 1,390
Quote:
Originally Posted by perkint View Post
If it's float switch driven and works how you describe, the rate of the pumps shouldn't matter. They'll just run until the switch changes state

Just to add - not posted before, but been reading from the start. Software looks very good

Tim
that is true, in the program is has a time and date to set to activate the AWC and the floats do all the triggering to turn pumps on and off....

I wondered if it needed to do it quickly because I assume that the return pump would need to be off until the water change was complete, otherwise, the float for the ATO would activate to refill with top off water and mess things up

if the return pump has to be off until the AWC is complete, I think it would be best to have the water change happen as fast as possible so the return pump could get back to work with the filtering....

I'm really just trying to get a better understanding of how all this works

jump in any time and post away, all ideas and suggestions are welcome and appreciated

and yep, Fernando has done a remarkable job with this software, the more I mess with it, the more I find it does


__________________
Willie McDaries
redtop03 is offline   Reply With Quote
Unread 05/11/2014, 07:04 PM   #58
fefegarcia1
Registered Member
 
fefegarcia1's Avatar
 
Join Date: Jul 2011
Location: Sao Paulo, Brazil
Posts: 193
You can use any model of pump.

The flow no matter.

Pumps of return are not disconnected. I have division on sump.

Also I prefer change few liters per day.

So don't interfere much in the flow of the return pump.

ATO don't work during water change or during a fail.

See tab "parametros".

Code:
void reposicao_agua_doce () // abre a solenoide 1 se o nível estiver baixo e se a tpa não estiver em andamento
//e se o chiller estiver desligado e se o nível do sump não estiver anormal e se não houve falha durante uma tpa.
{
  if((analogRead(sensor3) > 400) && (analogRead(sensor2) > 400) && (bitRead(tpa_status,1) == false) && (bitRead(status_parametros,0) == false) && (bitRead(tpa_status,2) == false))
  {
    digitalWrite(solenoide1Pin,HIGH);
    bitWrite(Status,1,1); //sinaliza reposição em andamento
  }
  else
  {
    digitalWrite(solenoide1Pin,LOW);
    bitWrite(Status,1,0); 
  }
}



fefegarcia1 is offline   Reply With Quote
Unread 05/11/2014, 07:16 PM   #59
redtop03
moved slow
 
redtop03's Avatar
 
Join Date: Apr 2008
Location: Barbourville,Ky.
Posts: 1,390
Quote:
Originally Posted by fefegarcia1 View Post
You can use any model of pump.

The flow no matter.

Pumps of return are not disconnected. I have division on sump.

Also I prefer change few liters per day.

So don't interfere much in the flow of the return pump.

ATO don't work during water change or during a fail.

See tab "parametros".

Code:

void spare freshwater () // opens the solenoid 1 if the level is low and if the tpa is not in progress
// and if the chiller is turned off and the sump level is not abnormal and there was no failure during a tpa.
{
   if ((analogRead (Sensor3)> 400) && (analogRead (sensor2)> 400) && (bitRead (tpa_status, 1) == false) && (bitRead (status_parametros, 0) == false) && (bitRead (tpa_status, 2 ) == false))
   {
     digitalWrite (solenoide1Pin, HIGH);
     bitWrite (status, 1,1); // indicates replacement in progress
   }
   else
   {
     digitalWrite (solenoide1Pin, LOW);
     bitWrite (status, 1,0);
that would work too I ran that section of code through google translator

a small amount changed every day is less stressful to the tank than a large change and would be easier to keep your parameters in check too

this full automation is all new to me and I'm still trying to figure it all out


__________________
Willie McDaries

Last edited by redtop03; 05/11/2014 at 08:06 PM.
redtop03 is offline   Reply With Quote
Unread 05/11/2014, 07:50 PM   #60
fefegarcia1
Registered Member
 
fefegarcia1's Avatar
 
Join Date: Jul 2011
Location: Sao Paulo, Brazil
Posts: 193
Only a bad translation.

"reset signals in progress"

indicates replacement in progress.


fefegarcia1 is offline   Reply With Quote
Unread 05/11/2014, 08:05 PM   #61
redtop03
moved slow
 
redtop03's Avatar
 
Join Date: Apr 2008
Location: Barbourville,Ky.
Posts: 1,390
Quote:
Originally Posted by fefegarcia1 View Post
Only a bad translation.

"reset signals in progress"

indicates replacement in progress.

and that is what I've went through while trying to translate all the side notes LOL google translator is a little off sometimes.....I fixed it LOL


__________________
Willie McDaries
redtop03 is offline   Reply With Quote
Unread 05/14/2014, 03:42 AM   #62
redtop03
moved slow
 
redtop03's Avatar
 
Join Date: Apr 2008
Location: Barbourville,Ky.
Posts: 1,390
since I'm not real good at understanding Celsius, I spent all night changing the controller to display the temp in Fahrenheit, it's not exactly compatible with Joyreef because the *C is still there instead of *F but it is displaying the correct numbers in *F so I can live with that LOL...

here's some pics I took before and after loading the altered code, and I had to reload several times before finishing the C to F conversion, I spent about 2 weeks figuring most of this out on the older Ferduino code and it still took me all night to actually get it done in the newer code, even with copy and paste from the older code LOL

so far, I've changed 1 of the LED channels from blue to green and changed it from Celsius to Fahrenheit, I know how to change a lot of the colors now too but I still don't understand anything about reading and writing C+ code





















__________________
Willie McDaries
redtop03 is offline   Reply With Quote
Unread 05/14/2014, 06:34 AM   #63
fefegarcia1
Registered Member
 
fefegarcia1's Avatar
 
Join Date: Jul 2011
Location: Sao Paulo, Brazil
Posts: 193
Hi!

Good work!

Here have a small problem.



The interval is 99 until 112 but, you have 90 selected.

In the tab "processmytouch" on case 42 find:


Code:
          if (HtempMin_temp < 20)
          {
            HtempMin_temp = 35;
          }
Replace:

Code:
          if (HtempMin_temp < 68)
          {
            HtempMin_temp = 98;
          }
Find:

Code:
          if (HtempMax_temp < 36)
          {
            HtempMax_temp = 50;
          }
Replace:

Code:
          if (HtempMax_temp < 99)
          {
            HtempMax_temp = 112;
          }
Find:

Code:
          if (HtempMin_temp > 35)
          {
            HtempMin_temp = 20;
          }
Replace:

Code:
          if (HtempMin_temp > 98)
          {
            HtempMin_temp = 68;
          }
Find:

Code:
          if (HtempMax_temp > 50)
          {
            HtempMax_temp = 36;
          }
Replace:

Code:
          if (HtempMax_temp > 112)
          {
            HtempMax_temp = 99;
          }



fefegarcia1 is offline   Reply With Quote
Unread 05/14/2014, 07:15 AM   #64
redtop03
moved slow
 
redtop03's Avatar
 
Join Date: Apr 2008
Location: Barbourville,Ky.
Posts: 1,390
yep, got that part....I forgot to change the variable in the ferduino_with_webcontrol_beta ino , that 90 jumps to 99 or 112 depending which button I push, I'll fix it LOL

please look at this and see if I have it all correct, I think I have it all

Quote:
case 42://---------------------------------------- Configurar coolers ----------------------------
if ((x>=volT[0]) && x<=volT[2] && (y>=volT[1]) && (y<=volT[3])) // volta a tela configurar leds
{
//waitForIt(volT[0], volT[1], volT[2], volT[3]);
dispScreen=40;
clearScreen();
config_leds();
}
else if ((x>=salV[0]) && (x<=salV[2]) && (y>=salV[1]) && (y<=salV[3])) //Função salvar
{
//waitForIt(salV[0], salV[1], salV[2], salV[3]);
HtempMin = HtempMin_temp;
HtempMax = HtempMax_temp;
dispScreen=40;
salvar_coolersEEPROM();
clearScreen();
config_leds();
}
else if ((x>=temM[0]) && (x<=temM[2]))
{
if ((y>=temM[1]) && (y<=temM[3])) // Temperatura para velocidade mínima -
{
//waitForIt(temM[0], temM[1], temM[2], temM[3]);
HtempMin_temp -= 0.1;
if (HtempMin_temp < 68) // 20 C
{
HtempMin_temp = 84; // 35 C
}
myGLCD.setColor(0, 0, 0);
myGLCD.fillRect (128, 40, 180, 56); // Limpar texto
configurar_coolers();
}
else if ((y>=almM[1]) && (y<=almM[3])) // Temperatura para velocidade máxima -
{
//waitForIt(almM[0], almM[1], almM[2], almM[3]);
HtempMax_temp -= 0.1;
if (HtempMax_temp < 85) //36 C
{
HtempMax_temp =99; //50 C
}
myGLCD.setColor(0, 0, 0);
myGLCD.fillRect (128, 140, 180, 156);// Limpar texto
configurar_coolers();
}
}
else if ((x>=temP[0]) && (x<=temP[2]))
{
if ((y>=temP[1]) && (y<=temP[3])) // Temperatura para velocidade mínima +
{
//waitForIt(temP[0], temP[1], temP[2], temP[3]);
HtempMin_temp += 0.1;
if (HtempMin_temp > 84) //35 C
{
HtempMin_temp = 68; //20 C
}
myGLCD.setColor(0, 0, 0);
myGLCD.fillRect (128, 40, 180, 56); //Limpar texto
configurar_coolers();
}
else if ((y>=almP[1]) && (y<=almP[3])) // Temperatura para velocidade máxima +
{
//waitForIt(almP[0], almP[1], almP[2], almP[3]);
HtempMax_temp += 0.1;
if (HtempMax_temp >99) //50 C
{
HtempMax_temp = 85; //36 C
}
myGLCD.setColor(0, 0, 0);
myGLCD.fillRect (128, 140, 180, 156);//Limpar texto
configurar_coolers();
}
}
else if ((x>=menU[0]) && x<=menU[2] && (y>=menU[1]) && (y<=menU[3])) // volta ao menu 1
{
//waitForIt(menU[0], menU[1], menU[2], menU[3]);
dispScreen=1;
clearScreen();
menuScreen();
}
break;
case 43://---------------------------------------- Reduziir potência dos leds ----------------------------
if ((x>=menU[0]) && x<=menU[2] && (y>=menU[1]) && (y<=menU[3])) // volta ao menu 1
{
//waitForIt(menU[0], menU[1], menU[2], menU[3]);
dispScreen=1;
clearScreen();
menuScreen();
}
else if ((x>=volT[0]) && x<=volT[2] && (y>=volT[1]) && (y<=volT[3])) // volta a tela configurar leds
{
//waitForIt(volT[0], volT[1], volT[2], volT[3]);
dispScreen=40;
clearScreen();
config_leds();
}
else if ((x>=salV[0]) && (x<=salV[2]) && (y>=salV[1]) && (y<=salV[3])) //Função salvar
{
//waitForIt(salV[0], salV[1], salV[2], salV[3]);
tempHR = tempHR_t;
potR = potR_t;
dispScreen=40;
salvar_tempPotEEPROM();
clearScreen();
config_leds();
}
else if ((x>=tempeC[0]) && (x<=tempeC[2]) && (y>=tempeC[1]) && (y<=tempeC[3])) //Temperatura +
{
//waitForIt(tempeC[0], tempeC[1], tempeC[2], tempeC[3]);
tempHR_t += 1;
if (tempHR_t >99)//99 C /******************************************************** changed for Fahrenheit *******************************************************************/
{
tempHR_t = 86; //30 C
}
reduzir_potencia();
}
else if ((x>=tempeB[0]) && (x<=tempeB[2]) && (y>=tempeB[1]) && (y<=tempeB[3])) //Temperatura -
{
//waitForIt(tempeB[0], tempeB[1], tempeB[2], tempeB[3]);
tempHR_t -= 1;
if (tempHR_t < 86) //30 C
{
tempHR_t =99; //99 C
}
reduzir_potencia();
}
else if ((x>=potC[0]) && (x<=potC[2]) && (y>=potC[1]) && (y<=potC[3])) //Potência +
{
//waitForIt(potC[0], potC[1], potC[2], potC[3]);
potR_t += 1;
if (potR_t >99) //99 C
{
potR_t = 1;
}
reduzir_potencia();
}
else if ((x>=potB[0]) && (x<=potB[2]) && (y>=potB[1]) && (y<=potB[3])) //Potência -
{
//waitForIt(potB[0], potB[1], potB[2], potB[3]);
potR_t -= 1;
if (potR_t < 1)
{
potR_t =99; //99 C
}
reduzir_potencia();
}
break; ;



__________________
Willie McDaries

Last edited by redtop03; 05/14/2014 at 07:39 AM.
redtop03 is offline   Reply With Quote
Unread 05/14/2014, 07:31 AM   #65
redtop03
moved slow
 
redtop03's Avatar
 
Join Date: Apr 2008
Location: Barbourville,Ky.
Posts: 1,390
I forgot, I changed that screen too, this is what I have right now because the 3 digit number ran across the buttons, I haven't found where to change the position of those numbers yet I guess I should say, the 4 digit numbers





__________________
Willie McDaries

Last edited by redtop03; 05/14/2014 at 07:55 AM.
redtop03 is offline   Reply With Quote
Unread 05/14/2014, 07:54 AM   #66
fefegarcia1
Registered Member
 
fefegarcia1's Avatar
 
Join Date: Jul 2011
Location: Sao Paulo, Brazil
Posts: 193
Search for "tela =42" in the tab "L_Menus".


fefegarcia1 is offline   Reply With Quote
Unread 05/14/2014, 08:13 AM   #67
redtop03
moved slow
 
redtop03's Avatar
 
Join Date: Apr 2008
Location: Barbourville,Ky.
Posts: 1,390
Quote:
Originally Posted by fefegarcia1 View Post
Search for "tela =42" in the tab "L_Menus".
I looked at it all but I still didn't figure out what to change I'm on my laptop PC and don't have all the arduino stuff on here so I'm can't do much LOL

I have fallen asleep 3 or 4 times while trying to type this, just did it again LOL

I'm gonna go now and take a nap


__________________
Willie McDaries
redtop03 is offline   Reply With Quote
Unread 05/14/2014, 08:18 AM   #68
fefegarcia1
Registered Member
 
fefegarcia1's Avatar
 
Join Date: Jul 2011
Location: Sao Paulo, Brazil
Posts: 193
Quote:
Originally Posted by redtop03 View Post
I looked at it all but I still didn't figure out what to change I'm on my laptop PC and don't have all the arduino stuff on here so I'm can't do much LOL

I have fallen asleep 3 or 4 times while trying to type this, just did it again LOL

I'm gonna go now and take a nap
Only the coordinate X.

On this case is 130.

myGLCD.printNumF(HtempMin_temp, 1, 130, 40);
myGLCD.printNumF(HtempMax_temp, 1, 130, 140);


fefegarcia1 is offline   Reply With Quote
Unread 05/14/2014, 08:49 AM   #69
redtop03
moved slow
 
redtop03's Avatar
 
Join Date: Apr 2008
Location: Barbourville,Ky.
Posts: 1,390
Quote:
Originally Posted by fefegarcia1 View Post
Only the coordinate X.

On this case is 130.

myGLCD.printNumF(HtempMin_temp, 1, 130, 40);
myGLCD.printNumF(HtempMax_temp, 1, 130, 140);
OK thanks, I'll work on it more later, I'm so sleepy I can't keep my eyes open right now, I'd be sure to screw something up if I worked on it right now LOL


__________________
Willie McDaries
redtop03 is offline   Reply With Quote
Unread 05/17/2014, 02:26 PM   #70
viper20
Registered Member
 
Join Date: Jul 2011
Location: Wisconsin
Posts: 28
Looks great!! think i'm going to try to duplicate if thats ok.


viper20 is offline   Reply With Quote
Unread 05/17/2014, 02:30 PM   #71
viper20
Registered Member
 
Join Date: Jul 2011
Location: Wisconsin
Posts: 28
Is there a difference between the Arduino Ethernet Shield R3 and the one you used?


viper20 is offline   Reply With Quote
Unread 05/17/2014, 02:37 PM   #72
viper20
Registered Member
 
Join Date: Jul 2011
Location: Wisconsin
Posts: 28
how many channels is it set up for and can it increased to more channels if i want?


viper20 is offline   Reply With Quote
Unread 05/17/2014, 03:19 PM   #73
redtop03
moved slow
 
redtop03's Avatar
 
Join Date: Apr 2008
Location: Barbourville,Ky.
Posts: 1,390
Quote:
Originally Posted by viper20 View Post
Looks great!! think i'm going to try to duplicate if thats ok.
awesome, the more the better


__________________
Willie McDaries
redtop03 is offline   Reply With Quote
Unread 05/17/2014, 03:25 PM   #74
redtop03
moved slow
 
redtop03's Avatar
 
Join Date: Apr 2008
Location: Barbourville,Ky.
Posts: 1,390
Quote:
Originally Posted by viper20 View Post
Is there a difference between the Arduino Ethernet Shield R3 and the one you used?
this is the shield that Fernando used originally and I didn't want to start out trying to figure out how to use something different....

I liked that it is a full shield, if you choose the W5100 shield, you'll need to make a half shield to finish off the layer of the stack so you can add other shields

Fernando has the W5100 already written into the code, it's just a simple matter of commenting this shield out, and uncommenting the W5100...

you're covered with either shield you choose, the W5100 is more plentiful here though, and a bit less expensive


__________________
Willie McDaries
redtop03 is offline   Reply With Quote
Unread 05/17/2014, 03:29 PM   #75
viper20
Registered Member
 
Join Date: Jul 2011
Location: Wisconsin
Posts: 28
Ok thanks I'll probably just get the same one you have make things simple and cheaper lol


viper20 is offline   Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On



All times are GMT -6. The time now is 12:49 PM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by Searchlight © 2024 Axivo Inc.
Use of this web site is subject to the terms and conditions described in the user agreement.
Reef CentralTM Reef Central, LLC. Copyright ©1999-2022
User Alert System provided by Advanced User Tagging v3.3.0 (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.