Hallo Martin,
wenn du wirklich den Eindruck hast, dass der µC steht, würde ich dir auch empfehlen, auf dem LCD eine Ausgabe zu machen.
Ich habe mir auch mal deine Routinen angeschaut.
Zuerst ist mir aufgefallen, dass du praktisch alle Subs in der Timer ISR aufrufst. Auch wenn du dies nicht direkt machst, so laufen auch die in den Subs aufgerufenen Subs immer noch in der Interrupt Umgebung. Das kann teilweise sehr lange dauern.
Kannst du nicht einfach ein Flag setzen und dies dann in der MainLoop abfragen, also etwa so:

Do
if Timer_flag = 1 then
Timer_flag=0
If _hour >= Nachtbetrieb Or _hour < Tagbetrieb Then
Tagnacht = 0 'Nachteinstellung
Else
Tagnacht = 1 'Tageinstellung
End If
Gosub Schalterelais
.... alle Befehle
endif
.....
Loop

Isr_von_timer1:
Timer1 = 51135
Timer_flag=1
Return

Und nach Möglichkeit die 700ms Wait verhindern. Lass das lieber auch von der Timer ISR anstoßen. Wenn dein Programm größer wird, dann können andere Sachen in der Wartezeit gemacht werden.

Dies hier scheint mir falsch zu sein:
If Tempmessstelle(2) < 38.0 Then
Pumpehk = 0
End If
If Tempmessstelle(2) >= 36.0 Then
Pumpehk = 1
End If
Wenn Tempmessstelle(2) z.B. 37.0 ist, dann wird Pumpehk immer hin und her geschaltet.

Gruß

Rolf