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);
}
}
}