Aufgabe
"Die
Heizung wird simuliert durch die Linsenlampe M2, als Kühlaggregat dient das
Gebläse am Ausgang M1. Zur Temperaturmessung verwenden wir den NTC-Widerstand
am Eingang EE. Programmiere das Modell so, daß oberhalb einer bestimmten
Temperatur die Heizung aus- und das Gebläse einschaltet. Dieses soll so lange
kühlen, bis ein unterer Grenzwert erreicht ist. Dann soll das Gebläse auss-
und die Heizung eingeschaltet werden". Soweit das Zitat aus dem
"Computing Starter" Begleitheft.
Anwendungskonstanten
mVentilator = 1; mLampe = 2;
aNTC = 0;
wHeiss = 1; wKalt = 2;
Beschriftung der Textfelder
clblTitel = 'Temperaturregelung';
clblM: array[1..4] of string = ('Kühlung', 'Heizung', 'M3', 'M4');
clblA: array[1..2] of string = ('Temperatur', 'EY');
clblW: array[1..2] of string = ('Heiß', 'Kalt');
ctxtW: array[1..2] of string = ('520', '560');
fishMain
var t: Integer;
begin
repeat
// --- Endlosschleife, Ende : HALT-Button
t := ftiGetAnalog(aNTC);
if t < Werte(wHeiss) then begin
ftiSetMotor(mLampe, ftiAus);
ftiSetMotor(mVentilator, ftiEin);
end
else if t > Werte(wKalt) then begin
ftiSetMotor(mLampe, ftiEin);
ftiSetMotor(mVentilator, ftiAus);
end;
Until ftiFinish(0);
end;
Was passiert da?
Es gibt da zunächst wieder eine Endlosschleife, die über den HALT-Button
beendet werden kann. In der Schleife gibt es ein geschachteltes if um die Fälle
Heiss und Kalt unterscheiden zu können. Abgefragt werden die Werte des NTC
(Negative Temperature Coeffient : je heißer, je kleiner der Wert). Wenn die
Temperatur hochgenug ist, wird die Lampe (Heizung) abgeschaltet und der
Ventilator (Kühlung) eingeschaltet ... und umgekehrt. Das wars. Bei der Inbetriebnahme sollte man etwas mit den Werten für
Heiss und Kalt experimentieren, sie sind vom NTC und der Raumtemperatur
abhängig.
Erweiterungen
Anzeige des Betriebszustandes in der Statuszeile durch printStatus
wie gehabt.
Man sollte dem Modell etwas Ruhe gönnen und noch einen Case einbauen bei dem
die Temperatur stimmt (also kein Kühlen/Heizen).
|