Hi Sparfun team,
I built a controller for 3 AC switching board.
I have problem that, the system stuck and steady lit TX LED (Green) after 3- 4 days after uploading the program.
the switching not working after that. I don’t know why this happen every 3-4 days. what is this meaning when the green LED steady lit
Is it mean the memory is full or there is other problem in my programming code. I put below all picture and program details.
I used below parts.
1 X Pro Micro 3.3V/8MHz
1 X Quad Relay
1 X Humidity and Temp Sensor Si7021
1 X SparkFun Power Supply Stick - 5V/3.3V
diagram of the circuit:
Photo showing the TX-LED lit:
//3_AC_controller_V2.5
// in this program the sensor BME280 rplaced with Sparfun Si7021.
// BME280 library kept for future use.
#include <SparkFun_Si7021_Breakout_Library.h>
#include <Wire.h>
#include "SparkFun_Qwiic_Relay.h"
//Create Instance of HTU21D or SI7021 temp and humidity sensor and MPL3115A2 barrometric sensor
Weather sensor;
#define RELAY_ADDR 0x6D
Qwiic_Relay quadRelay(RELAY_ADDR);
float TEMP_SP1= 19.8; // Temp set point Low 19.8
float TEMP_SP2= 21.8; // Temp set point Low 21.8
float TEMPcal=0.45; //calibration TEMP sensor.
float TEMP=0;
unsigned long RUN_T1 = 0; // run time for relay 1
unsigned long RUN_T2 = 0;
unsigned long RUN_T3 = 0;
unsigned long DLY_T5= 300000; // before 300000
unsigned int TH= 1000;
unsigned int RUN_D1= 36; // duration running 3 hurs use 750
unsigned int R=0;
void setup() {
Serial.begin(9600);
Serial.println("3_AC_Controller_V2.3...");
delay(500);
//////////////////////////////////
///// Setup for Quad Relay /////
//////////////////////////////////
Wire.begin();
if(!quadRelay.begin())
Serial.println("Check connections to Qwiic Relay.");
else
Serial.println("Ready to flip some switches.");
//Use internal resitors to keep them in a known high state.
//Initialize the I2C sensor Si7021 and ping them
sensor.begin();
Serial.println("Initialize the I2C sensor Si7021 ...");
}
void loop() {
delay(4000);
Serial.println(RUN_D1);
Serial.println(R);
TEMP = sensor.getTemp();
Serial.print("Temp actual= ");
Serial.println(TEMP);
TEMP=TEMP-TEMPcal;
Serial.println(TEMP);
while (TEMP >= TEMP_SP1){
quadRelay.turnRelayOn(1);
delay(400);
quadRelay.turnRelayOn(2);
delay(400);
quadRelay.turnRelayOn(3);
Serial.println("High Temp ALL ON... ");
Serial.print("Tempreture ");
Serial.println(TEMP);
delay(DLY_T5);
RUN_T1=RUN_T1+(DLY_T5/60000);
RUN_T2=RUN_T2+(DLY_T5/60000);
RUN_T3=RUN_T3+(DLY_T5/60000);
TEMP = sensor.getTemp();
Serial.print("Temp actual= ");
Serial.println(TEMP);
TEMP=TEMP-TEMPcal;
Serial.println("High Temp ALL ON... ");
Serial.print("Tempreture ");
Serial.println(TEMP);
delay(DLY_T5);
RUN_T1=RUN_T1+(DLY_T5/60000);
RUN_T2=RUN_T2+(DLY_T5/60000);
RUN_T3=RUN_T3+(DLY_T5/60000);
TEMP = sensor.getTemp();
Serial.print("Temp actual= ");
Serial.println(TEMP);
TEMP=TEMP-TEMPcal;
Serial.println("High Temp ALL ON... ");
Serial.print("Tempreture ");
Serial.println(TEMP);
delay(DLY_T5);
RUN_T1=RUN_T1+(DLY_T5/60000);
RUN_T2=RUN_T2+(DLY_T5/60000);
RUN_T3=RUN_T3+(DLY_T5/60000);
TEMP = sensor.getTemp();
Serial.print("Temp actual= ");
Serial.println(TEMP);
TEMP=TEMP-TEMPcal;
}
while (TEMP<= TEMP_SP1) {
if (R<(RUN_D1/3) && R>=0){
Serial.print("step1 ");
quadRelay.turnRelayOn(1);
delay(400);
quadRelay.turnRelayOn(2);
delay(400);
quadRelay.turnRelayOff(3);
delay(DLY_T5);
R=R+1;
TEMP = sensor.getTemp();
Serial.print("Temp actual= ");
Serial.println(TEMP);
TEMP=TEMP-TEMPcal;
RUN_T1=RUN_T1+(DLY_T5/60000);// before 60000
RUN_T2=RUN_T2+(DLY_T5/60000);
Serial.print("Tempreture1 ");
Serial.print(TEMP);
Serial.print("\t");
Serial.print("R = ");
Serial.println(R);
Serial.print("RUN_T1= ");
Serial.print(RUN_T1);
Serial.print("\t");
Serial.print("RUN_T2= ");
Serial.print(RUN_T2);
Serial.print("\t");
Serial.print("RUN_T3= ");
Serial.println(RUN_T3);
delay(DLY_T5);
R=R+1;
TEMP = sensor.getTemp();
Serial.print("Temp actual= ");
Serial.println(TEMP);
TEMP=TEMP-TEMPcal;
RUN_T1=RUN_T1+(DLY_T5/60000);// before 60000
RUN_T2=RUN_T2+(DLY_T5/60000);
Serial.print("Tempreture1 ");
Serial.print(TEMP);
Serial.print("\t");
Serial.print("R = ");
Serial.println(R);
Serial.print("RUN_T1= ");
Serial.print(RUN_T1);
Serial.print("\t");
Serial.print("RUN_T2= ");
Serial.print(RUN_T2);
Serial.print("\t");
Serial.print("RUN_T3= ");
Serial.println(RUN_T3);
delay(DLY_T5);
R=R+1;
TEMP = sensor.getTemp();
Serial.print("Temp actual= ");
Serial.println(TEMP);
TEMP=TEMP-TEMPcal;
RUN_T1=RUN_T1+(DLY_T5/60000);// before 60000
RUN_T2=RUN_T2+(DLY_T5/60000);
Serial.print("Tempreture1 ");
Serial.print(TEMP);
Serial.print("\t");
Serial.print("R = ");
Serial.println(R);
Serial.print("RUN_T1= ");
Serial.print(RUN_T1);
Serial.print("\t");
Serial.print("RUN_T2= ");
Serial.print(RUN_T2);
Serial.print("\t");
Serial.print("RUN_T3= ");
Serial.println(RUN_T3);
}
if (R<2*(RUN_D1/3)&& R>=(RUN_D1/3)){
Serial.print("step2 **** ");
quadRelay.turnRelayOn(1);
delay(400);
quadRelay.turnRelayOn(3);
delay(400);
quadRelay.turnRelayOff(2);
delay(DLY_T5);
R=R+1;
TEMP = sensor.getTemp();
Serial.print("Temp actual= ");
Serial.println(TEMP);
TEMP=TEMP-TEMPcal;
RUN_T1=RUN_T1+(DLY_T5/60000);
RUN_T3=RUN_T3+(DLY_T5/60000);
Serial.print("Tempreture ");
Serial.print(TEMP);
Serial.print("\t");
Serial.print("R = ");
Serial.println(R);
Serial.print("RUN_T1= ");
Serial.print(RUN_T1);
Serial.print("\t");
Serial.print("RUN_T2= ");
Serial.print(RUN_T2);
Serial.print("\t");
Serial.print("RUN_T3= ");
Serial.println(RUN_T3);
delay(DLY_T5);
R=R+1;
TEMP = sensor.getTemp();
Serial.print("Temp actual= ");
Serial.println(TEMP);
TEMP=TEMP-TEMPcal;
RUN_T1=RUN_T1+(DLY_T5/60000);
RUN_T3=RUN_T3+(DLY_T5/60000);
Serial.print("Tempreture ");
Serial.print(TEMP);
Serial.print("\t");
Serial.print("R = ");
Serial.println(R);
Serial.print("RUN_T1= ");
Serial.print(RUN_T1);
Serial.print("\t");
Serial.print("RUN_T2= ");
Serial.print(RUN_T2);
Serial.print("\t");
Serial.print("RUN_T3= ");
Serial.println(RUN_T3);
delay(DLY_T5);
R=R+1;
TEMP = sensor.getTemp();
Serial.print("Temp actual= ");
Serial.println(TEMP);
TEMP=TEMP-TEMPcal;
RUN_T1=RUN_T1+(DLY_T5/60000);
RUN_T3=RUN_T3+(DLY_T5/60000);
Serial.print("Tempreture ");
Serial.print(TEMP);
Serial.print("\t");
Serial.print("R = ");
Serial.println(R);
Serial.print("RUN_T1= ");
Serial.print(RUN_T1);
Serial.print("\t");
Serial.print("RUN_T2= ");
Serial.print(RUN_T2);
Serial.print("\t");
Serial.print("RUN_T3= ");
Serial.println(RUN_T3);
}
if (R<RUN_D1 && R>=2*(RUN_D1/3)){
Serial.print("step3 ///\\\\ ");
quadRelay.turnRelayOn(2);
delay(400);
quadRelay.turnRelayOn(3);
delay(400);
quadRelay.turnRelayOff(1);
delay(DLY_T5);
R=R+1;
TEMP = sensor.getTemp();
Serial.print("Temp actual= ");
Serial.println(TEMP);
TEMP=TEMP-TEMPcal;
RUN_T2=RUN_T2+(DLY_T5/60000);
RUN_T3=RUN_T3+(DLY_T5/60000);
Serial.print("Tempreture ");
Serial.print(TEMP);
Serial.print("\t");
Serial.print("R = ");
Serial.println(R);
Serial.print("RUN_T1= ");
Serial.print(RUN_T1);
Serial.print("\t");
Serial.print("RUN_T2= ");
Serial.print(RUN_T2);
Serial.print("\t");
Serial.print("RUN_T3= ");
Serial.println(RUN_T3);
delay(DLY_T5);
R=R+1;
TEMP = sensor.getTemp();
Serial.print("Temp actual= ");
Serial.println(TEMP);
TEMP=TEMP-TEMPcal;
RUN_T2=RUN_T2+(DLY_T5/60000);
RUN_T3=RUN_T3+(DLY_T5/60000);
Serial.print("Tempreture ");
Serial.print(TEMP);
Serial.print("\t");
Serial.print("R = ");
Serial.println(R);
Serial.print("RUN_T1= ");
Serial.print(RUN_T1);
Serial.print("\t");
Serial.print("RUN_T2= ");
Serial.print(RUN_T2);
Serial.print("\t");
Serial.print("RUN_T3= ");
Serial.println(RUN_T3);
delay(DLY_T5);
R=R+1;
TEMP = sensor.getTemp();
Serial.print("Temp actual= ");
Serial.println(TEMP);
TEMP=TEMP-TEMPcal;
RUN_T2=RUN_T2+(DLY_T5/60000);
RUN_T3=RUN_T3+(DLY_T5/60000);
Serial.print("Tempreture ");
Serial.print(TEMP);
Serial.print("\t");
Serial.print("R = ");
Serial.println(R);
Serial.print("RUN_T1= ");
Serial.print(RUN_T1);
Serial.print("\t");
Serial.print("RUN_T2= ");
Serial.print(RUN_T2);
Serial.print("\t");
Serial.print("RUN_T3= ");
Serial.println(RUN_T3);
}
if(R>=RUN_D1){
Serial.println("********** ");
Serial.print("R = ");
Serial.print(R);
Serial.print("\t");
R=0;
Serial.println(R);
}
if (RUN_T1 >=99999){
RUN_T1 = 0;
}
if (RUN_T2 >= 99999){
RUN_T2=0;
}
if( RUN_T3 >=99999){
}
}
}