ik heb een tijdje geleden een stukje software geschreven wat een tegenstroomkoeler kan doorrekenen tbv bierbrouwen, dus bier koelen met water in een tegenstroomkoeler.
hier de vergelijkingen die ik gebruikt heb en de vertaling naar software via een array van koelersegmentjes
en hier een plaatje van de weergave op het scherm:
in het programma bestaat de koeler uit 31 segmentjes
je kunt op elk moment waardes wijzigen zoals koelwater temperatuur wort temperatuur etc.
dit zou ook bruikbaar zijn voor het sommetje
hier de belangrijkste procedures (in delphi 7)
procedure TForm1.update_temperaturen;
var n:integer;
begin
for n:=0 to 31 do
begin
koeler1.water[n]:=xout(dt,koeler1.water[n],koeler1.wort[n],a,b);
koeler1.wort[n]:=yout(dt,koeler1.water[n],koeler1.wort[n], a, b);
end;
end;
implementation
Function xout(time, xin, yin, a, b:real):real;
begin
xout := yin - b * (yin - xin) / (a + b) + Exp(-(a + b) * time) * b * (yin - xin) / (a + b) * (1 - (a + b) / b);
end;
Function yout(time, xin, yin, a, b:real):real;
begin
yout := yin - b * (yin - xin) / (a + b) + Exp(-(a + b) * time) * b * (yin - xin) / (a + b);
end;
Function lin_interpol(x1,y1,x2,y2,x:real):integer;
var a,b:real;
begin
a:=(y1-y2)/(x1-x2);
b:=y1-a*X1;
lin_interpol:=round(a*x+b);
end;