Wave patterns

Related to the development libraries, released by Curt Binder
User avatar
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL
PostPosted: Fri Jun 19, 2015 2:15 pm
Personally it think the 60's even powered down will be to strong for a 40 gallon.

The Jebao WP pumps had an issue that they would lock up if they went below a certain percentage.
With the WP-40's it seemed to be 30% and with the WP 25's it seemed to be 25% (or I have that reversed).

Maybe I misunderstood you or you misunderstood me. but you need 1 Jebao cable for each of the pumps.
It may be able to be done with 1 cable, but you would have to modify the cable quite a bit and it wouldn't be worth it.

Posts: 111
Joined: Thu Jun 28, 2012 1:46 pm
PostPosted: Fri Jun 19, 2015 2:32 pm
Sacohen wrote:Personally it think the 60's even powered down will be to strong for a 40 gallon.

The Jebao WP pumps had an issue that they would lock up if they went below a certain percentage.
With the WP-40's it seemed to be 30% and with the WP 25's it seemed to be 25% (or I have that reversed).

Maybe I misunderstood you or you misunderstood me. but you need 1 Jebao cable for each of the pumps.
It may be able to be done with 1 cable, but you would have to modify the cable quite a bit and it wouldn't be worth it.


Nope, you explained it perfectly and I'll be ordering two cables ;) You also helped me with regards to the power. So al is well and thank you again.
User avatar
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL
PostPosted: Fri Jun 19, 2015 2:37 pm
No problem.

Posts: 111
Joined: Thu Jun 28, 2012 1:46 pm
PostPosted: Wed Jul 22, 2015 10:45 am
Picked up two RW-4's for the 40 gallon breeder which is made up mostly of soft corals and 3 rose bubble tip anemones. My order for two cables came in so I just finished connecting everything and adding some basic code from a few pages back that cycled through reef crest and nutrient export modes. Uploaded the code and saw a blast of water movement then nothing.

Probably have my code in the wrong place I'm guessing because they shot on for a second then nothing. I'll need to clean this up and label the ports on the relay box since it is getting messy. Side note - I just added the wireless adapter and it works great. Question - do I have to disconnect the wireless adapter every time I want to upload new code?


Code:
#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 <PAR.h>
#include <ReefAngel.h>

////// 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.AddWifi();
ReefAngel.AddStandardMenu(); // Add Standard Menu

ReefAngel.Use2014Screen(); // Let's use 2014 Screen
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = 0;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = 0;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = 0;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Set the Overheat temperature setting
InternalMemory.OverheatTemp_write( 869 );


// Ports that are always on
ReefAngel.Relay.On( Port1 );

////// Place additional initialization code below here


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

void loop()
{

ReefAngel.StandardLights( Port2,9,0,21,0 );
ReefAngel.StandardLights( Port4,9,0,21,0 ); // LED fans

ReefAngel.WavemakerRandom(Port5,60,300);

// ReefAngel.WavemakerRandom(Port5,120,600);
// ReefAngel.WavemakerRandom(Port6,120,600);

////// Place your custom code below here

// Turn Port5 on/off random cycles that lasts from 25 to 60 secs
// ReefAngel.Relay.Set(Port6,!ReefAngel.Relay.Status(Port5));
// ReefAngel.Relay.Set(Port8,!ReefAngel.Relay.Status(Port7));

// This will turn off both relays at a set time

if (hour()>=20 || hour()<10)
{
ReefAngel.Relay.Off(Port5); // large power head
ReefAngel.Relay.Off(Port6); // large power head
ReefAngel.Relay.Off(Port4); // LED fans
ReefAngel.Relay.On(Port7); // Small power head for night
ReefAngel.Relay.On(Port8); // Small power head for night
}
else
{

// Turn Port5 on/off random cycles that lasts from 25 to 60 secs
ReefAngel.Relay.Set(Port6,!ReefAngel.Relay.Status(Port5));
ReefAngel.Relay.Off(Port7);
ReefAngel.Relay.Off(Port8);
}

// Channel 0 (1000mA max) - 5 Neutral White
// Channel 1 (1000mA max) - 6 Royal Blue + 5 Blue
// Channel 2 (700mA max) - 12 Lime
// Channel 3 (700mA max) - 5 Violet UV + 4 Deep Red (660nm)

ReefAngel.PWM.SetChannel( 0, PWMParabola(10,0,20,0,0,65,0) );
ReefAngel.PWM.SetChannel( 1, PWMParabola(10,0,20,0,0,75,0) );
ReefAngel.PWM.SetChannel( 2, PWMParabola(10,0,20,0,0,65,0) );
ReefAngel.PWM.SetChannel( 3, PWMParabola(10,0,20,0,0,65,0) );

// Testing wave pumps
if (hour()>=16 && hour()<18)
{
ReefAngel.PWM.SetDaylight( NutrientTransportMode(77,90,3000,true) ); // Nutrient Transport on sync mode
ReefAngel.PWM.SetActinic( NutrientTransportMode(77,90,3000,false) ); // Nutrient Transport on anti-sync mode
}
else if (hour()>=18 && hour()<16)
{
ReefAngel.PWM.SetDaylight( ReefCrestMode(50,20,true) ); // ReefCrest at 50% + - 20 on sync mode
ReefAngel.PWM.SetActinic( ReefCrestMode(50,20,false) ); // ReefCrest at 50% + - 20 on anti-sync mode
}
////// Place your custom code above here

// This should always be the last line
ReefAngel.Portal( "saf1" );
ReefAngel.DDNS( "saf1-dns.myreefangel.com" ); // Your DDNS is saf1-dns.myreefangel.com
ReefAngel.ShowInterface();
}
User avatar
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL
PostPosted: Wed Jul 22, 2015 10:59 am
I'm not sure about the code, but a quick look it seems right, except it looks like you have the wave mode on ports 5 & 6 and are also using the DC Pump code.

If you don't have the Bluetooth module you will need to unplug the WiFi module every time you want to update your code.

Posts: 111
Joined: Thu Jun 28, 2012 1:46 pm
PostPosted: Wed Jul 22, 2015 1:08 pm
Yeah, that is odd. Not really sure at this point since I have cruddy notes and they don't look that great in the sketch either :( I just re-ran the wizard and it produced something that has at least one side working but not sure if this is right either so I'll need to continue to try. Also those little things can put out some water movement. I accidently had 90 percent I guess and everything was moving around way too much. Caught it and reset to 50 and everything seems pretty happy.

Originally on my power / relay box it was like this. Daylight and Actinic channels not used.

Plug 1 - skimmer (always on, off for feeding)
Plug 2 - Power supply for LED's - set time on/off
Plug 3 - NA
Plug 4 - LED heat sink fans - come on once LED's start up
Plug 5 - large power head powers on at 10 am until 8 pm
Plug 6 - large power head powers on at 10 am until 8 pm
Plug 7 - small power heads only coming on at 10 PM
Plug 8 - small power heads only coming on at 10 PM

The goal is to remove the koralia power heads and just use the RW-4's if I can get them to work together or educated is how I think they work :) I am reading it as reef crest daylight is set to sync with actinic set to antisync. So at some time - not sure when, one side shuts down and the other kicks in. Sort of simulating high/low tide. I just don't see that time window or cut off.

New code:
#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 <PAR.h>
#include <ReefAngel.h>

////// 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.Use2014Screen(); // Let's use 2014 Screen
ReefAngel.AddPHExpansion(); // pH Expansion Module
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port1Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port2Bit;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Set the Overheat temperature setting
InternalMemory.OverheatTemp_write( 869 );

// Feeeding and Water Change mode speed
ReefAngel.DCPump.FeedingSpeed=0;
ReefAngel.DCPump.WaterChangeSpeed=0;

// Ports that are always on
ReefAngel.Relay.On( Port1 );
ReefAngel.Relay.On( Port4 );
ReefAngel.Relay.On( Port5 );
ReefAngel.Relay.On( Port6 );

////// Place additional initialization code below here


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

void loop()
{
ReefAngel.StandardLights( Port2,9,0,21,0 ); // power to LED power supply
ReefAngel.StandardLights( Port4,9,0,21,0 ); // LED fans
// ReefAngel.WavemakerRandom( Port5,5,90 ); // Not sure what these are for now
// ReefAngel.WavemakerRandom( Port6,5,90 ); // Not sure what these are for now
// ReefAngel.StandardLights( Port7,9,0,21,0 );
// ReefAngel.StandardLights( Port8,9,0,21,0 );

// Channel 0 (1000mA max) - 5 Neutral White
// Channel 1 (1000mA max) - 6 Royal Blue + 5 Blue
// Channel 2 (700mA max) - 12 Lime
// Channel 3 (700mA max) - 5 Violet UV + 4 Deep Red (660nm)
ReefAngel.PWM.SetChannel( 0, PWMParabola(10,0,20,0,0,65,0) );
ReefAngel.PWM.SetChannel( 1, PWMParabola(10,0,20,0,0,75,0) );
ReefAngel.PWM.SetChannel( 2, PWMParabola(10,0,20,0,0,65,0) );
ReefAngel.PWM.SetChannel( 3, PWMParabola(10,0,20,0,0,65,0) );

ReefAngel.DCPump.UseMemory = false;
ReefAngel.DCPump.SetMode( ReefCrest,50,10 );
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;
////// Place your custom code below here


////// Place your custom code above here

// This should always be the last line
ReefAngel.Portal( "saf1" );
ReefAngel.DDNS( "saf1-dns.myreefangel.com" ); // Your DDNS is saf1-saf1-dns.myreefangel.com.myreefangel.com
ReefAngel.ShowInterface();
}
User avatar
Posts: 1426
Joined: Fri Mar 29, 2013 3:51 pm
Location: Oklahoma City
PostPosted: Fri Jul 24, 2015 4:44 am
That's not how ReefCrest works. ReefCrest slowly meanders between the midline (50 in your case) by +/- the offset (10 here). When the sync goes up, the antisync goes down. So they both should be on constantly, going between 40 and 60.

--Colin

Posts: 111
Joined: Thu Jun 28, 2012 1:46 pm
PostPosted: Sat Jul 25, 2015 7:05 am
cosmith71 wrote:That's not how ReefCrest works. ReefCrest slowly meanders between the midline (50 in your case) by +/- the offset (10 here). When the sync goes up, the antisync goes down. So they both should be on constantly, going between 40 and 60.

--Colin


Ok, that makes sense and also what I see although I thought I saw higher than 60 on one side. I'll add a if statement to get them to swap who is anti then.

Thanks, appreciate you taking time to explain it.
User avatar
Posts: 5348
Joined: Fri Jul 20, 2012 9:42 am
PostPosted: Sat Jul 25, 2015 4:38 pm
You can use tide.IsIncoming() it might be isIncoming as your condition for swapping the channels

Posts: 111
Joined: Thu Jun 28, 2012 1:46 pm
PostPosted: Sun Jul 26, 2015 9:31 am
Ok, thanks. I'll see if I can find an example of that. Right now I have the standard reef crest to go to 25 when the lights go off (9 PM). Then standard power when them come on again at 9 AM. I don't know what mode actually does what so I'm just using reef crest for now but would like to get the sides to alternate.

Does it make more sense to change flow patterns or just use one?

if (hour()>=21 || hour()<9)
{
// Sleep mode - slow things down
ReefAngel.DCPump.SetMode( ReefCrest,25,10 );
}
else
{
// Normal power
ReefAngel.DCPump.SetMode( ReefCrest,50,10 );
}
PreviousNext

Return to Development Libraries

Who is online

Users browsing this forum: No registered users and 1 guest

cron