Salinity error
Re: Salinity error
Also, this probe should not have water inside and definitely not in the BNC connector.
Roberto.
Re: Salinity error
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.
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.
Re: Salinity error
No, nothing I can see.
It does have a rust-like spot on the wire, similar to the original one. Would a picture help?
It does have a rust-like spot on the wire, similar to the original one. Would a picture help?
Re: Salinity error
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:
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:
Is it me or the probe?
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
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 --------------------------------------------------------
//*********************************************************************************************************************************
Re: Salinity error
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.
Can you send me some photos of the probe??
I'd like to see the tip and the BNC connector.
Roberto.
Re: Salinity error
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
Re: Salinity error
It's just a standard BNC connector.
You can try to patch another one with a crimper or PM me for RMA.
You can try to patch another one with a crimper or PM me for RMA.
Roberto.
Re: Salinity error
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!
If I go this route, what is the size of the cable and connector I need to use?
Thanks!
Re: Salinity error
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
I will therefore head to the RA store and buy a new probe...
Thanks for checking into this for me Roberto!

I will therefore head to the RA store and buy a new probe...
Thanks for checking into this for me Roberto!