Salinity error

Expansion modules and attachments
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Salinity error

Post by rimai »

Also, this probe should not have water inside and definitely not in the BNC connector.
Roberto.
timmcq
Posts: 46
Joined: Tue Jun 05, 2012 6:24 pm

Re: Salinity error

Post by timmcq »

When calibrating, it fluctuates from 250-350, not the 3000+ you'd expect.

The probe clearly has fluid inside. It is 3/4 full or more.

The water in the bnc connection appears to have come from inside the cable, if that's possible. The outside of the cable and connector seem dry.
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Salinity error

Post by rimai »

Does it look cracked?
Roberto.
timmcq
Posts: 46
Joined: Tue Jun 05, 2012 6:24 pm

Re: Salinity error

Post by timmcq »

No, nothing I can see.

It does have a rust-like spot on the wire, similar to the original one. Would a picture help?
User avatar
mvwise
Posts: 48
Joined: Sat Apr 21, 2012 7:44 pm
Location: Burlington, Ontario, Canada

Re: Salinity error

Post by mvwise »

I have finally got my 180g up and running but I'm having similar issues with my salinity probe. It is connected to the salinity module through an extension, but with or without the extension I still end up having it read at 5.9 on the main display. Trying to calibrate the probe only gives me a zero and never fluctuates.

I have run the I2C Scanner provided on an earlier page and this is what I get:

Code: Select all

Œ5*8,(03ˆ…#!c!„Rc!„Rb „RbH#!  „Ò#!„BÈ  # „èH' ©!>&¡¨ !' ¨ 
I2CScanner ready!
starting scanning of I2C bus from 1 to 128...
addr: 1       	addr: 2       	addr: 3       	addr: 4       
addr: 5       	addr: 6       	addr: 7       	addr: 8 found!
addr: 9       	addr: A       	addr: B       	addr: C       
addr: D       	addr: E       	addr: F       	addr: 10 found!
addr: 11       	addr: 12       	addr: 13       	addr: 14       
addr: 15       	addr: 16       	addr: 17       	addr: 18       
addr: 19       	addr: 1A       	addr: 1B       	addr: 1C       
addr: 1D       	addr: 1E       	addr: 1F       	addr: 20 found!
addr: 21       	addr: 22       	addr: 23       	addr: 24       
addr: 25       	addr: 26       	addr: 27       	addr: 28       
addr: 29       	addr: 2A       	addr: 2B       	addr: 2C       
addr: 2D       	addr: 2E       	addr: 2F       	addr: 30       
addr: 31       	addr: 32       	addr: 33       	addr: 34       
addr: 35       	addr: 36       	addr: 37       	addr: 38       
addr: 39       	addr: 3A       	addr: 3B       	addr: 3C       
addr: 3D       	addr: 3E       	addr: 3F       	addr: 40       
addr: 41       	addr: 42       	addr: 43       	addr: 44       
addr: 45       	addr: 46       	addr: 47       	addr: 48       
addr: 49       	addr: 4A       	addr: 4B       	addr: 4C       
addr: 4D found!	addr: 4E       	addr: 4F       	addr: 50 found!
addr: 51       	addr: 52       	addr: 53       	addr: 54 found!
addr: 55       	addr: 56       	addr: 57       	addr: 58       
addr: 59       	addr: 5A       	addr: 5B       	addr: 5C       
addr: 5D       	addr: 5E       	addr: 5F       	addr: 60       
addr: 61       	addr: 62       	addr: 63       	addr: 64       
addr: 65       	addr: 66       	addr: 67       	addr: 68 found!
addr: 69       	addr: 6A       	addr: 6B       	addr: 6C       
addr: 6D       	addr: 6E       	addr: 6F       	addr: 70       
addr: 71       	addr: 72       	addr: 73       	addr: 74       
addr: 75       	addr: 76       	addr: 77       	addr: 78       
addr: 79       	addr: 7A       	addr: 7B       	addr: 7C       
addr: 7D       	addr: 7E       	addr: 7F       	addr: 80       

done
So from the earlier post, if 4D found! is present then it is connecting to the salinity module - correct?

I have tried replacing the changing the extension cable to the other hooked up to my PH probe (that is working) but I don't get any different results. There are no visible flaws on the probe, no water, rust or cracks, that would lead me to believe the probe is damaged, but it appears that it is the only possibility right now, unless my PDE coding is flawed.

Here is my full PDE which still has some issues to resolve, but for the most part works fine:

Code: Select all

//
// This version updated for v1.0.3 or later


/* 
The following features are enabled for this File: 
#define DisplayImages
#define OverheatSetup
#define DateTimeSetup
#define VersionMenu
#define DirectTempSensor
#define DisplayLEDPWM
#define wifi
#define SaveRelayState
#define WDT
#define PWMEXPANSION
#define CUSTOM_MAIN
#define COLORS_PDE
#define SALINITYEXPANSION
#define RFEXPANSION
#define FONT_8x8
#define FONT_8x16

Ports assignment:
Port1 - Fuge Light
Port2 - Avast ATO
Port3 - Heater(s)
Port4 - Kalk Reactor 
Port5 - Avast Schwabble
Port6 - Closed Loop Pump
Port7 - Skimmer
Port8 - Return Pump
*/

#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 <Relay.h>
#include <RA_PWM.h>
#include <Timer.h>
#include <Memory.h>
#include <InternalEEPROM.h>
#include <RA_Colors.h>
#include <RA_CustomColors.h>
#include <Salinity.h>
#include <RF.h>
#include <IO.h>
#include <ORP.h>
#include <AI.h>
#include <PH.h>
#include <WaterLevel.h>
#include <Humidity.h>
#include <DCPump.h>
#include <ReefAngel.h>

//*********************************************************************************************************************************
//--------------------------------------------------- Start of Global Variables ---------------------------------------------------

// Globals Needed for RF Mode on Custom Menu
byte vtmode;
byte vtspeed;

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

// Globals Needed for RF Mode on Custom Main
byte vtechmode;
byte vtechspeed;
boolean bFeeding=false;

//------------------------------------------------------ End of Global Variables --------------------------------------------------
//----------------------------------------------------------- Custom Menu ---------------------------------------------------------

#include <avr/pgmspace.h>
prog_char menu0_label[] PROGMEM = "Feeding";
prog_char menu1_label[] PROGMEM = "Water Change Pause";
prog_char menu2_label[] PROGMEM = "Vortech Mode";
prog_char menu3_label[] PROGMEM = "Vortech Speed";
prog_char menu4_label[] PROGMEM = "Lights On";
prog_char menu5_label[] PROGMEM = "Lights Off";
prog_char menu6_label[] PROGMEM = "Overheat Clear";
prog_char menu7_label[] PROGMEM = "PH Calibration";
prog_char menu8_label[] PROGMEM = "Salinity Calibration";
PROGMEM const char *menu_items[] = {
menu0_label, menu1_label, menu2_label,
menu3_label, menu4_label, menu5_label,
menu6_label, menu7_label, menu8_label
};

void MenuEntry1()
{
     ReefAngel.FeedingModeStart();
}
void MenuEntry2()
{
     ReefAngel.WaterChangeModeStart();
}
void MenuEntry3()
{
     vtmode++;
     vtechmode++;
     if (vtmode>6)
     {
       vtmode=0;
       vtechmode=0;
     }
     InternalMemory.RFMode_write(vtmode); // Set the Internal Memory Setting for RF Mode
     ReefAngel.RF.SetMode(vtmode, InternalMemory.RFSpeed_read(), InternalMemory.RFDuration_read());
     ReefAngel.DisplayedMenu = RETURN_MAIN_MODE;   
}
void MenuEntry4()
{
     vtspeed+=10;
     vtechspeed+=10;
     if (vtspeed>100)
     {
       vtspeed=0;
       vtechspeed=0;
     }
     InternalMemory.RFSpeed_write(vtspeed); // Set the Internal Memory Setting for RF Speed
     ReefAngel.RF.SetMode(InternalMemory.RFMode_read(), vtspeed, InternalMemory.RFDuration_read());
     ReefAngel.DisplayedMenu = RETURN_MAIN_MODE;   
}
void MenuEntry5()
{
     ReefAngel.Relay.RelayMaskOn = ReefAngel.LightsOnPorts;
     ReefAngel.Relay.Write();
     ReefAngel.DisplayedMenu = RETURN_MAIN_MODE;
}
void MenuEntry6()
{
     ReefAngel.Relay.RelayMaskOn = 0;
     ReefAngel.Relay.Write();
     ReefAngel.DisplayedMenu = RETURN_MAIN_MODE;
}
void MenuEntry7()
{
     ReefAngel.OverheatClear();
     ReefAngel.DisplayMenuEntry("Clear Overheat");
}
void MenuEntry8()
{
     ReefAngel.SetupCalibratePH();
     ReefAngel.DisplayedMenu = ALT_SCREEN_MODE;
}
void MenuEntry9()
{
     ReefAngel.SetupCalibrateSalinity();
     ReefAngel.DisplayedMenu = ALT_SCREEN_MODE;
}

//--------------------------------------------------------- End Custom Menu -------------------------------------------------------
//*********************************************************************************************************************************
//*********************************************************************************************************************************
//---------------------------------------------Custom Main for PWM Expansion Module------------------------------------------------

void DrawCustomMain()
{
        //Top Banner
        ReefAngel.LCD.DrawLargeText(COLOR_BLACK, 255, 9, 3, "WISEGUYS' REEF", Font8x16); 
        ReefAngel.LCD.Clear(DefaultFGColor,3,21,126,21);
        
        // Display T1 Header Text
        ReefAngel.LCD.DrawText(COLOR_CORNFLOWERBLUE,255,10,25,"Tank");
        char text[7];
  
        // Display the T1 Temp Value
        ConvertNumToString(text, ReefAngel.Params.Temp[T1_PROBE], 10);
        ReefAngel.LCD.DrawLargeText(COLOR_CORNFLOWERBLUE, 255, 4, 35, text, Font8x16);
 
        // Display the Salinity Header Text
        ReefAngel.LCD.DrawText(COLOR_CRIMSON,255,55,25,"Sal.");
  
        // Display the Salinity Value
        ConvertNumToString(text, ReefAngel.Params.Salinity, 10);
        ReefAngel.LCD.DrawLargeText(COLOR_CRIMSON, 255, 57, 35, text, Font8x16);
        
        // Display pH Header Text
        ReefAngel.LCD.DrawText(COLOR_INDIGO,255,105,25,"pH");
  
        // Display pH Value
        ConvertNumToString(text, ReefAngel.Params.PH, 100);
        ReefAngel.LCD.DrawLargeText(COLOR_INDIGO, 255, 94, 35, text, Font8x16);
         
        //Display Alternate Temp Parameters
        ReefAngel.LCD.DrawText(0,255,8,54,"Sump");
        ReefAngel.LCD.DrawSingleMonitor(ReefAngel.Params.Temp[T2_PROBE], COLOR_CORNFLOWERBLUE, 36, 54, 10);

        ReefAngel.LCD.DrawText(0,255,72,54,"Hood");
        ReefAngel.LCD.DrawSingleMonitor(ReefAngel.Params.Temp[T3_PROBE], COLOR_CORNFLOWERBLUE, 100, 54, 10);

        // Display EcoSmart Mode Value & Speed %     
        ReefAngel.LCD.Clear(DefaultFGColor,3,65,126,65);   
        ReefAngel.LCD.DrawLargeText(COLOR_BLACK, 255, 17, 69, "Ecotech Mode");
        ConvertNumToString(text, vtechspeed, 1);
        if (vtechmode == 0)
        {
          ReefAngel.LCD.DrawLargeText(COLOR_LIMEGREEN,255,1,80,"Constant -  ", Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_LIMEGREEN,255,97,80,text, Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_LIMEGREEN,255,121,80,"%", Font8x16);
        }
        else if(vtechmode == 1) 
        {
          ReefAngel.LCD.DrawLargeText(COLOR_GOLD,255,1,80,"Lagoon -    ", Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_GOLD,255,97,80,text, Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_GOLD,255,121,80,"%", Font8x16);
        }
        else if (vtechmode == 2) 
        {
          ReefAngel.LCD.DrawLargeText(COLOR_GOLD,255,1,80,"Reef Crest -", Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_GOLD,255,97,80,text, Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_GOLD,255,121,80,"%", Font8x16);
        }
        else if (vtechmode == 3) 
        {
          ReefAngel.LCD.DrawLargeText(COLOR_CORNFLOWERBLUE,255,1,80,"Short Pulse-", Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_CORNFLOWERBLUE,255,97,80,text, Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_CORNFLOWERBLUE,255,121,80,"%", Font8x16);
        }
        else if (vtechmode == 4) 
        {
          ReefAngel.LCD.DrawLargeText(COLOR_PINK,255,1,80,"Long Pulse -", Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_PINK,255,97,80,text, Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_PINK,255,121,80,"%", Font8x16);
        }
        else if (vtechmode == 5) 
        {
          ReefAngel.LCD.DrawLargeText(COLOR_MAGENTA,255,1,80,"Nutrient TM-", Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_MAGENTA,255,97,80,text, Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_MAGENTA,255,121,80,"%", Font8x16);
         }
        else if (vtechmode == 6) 
        {
          ReefAngel.LCD.DrawLargeText(COLOR_MAGENTA,255,1,80,"Tidal Swell-", Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_MAGENTA,255,97,80,text, Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_MAGENTA,255,121,80,"%", Font8x16);
        }
        else if (vtechmode == 9) 
        {
          ReefAngel.LCD.DrawLargeText(COLOR_BLACK,255,1,80,"Night -     ", Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_BLACK,255,97,80,text, Font8x16);
          ReefAngel.LCD.DrawLargeText(COLOR_BLACK,255,121,80,"%", Font8x16);
        }

 
        // Display Main Relay Box
        ReefAngel.LCD.Clear(DefaultFGColor,3,99,126,99);
        byte TempRelay = ReefAngel.Relay.RelayData;
        TempRelay &= ReefAngel.Relay.RelayMaskOff;
        TempRelay |= ReefAngel.Relay.RelayMaskOn;
        ReefAngel.LCD.DrawOutletBox(13, 102, TempRelay);

        //Draw Date & Time
        ReefAngel.LCD.Clear(DefaultFGColor,3,116,126,116);
        ReefAngel.LCD.DrawDate(6, 119);
}

void DrawCustomGraph()  // Not Used
{
}
//------------------------------------------------------ End Custom Main ----------------------------------------------------------
//*********************************************************************************************************************************
//-------------------------------------------------------- Begin Setup ------------------------------------------------------------
void setup()
{
    ReefAngel.Init();  //Initialize controller
    ReefAngel.InitMenu(pgm_read_word(&(menu_items[0])),SIZE(menu_items));  //Intialize Custom Menu
    
    vtmode=InternalMemory.RFMode_read();
    vtspeed=InternalMemory.RFSpeed_read();
    vtechmode=InternalMemory.RFMode_read();
    vtechspeed=InternalMemory.RFSpeed_read();
   
    ReefAngel.FeedingModePorts = Port2Bit | Port7Bit | Port6Bit; // Turn off Skimmer, ATO and Close Loop when feeding mode is activated
    ReefAngel.WaterChangePorts = Port2Bit | Port7Bit | Port8Bit; // Turn off Return Pump, Skimmer & ATO when water change mode is actived
    ReefAngel.OverheatShutoffPorts = Port1Bit | Port3Bit;
    ReefAngel.LightsOnPorts = Port1Bit;
    ReefAngel.TempProbe = T1_PROBE; // Use T1 probe as temperature and overheat functions
    ReefAngel.OverheatProbe = T1_PROBE;
    InternalMemory.OverheatTemp_write( 850 ); // Set the Overheat temperature setting

    // Ports that are always on
    ReefAngel.Relay.On(Port4);
    ReefAngel.Relay.On(Port6);
    ReefAngel.Relay.On(Port8);
}
//---------------------------------------------------------- End Setup ------------------------------------------------------------
//*********************************************************************************************************************************
//--------------------------------------------------------- Begin Loop ------------------------------------------------------------
void loop()
{
    // Specific functions
    ReefAngel.Relay.DelayedOn(Port7, 2); // Turn on Port 7 (Skimmer) with 2 minute delay
    ReefAngel.Relay.DelayedOn(Port2, 10); // Turn on Port 2 (Avast ATO) with 10 minute delay
    ReefAngel.StandardLights(Port1,21,0,9,00); //Fuge Light on at night
    ReefAngel.StandardHeater(Port3,790,800); // Standard Heater Using Internal Memory
    ReefAngel.DosingPumpRepeat(Port5,0,360,60); //Turn Schwabble on for 1 minute every 4 hours
     
    // Fan Speed Functions
    signed int HoodFanSpeed;
    HoodFanSpeed=map(ReefAngel.Params.Temp[T3_PROBE],750,1000,25,100); // Calculate Hood Fan speed
    HoodFanSpeed=constrain(HoodFanSpeed,0,100);
    ReefAngel.PWM.SetChannel(0,HoodFanSpeed);

    signed int SumpFanSpeed;
    SumpFanSpeed=map(ReefAngel.Params.Temp[T2_PROBE],750,850,25,100); // Calculate Sump Fan speed
    SumpFanSpeed=constrain(SumpFanSpeed,0,100);
    ReefAngel.PWM.SetChannel(1,SumpFanSpeed);
 
    ReefAngel.PWM.SetDaylight(ReefCrestMode(80,20,true));
    
/*
------------------------------------------------ Start Time-of-Day Based Functions ----------------------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ These are the mode numbers for the RF Expansion Module for reference ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    #define Constant      0
    #define Random1       1 // Lagoonal
    #define Random2       2 // Reef Crest
    #define ShortWave     3
    #define LongWave      4
    #define Smart_NTM     5 // Nutrient Transport Mode
    #define Smart_TSM     6 // Tidal Swell Mode
    #define Feeding_Start 7
    #define Feeding_Stop  8
    #define Night         9
    #define Slave_Start   97
    #define Slave_Stop    98
    #define None          99
    
    RF Mode      = http://YOURIPADDRESS:2000/mb855,X
    RF Speed     = http://YOURIPADDRESS:2000/mb856,X
    RF Duration  = http://YOURIPADDRESS:2000/mb857,X
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/

//---------------------------------------------- Start RF Control Mode for Daytime, Night and Feeding ---------------------------
  if (hour() >=9  && hour() < 21)
  {  
    if (vtechmode == 9)
    {
      ReefAngel.PWM.SetDaylight(ReefCrestMode(80,20,true));
      ReefAngel.RF.UseMemory=true;  
      vtechmode = InternalMemory.RFMode_read();
      vtechspeed = InternalMemory.RFSpeed_read();
    }
    if (ReefAngel.DisplayedMenu==FEEDING_MODE) 
    {
      bFeeding=true;
      ReefAngel.PWM.SetDaylight(50);     
    }
    if (ReefAngel.DisplayedMenu==DEFAULT_MENU && bFeeding)
    {
      bFeeding=false; 
      ReefAngel.Timer[1].SetInterval(600); // Timer for 10min
      ReefAngel.Timer[1].Start();
      ReefAngel.RF.UseMemory=false;
      ReefAngel.PWM.SetDaylight(NutrientTransportMode(50,100,500,true));
      ReefAngel.RF.SetMode(Smart_NTM,100,6);
      vtechmode = 5;
      vtechspeed = 100;
    }
    if (ReefAngel.DisplayedMenu==DEFAULT_MENU && ReefAngel.Timer[1].IsTriggered())
    {
      ReefAngel.PWM.SetDaylight(ReefCrestMode(80,20,true));
      ReefAngel.RF.UseMemory=true;
      vtechmode = InternalMemory.RFMode_read();
      vtechspeed = InternalMemory.RFSpeed_read();
    }
  }
  else
  {
      ReefAngel.RF.UseMemory=false;
      ReefAngel.PWM.SetDaylight(ReefCrestMode(50,5,true));
      ReefAngel.RF.SetMode(Night,15,0);
      vtechmode = 9;
      vtechspeed = 15;
  }
//------------------------------------------------ End RF Control Mode for Daytime, Night and Feeding -----------------------------   

    ReefAngel.Portal("mvwise");
    ReefAngel.ShowInterface();
}
//--------------------------------------------------------------- End Loop --------------------------------------------------------

//*********************************************************************************************************************************
Is it me or the probe?
Image
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Salinity error

Post by rimai »

Yes, 4D is the salinity module.
Can you send me some photos of the probe??
I'd like to see the tip and the BNC connector.
Roberto.
User avatar
mvwise
Posts: 48
Joined: Sat Apr 21, 2012 7:44 pm
Location: Burlington, Ontario, Canada

Re: Salinity error

Post by mvwise »

Here are some pictures. The tip of the probe appears fine, but when I disconnected the BNC i noticed that it was very loose and I can actually move the pin in an out. Is this fairly easy to fix myself. It may need a new BNC connector and just clip the cord? Pictures located here: https://www.icloud.com/photostream/#A7JtdOXmJuYJtP
Image
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Salinity error

Post by rimai »

It's just a standard BNC connector.
You can try to patch another one with a crimper or PM me for RMA.
Roberto.
User avatar
mvwise
Posts: 48
Joined: Sat Apr 21, 2012 7:44 pm
Location: Burlington, Ontario, Canada

Re: Salinity error

Post by mvwise »

I don't mind trying to crimp another one here because it might save on the shipping costs to send it back from Ontario, Canada. HOwever, if it turns out not to be the connector does the offer of an RMA stand if I've cut the connector off and tried to reconnect?

If I go this route, what is the size of the cable and connector I need to use?

Thanks!
Image
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: Salinity error

Post by rimai »

Yes, I'll RMA it if it doesn't work.
I think the cable is RG174.
Roberto.
User avatar
mvwise
Posts: 48
Joined: Sat Apr 21, 2012 7:44 pm
Location: Burlington, Ontario, Canada

Re: Salinity error

Post by mvwise »

Well, crimping the new end didn't work and was going to ask for RMA, but after I took the proble out of the water and left it aside, I ended up cracking the tip end :shock:

I will therefore head to the RA store and buy a new probe...

Thanks for checking into this for me Roberto!
Image
Post Reply