Problema con librería PID con relay

thomasn24:
no comprendo bien el funcionamiento de un PID con salida a relay.

Imagino que ya sabes que es un PID. Bueno lo normal es que dada una entrada (Input) y un parámetro objetivo (Setpoint), se calcule una salida (Output) en base a cálculos matemáticos que luego se ponderan con las ganancias (kp, ki, kd) según que tan agresivo quieras el PID. Dicha salida luego la usas para corregir físicamente la "planta" (en este caso la temperatura de la cabina del vehiculo) de manera directa o inversa.

Como un rele no puede responder a las distintas magnitudes de la salida se hace una conversión a la que se llama ciclo de trabajo (Duty clycle), donde la salida es convertida en un % del ciclo donde el rele esta apagado el resto del ciclo esta prendido. En tu código veo que tu ciclo es WindowSize = 5000.

thomasn24:
El proyecto es un sistema de control de calefacción de un vehículo el cual tiene una válvula ON/OFF que deja circular el agua.

Entonces imagino que con la valvula estas controlando la circulación de agua de radiador (que tipicamente esta a 90°C) de modo que el sensor DS18B20 imagino estará en la cabina.

Aqui esta lo complicado y es que si la temperatura dada por el DS18B20 es mucho menor que el Setpoint (=tref, la cual nunca estableciste) y estableciste el PID en modo "directo" la salida (Output) sera 0 y el pín calpin (9) se pone en HIGH.

PD: No logro entender en que momento asignas el valor de tref.