Arduino no sigue instrucciones del programa

Hola, estoy haciendo un programa que usa 2 resistencias (una calienta y la otra enfria), activadas por dos reles (por la potencia) y moduladas con 2 mosfets, la idea es q dentro de los primeros 5 minutos caliente 5ºC, despues mantenga durante 5 minutos, despues enfrie durante 5 minutos y finalmente mantenga durante 5 minutos mas.
El problema es que al ejecutar el programa, el arduino no considera las condiciones del tiempo dadas por los IF. Ayuda, porque esta super dificil el problema.
Le dejo el codigo. saludos

#include <Wire.h>
#include <Adafruit_MLX90614.h>

int pin9_enfriador = 9; //la salida de este pin PWM 9 va al mosfet que
//controla al enfriador
int frio = 255; //AQUI SE REGULA LA POTENCIA PARA EL ENFRIADOR%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
int pin10_calentador = 10; //la salida de este pin PWM 10 va al mosfet
//que controla al calentador
int caliente = 255; //AQUI SE REGULA LA POTENCIA PARA EL CALENTADOR%%%%%%%%%%%%%%%%%%%%%%%%%
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
float temperatura;

void setup() {
 Serial.begin(9600);
 mlx.begin();
}

void loop() {
 temperatura=mlx.readObjectTempC();
 Serial.print("tObjeto = ");
 Serial.print(mlx.readObjectTempC());
 Serial.print("oC\tSegundo = ");
 Serial.print(millis()/1000);
 Serial.println("s");
 analogWrite(A0,0);
 analogWrite(A1,0);

 if(millis()<=5*60*1000){
   Serial.println("IF 1 Temp=");
   //Serial.println(mlx.readObjectTempC);
   if(temperatura<24.9){
     Serial.println("IF 1.1");
     analogWrite(pin9_enfriador, 0);
     analogWrite(pin10_calentador, caliente);
     delay(30);
   }
   
   if((temperatura>=24.9)&&(temperatura<=25.1)){
     Serial.println("IF 1.2");
     analogWrite(pin9_enfriador, 0);
     analogWrite(pin10_calentador, 0);
     delay(30);
   }

   if(temperatura>25.1){
     Serial.println("IF 1.3");
     analogWrite(pin9_enfriador, frio);
     analogWrite(pin10_calentador, 0);
     delay(30);
   }
 }

 if((millis()>5*60*1000)&&(millis()<=10*60*1000)){
   Serial.print("IF 2");
   //Serial.println(mlx.readObjectTempC);
   if(temperatura<24.9){ 
     Serial.println("IF 2.1");
     analogWrite(pin9_enfriador, 0);
     analogWrite(pin10_calentador, caliente);
     delay(30);
   }
   
   if((temperatura>=24.9)&&(temperatura<=25.1)){
     Serial.println("IF 2.2");
     analogWrite(pin9_enfriador, 0);
     analogWrite(pin10_calentador, 0);
     delay(30);
   }
   
   if(temperatura>25.1){
     Serial.println("IF 2.3");
     analogWrite(pin9_enfriador, frio);
     analogWrite(pin10_calentador, 0);
     delay(30);
   }
 }

 if((millis()>10*60*1000)&&(millis()<=15*60*1000)){
   Serial.print("IF 3");
   //Serial.println(mlx.readObjectTempC);
   if(temperatura<20.9){
     Serial.println("IF 3.1");
     analogWrite(pin9_enfriador, 0);
     analogWrite(pin10_calentador, caliente);
     delay(30);
   }
   
   if((temperatura>=20.9)&&(temperatura<=21.1)){
     Serial.println("IF 3.2");
     analogWrite(pin9_enfriador, 0);
     analogWrite(pin10_calentador, 0);
     delay(30);
   }
   
   if(temperatura>21.1){
     Serial.println("IF 3.3");
     analogWrite(pin9_enfriador, frio);
     analogWrite(pin10_calentador, 0);
     delay(30);
   }
 }
 
 if((millis()>15*60*1000)&&(millis()<=20*60*1000)){
   Serial.print("IF 4");
   //Serial.println(mlx.readObjectTempC);
   if(temperatura<20.9){
     Serial.println("IF 4.1");
     analogWrite(pin9_enfriador, 0);
     analogWrite(pin10_calentador, caliente);
     delay(30);
   }
   
   if((temperatura>=20.9)&&(temperatura<=21.1)){
     Serial.println("IF 4.2");
     analogWrite(pin9_enfriador, 0);
     analogWrite(pin10_calentador, 0);
     delay(30);
   }
   
   if(temperatura>21.1){
     Serial.println("IF 4.3");
     analogWrite(pin9_enfriador, frio);
     analogWrite(pin10_calentador, 0);
     delay(30);
   }
 }
}

Hola, lo primero que primero revisaría es
if((millis()>15601000)&&(millis()<=20601000)){

para que quede así en todos los lugares que lo has hecho.

 if((millis()>9000000)&&(millis()<=1200000)){

Me gustaría que contaras de que va el proyecto para comprender lo que intentas hacer.

He probado este código levemente modificado y sigue bien las instrucciones
Lo he simplificado algo aunque puede mejorarse mucho más.

#include <Wire.h>
#include <Adafruit_MLX90614.h>

const byte pin9_enfriador   = 9;  // la salida de este pin PWM 9 va al mosfet que
                                  // controla al enfriador
int frio = 255;                   // AQUI SE REGULA LA POTENCIA PARA EL ENFRIADOR%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
const byte pin10_calentador = 10; // la salida de este pin PWM 10 va al mosfet
                                  // que controla al calentador
int caliente = 255;               // AQUI SE REGULA LA POTENCIA PARA EL CALENTADOR%%%%%%%%%%%%%%%%%%%%%%%%%
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
float temperatura;
unsigned long start;


void setup() {
 Serial.begin(9600);
 mlx.begin();
}

void loop() {
   temperatura = mlx.readObjectTempC();

  if (millis() - start > 1000UL) {
    
      Serial.print("tObjeto = ");
      Serial.print(mlx.readObjectTempC());
      Serial.print("oC\tSegundo = ");
      Serial.print(millis()/1000);
      Serial.println("s");
      analogWrite(A0,0);
      analogWrite(A1,0);

      if (millis() <= 5*60000){
          Serial.println("IF 1 Temp=");
          //Serial.println(mlx.readObjectTempC);
          if (temperatura < 24.9){
              accion("IF 1.1", 0, caliente);
          }

          if ((temperatura>=24.9) && (temperatura <= 25.1)){
              accion("IF 1.2", 0, 0);
          }

          if (temperatura > 25.1){
              accion("IF 1.3", frio, 0);
          }
      }

      if ((millis() > 5*60000) && (millis() <= 10*60000)){
         Serial.print("IF 2");
         //Serial.println(mlx.readObjectTempC);
         if (temperatura < 24.9){ 
             accion("IF 2.1", 0, caliente);
         }
         
         if ((temperatura >= 24.9) && (temperatura <= 25.1)){
             accion("IF 2.2", 0, 0);
         }
         
         if (temperatura > 25.1){
            accion("IF 2.3", frio, 0); 
         }
      }

      if ((millis()> 10*60000) && (millis()<= 15*60000)){
          Serial.print("IF 3");
          //Serial.println(mlx.readObjectTempC);
          if (temperatura<20.9){
              accion("IF 3.1", 0, caliente);
          }
       
          if ((temperatura >= 20.9) && (temperatura <= 21.1)){
             accion("IF 3.2", 0, 0);
          }

          if (temperatura > 21.1){
             accion("IF 3.3", frio, 0);
          }
      }

      if ((millis() > 15*60000) && (millis()<=20*60000)){
          Serial.print("IF 4");
          //Serial.println(mlx.readObjectTempC);
          if (temperatura < 20.9){
             accion("IF 4.1", 0, caliente);
          }
          if ((temperatura >= 20.9) && (temperatura <= 21.1)){
              accion("IF 4.2", 0, 0);
          }
         
          if (temperatura > 21.1){
             accion("IF 4.3", frio, 0);
          }
      }
      start = millis();
  }
   
}

void accion(const char* str, byte tmp1, byte tmp2){
    Serial.println(str);
    analogWrite(pin9_enfriador  , tmp1);
    analogWrite(pin10_calentador, tmp2);
    delay(30);
}