temperatura oscilante

Buenas a todos hace mucho tiempo que no regreso por aqui ,el motivo es que o no estoy buscando bien por no aplicar bien las palabras de lo que quiero ...o verdaderamente no se ha replanteado nunca ..algo que me extraña . Bien actualmente tengo un sistema de control de temperatura y humedad a cargo de Dht22 y Ds18b20 .sistema de iluminacion por PWM ,TFT, Con el Ds18b20 controlo la temperatura entre 25(HIGH) y 24 (LOW). Mi dilema es el siguiente como poder aplicar que partiendo de la temperatura antes descrita :

1º entre las 00:00-06:00 la temperatura descienda hasta los 15º progesivamente partiendo de la base (25(HIGH) y 24 (LOW).)

2º y desde las 06:00 -12:00 la temperatura ascienda hasta la base (25(HIGH) y 24 (LOW).).

Espero vuestra orientacion a la mejora de mi proyecto

¿De que se trata esto? ¿Tienes un acuario y se trata de la temperatura del agua o tienes un lindo indoor para flores hermosas y se trata de la temperatura del aire?

¿Tienes un reloj en tiempo real en tu proyecto? Suponiendo que usas un calefactor de pecera a max 25° ¿como enfrías si la temperatura ambiente supera dicho valor como puede ser un día de verano?

No es lo mismo dejar que la temperatura baje sola porque la del ambiente es inferior o forzar a que baje con por ejemplo una celda peltier.

Deja mas información y por supuesto tu código. Saludos

Con 62 mensajes posteados @medina ya deberías saber donde colocar una consulta como la que has hecho? Y claramente no va en Proyectos. Casi todos van en Software/Hardware. A tenerlo en cuenta la proxima vez.

Daniel_Arg: ¿De que se trata esto? ¿Tienes un acuario y se trata de la temperatura del agua o tienes un lindo indoor para flores hermosas y se trata de la temperatura del aire?

¿Tienes un reloj en tiempo real en tu proyecto? Suponiendo que usas un calefactor de pecera a max 25° ¿como enfrías si la temperatura ambiente supera dicho valor como puede ser un día de verano?

No es lo mismo dejar que la temperatura baje sola porque la del ambiente es inferior o forzar a que baje con por ejemplo una celda peltier.

Deja mas información y por supuesto tu código. Saludos

Daniel se trata de un indor o un invernadero de interior cerrado ,el sistema tiene reloj ,el sistema incluso en invierno se mantiene por encima de la temperatura antes descrita .de hay que el refrigerador se encarga de bajar temperatura .pero para incitar a la floracion tengo que bajar de noche la temperatura ,,,de hay mi consulta ya que ahora solo controlo la base (25-24)

surbyte: Con 62 mensajes posteados @medina ya deberías saber donde colocar una consulta como la que has hecho? Y claramente no va en Proyectos. Casi todos van en Software/Hardware. A tenerlo en cuenta la proxima vez.

Gracias por la aclaracion y el cambio de seccion

Este es el codigo

PRUEVA_HUMEDAD.ino (15.7 KB)

medina: Daniel se trata de un indor o un invernadero de interior cerrado ,el sistema tiene reloj ,el sistema incluso en invierno se mantiene por encima de la temperatura antes descrita .de hay que el refrigerador se encarga de bajar temperatura .pero para incitar a la floracion tengo que bajar de noche la temperatura ,,,de hay mi consulta ya que ahora solo controlo la base (25-24)Gracias por la aclaracion y el cambio de seccion

¿Y donde esta tu código para las marías?

Desde el primer proyecto con RTC me gustó dividir el día por la cantidad de minutos. De esta forma cada minuto del día tiene un valor en la variable MinActual que es el resultado de las horas por 60 mas los minutos.

Cuando MinActual vale 0 es media noche. Si vale 245 es que han pasado 4 horas y 5 minutos de la media noche y culmina con 1439 que son las 23 horas y 59 minutos.

  DateTime now = rtc.now();
  MinActual = now.hour()*60+now.minute();

Un sistema bien hecho es mediante un menú en pantalla es poder activar y desactivar el control de temperatura y fijar hora de inicio, hora final de una temperatura para el día y el resto a otra temperatura. Llegado el caso que no quieras tener dos temperaturas pues fijas la segunda al mismo valor que la primera. Todo esto debe ser guardado en la eeprom y recuperado cuando arduino se apague.

Repito ¿Y tu código?

En el anterior post esta como archivo adjunto

medina:
En el anterior post esta como archivo adjunto

No estaba el código cuando yo estaba escribiendo la respuesta.

Tiene un gran lío en tu código ehhh !!!

Aparentemente has intentado hacerlo aquí

/******************************************
* Devuelve el tiempo en minutos
******************************************/
int tiempo(byte horas, byte minutos){
  return (minutos+(horas*60));
}

pero este código esta suelto al limbo.

Crea la variable int MinActual;
Luego al final de la función que lee la fecha y hora " void getDateDs1307( " escribe lo siguiente:

MinActual = MinActual = hour*60+minute;

Para asegurarte agrega
Serial.print("MinActual: ");
Serial.print(MinActual);
esperando obtener el valor del minuto del día actual, un valor entre 0 y 1439.

También debes llamar desde el loop a la función void getDateDs1307(); al menos una vez por minuto.

Por último en la función void Temperaturas() ; para el caso de 8:00 a 21:00

if ( MinActual > 480 and MinActual < 1260) { // periodo día

}  else { // periodo noche

}

No me gusta esto pero sería la solución a tu código.

Yo en tu lugar, una vez solucionado esto, me pongo a hacer un código nuevo mas limpio y funcional, porque tienes un mega y una pantalla tft y debes subir un nuevo sketch para ajustar la hora o cambiar cualquier parámetro. Agregando un encoder rotatorio y un buen menú lo controlas todos desde allí, como ajustar hora, intensidad de luz y temperaturas.

Saludos