Saludos.
Mi duda es la siguiente, estoy armando un circuito para un termostato de incubadora, estoy usando un LM35 y el pic 18F452.
El problema es que no logro mantener una temperatura media, o al menos, hacer que los cambios en el control de la temperatura no sean tan rapidos.
Tengo 2 condiciones en el programa, la primera, que si la temperatura es menor a 37.7 grados, el pic da una salida a un transistor para que encienda el rele y por ende la fuente de calor.
La segunda condicion dice que si la temperatura llega a 39 grados o mas, se apaga la fuente de calor, y el programa debe esperar a que la temperatura baje hasta los 37.7 grados para que vuelva a iniciar el ciclo.
Todo parece funcionar bien, la cosa es que cuando llega a los 39 grados y se apaga el rele, se vuelve a encender casi de forma instantanea, un par de segundos y se enciende y apaga y asi. Sinceramente no creo que se puedan perder casi 2 grados en solo un par de segundos y mas si el ambiente ya se encuentra tibio. Ya intente colocar el sensor a mayor distancia para compensar un poco la perdida de temperatura pero aun asi observo el mismo resultado.
No se si sera cosa del programa o algo en mi conexion. Entre cada condicion del programa he puesto retardos (delay_ms) para que el cambio a la condiciones no sea tan rapido pero ni asi.
Espero su respuesta y ayuda.
Gracias.
pd: anexo parte del codigo de mi programa por si va por ahi el error.
if (t2>39)///activacion de cooler para regular temperatura a nivel ideal
goto b;
delay_ms(300);
delay_ms(300);
if( t2<37)///temperatura ideal de la incubadora alcanzada, off del cooler
output_high(pin_b0);///lampara encendida mientras permanezca temp. ideal o menor
delay_ms(300);
goto a;
delay_ms(300);
goto temp;///fin de ciclo de la temperatura
delay_ms(300);
b:
output_high(pin_b1);/// activacion del cooler para bajar la temperatura
output_low(pin_b0);///lampara apagada mientras cooler reestablece temp.
output_high(pin_b4);///pin de verificacion
delay_ms(500);
goto temp;
delay_ms(300);
a:
output_low(pin_b1);/// off del cooler, temperatura alcanzada
output_low(pin_b4);/// off pin de verificacion
delay_ms(500);
goto temp;
}
Mi duda es la siguiente, estoy armando un circuito para un termostato de incubadora, estoy usando un LM35 y el pic 18F452.
El problema es que no logro mantener una temperatura media, o al menos, hacer que los cambios en el control de la temperatura no sean tan rapidos.
Tengo 2 condiciones en el programa, la primera, que si la temperatura es menor a 37.7 grados, el pic da una salida a un transistor para que encienda el rele y por ende la fuente de calor.
La segunda condicion dice que si la temperatura llega a 39 grados o mas, se apaga la fuente de calor, y el programa debe esperar a que la temperatura baje hasta los 37.7 grados para que vuelva a iniciar el ciclo.
Todo parece funcionar bien, la cosa es que cuando llega a los 39 grados y se apaga el rele, se vuelve a encender casi de forma instantanea, un par de segundos y se enciende y apaga y asi. Sinceramente no creo que se puedan perder casi 2 grados en solo un par de segundos y mas si el ambiente ya se encuentra tibio. Ya intente colocar el sensor a mayor distancia para compensar un poco la perdida de temperatura pero aun asi observo el mismo resultado.
No se si sera cosa del programa o algo en mi conexion. Entre cada condicion del programa he puesto retardos (delay_ms) para que el cambio a la condiciones no sea tan rapido pero ni asi.
Espero su respuesta y ayuda.
Gracias.
pd: anexo parte del codigo de mi programa por si va por ahi el error.
if (t2>39)///activacion de cooler para regular temperatura a nivel ideal
goto b;
delay_ms(300);
delay_ms(300);
if( t2<37)///temperatura ideal de la incubadora alcanzada, off del cooler
output_high(pin_b0);///lampara encendida mientras permanezca temp. ideal o menor
delay_ms(300);
goto a;
delay_ms(300);
goto temp;///fin de ciclo de la temperatura
delay_ms(300);
b:
output_high(pin_b1);/// activacion del cooler para bajar la temperatura
output_low(pin_b0);///lampara apagada mientras cooler reestablece temp.
output_high(pin_b4);///pin de verificacion
delay_ms(500);
goto temp;
delay_ms(300);
a:
output_low(pin_b1);/// off del cooler, temperatura alcanzada
output_low(pin_b4);/// off pin de verificacion
delay_ms(500);
goto temp;
}