Autor Thema: Temperaturdelta Integer  (Gelesen 5250 mal)

Offline Ronny

  • Jr. Member
  • **
  • Beiträge: 77
    • Profil anzeigen
Temperaturdelta Integer
« am: März 01, 2012, 08:01:20 Vormittag »
Hallo zusammen

Ich versuche momentan eine Messeinrichtung für meine Erdsondenheizung zu realisieren. Dabei geht es darum, vier Temperaturen zu messen und auf einem Display anzuzeigen. Dabei verwende ich DS18S20 an einem Onewirebus. Die Messung und die Anzeige funktionieren soweit einwandfrei. Nun möchte ich die Displaybeleuchtung bei einem Bodenheizungskreis-Delta von grösser 5°C blinken lassen ( Die Anzeige befindet sich in einem anderen Raum als die Heizung, und ich möchte ein Laufen der Wärmepumpe damit signalisieren).

TempDelta=TempZulauf-TempRuecklauf;

if ((TempDelta>=5)||(TempDelta<=(-5))){
Blinktakt=1;
}else{Blinktakt=0;}

if (Blinktakt==1){
++Timer_Blinken;

if (Timer_Blinken==3){
output_high(LCD_Beleuchtung);
}
if (Timer_Blinken>=6){
Timer_Blinken=0;
output_low(LCD_Beleuchtung);
}
}

Dieser Code funktioniert in seiner Funktion, leider stimmen jedoch die Schwellen nicht?! Die Variablen TempDelta, TempZulauf und TempRuecklauf sind Integer-Variablen. Die TempZulauf wie auch die TempRuecklauf erhalten ihren Wert aus einem float vom DS18S20 (TempZulauf=TempzulaufFloat).

Resultat: Die LCD_Beleuchtung schaltet bei einem Delta von ca. >1°C auf Blinken und bei ca. <0.3°C wieder aus.

Für mich sind diese Schwellen nicht nachvollziehbar, die Umwandlung von float nach int funktioniert korrekt, da ich diese Werte auch für die Displaydarstellung verwende (Unterscheidung zwischen 4 Displaystellen ab 10.0°C oder 3-stellig).

Herzlichen Dank für mögliche Erklärungen

Gruss

Ronny




 


* Recent Topics