both ph probes completely berserk

Talk about you and your tank/equipment

Posts: 471
Joined: Sat Jan 14, 2012 2:08 pm
Location: Montgomery Village, MD
PostPosted: Mon Jul 01, 2013 4:42 pm
I have been traveling a lot lately and haven't been able to care for my tanks like I'd like. My RA and my Cam's stayed up during my travels so I could keep an eye on things.

My issue is that both my standard and my expansion PH's started giving totally bogus readings. The standard PH starting going down down down and was reading in the 4's by the time I got home. The PH expansion unit started going up up up and is currently in the 14's.

Via my camera I could see all was well, no acid or alkanity baths, fish jumping from the tanks, etc. Once home, all water tested 8.4 as expected.

The main ph is now in a glass of RODI yet still the portal says it is 6.13. On inspection (rinsing) all looks well with the probe but the barrel of the probe appears to be full of water (or some fluid)

I haven't removed the PH expansion unit (currently at 14) but will get to that tonite or tomorrow. What do you guys think? Seems weird that both PH units would go bad at approximately the same time (honestly about 3 weeks apart)

Thx
Roscoe's Reefs - Starting Over Again:

Building new 29g Nano after landlord went berserk over my 4 75 gallon tanks, Multiple RA's, Water mixing stations, etc. Your help welcomed in remembering all I've forgotten.

Posts: 22
Joined: Sat Jun 09, 2012 7:46 pm
PostPosted: Mon Jul 01, 2013 6:32 pm
following along as mine has been reading low lately too. i just figured that i need to recalibrate mine or buy a new one...
Image

Posts: 267
Joined: Fri Jul 20, 2012 7:13 am
Location: Oakley, CA
PostPosted: Wed Jul 03, 2013 8:55 am
rossbryant1956 wrote:The main ph is now in a glass of RODI yet still the portal says it is 6.13. On inspection (rinsing) all looks well with the probe but the barrel of the probe appears to be full of water (or some fluid)


That pH looks accurate for RO water. Is it staying at 6.13 when you have it in the glass or does it still fluctuate? Try it in a glass of tank water too.

I had the same issue and it turned out to be a bad float switch. Others have had stray voltage leaking into the tank from other devices (power heads, etc.) causing inaccurate readings. If the pH is stable in the glass of RO/tank water put the probe back in the tank and start unplugging devices one by one till you find the one causing the problem. If you run out of devices check your float switches. Stray voltage is more common that bad floats.

Being that both probes are not reading correctly it's more than likely not a probe issue.

~Charlie

Posts: 471
Joined: Sat Jan 14, 2012 2:08 pm
Location: Montgomery Village, MD
PostPosted: Wed Jul 03, 2013 10:57 am
I will work on this over the holiday weekend. My RA is currently unplugged and the pumps are hardwired to keep flow because the other night it just started rebooting over and over again. No clue why. I'll keep everyone in the loop. Thanks.
Roscoe's Reefs - Starting Over Again:

Building new 29g Nano after landlord went berserk over my 4 75 gallon tanks, Multiple RA's, Water mixing stations, etc. Your help welcomed in remembering all I've forgotten.

Posts: 267
Joined: Fri Jul 20, 2012 7:13 am
Location: Oakley, CA
PostPosted: Wed Jul 03, 2013 3:37 pm
Post your code when you get a chance. Sometimes you'll get crazy reboots like that if there is something off in the code. Also check all of your connections. The same thing happen to me when I first put my RA together. I had a bad connection on one of the USB cables if I remember correctly. Or maybe it was the VGA com cable... Can't remember exactly which cable but once I secure it all my random reboot problems went away.

~Charlie

Posts: 471
Joined: Sat Jan 14, 2012 2:08 pm
Location: Montgomery Village, MD
PostPosted: Wed Jul 03, 2013 4:58 pm
Here is my code, love your input, but not sure the problem lies here. While not fully and completely tested, it is a compilation of some of the better coders on this board. This code has been running for months.

Code: Select all
#include <ReefAngel_Features.h>
#include <Globals.h>
#include <RA_Wifi.h>
#include <Wire.h>
#include <OneWire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <InternalEEPROM.h>
#include <RA_NokiaLCD.h>
#include <RA_ATO.h>
#include <RA_Joystick.h>
#include <LED.h>
#include <RA_TempSensor.h>
#include <RA_Colors.h>
#include <RA_CustomColors.h>
#include <Relay.h>
#include <RA_PWM.h>
#include <Timer.h>
#include <Memory.h>
#include <IO.h>
#include <Salinity.h>
#include <PH.h>
#include <ReefAngel.h>

// Set global variables
    boolean PowerOutage=false;
    boolean DelayedPowerOutage=false;

// Globals for Params on Custom Main
byte x,y;
char text[10];

// Custom Menu
#include <avr/pgmspace.h>
prog_char menu0_label[] PROGMEM = "Turn Lights On";
prog_char menu1_label[] PROGMEM = "Turn Lights Off";
prog_char menu2_label[] PROGMEM = "Start Feeding";
prog_char menu3_label[] PROGMEM = "Start Water Change";
prog_char menu4_label[] PROGMEM = "Clear Overheat";
prog_char menu5_label[] PROGMEM = "Calibrate pH";
prog_char menu6_label[] PROGMEM = "Calibrate Salinity";
PROGMEM const char *menu_items[] = {
menu0_label, menu1_label, menu2_label, menu3_label, menu4_label, menu5_label, menu6_label  };

void MenuEntry1()
{
ReefAngel.DisplayMenuEntry("Item 1");ReefAngel.Relay.RelayMaskOn = ReefAngel.LightsOnPorts;
#ifdef RelayExp
for ( byte i = 0; i < MAX_RELAY_EXPANSION_MODULES; i++ )
{
    ReefAngel.Relay.RelayMaskOnE[i] = ReefAngel.LightsOnPortsE[i];
}
#endif  // RelayExp
ReefAngel.Relay.Write();

}
void MenuEntry2()
{
ReefAngel.DisplayMenuEntry("Item 2");ReefAngel.Relay.RelayMaskOn = 0;
#ifdef RelayExp
for ( byte i = 0; i < MAX_RELAY_EXPANSION_MODULES; i++ )
{
    ReefAngel.Relay.RelayMaskOnE[i] = 0;
}
#endif  // RelayExp
ReefAngel.Relay.Write();

}
void MenuEntry3()
{
ReefAngel.DisplayMenuEntry("Item 3");ReefAngel.FeedingModeStart();

}
void MenuEntry4()
{
ReefAngel.DisplayMenuEntry("Item 4");ReefAngel.WaterChangeModeStart();

}
void MenuEntry5()
{
ReefAngel.DisplayMenuEntry("Item 5");ReefAngel.OverheatClear();

}
void MenuEntry6()
{
ReefAngel.DisplayMenuEntry("Item 6");ReefAngel.SetupCalibratePH();
ReefAngel.DisplayedMenu = ALT_SCREEN_MODE;

}
void MenuEntry7()
{
ReefAngel.DisplayMenuEntry("Item 7");ReefAngel.SetupCalibrateSalinity();

}
// End Custom Menu Globals

void setup() {
    ReefAngel.Init();  //Initialize controller
    ReefAngel.InitMenu(pgm_read_word(&(menu_items[0])),SIZE(menu_items)); // Initialize the menu
    ReefAngel.FeedingModePorts = Port5Bit | Port6Bit | Port7Bit | Port8Bit; // Turn off DT-LWM, GT-LWM, GT-Pump, and DT-Pump when feeding mode is activated is activated on Box1
    ReefAngel.FeedingModePortsE[0] = Port5Bit | Port6Bit | Port7Bit; // Turn off DT-RWM, GT-RWM, and Skimmer when feeding mode is activated is activated on Box2
    ReefAngel.WaterChangePorts = Port3Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit; // Turn off DT-Heat, DT-LWM, GT-Pump, and DT-Pump when water change mode is activated
    ReefAngel.TempProbe = T2_PROBE;  // Set the 2nd plug to be DT Main temp
    ReefAngel.OverheatProbe = T2_PROBE;  // to monitor the overheat and temperatures
    ReefAngel.OverheatShutoffPorts = Port1Bit | Port3Bit;  // DT-Lights and DT-Heat turned off when Overheat temperature exceeded
    ReefAngel.OverheatShutoffPortsE[0] = Port7Bit; //Skimmer turned off if overheat
    InternalMemory.OverheatTemp_write( 829 ); // Set the DT Overheat temperature setting
    ReefAngel.LightsOnPorts = Port1Bit | Port2Bit; // Toggle DT Lights
    ReefAngel.LightsOnPortsE[0] = Port3Bit | Port4Bit; // Toggle GT Lights
}

void loop()
{

// Specific functions
    ReefAngel.Relay.On(Port8); // Turn on Pump
    ReefAngel.Relay.On(Port7); // Turn on GT Pump
// Ports that are delayed on Power Cycle & Feeding & Water Change
    if (PowerOutage && ReefAngel.Relay.IsRelayPresent(EXP1_RELAY))
    {
      PowerOutage=false;
      DelayedPowerOutage=false;
      LastStart=now();
    }
    ReefAngel.Relay.DelayedOn( Port7,2 ); //GT-Pump -set to 2 min for testing CHANGE TO 4MINS
    ReefAngel.Relay.DelayedOn( Port8,1 ); //DT-Pump -set to 1 min for testing CHANGE TO 2MINS
    // ReefAngel.Relay.DelayedOn( Box1_Port7,3 ); //Skimmer -set to 1 min for testing CHANGE TO 6MINS
    ReefAngel.Relay.On(Box1_Port8); // power the PH expansion hub
    ReefAngel.StandardLights( Port1,14,00,22,00 ); // DT Lights on at 2:00pm and off at 10:00pm
    // ReefAngel.StandardLights( Port2,22,00,01,00 ); // DT-Moon Lights on at 10:00am and off at 1:00am
    ReefAngel.StandardLights( Box1_Port1,0,0,6,0 ); //Turn on reservoir between 12 AM and 6 AM
    ReefAngel.StandardLights( Box1_Port3,14,00,21,45 );  //GT Lights Main 2:00pm - 9:45pm
    ReefAngel.StandardLights( Box1_Port4,15,00,22,30 ); //GT Lights Actinic 3:00pm - 10:30pm
    ReefAngel.WavemakerRandom( Port5,60,100 );
    ReefAngel.Relay.Set( Box1_Port5, !ReefAngel.Relay.Status( Port5 ) ); //Randomize DT powerheads
    ReefAngel.WavemakerRandom1( Port6,60,100 );
    ReefAngel.Relay.Set( Box1_Port6, !ReefAngel.Relay.Status( Port6 ) ); //Randomize GT powerheads
    ReefAngel.StandardHeater(Port3,779,791); //DT-Heat
    StandardHeater2( Port4,779,791 ); //GT-Heat 
   
// if the hour is 2p or 8p, minute is 55 and seconds is 0, start the feeding mode
      if ( ((hour() == 14) || (hour() == 20)) &&
      (minute() == 55) &&
      (second() == 0) )
                {
      ReefAngel.FeedingModeStart();
      }   
     
 //turn off port 8 - DT pump when switch is tripped and sound buzzer
     ReefAngel.Relay.Set(Port8,ReefAngel.IO.GetChannel(0));
     ReefAngel.PWM.SetDaylight(100-(ReefAngel.IO.GetChannel(0)*100));
   
//turn off port 7 - GT pump when switch is tripped and sound buzzer
     ReefAngel.Relay.Set(Port7,ReefAngel.IO.GetChannel(1));
     ReefAngel.PWM.SetDaylight(100-(ReefAngel.IO.GetChannel(1)*100));
         
//tell the portal we have a overflow problem
     ReefAngel.CustomVar[0]=ReefAngel.IO.GetChannel(0);
     ReefAngel.CustomVar[1]=ReefAngel.IO.GetChannel(1);
     ReefAngel.CustomVar[7]=1;
     
//set up dosing pump one to run twice a week for 4 minutes
     //ReefAngel.Relay.Set(Box1_Port2,((weekday()==1||weekday()==4) && hour()==14 && minute()<6));
     //ReefAngel.Relay.Set (Box1_Port3,(hour()%2==0)); //stir chemicals in water top off unit

// Power Outage - Only DT,GT LWM & Heat ports on
     if (!ReefAngel.Relay.IsRelayPresent(EXP1_RELAY)) PowerOutage=true; //Exp1 Relay NOT present
     if (!PowerOutage)
     { 
      ReefAngel.Timer[1].Start();
     } 
     if (ReefAngel.Timer[1].IsTriggered())
     { 
      DelayedPowerOutage=true;
     }
     if (DelayedPowerOutage)
     {
      ReefAngel.Relay.Off (Port1); //DT Lights 1
      ReefAngel.Relay.Off (Port2); //DT Lights 2
      ReefAngel.Relay.Off (Port7); //GT Pump
      ReefAngel.Relay.Off (Port8); //DT Pump
     
     }
     // Skimmer off when Return pump is off.
     if (bitRead(ReefAngel.Relay.RelayMaskOff,7)==0) //Return
     {
        bitClear(ReefAngel.Relay.RelayMaskOffE[0],6); //Skimmer
     }     
 
         
    ReefAngel.Portal("rossbryant1956");
    ReefAngel.ShowInterface();
}

void StandardHeater2(byte HeaterRelay, int LowTemp, int HighTemp) //Heater for Grow Tank
{
    if (ReefAngel.Params.Temp[T1_PROBE] == 0) return;  // Don't turn the heater on if the temp is reading 0
    if (ReefAngel.Params.Temp[T1_PROBE] <= LowTemp && ReefAngel.Params.Temp[T1_PROBE] > 0) ReefAngel.Relay.On(HeaterRelay);  // If sensor temperature <= LowTemp - turn on heater
    if (ReefAngel.Params.Temp[T1_PROBE] >= HighTemp) ReefAngel.Relay.Off(HeaterRelay);  // If sensor temperature >= HighTemp - turn off heater
}

void DrawCustomMain()
{
  int x,y;
  //char text[10];
  // Parameters
#if defined DisplayLEDPWM && ! defined RemoveAllLights
  ReefAngel.LCD.DrawMonitor( 15, 40, ReefAngel.Params,
  ReefAngel.PWM.GetDaylightValue(), ReefAngel.PWM.GetActinicValue() );
#else // defined DisplayLEDPWM && ! defined RemoveAllLights
  ReefAngel.LCD.DrawMonitor( 15, 40, ReefAngel.Params );
#endif // defined DisplayLEDPWM && ! defined RemoveAllLights
  pingSerial();

   // pH Expansion
  ReefAngel.LCD.DrawText( COLOR_MEDIUMSEAGREEN,DefaultBGColor,15,75, "GT pH:" );
  char text[7];
  ConvertNumToString(text, ReefAngel.Params.PHExp, 100);
  ReefAngel.LCD.DrawText(COLOR_MEDIUMSEAGREEN, DefaultBGColor, 55, 75, text);
 
  // Main Relay Box
  byte TempRelay = ReefAngel.Relay.RelayData;
  TempRelay &= ReefAngel.Relay.RelayMaskOff;
  TempRelay |= ReefAngel.Relay.RelayMaskOn;
  ReefAngel.LCD.DrawOutletBox( 12, 93, TempRelay );
  pingSerial();

   // Relay Expansion
  TempRelay = ReefAngel.Relay.RelayDataE[0];
  TempRelay &= ReefAngel.Relay.RelayMaskOffE[0];
  TempRelay |= ReefAngel.Relay.RelayMaskOnE[0];
  ReefAngel.LCD.DrawOutletBox( 12, 107, TempRelay );
  pingSerial();

  // Date and Time
  ReefAngel.LCD.DrawDate( 6, 122 );
  pingSerial();
}

void DrawCustomGraph()
{
// ReefAngel.LCD.DrawGraph( 5, 5 );
}


While it might be code I think it is hardware. My salinity probe has never worked properly and now this issue with the ph probes. At any rate, I have it all ripped out now, only thing plugged in is one pH probe (in a glass of tank water) and the wireless. It has stopped the constant rebooting. However the pH still reads 6.07

Should I re-calibrate the ph probe? Hasn't been done in a while. Appreciate the input. Thx
Roscoe's Reefs - Starting Over Again:

Building new 29g Nano after landlord went berserk over my 4 75 gallon tanks, Multiple RA's, Water mixing stations, etc. Your help welcomed in remembering all I've forgotten.

Posts: 151
Joined: Wed Mar 13, 2013 5:36 pm
PostPosted: Thu Jul 04, 2013 7:07 am
rossbryant1956 wrote:Here is my code, love your input, but not sure the problem lies here. While not fully and completely tested, it is a compilation of some of the better coders on this board. This code has been running for months.

Code: Select all
#include <ReefAngel_Features.h>
#include <Globals.h>
#include <RA_Wifi.h>
#include <Wire.h>
#include <OneWire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <InternalEEPROM.h>
#include <RA_NokiaLCD.h>
#include <RA_ATO.h>
#include <RA_Joystick.h>
#include <LED.h>
#include <RA_TempSensor.h>
#include <RA_Colors.h>
#include <RA_CustomColors.h>
#include <Relay.h>
#include <RA_PWM.h>
#include <Timer.h>
#include <Memory.h>
#include <IO.h>
#include <Salinity.h>
#include <PH.h>
#include <ReefAngel.h>

// Set global variables
    boolean PowerOutage=false;
    boolean DelayedPowerOutage=false;

// Globals for Params on Custom Main
byte x,y;
char text[10];

// Custom Menu
#include <avr/pgmspace.h>
prog_char menu0_label[] PROGMEM = "Turn Lights On";
prog_char menu1_label[] PROGMEM = "Turn Lights Off";
prog_char menu2_label[] PROGMEM = "Start Feeding";
prog_char menu3_label[] PROGMEM = "Start Water Change";
prog_char menu4_label[] PROGMEM = "Clear Overheat";
prog_char menu5_label[] PROGMEM = "Calibrate pH";
prog_char menu6_label[] PROGMEM = "Calibrate Salinity";
PROGMEM const char *menu_items[] = {
menu0_label, menu1_label, menu2_label, menu3_label, menu4_label, menu5_label, menu6_label  };

void MenuEntry1()
{
ReefAngel.DisplayMenuEntry("Item 1");ReefAngel.Relay.RelayMaskOn = ReefAngel.LightsOnPorts;
#ifdef RelayExp
for ( byte i = 0; i < MAX_RELAY_EXPANSION_MODULES; i++ )
{
    ReefAngel.Relay.RelayMaskOnE[i] = ReefAngel.LightsOnPortsE[i];
}
#endif  // RelayExp
ReefAngel.Relay.Write();

}
void MenuEntry2()
{
ReefAngel.DisplayMenuEntry("Item 2");ReefAngel.Relay.RelayMaskOn = 0;
#ifdef RelayExp
for ( byte i = 0; i < MAX_RELAY_EXPANSION_MODULES; i++ )
{
    ReefAngel.Relay.RelayMaskOnE[i] = 0;
}
#endif  // RelayExp
ReefAngel.Relay.Write();

}
void MenuEntry3()
{
ReefAngel.DisplayMenuEntry("Item 3");ReefAngel.FeedingModeStart();

}
void MenuEntry4()
{
ReefAngel.DisplayMenuEntry("Item 4");ReefAngel.WaterChangeModeStart();

}
void MenuEntry5()
{
ReefAngel.DisplayMenuEntry("Item 5");ReefAngel.OverheatClear();

}
void MenuEntry6()
{
ReefAngel.DisplayMenuEntry("Item 6");ReefAngel.SetupCalibratePH();
ReefAngel.DisplayedMenu = ALT_SCREEN_MODE;

}
void MenuEntry7()
{
ReefAngel.DisplayMenuEntry("Item 7");ReefAngel.SetupCalibrateSalinity();

}
// End Custom Menu Globals

void setup() {
    ReefAngel.Init();  //Initialize controller
    ReefAngel.InitMenu(pgm_read_word(&(menu_items[0])),SIZE(menu_items)); // Initialize the menu
    ReefAngel.FeedingModePorts = Port5Bit | Port6Bit | Port7Bit | Port8Bit; // Turn off DT-LWM, GT-LWM, GT-Pump, and DT-Pump when feeding mode is activated is activated on Box1
    ReefAngel.FeedingModePortsE[0] = Port5Bit | Port6Bit | Port7Bit; // Turn off DT-RWM, GT-RWM, and Skimmer when feeding mode is activated is activated on Box2
    ReefAngel.WaterChangePorts = Port3Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit; // Turn off DT-Heat, DT-LWM, GT-Pump, and DT-Pump when water change mode is activated
    ReefAngel.TempProbe = T2_PROBE;  // Set the 2nd plug to be DT Main temp
    ReefAngel.OverheatProbe = T2_PROBE;  // to monitor the overheat and temperatures
    ReefAngel.OverheatShutoffPorts = Port1Bit | Port3Bit;  // DT-Lights and DT-Heat turned off when Overheat temperature exceeded
    ReefAngel.OverheatShutoffPortsE[0] = Port7Bit; //Skimmer turned off if overheat
    InternalMemory.OverheatTemp_write( 829 ); // Set the DT Overheat temperature setting
    ReefAngel.LightsOnPorts = Port1Bit | Port2Bit; // Toggle DT Lights
    ReefAngel.LightsOnPortsE[0] = Port3Bit | Port4Bit; // Toggle GT Lights
}

void loop()
{

// Specific functions
    ReefAngel.Relay.On(Port8); // Turn on Pump
    ReefAngel.Relay.On(Port7); // Turn on GT Pump
// Ports that are delayed on Power Cycle & Feeding & Water Change
    if (PowerOutage && ReefAngel.Relay.IsRelayPresent(EXP1_RELAY))
    {
      PowerOutage=false;
      DelayedPowerOutage=false;
      LastStart=now();
    }
    ReefAngel.Relay.DelayedOn( Port7,2 ); //GT-Pump -set to 2 min for testing CHANGE TO 4MINS
    ReefAngel.Relay.DelayedOn( Port8,1 ); //DT-Pump -set to 1 min for testing CHANGE TO 2MINS
    // ReefAngel.Relay.DelayedOn( Box1_Port7,3 ); //Skimmer -set to 1 min for testing CHANGE TO 6MINS
    ReefAngel.Relay.On(Box1_Port8); // power the PH expansion hub
    ReefAngel.StandardLights( Port1,14,00,22,00 ); // DT Lights on at 2:00pm and off at 10:00pm
    // ReefAngel.StandardLights( Port2,22,00,01,00 ); // DT-Moon Lights on at 10:00am and off at 1:00am
    ReefAngel.StandardLights( Box1_Port1,0,0,6,0 ); //Turn on reservoir between 12 AM and 6 AM
    ReefAngel.StandardLights( Box1_Port3,14,00,21,45 );  //GT Lights Main 2:00pm - 9:45pm
    ReefAngel.StandardLights( Box1_Port4,15,00,22,30 ); //GT Lights Actinic 3:00pm - 10:30pm
    ReefAngel.WavemakerRandom( Port5,60,100 );
    ReefAngel.Relay.Set( Box1_Port5, !ReefAngel.Relay.Status( Port5 ) ); //Randomize DT powerheads
    ReefAngel.WavemakerRandom1( Port6,60,100 );
    ReefAngel.Relay.Set( Box1_Port6, !ReefAngel.Relay.Status( Port6 ) ); //Randomize GT powerheads
    ReefAngel.StandardHeater(Port3,779,791); //DT-Heat
    StandardHeater2( Port4,779,791 ); //GT-Heat 
   
// if the hour is 2p or 8p, minute is 55 and seconds is 0, start the feeding mode
      if ( ((hour() == 14) || (hour() == 20)) &&
      (minute() == 55) &&
      (second() == 0) )
                {
      ReefAngel.FeedingModeStart();
      }   
     
 //turn off port 8 - DT pump when switch is tripped and sound buzzer
     ReefAngel.Relay.Set(Port8,ReefAngel.IO.GetChannel(0));
     ReefAngel.PWM.SetDaylight(100-(ReefAngel.IO.GetChannel(0)*100));
   
//turn off port 7 - GT pump when switch is tripped and sound buzzer
     ReefAngel.Relay.Set(Port7,ReefAngel.IO.GetChannel(1));
     ReefAngel.PWM.SetDaylight(100-(ReefAngel.IO.GetChannel(1)*100));
         
//tell the portal we have a overflow problem
     ReefAngel.CustomVar[0]=ReefAngel.IO.GetChannel(0);
     ReefAngel.CustomVar[1]=ReefAngel.IO.GetChannel(1);
     ReefAngel.CustomVar[7]=1;
     
//set up dosing pump one to run twice a week for 4 minutes
     //ReefAngel.Relay.Set(Box1_Port2,((weekday()==1||weekday()==4) && hour()==14 && minute()<6));
     //ReefAngel.Relay.Set (Box1_Port3,(hour()%2==0)); //stir chemicals in water top off unit

// Power Outage - Only DT,GT LWM & Heat ports on
     if (!ReefAngel.Relay.IsRelayPresent(EXP1_RELAY)) PowerOutage=true; //Exp1 Relay NOT present
     if (!PowerOutage)
     { 
      ReefAngel.Timer[1].Start();
     } 
     if (ReefAngel.Timer[1].IsTriggered())
     { 
      DelayedPowerOutage=true;
     }
     if (DelayedPowerOutage)
     {
      ReefAngel.Relay.Off (Port1); //DT Lights 1
      ReefAngel.Relay.Off (Port2); //DT Lights 2
      ReefAngel.Relay.Off (Port7); //GT Pump
      ReefAngel.Relay.Off (Port8); //DT Pump
     
     }
     // Skimmer off when Return pump is off.
     if (bitRead(ReefAngel.Relay.RelayMaskOff,7)==0) //Return
     {
        bitClear(ReefAngel.Relay.RelayMaskOffE[0],6); //Skimmer
     }     
 
         
    ReefAngel.Portal("rossbryant1956");
    ReefAngel.ShowInterface();
}

void StandardHeater2(byte HeaterRelay, int LowTemp, int HighTemp) //Heater for Grow Tank
{
    if (ReefAngel.Params.Temp[T1_PROBE] == 0) return;  // Don't turn the heater on if the temp is reading 0
    if (ReefAngel.Params.Temp[T1_PROBE] <= LowTemp && ReefAngel.Params.Temp[T1_PROBE] > 0) ReefAngel.Relay.On(HeaterRelay);  // If sensor temperature <= LowTemp - turn on heater
    if (ReefAngel.Params.Temp[T1_PROBE] >= HighTemp) ReefAngel.Relay.Off(HeaterRelay);  // If sensor temperature >= HighTemp - turn off heater
}

void DrawCustomMain()
{
  int x,y;
  //char text[10];
  // Parameters
#if defined DisplayLEDPWM && ! defined RemoveAllLights
  ReefAngel.LCD.DrawMonitor( 15, 40, ReefAngel.Params,
  ReefAngel.PWM.GetDaylightValue(), ReefAngel.PWM.GetActinicValue() );
#else // defined DisplayLEDPWM && ! defined RemoveAllLights
  ReefAngel.LCD.DrawMonitor( 15, 40, ReefAngel.Params );
#endif // defined DisplayLEDPWM && ! defined RemoveAllLights
  pingSerial();

   // pH Expansion
  ReefAngel.LCD.DrawText( COLOR_MEDIUMSEAGREEN,DefaultBGColor,15,75, "GT pH:" );
  char text[7];
  ConvertNumToString(text, ReefAngel.Params.PHExp, 100);
  ReefAngel.LCD.DrawText(COLOR_MEDIUMSEAGREEN, DefaultBGColor, 55, 75, text);
 
  // Main Relay Box
  byte TempRelay = ReefAngel.Relay.RelayData;
  TempRelay &= ReefAngel.Relay.RelayMaskOff;
  TempRelay |= ReefAngel.Relay.RelayMaskOn;
  ReefAngel.LCD.DrawOutletBox( 12, 93, TempRelay );
  pingSerial();

   // Relay Expansion
  TempRelay = ReefAngel.Relay.RelayDataE[0];
  TempRelay &= ReefAngel.Relay.RelayMaskOffE[0];
  TempRelay |= ReefAngel.Relay.RelayMaskOnE[0];
  ReefAngel.LCD.DrawOutletBox( 12, 107, TempRelay );
  pingSerial();

  // Date and Time
  ReefAngel.LCD.DrawDate( 6, 122 );
  pingSerial();
}

void DrawCustomGraph()
{
// ReefAngel.LCD.DrawGraph( 5, 5 );
}


While it might be code I think it is hardware. My salinity probe has never worked properly and now this issue with the ph probes. At any rate, I have it all ripped out now, only thing plugged in is one pH probe (in a glass of tank water) and the wireless. It has stopped the constant rebooting. However the pH still reads 6.07

Should I re-calibrate the ph probe? Hasn't been done in a while. Appreciate the input. Thx


"all ripped out" meaning temp probes too?

and try hardcoding your ph like so
Code: Select all
        ReefAngel.PHMin=576; // PH7.0
        ReefAngel.PHMax=842; // PH10.0


let me know what your ph is after that.
Image

Posts: 471
Joined: Sat Jan 14, 2012 2:08 pm
Location: Montgomery Village, MD
PostPosted: Thu Jul 04, 2013 8:08 am
Yes, everything. So as an update I left the old pH probe running in that glass of tank water last night and it maintained a constant 6.15 except for three anomalies where it dropped to 4.5 at 8:00 PM, 10 PM, and 2:00 AM.

This morning I replaced the probe with another one I had and it jumped to 7.57 and for now is staying constant. I am still considering whether I should calibrate.

I had seen references to this code block before but do not really understand what it does...can someone please explain it to me? And if I should do it, should I use the numbers from my last calibration? Thx in advance.

Code: Select all
 ReefAngel.PHMin=576; // PH7.0
ReefAngel.PHMax=842; // PH10.0
Roscoe's Reefs - Starting Over Again:

Building new 29g Nano after landlord went berserk over my 4 75 gallon tanks, Multiple RA's, Water mixing stations, etc. Your help welcomed in remembering all I've forgotten.

Posts: 471
Joined: Sat Jan 14, 2012 2:08 pm
Location: Montgomery Village, MD
PostPosted: Thu Jul 04, 2013 2:29 pm
So I went ahead and re-calibrated my pH and got values of 541 and 838 respectively. This brought my pH reading to 7.79 to 7.82 on both the portal and on the client. This reading is back in the range of where these particular apps always reported my pH prior to all these troubles but it has never been up in the 8.X's where all my testing has always said it was testing.

What now? I am wondering about using the commands above to set a basis for pH to where the test kits say it should be and then monitor from there. I imagine i would just experiment and upload until I drove the pH numbers up to the 8.4 that my kits believe it to be.

Hope to hear your thoughts on this...
Roscoe's Reefs - Starting Over Again:

Building new 29g Nano after landlord went berserk over my 4 75 gallon tanks, Multiple RA's, Water mixing stations, etc. Your help welcomed in remembering all I've forgotten.

Posts: 267
Joined: Fri Jul 20, 2012 7:13 am
Location: Oakley, CA
PostPosted: Thu Jul 04, 2013 2:57 pm
I suspect the probe is accurate. Probably more accurate than your test kits. The pH will drop in the jar without any agitation or circulation. Are you testing the same water (in the jar) with the test kit and the probe?

But aside from that, the pH stays constant and no problems with the controller rebooting? What happens if you put the probe back in tank water? I'm still leaning towards stray voltage. It certainly could be a hardware issue as well.

~Charlie
Next

Return to You and your tank

Who is online

Users browsing this forum: No registered users and 1 guest

cron