Over the past day I have gone "live" with RA on my reef tank. The problem I have is that for some reason I get an ATO alarm (red led on), and RA shuts off my lights and skimmer, which are the options to be turned off for an over heat situation.
I know that the event is not an overheat as I am using the tank water temperature set to 85*f as the overheat point, and the client suite tells me that the temperature range over the last 24hrs has been min 78.4*f and max 81.7*f.
I am using two float switches in series (one set above the other) connected to ATOlow port. I also only have the ATO port live for six periods of on hour per day, 00:00 to 01:00, 04:00 to 05:00, 08:00 to 09"00, 12:00 to 13:00, 16:00 to 17:00, 20:00 to 21:00.
I am also using ATOhi as a PMW output to drive a 5v DC SSR. This controls the mixing pump in my Kalk reactor. As I need to have a settling time for the kalk before I pump water through the reactor into the tank from my RO/DI reservoir, whan the ATO kicks in, ATOhi is available six time per day for half an hour. Starting 30 mins after the ATO period has ended. i.e. 01:30 to 02:00 etc.
(The above has been part of two other postings by myself, and commented on by Roberto and Binder)
Under test I did not notice this happen, but I was not running the ATO sensors or the SSR on ATOhi all the time. I just tested that they cam on and went off at the right times by changing the clock time.
I believe the problem is to do with the use of ATOhi as a PWM output, as the turning off of the lights and skimmer happens during that period. I have set the time out for that port to 255, but as I am not using it as for ATO sensing, it did not make any difference.
I don't understand why I get an overheat shut down caused by an ATO alarm call, and also why I ma getting the alarm in the first place?
I can simply resolve the problem by moving back to time switches and not using the RA, and my have to do that while I fine a solution. But that kind of goes against the grain
Any ideas?
I am running Dev. Libs 0.8.5.19, and here is my PDE file.
// Autogenerated file by RAGen (v1.1.0.126), (11/19/2011 11:36)
// gold_build.pde
//
// This version designed for v0.8.5 Beta 17 or later
/* The following features are enabled for this PDE File:
#define DisplayImages
#define WavemakerSetup
#define DateTimeSetup
#define VersionMenu
#define ATOSetup
#define MetalHalideSetup
#define DirectTempSensor
#define wifi
#define SingleATOSetup
#define StandardLightSetup
#define WDT
#define CUSTOM_MAIN
#define ENABLE_ATO_LOGGING
*/
#include <ReefAngel_Features.h>
#include <ReefAngel_Globals.h>
#include <ReefAngel_Wifi.h>
#include <Wire.h>
#include <OneWire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <ReefAngel_EEPROM.h>
#include <ReefAngel_NokiaLCD.h>
#include <ReefAngel_ATO.h>
#include <ReefAngel_Joystick.h>
#include <ReefAngel_LED.h>
#include <ReefAngel_TempSensor.h>
#include <ReefAngel_Relay.h>
#include <ReefAngel_PWM.h>
#include <ReefAngel_Timer.h>
#include <ReefAngel_Memory.h>
#include <ReefAngel.h>
#include <avr/pgmspace.h>
// Labels for the web banner
prog_char id_label[] PROGMEM = "sebyte";
prog_char probe1_label[] PROGMEM = "Water";
prog_char probe2_label[] PROGMEM = "Room";
prog_char probe3_label[] PROGMEM = "Not%20Used";
prog_char relay1_label[] PROGMEM = "Skimmer";
prog_char relay2_label[] PROGMEM = "ATO";
prog_char relay3_label[] PROGMEM = "Heater";
prog_char relay4_label[] PROGMEM = "Chiller";
prog_char relay5_label[] PROGMEM = "Wave%20Maker";
prog_char relay6_label[] PROGMEM = "Pumps";
prog_char relay7_label[] PROGMEM = "Actinics";
prog_char relay8_label[] PROGMEM = "Daylight";
PROGMEM const char *webbanner_items[] = {
id_label, probe1_label, probe2_label, probe3_label, relay1_label, relay2_label,
relay3_label, relay4_label, relay5_label, relay6_label, relay7_label, relay8_label};
void DrawCustomMain()
{
// the graph is drawn/updated when we exit the main menu &
// when the parameters are saved
ReefAngel.LCD.DrawDate(6, 112);
pingSerial();
#if defined DisplayLEDPWM && ! defined RemoveAllLights
ReefAngel.LCD.DrawMonitor(15, 60, ReefAngel.Params,
ReefAngel.PWM.GetDaylightValue(), ReefAngel.PWM.GetActinicValue());
#else // defined DisplayLEDPWM && ! defined RemoveAllLights
ReefAngel.LCD.DrawMonitor(15, 60, ReefAngel.Params);
#endif // defined DisplayLEDPWM && ! defined RemoveAllLights
pingSerial();
byte TempRelay = ReefAngel.Relay.RelayData;
TempRelay &= ReefAngel.Relay.RelayMaskOff;
TempRelay |= ReefAngel.Relay.RelayMaskOn;
ReefAngel.LCD.DrawOutletBox(12, 93, TempRelay);
}
void DrawCustomGraph()
{
ReefAngel.LCD.DrawGraph(5, 5);
}
void setup()
{
ReefAngel.Init(); //Initialize controller
// Initialize and start the web banner timer
ReefAngel.LoadWebBanner(pgm_read_word(&(webbanner_items[0])), SIZE(webbanner_items));
ReefAngel.Timer[4].SetInterval(180); // set interval to 180 seconds
ReefAngel.Timer[4].Start();
ReefAngel.FeedingModePorts = B00110001;
ReefAngel.WaterChangePorts = B00111111;
ReefAngel.OverheatShutoffPorts = B11000001;
ReefAngel.LightsOnPorts = B11000000;
// Change Overheat Temperature Probe from (default Temp2) to Temp1
ReefAngel.OverheatTempProbe = &ReefAngel.Params.Temp1;
// Ports that are always on
ReefAngel.Relay.On(Port1);
ReefAngel.Relay.On(Port6);
}
void loop()
{
// Specific functions
ReefAngel.SingleATOLow(Port2);
ReefAngel.StandardHeater(Port3);
ReefAngel.StandardFan(Port4);
ReefAngel.Wavemaker1(Port5);
ReefAngel.StandardLights(Port7);
ReefAngel.MHLights(Port8);
// ATO available 6 times per day - 00:00 to 01:00, 04:00 to 05:00, 08:00 to 09:00, 12:00 to 13:00, 16:00 to 17:00, 20:00 to 21:00,
if (hour() % 4 == 0 && ReefAngel.LowATO.IsActive()) //Rev made 19/11/11
{
ReefAngel.Relay.On(Port2);
}
else
{
ReefAngel.Relay.Off(Port2);
}
// Kalk Reactor available 6 times per day - 01:30 to 2:00, 05:30 to 06:00, 09:30 to 10:00,
// 13:30 to 14:00, 17:30 to 18:00, 21:30 to 2:00.
if (hour() % 4 == 1 && minute()>30)
{
pinMode(highATOPin,OUTPUT);
digitalWrite(highATOPin,HIGH); // Turn on Solid State Relay
}
else
{
pinMode(highATOPin,OUTPUT);
digitalWrite(highATOPin,LOW); // Turn off Solid State Relay
}
// Wavemaker not available 9 pm to 10 am
if ( (hour() >= 20) || (hour() <= 9) )
{
ReefAngel.Relay.Off(Port5);
}
// Web Banner stuff
if(ReefAngel.Timer[4].IsTriggered())
{
ReefAngel.Timer[4].Start();
ReefAngel.WebBanner();
}
ReefAngel.ShowInterface();
}