expansion relay box problem

Do you have a question on how to do something.
Ask in here.
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

expansion relay box problem

Post by sesame »

as my dimming expansion have some free port, i DIY a expansion relay box myself to control T5.
previous is fine, but as today i connected with new salinity module and changed ports sequence. my relay box act very strange as shutdown randomly or sometime flash on as well.
im not sure is there any problem with my code as shown below. (checked relay box, dimming expansion, or RA + works fine individually)

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 ATOPump            2
#define Skimmer            3
#define ZeovitShake        4
#define Wavepump1          5
#define Wavepump2          6
#define Relay_Box2         7
#define Heater             8

#define T5_Channel1        Box1_Port1
#define T5_Channel2        Box1_Port2
#define T5_Channel3        Box1_Port3
#define ZEO_ST3            Box1_Port4
#define ZEO_SP             Box1_Port5
#define CaHCO3             Box1_Port6
#define ZEO_BB             Box1_Port7
#define ZEO_KB             Box1_Port8



// 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

    
    // Ports toggled in Feeding Mode
    ReefAngel.FeedingModePorts = Port1Bit | Port2Bit | Port3Bit | Port5Bit | Port6Bit | Port8Bit;
    // Ports toggled in Water Change Mode
    ReefAngel.WaterChangePorts = Port1Bit | Port2Bit;
    // Ports toggled when Lights On / Off menu entry selected
    ReefAngel.LightsOnPorts = 0;
    // Ports turned off when Overheat temperature exceeded
    ReefAngel.OverheatShutoffPorts = Port8Bit;  
    // 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] = None;
    ReefAngel.DCPump.ExpansionChannel[1] = None;
    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(Relay_Box2);
    
    ////// Place additional initialization code below here
    
    ReefAngel.CustomLabels[0]="ReturnPump"; 
    ReefAngel.CustomLabels[1]="ATOPump"; 
    ReefAngel.CustomLabels[2]="Skimmer"; 
    ReefAngel.CustomLabels[3]="ZeovitShake"; 
    ReefAngel.CustomLabels[4]="WavePump1"; 
    ReefAngel.CustomLabels[5]="WavePump2"; 
    ReefAngel.CustomLabels[6]="Relay_Box2"; 
    ReefAngel.CustomLabels[7]="Heater"; 

    ////// Place additional initialization code above here
}

void loop()
{
  //single ATO 
    ReefAngel.SingleATO(true,ATOPump,90,1);
    ReefAngel.StandardHeater(Heater);
    ReefAngel.Relay.DelayedOn(Skimmer);

    // T5 light setup
    //ReefAngel.MoonLights(LunaLED); 
    ReefAngel.DosingPumpRepeat1(ZeovitShake);
    ReefAngel.StandardLights(T5_Channel2);
    ReefAngel.PWM.SetChannel(0,ReefAngel.Relay.Status(T5_Channel1)*100);
    ReefAngel.DayLights(T5_Channel1);
    ReefAngel.PWM.SetChannel(1,ReefAngel.Relay.Status(T5_Channel3)*100);
    ReefAngel.ActinicLights(T5_Channel3);
    ReefAngel.PWM.SetChannel(2,ReefAngel.Relay.Status(T5_Channel2)*100);


    //dosing pump setup
    if (hour()==22 && minute()==31 && second()<26) //Dosing ST3 at 22:31
    {
      ReefAngel.Relay.On(ZEO_ST3);
    }
    else if (hour()==6 && minute()==31 && second()<26) //Dosing ST3 at 6:31
    {
      ReefAngel.Relay.On(ZEO_ST3);
    }
    else
    {
      ReefAngel.Relay.Off(ZEO_ST3);
    }
    ReefAngel.PWM.SetChannel(3,ReefAngel.Relay.Status(ZEO_ST3)*100);
      
    if (hour()==22 && minute()==32 && second()<50)
    {
    ReefAngel.Relay.On(ZEO_SP);
    }
    else
    {
    ReefAngel.Relay.Off(ZEO_SP);
    }
    ReefAngel.PWM.SetChannel(4,ReefAngel.Relay.Status(ZEO_SP)*100);
    
    ReefAngel.DosingPumpRepeat2(CaHCO3);
    ReefAngel.PWM.SetChannel(5,ReefAngel.Relay.Status(CaHCO3)*100);

        
    
    //wave pump setup
    ReefAngel.DCPump.UseMemory = true;
    
    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.UseMemory=false;
            ReefAngel.DCPump.SetMode(NutrientTransport,35,30);
        } 
        
    // 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 Outage - turn off everything

  // 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();
}
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

and also connect with hub. im not sure, new connected hub and salinity module will effect other parts or not
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

up
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: expansion relay box problem

Post by rimai »

Is it the DIY or the main relay box doing that?
Roberto.
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

only main box flash in some port. What I fig out is port2(ato), port4(zeovit) port7 (box2). Other port may have same problem but I can't notice. It's acting like a second flash on off randomly.
I check out some other posts mentioned similar problem. But can't be sure if could be sort out.
This issue only happened after plugged senility and hub
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: expansion relay box problem

Post by rimai »

How often does this happen?
Can you remove the salinity and leave the hub and dimming module to see what happens?
If you do not get any problems, try just the hub and salinity. Do you get the same problem?
Roberto.
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

Ok will have a try
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

Flash occurred randomly, one or two times per hour. Will try disconnect other expansion module tomorrow
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

expansion relay box problem

Post by sesame »

checked with RA several hours today. Only Have issue when connected hub and dimming module in same time. Dimming module and salinity module working fine without hub.
How would I do to sort it out?
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: expansion relay box problem

Post by rimai »

Does it work right with the hub and the salinity expansion module?
Roberto.
User avatar
cosmith71
Posts: 1437
Joined: Fri Mar 29, 2013 3:51 pm
Location: Oklahoma City

Re: expansion relay box problem

Post by cosmith71 »

I had a similar problem. I replaced the VGA cable with a short, heavy, shielded one and it seems to have fixed it.

--Colin
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

rimai wrote:Does it work right with the hub and the salinity expansion module?
It's working proper with husband salinity module.
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

change code today, but doesnt act right way.

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();
}
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
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: expansion relay box problem

Post by rimai »

This is wrong:

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;
It needs to be something like this:

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.
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

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

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();
}
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: expansion relay box problem

Post by rimai »

How are you connecting the relays to the 16ch module?
Roberto.
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

rimai wrote:How are you connecting the relays to the 16ch module?
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
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: expansion relay box problem

Post by rimai »

Are you driving the relays directly or you have a driving circuit?
Roberto.
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

i think its directly like parts below
http://www.ebay.com/itm/5V-4-Channel-Re ... 3a9163e856
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: expansion relay box problem

Post by rimai »

Are you using one of those same boards?
Roberto.
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

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
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

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.
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

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.
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: expansion relay box problem

Post by rimai »

How long is the USB cables you are using?
Roberto.
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

All new
User avatar
cosmith71
Posts: 1437
Joined: Fri Mar 29, 2013 3:51 pm
Location: Oklahoma City

Re: expansion relay box problem

Post by cosmith71 »

Sorry to butt in, but wouldn't it be easier to just use outlet adapters on the RA relay box?

--Colin
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: expansion relay box problem

Post by rimai »

How long is it?
Roberto.
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

expansion relay box problem

Post by sesame »

3 come along with 16ch and hub last month. 1 purchased last week cause need a Long
lead for salinity
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

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
sesame
Posts: 71
Joined: Sun Aug 04, 2013 2:29 am

Re: expansion relay box problem

Post by sesame »

cosmith71 wrote:Sorry to butt in, but wouldn't it be easier to just use outlet adapters on the RA relay box?

--Colin
need to use Hub. otherwise meaning less for me.
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
Post Reply