expansion relay box problem
Re: expansion relay box problem
I had a similar problem. I replaced the VGA cable with a short, heavy, shielded one and it seems to have fixed it.
--Colin
--Colin
Re: expansion relay box problem
It's working proper with husband salinity module.rimai wrote:Does it work right with the hub and the salinity expansion module?
Re: expansion relay box problem
change code today, but doesnt act right way.
Feeding mode will shut down T5 light (relay box 0 port 2~4).
16 CH module channel 5, channel 8, channel 11. always on
no idea whats wrong
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 <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>
// Define Relay Ports by Name
#define Return 1
#define T5_Channel1 2
#define T5_Channel2 3
#define T5_Channel3 4
#define Wavepump1 5
#define Wavepump2 6
#define RW_PUMP 7
#define Skimmer 8
#define ATOPump Box1_Port1 //16Ch Port0
#define Heater Box1_Port2 //16Ch Port1
#define ZeovitShake Box1_Port3 //16Ch Port2
#define WaterChange Box1_Port4 //16Ch Port3
#define None2 Box1_Port5 //16Ch Port4
#define None3 Box1_Port6 //16Ch Port5
#define None4 Box1_Port7 //16Ch Port6
#define None5 Box1_Port8 //16Ch Port7
#define CaCl2 Box2_Port1 //16Ch Port8
#define MgCl2 Box2_Port2 //16Ch Port9
#define CaHCO3 Box2_Port3 //16Ch Port10
#define ZEO_ST3 Box2_Port4 //16Ch Port11
#define ZEO_SP Box2_Port5 //16Ch Port12
#define ZEO_SNOW Box2_Port6 //16Ch Port13
#define ZEO_CB Box2_Port7 //16Ch Port14
#define ZEO_BB Box2_Port8 //16Ch Port15
// Define Custom Memory Locations
////// Place global variable code below here
////// Place global variable code above here
void setup()
{
// This must be the first line
ReefAngel.Init(); //Initialize controller
ReefAngel.SetTemperatureUnit( Celsius ); // set to Celsius Temperature
ReefAngel.Use2014Screen(); // Let's use 2014 Screen
ReefAngel.AddSalinityExpansion(); // Salinity Expansion Module
ReefAngel.Add16ChPWM();//add 16 channel dimming module
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Box0_Port1 | Box0_Port5 | Box0_Port6 | Box0_Port7 | Box0_Port8 | Box1_Port1 | Box1_Port2;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Box0_Port1 | Box2_Port1;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Box1_Port2;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T3_PROBE;
ReefAngel.OverheatProbe = T2_PROBE;
// Feeeding and Water Change mode speed
ReefAngel.DCPump.DaylightChannel = Sync;
ReefAngel.DCPump.ActinicChannel = AntiSync;
//ReefAngel.DCPump.ExpansionChannel[0] = Sync;
//ReefAngel.DCPump.ExpansionChannel[1] = AntiSync;
//ReefAngel.DCPump.ExpansionChannel[2] = None;
//ReefAngel.DCPump.ExpansionChannel[3] = None;
//ReefAngel.DCPump.ExpansionChannel[4] = None;
//ReefAngel.DCPump.ExpansionChannel[5] = None;
ReefAngel.DCPump.FeedingSpeed=0;
ReefAngel.DCPump.WaterChangeSpeed=0;
// Ports that are always on
ReefAngel.Relay.On(Return);
ReefAngel.Relay.On(Wavepump1);
ReefAngel.Relay.On(Wavepump2);
ReefAngel.Relay.On(RW_PUMP);
////// Place additional initialization code below here
ReefAngel.CustomLabels[0]="ReturnPump";
ReefAngel.CustomLabels[1]="T5_Channel1";
ReefAngel.CustomLabels[2]="T5_Channel2";
ReefAngel.CustomLabels[3]="T5_Channel3";
ReefAngel.CustomLabels[4]="WavePump1";
ReefAngel.CustomLabels[5]="WavePump2";
ReefAngel.CustomLabels[6]="RW Pump";
ReefAngel.CustomLabels[7]="Skimmer";
////// Place additional initialization code above here
}
void loop()
{
//single ATO
ReefAngel.SingleATO(true,ATOPump,90,1);
ReefAngel.PWM.Set16ChannelRaw(0,ReefAngel.Relay.Status(ATOPump)*4095);
//Heater
ReefAngel.StandardHeater(Heater);
ReefAngel.PWM.Set16ChannelRaw(1,ReefAngel.Relay.Status(Heater)*4095);
//ZeovitShake
ReefAngel.Relay.Set(ZeovitShake,hour()==0 && minute()==0 && second()<30);
ReefAngel.Relay.Set(ZeovitShake,hour()==6 && minute()==0 && second()<30);
ReefAngel.Relay.Set(ZeovitShake,hour()==12 && minute()==0 && second()<30);
ReefAngel.Relay.Set(ZeovitShake,hour()==18 && minute()==0 && second()<30);
ReefAngel.PWM.Set16ChannelRaw(2,ReefAngel.Relay.Status(ZeovitShake)*4095);
ReefAngel.Relay.DelayedOn(Skimmer);
// T5 light setup
ReefAngel.StandardLights(T5_Channel2);
ReefAngel.DayLights(T5_Channel1);
ReefAngel.ActinicLights(T5_Channel3);
//other Relay setup
ReefAngel.PWM.Set16ChannelRaw(3,ReefAngel.Relay.Status(WaterChange)*4095);
ReefAngel.PWM.Set16ChannelRaw(4,ReefAngel.Relay.Status(None2)*4095);
ReefAngel.PWM.Set16ChannelRaw(5,ReefAngel.Relay.Status(None3)*4095);
ReefAngel.PWM.Set16ChannelRaw(6,ReefAngel.Relay.Status(None4)*4095);
ReefAngel.PWM.Set16ChannelRaw(7,ReefAngel.Relay.Status(None5)*4095);
//dosing pump setup
//Main 3
ReefAngel.DosingPumpRepeat1(CaCl2);
ReefAngel.PWM.Set16ChannelRaw(8,ReefAngel.Relay.Status(CaCl2)*4095);
ReefAngel.DosingPumpRepeat2(MgCl2);
ReefAngel.PWM.Set16ChannelRaw(9,ReefAngel.Relay.Status(MgCl2)*4095);
ReefAngel.DosingPumpRepeat3(CaHCO3);
ReefAngel.PWM.Set16ChannelRaw(10,ReefAngel.Relay.Status(CaHCO3)*4095);
//ZEO ST3
ReefAngel.Relay.Set(ZEO_ST3,hour()==22 && minute()==31 && second()<26); //Dosing ST3 at 22:31
ReefAngel.Relay.Set(ZEO_ST3,hour()==6 && minute()==31 && second()<26); //Dosing ST3 at 6:31
ReefAngel.PWM.Set16ChannelRaw(11,ReefAngel.Relay.Status(ZEO_ST3)*4095);
//ZEO SP
ReefAngel.Relay.Set(ZEO_SP,hour()==22 && minute()==32 && second()<50); //Dosing SP at 22:32
ReefAngel.PWM.Set16ChannelRaw(12,ReefAngel.Relay.Status(ZEO_SP)*4095);
//ZEO Others Not online
ReefAngel.PWM.Set16ChannelRaw(13,ReefAngel.Relay.Status(ZEO_SNOW)*4095);
ReefAngel.PWM.Set16ChannelRaw(14,ReefAngel.Relay.Status(ZEO_CB)*4095);
ReefAngel.PWM.Set16ChannelRaw(15,ReefAngel.Relay.Status(ZEO_BB)*4095);
//wave pump setup
if (now() % SECS_PER_DAY >= 8 * SECS_PER_HOUR && now() % SECS_PER_DAY < (8 * SECS_PER_HOUR + 10 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(Lagoon,60,20);//Set 6105 to 60% speed with pulse in Lagoon Mode from 9:00~9:10
}
else if (now() % SECS_PER_DAY >= (8 * SECS_PER_HOUR + 10 * SECS_PER_MIN) && now() % SECS_PER_DAY < (10 * SECS_PER_HOUR + 30 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(TidalSwell,60,20); //Set 6105 to 55% speed with 20ms pulse in Tidal Swell Mode
}
else if (now() % SECS_PER_DAY >= (10 * SECS_PER_HOUR + 30 * SECS_PER_MIN) && now() % SECS_PER_DAY < (11 * SECS_PER_HOUR + 10 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(LongPulse,55,15);//Set 6105 to 60% speed with pulse in ReefCrest Mode
}
else if (now() % SECS_PER_DAY >= (11 * SECS_PER_HOUR + 10 * SECS_PER_MIN) && now() % SECS_PER_DAY < (12 * SECS_PER_HOUR + 0 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(ReefCrest,60,20);;//Set 6105 to 55% speed with Long pulse Mode
}
else if (now() % SECS_PER_DAY >= (12 * SECS_PER_HOUR + 0 * SECS_PER_MIN) && now() % SECS_PER_DAY < 15 * SECS_PER_HOUR )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(TidalSwell,55,20); //Set 6105 to 45% speed with 20ms pulse in Tidal Swell Mode
}
else if (now() % SECS_PER_DAY >= 15 * SECS_PER_HOUR && now() % SECS_PER_DAY < (17 * SECS_PER_HOUR + 30 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(ReefCrest,60,20);//Set RW8 to 40% speed with Lagoon Pulse Mode
}
else if (now() % SECS_PER_DAY >= (17 * SECS_PER_HOUR + 30 * SECS_PER_MIN) && now() % SECS_PER_DAY < (18 * SECS_PER_HOUR + 30 * SECS_PER_MIN))
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(ShortPulse,70,34);//Set 6105 to 65% speed with ShortPulse Mode
}
else if (now() % SECS_PER_DAY >= (18 * SECS_PER_HOUR + 30 * SECS_PER_MIN) && now() % SECS_PER_DAY < (19 * SECS_PER_HOUR + 00 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(Lagoon,60,20);//Set 6105 to 55% speed with pulse in Lagoon Mode
}
else if (now() % SECS_PER_DAY >= (19 * SECS_PER_HOUR + 0 * SECS_PER_MIN) && now() % SECS_PER_DAY < 20 * SECS_PER_HOUR )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(TidalSwell,50,20); //Set 6105 to 85% speed with 20ms pulse in Tidal Swell Mode
}
else if (now() % SECS_PER_DAY >= 20 * SECS_PER_HOUR && now() % SECS_PER_DAY < (22 * SECS_PER_HOUR + 30 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(ReefCrest,55,20);//Set 6105 to 70% speed with Lagoon Pulse Mode
}
else if (now() % SECS_PER_DAY >= (22 * SECS_PER_HOUR + 30 * SECS_PER_MIN) && now() % SECS_PER_DAY < (22 * SECS_PER_HOUR + 35 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(Lagoon,70,20);//Set 6105 to 90% speed with pulse in Lagoon Mode, dossing coral feed.
}
else
{
ReefAngel.DCPump.SetMode(Sine,50,30);
}
// Set RW-8 WaveMode
if (hour() >= 8 && hour() < 9)
{
ReefAngel.PWM.SetChannel(0,GyreMode(45,85,60,true));
ReefAngel.PWM.SetChannel(1,GyreMode(45,85,60,false));
}
else if (hour() >= 9 && hour() < 13)
{
ReefAngel.PWM.SetChannel(0,TidalSwellMode(85,true));
ReefAngel.PWM.SetChannel(1,TidalSwellMode(85,false));
}
else if (hour() >= 13 && hour() < 17)
{
ReefAngel.PWM.SetChannel(0, ElseMode(60,20,true));
ReefAngel.PWM.SetChannel(1, ElseMode(60,20,false));
}
else if (hour() >= 17 && hour() < 22)
{
ReefAngel.PWM.SetChannel(0, NutrientTransportMode(50,80,40,true));
ReefAngel.PWM.SetChannel(1, NutrientTransportMode(50,80,40,false));
}
else
{
ReefAngel.PWM.SetChannel(0,SineMode(25,40,40,true));
ReefAngel.PWM.SetChannel(1,SineMode(25,40,40,false));
}
// Set timer when in feeding mode
// static unsigned long feeding;
// if (ReefAngel.DisplayedMenu==FEEDING_MODE) feeding=now();
// if (now()-feeding< 1 *SECS_PER_HOUR) {
// Continue NTM for the 60 minutes
// ReefAngel.DCPump.UseMemory=false;
// ReefAngel.DCPump.SetMode(NutrientTransport,35,30);
// }
//Autofeeder
if ( ((hour() == 18)) && (minute() == 58) &&(second() == 30) ) ReefAngel.FeedingModeStart();
if ( ((hour() == 9)) && (minute() == 28) &&(second() == 0) ) ReefAngel.FeedingModeStart();
if ( ((hour() == 14)) && (minute() == 28) &&(second() == 0) ) ReefAngel.FeedingModeStart();
//Skimmer off 1.5 hours when coral feeding.
if (now()%SECS_PER_DAY >= (22 * SECS_PER_HOUR + 30 * SECS_PER_MIN) && now()%SECS_PER_DAY < (23 * SECS_PER_HOUR + 30 * SECS_PER_MIN) )
{
ReefAngel.Relay.Off(Skimmer);
}
////// Place your custom code below here
ReefAngel.UseFlexiblePhCalibration();
// Power Restored - Turn things back on
// Turn off Skimmer if Return pump has been shutoff.
if (!ReefAngel.Relay.Status(Return)) {
ReefAngel.Relay.Off(Skimmer);
ReefAngel.Relay.Off(Heater);
}
////// Place your custom code above here
// This should always be the last line
ReefAngel.Portal( "sesame");
ReefAngel.ShowInterface();
}
16 CH module channel 5, channel 8, channel 11. always on
no idea whats wrong
Re: expansion relay box problem
This is wrong:
It needs to be something like this:
Code: Select all
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Box0_Port1 | Box0_Port5 | Box0_Port6 | Box0_Port7 | Box0_Port8 | Box1_Port1 | Box1_Port2;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Box0_Port1 | Box2_Port1;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Box1_Port2;
Code: Select all
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port1Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit
ReefAngel.FeedingModePortsE[0] = Port1Bit | Port2Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit;
ReefAngel.WaterChangePortsE[1] = Port1Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPortsE[0] = Port2Bit;
Roberto.
Re: expansion relay box problem
thank you very much, Roberto.
after changed follow as your comment , feeding mode works fine. but still can't fixing relay box problem.
I DIY a relay box due to RA relay box using US socket doesn't match local plug. this RA relay box(High level trigger) is controlled by new 16 ch dimming expansion module (and control DIY dosing pump as well). but doesn't seems to working fine.
as follow Colin suggestion, solved random start in main relay box after changed to a heavy VGA harness. but still have some issue as follow.
1. connect with 16Ch expansion and 6ch expansion with Hub and salinity. 16Ch expansion output not stable, (A: random output PWM signal. B: can't control by mobile app after 1~2 hours, restart RA doesn't work, only re-plug expansion module work).
2. connect with 6ch expansion (only control 2 wavepump by analog) with Hub and salinity. working fine.
3. connect with salinity and hub. working fine.
4. connect with salinity. working fine.
code as below
after changed follow as your comment , feeding mode works fine. but still can't fixing relay box problem.
I DIY a relay box due to RA relay box using US socket doesn't match local plug. this RA relay box(High level trigger) is controlled by new 16 ch dimming expansion module (and control DIY dosing pump as well). but doesn't seems to working fine.
as follow Colin suggestion, solved random start in main relay box after changed to a heavy VGA harness. but still have some issue as follow.
1. connect with 16Ch expansion and 6ch expansion with Hub and salinity. 16Ch expansion output not stable, (A: random output PWM signal. B: can't control by mobile app after 1~2 hours, restart RA doesn't work, only re-plug expansion module work).
2. connect with 6ch expansion (only control 2 wavepump by analog) with Hub and salinity. working fine.
3. connect with salinity and hub. working fine.
4. connect with salinity. working fine.
code as below
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 <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>
// Define Relay Ports by Name
#define Return 1
#define T5_Channel1 2
#define T5_Channel2 3
#define T5_Channel3 4
#define Wavepump1 5
#define Wavepump2 6
#define RW_PUMP 7
#define Skimmer 8
#define ATOPump Box1_Port1 //16Ch Port0
#define Heater Box1_Port2 //16Ch Port1
#define ZeovitShake Box1_Port3 //16Ch Port2
#define WaterChange Box1_Port4 //16Ch Port3
#define None2 Box1_Port5 //16Ch Port4
#define None3 Box1_Port6 //16Ch Port5
#define None4 Box1_Port7 //16Ch Port6
#define None5 Box1_Port8 //16Ch Port7
#define CaCl2 Box2_Port1 //16Ch Port8
#define MgCl2 Box2_Port2 //16Ch Port9
#define CaHCO3 Box2_Port3 //16Ch Port10
#define ZEO_ST3 Box2_Port4 //16Ch Port11
#define ZEO_SP Box2_Port5 //16Ch Port12
#define ZEO_SNOW Box2_Port6 //16Ch Port13
#define ZEO_CB Box2_Port7 //16Ch Port14
#define ZEO_BB Box2_Port8 //16Ch Port15
// Define Custom Memory Locations
////// Place global variable code below here
////// Place global variable code above here
void setup()
{
// This must be the first line
ReefAngel.Init(); //Initialize controller
ReefAngel.SetTemperatureUnit( Celsius ); // set to Celsius Temperature
ReefAngel.Use2014Screen(); // Let's use 2014 Screen
ReefAngel.AddSalinityExpansion(); // Salinity Expansion Module
ReefAngel.Add16ChPWM();//add 16 channel dimming module
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port1Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.FeedingModePortsE[0] = Port1Bit | Port2Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit;
ReefAngel.WaterChangePortsE[0] = Port1Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPortsE[0] = Port2Bit;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T3_PROBE;
ReefAngel.OverheatProbe = T2_PROBE;
// Feeeding and Water Change mode speed
ReefAngel.DCPump.DaylightChannel = Sync;
ReefAngel.DCPump.ActinicChannel = AntiSync;
//ReefAngel.DCPump.ExpansionChannel[0] = Sync;
//ReefAngel.DCPump.ExpansionChannel[1] = AntiSync;
//ReefAngel.DCPump.ExpansionChannel[2] = None;
//ReefAngel.DCPump.ExpansionChannel[3] = None;
//ReefAngel.DCPump.ExpansionChannel[4] = None;
//ReefAngel.DCPump.ExpansionChannel[5] = None;
ReefAngel.DCPump.FeedingSpeed=0;
ReefAngel.DCPump.WaterChangeSpeed=0;
// Ports that are always on
ReefAngel.Relay.On(Return);
ReefAngel.Relay.On(Wavepump1);
ReefAngel.Relay.On(Wavepump2);
ReefAngel.Relay.On(RW_PUMP);
////// Place additional initialization code below here
ReefAngel.CustomLabels[0]="ReturnPump";
ReefAngel.CustomLabels[1]="T5_Channel1";
ReefAngel.CustomLabels[2]="T5_Channel2";
ReefAngel.CustomLabels[3]="T5_Channel3";
ReefAngel.CustomLabels[4]="WavePump1";
ReefAngel.CustomLabels[5]="WavePump2";
ReefAngel.CustomLabels[6]="RW Pump";
ReefAngel.CustomLabels[7]="Skimmer";
////// Place additional initialization code above here
}
void loop()
{
//single ATO
ReefAngel.SingleATO(true,ATOPump,90,1);
ReefAngel.PWM.Set16Channel(0,ReefAngel.Relay.Status(ATOPump)*100);
//Heater
ReefAngel.StandardHeater(Heater);
ReefAngel.PWM.Set16Channel(1,ReefAngel.Relay.Status(Heater)*100);
//ZeovitShake
ReefAngel.Relay.Set(ZeovitShake,hour()==0 && minute()==0 && second()<30);
ReefAngel.Relay.Set(ZeovitShake,hour()==6 && minute()==0 && second()<30);
ReefAngel.Relay.Set(ZeovitShake,hour()==12 && minute()==0 && second()<30);
ReefAngel.Relay.Set(ZeovitShake,hour()==18 && minute()==0 && second()<30);
ReefAngel.PWM.Set16Channel(2,ReefAngel.Relay.Status(ZeovitShake)*100);
ReefAngel.Relay.DelayedOn(Skimmer);
// T5 light setup
ReefAngel.StandardLights(T5_Channel2);
ReefAngel.DayLights(T5_Channel1);
ReefAngel.ActinicLights(T5_Channel3);
//other Relay setup
ReefAngel.PWM.Set16Channel(3,ReefAngel.Relay.Status(WaterChange)*100);
ReefAngel.PWM.Set16Channel(4,ReefAngel.Relay.Status(None2)*100);
ReefAngel.PWM.Set16Channel(5,ReefAngel.Relay.Status(None3)*100);
ReefAngel.PWM.Set16Channel(6,ReefAngel.Relay.Status(None4)*100);
ReefAngel.PWM.Set16Channel(7,ReefAngel.Relay.Status(None5)*100);
//dosing pump setup
//Main 3
ReefAngel.DosingPumpRepeat1(CaCl2);
ReefAngel.PWM.Set16Channel(8,ReefAngel.Relay.Status(CaCl2)*100);
ReefAngel.DosingPumpRepeat2(MgCl2);
ReefAngel.PWM.Set16Channel(9,ReefAngel.Relay.Status(MgCl2)*100);
ReefAngel.DosingPumpRepeat3(CaHCO3);
ReefAngel.PWM.Set16Channel(10,ReefAngel.Relay.Status(CaHCO3)*100);
//ZEO ST3
ReefAngel.Relay.Set(ZEO_ST3,hour()==22 && minute()==31 && second()<59); //Dosing ST3 at 22:31
ReefAngel.Relay.Set(ZEO_ST3,hour()==6 && minute()==31 && second()<59); //Dosing ST3 at 6:31
ReefAngel.PWM.Set16Channel(11,ReefAngel.Relay.Status(ZEO_ST3)*100);
//ZEO SP
ReefAngel.Relay.Set(ZEO_SP,hour()==22 && minute()==32 && second()<59); //Dosing SP at 22:32
ReefAngel.PWM.Set16Channel(12,ReefAngel.Relay.Status(ZEO_SP)*100);
//ZEO Others Not online
ReefAngel.PWM.Set16Channel(13,ReefAngel.Relay.Status(ZEO_SNOW)*100);
ReefAngel.PWM.Set16Channel(14,ReefAngel.Relay.Status(ZEO_CB)*100);
ReefAngel.PWM.Set16Channel(15,ReefAngel.Relay.Status(ZEO_BB)*100);
//wave pump setup
if (now() % SECS_PER_DAY >= 8 * SECS_PER_HOUR && now() % SECS_PER_DAY < (8 * SECS_PER_HOUR + 10 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(Lagoon,60,20);//Set 6105 to 60% speed with pulse in Lagoon Mode from 9:00~9:10
}
else if (now() % SECS_PER_DAY >= (8 * SECS_PER_HOUR + 10 * SECS_PER_MIN) && now() % SECS_PER_DAY < (10 * SECS_PER_HOUR + 30 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(TidalSwell,60,20); //Set 6105 to 55% speed with 20ms pulse in Tidal Swell Mode
}
else if (now() % SECS_PER_DAY >= (10 * SECS_PER_HOUR + 30 * SECS_PER_MIN) && now() % SECS_PER_DAY < (11 * SECS_PER_HOUR + 10 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(LongPulse,55,15);//Set 6105 to 60% speed with pulse in ReefCrest Mode
}
else if (now() % SECS_PER_DAY >= (11 * SECS_PER_HOUR + 10 * SECS_PER_MIN) && now() % SECS_PER_DAY < (12 * SECS_PER_HOUR + 0 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(ReefCrest,60,20);;//Set 6105 to 55% speed with Long pulse Mode
}
else if (now() % SECS_PER_DAY >= (12 * SECS_PER_HOUR + 0 * SECS_PER_MIN) && now() % SECS_PER_DAY < 15 * SECS_PER_HOUR )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(TidalSwell,55,20); //Set 6105 to 45% speed with 20ms pulse in Tidal Swell Mode
}
else if (now() % SECS_PER_DAY >= 15 * SECS_PER_HOUR && now() % SECS_PER_DAY < (17 * SECS_PER_HOUR + 30 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(ReefCrest,60,20);//Set RW8 to 40% speed with Lagoon Pulse Mode
}
else if (now() % SECS_PER_DAY >= (17 * SECS_PER_HOUR + 30 * SECS_PER_MIN) && now() % SECS_PER_DAY < (18 * SECS_PER_HOUR + 30 * SECS_PER_MIN))
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(ShortPulse,70,34);//Set 6105 to 65% speed with ShortPulse Mode
}
else if (now() % SECS_PER_DAY >= (18 * SECS_PER_HOUR + 30 * SECS_PER_MIN) && now() % SECS_PER_DAY < (19 * SECS_PER_HOUR + 00 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(Lagoon,60,20);//Set 6105 to 55% speed with pulse in Lagoon Mode
}
else if (now() % SECS_PER_DAY >= (19 * SECS_PER_HOUR + 0 * SECS_PER_MIN) && now() % SECS_PER_DAY < 20 * SECS_PER_HOUR )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(TidalSwell,50,20); //Set 6105 to 85% speed with 20ms pulse in Tidal Swell Mode
}
else if (now() % SECS_PER_DAY >= 20 * SECS_PER_HOUR && now() % SECS_PER_DAY < (22 * SECS_PER_HOUR + 30 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(ReefCrest,55,20);//Set 6105 to 70% speed with Lagoon Pulse Mode
}
else if (now() % SECS_PER_DAY >= (22 * SECS_PER_HOUR + 30 * SECS_PER_MIN) && now() % SECS_PER_DAY < (22 * SECS_PER_HOUR + 35 * SECS_PER_MIN) )
{
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.SetMode(Lagoon,70,20);//Set 6105 to 90% speed with pulse in Lagoon Mode, dossing coral feed.
}
else
{
ReefAngel.DCPump.SetMode(Sine,50,30);
}
// Set RW-8 WaveMode
if (hour() >= 8 && hour() < 9)
{
ReefAngel.PWM.SetChannel(0,GyreMode(45,85,60,true));
ReefAngel.PWM.SetChannel(1,GyreMode(45,85,60,false));
}
else if (hour() >= 9 && hour() < 13)
{
ReefAngel.PWM.SetChannel(0,TidalSwellMode(85,true));
ReefAngel.PWM.SetChannel(1,TidalSwellMode(85,false));
}
else if (hour() >= 13 && hour() < 17)
{
ReefAngel.PWM.SetChannel(0, ElseMode(60,20,true));
ReefAngel.PWM.SetChannel(1, ElseMode(60,20,false));
}
else if (hour() >= 17 && hour() < 22)
{
ReefAngel.PWM.SetChannel(0, NutrientTransportMode(50,80,40,true));
ReefAngel.PWM.SetChannel(1, NutrientTransportMode(50,80,40,false));
}
else
{
ReefAngel.PWM.SetChannel(0,SineMode(25,40,40,true));
ReefAngel.PWM.SetChannel(1,SineMode(25,40,40,false));
}
// Set timer when in feeding mode
// static unsigned long feeding;
// if (ReefAngel.DisplayedMenu==FEEDING_MODE) feeding=now();
// if (now()-feeding< 1 *SECS_PER_HOUR) {
// Continue NTM for the 60 minutes
// ReefAngel.DCPump.UseMemory=false;
// ReefAngel.DCPump.SetMode(NutrientTransport,35,30);
// }
//Autofeeder
if ( ((hour() == 18)) && (minute() == 58) &&(second() == 30) ) ReefAngel.FeedingModeStart();
if ( ((hour() == 9)) && (minute() == 28) &&(second() == 0) ) ReefAngel.FeedingModeStart();
if ( ((hour() == 14)) && (minute() == 28) &&(second() == 0) ) ReefAngel.FeedingModeStart();
//Skimmer off 1.5 hours when coral feeding.
if (now()%SECS_PER_DAY >= (22 * SECS_PER_HOUR + 30 * SECS_PER_MIN) && now()%SECS_PER_DAY < (23 * SECS_PER_HOUR + 30 * SECS_PER_MIN) )
{
ReefAngel.Relay.Off(Skimmer);
}
////// Place your custom code below here
ReefAngel.UseFlexiblePhCalibration();
// Power Restored - Turn things back on
// Turn off Skimmer if Return pump has been shutoff.
if (!ReefAngel.Relay.Status(Return)) {
ReefAngel.Relay.Off(Skimmer);
ReefAngel.Relay.Off(Heater);
}
////// Place your custom code above here
// This should always be the last line
ReefAngel.Portal( "sesame");
ReefAngel.ShowInterface();
}
Re: expansion relay box problem
DIY Relay box has 8 output port, each with a Relay driven by high level trigger signal. Port will get power if 16Ch module output 5v signal.rimai wrote:How are you connecting the relays to the 16ch module?
Re: expansion relay box problem
Are you driving the relays directly or you have a driving circuit?
Roberto.
Re: expansion relay box problem
i think its directly like parts below
http://www.ebay.com/itm/5V-4-Channel-Re ... 3a9163e856
http://www.ebay.com/itm/5V-4-Channel-Re ... 3a9163e856
Re: expansion relay box problem
board pic shown below, using 2 in DIY relay box, im not sure if you can access below link.
http://www.taobao.com/view_image.php?sp ... dbId=&fv=9
another for dosing pump control. one board control two pump.
http://www.taobao.com/view_image.php?sp ... dbId=&fv=9
http://www.taobao.com/view_image.php?sp ... dbId=&fv=9
another for dosing pump control. one board control two pump.
http://www.taobao.com/view_image.php?sp ... dbId=&fv=9
Re: expansion relay box problem
another try today. some updates.
16ch will stuck and doesn't work after plug few hours. not only stuck with dimming channel but all relay (main and DIY) as well (stuck means cant be controlled by iphone app). feeding mode will effect all ports defined except return pump.
still have no idea whats wrong.
16ch will stuck and doesn't work after plug few hours. not only stuck with dimming channel but all relay (main and DIY) as well (stuck means cant be controlled by iphone app). feeding mode will effect all ports defined except return pump.
still have no idea whats wrong.
Re: expansion relay box problem
update
DIY relay will random flash if port trigger to on. main relay will random flash in some of ports, cant tell which.
16ch module will lost function after re-plugged 2 hours.
DIY relay will random flash if port trigger to on. main relay will random flash in some of ports, cant tell which.
16ch module will lost function after re-plugged 2 hours.
Re: expansion relay box problem
Sorry to butt in, but wouldn't it be easier to just use outlet adapters on the RA relay box?
--Colin
--Colin
expansion relay box problem
3 come along with 16ch and hub last month. 1 purchased last week cause need a Long
lead for salinity
lead for salinity
Re: expansion relay box problem
May bad usb cable cause this issue? Should I get some other new one just for try. Or play station 3 cable should work? Seems same connector
Re: expansion relay box problem
need to use Hub. otherwise meaning less for me.cosmith71 wrote:Sorry to butt in, but wouldn't it be easier to just use outlet adapters on the RA relay box?
--Colin
if finally cant work out. i may purchase another relay box. but it's in worse case due to painful experience change all plug to US socket
Re: expansion relay box problem
i think I find the root cause. Its working fine since disconnect 6ch module about 2 hours ago. Question is how can I setup jumper for these two dimming module. Now I just leave Jp1 blank in 6ch module and plugged JP1 in 16ch module. Is it correct?
expansion relay box problem
Little crash last night. 16ch module turn on all ports from early morning and Over dose alk and ato. May happened from 4am check from portal (sal doesn't work in 4am just 5min ). Over dosing may last 3hours from that and stop manually after wake up
Re: expansion relay box problem
You need to use the following addresses:
6ch - 0x40 (Jumper off)
16 ch - 0x41 (I can't remember and I don't have one to check)
Use the I2CScanner to check for addresses.
6ch - 0x40 (Jumper off)
16 ch - 0x41 (I can't remember and I don't have one to check)
Use the I2CScanner to check for addresses.
Roberto.
Re: expansion relay box problem
oh that's in correct condition. Still no idea what's wrong
Re: expansion relay box problem
today try many hours with RA+ with different condition.
unplug diy Relay box and dosing pump. but still keep 16ch dimming and 6ch dimming expansion functional.
after about half day of running. all ports in 16ch dimming expansion locked on (all ports stacked with 5V output). but 6ch dimming expansion working fine. flag shown Bus lock. restart doesnt work. unplug hole system works.
unplug diy relay box and dosing pump. change code, let 6ch dimming expansion take over some of 16ch dimming function.
after about half day of running. all ports in dimming expansion locked on, (all ports stacked with 100% output)
flag shown Bus lock. restart doesnt work. unplug hole system works.
looking for bus lock in forum, seems some have issue with RF module.
i will be a vacation for one week this month. I really dont want let my tank working with current condition. need help
unplug diy Relay box and dosing pump. but still keep 16ch dimming and 6ch dimming expansion functional.
after about half day of running. all ports in 16ch dimming expansion locked on (all ports stacked with 5V output). but 6ch dimming expansion working fine. flag shown Bus lock. restart doesnt work. unplug hole system works.
unplug diy relay box and dosing pump. change code, let 6ch dimming expansion take over some of 16ch dimming function.
after about half day of running. all ports in dimming expansion locked on, (all ports stacked with 100% output)
flag shown Bus lock. restart doesnt work. unplug hole system works.
looking for bus lock in forum, seems some have issue with RF module.
i will be a vacation for one week this month. I really dont want let my tank working with current condition. need help
Re: expansion relay box problem
Are you using the original USB codes?
Make sure the USB cables are all tight and secured.
Did you try different ports in the expansion hub or different combination of USB cables?
Make sure the USB cables are all tight and secured.
Did you try different ports in the expansion hub or different combination of USB cables?
Roberto.
Re: expansion relay box problem
Yes changed to all original usb cable.. I just plugged on 6 ch dimming module this and next week. Will have a try after holiday. Don't want tank crash when out of holiday.