Välkommen till forumet!
reha skrev:
Fläktens styrning i ditt projekt tar den hänsyn till:
- om det behövs ventileras eller ventilerar den alltid om luft ute är bättre.
- temperaturförändring pga ventileringen, tex om det är minus 25 ute så sänks ju temp i utrymmet?
Systemet tar inte hänsyn till om det behövs ventileras. Detta är medvetet för att hela tiden jobba mot en så låg fukthalt som möjligt. Om förutsättningarna förändras är det ju bra att utgå från ett så lågt värde som möjligt.
Ingen hänsyn tas till temperaturern, målet är hela tiden att sänka fukthalten. Risken för mögel är obefintlig vid -25...
reha skrev:
Är det RH eller AF som styr?
Min vind blåser det nog rakt igenom, har du tätat din vind?
Ventilerar du ut eller in ny luft, dvs under eller övertryck på vinden/grunden?
Det är fuktkvoten/Ånghalten som styr. RH är inte lämpligt att använda i denna typ av tillämpning.
Jag har inte tätat vinden, innan modifieringen var det endast öppet på sidorna. Måhända tillför inte fläkten något...
Jag trycker in ny luft. Man vill ha övertryck på vinden för att i möjligaste mån se till att den fuktiga luften inne inte kommer upp på vinden.
reha skrev:
Sedan vore det kull att lägga till el-förbrukning och SQL loggning så man lagra flera års data.
Jag har data för flera år, men inte tid att bearbeta datat...
Självklart delar jag med mig av koden jag använder (den kanske finns någonstans i forumet redan...)
Kod: Markera allt
<?php
include("functions.php");
init_db();
error_reporting(6143);
$flaktid = "D 2";
$heatid = "D 3";
$urlfile = fopen("/tmp/current_values.txt", "r");
$curdata = fgets($urlfile);
$query = mysql_query("SELECT flakt_tid,heat_tid,flakt,heat from status");
list($ftid,$htid,$fstatus,$hstatus) = mysql_fetch_row($query);
list($t_ute, $t_inne, $rh_ute, $rh_inne) = explode(" ",rtrim($curdata));
if ($rh_ute == 0 || $rh_inne==0){
echo "Fatal error, luftfuktighet satt till 0!";
exit(1);
}
$anghalt_ute = anghalt($rh_ute, $t_ute);
$anghalt_inne = anghalt($rh_inne, $t_inne);
$diff = $anghalt_inne - $anghalt_ute;
$query = mysql_query("select unix_timestamp(now())-unix_timestamp(tid) as tid2,tid from data where unix_timestamp(tid) > (unix_timestamp(now())-604800) and rh_inne <76
list($tid_over75,$tid_over75_f) = mysql_fetch_row($query);
$query = mysql_query("select unix_timestamp(now())-unix_timestamp(tid) as tid2,tid from data where unix_timestamp(tid) > (unix_timestamp(now())-604800) and rh_inne <86
list($tid_over85,$tid_over85_f) = mysql_fetch_row($query);
$query = mysql_query("select unix_timestamp(now())-unix_timestamp(tid) as tid2,tid from data where unix_timestamp(tid) > (unix_timestamp(now())-604800) and rh_inne <81
list($tid_over80,$tid_over80_f) = mysql_fetch_row($query);
$query = mysql_query("select unix_timestamp(now())-unix_timestamp(tid) as tid2,tid from data where unix_timestamp(tid) > (unix_timestamp(now())-604800) and rh_inne <91
list($tid_over90,$tid_over90_f) = mysql_fetch_row($query);
$styr_flakt = 0;
$styr_heat = 0;
if ($t_inne < 2){
$do90 = 7;
$do85 = 20;
$do80 = 20;
$do75 = 20;
}elseif ($t_inne <4) {
//Temp mellan 2- 4 grader
$do90 = 4;
$do85 = 7;
$do80 = 20;
$do75 = 20;
}elseif ($t_inne <7) {
//Temp mellan 4 -7
$do90 = 0.5;
$do85 = 1.5;
$do80 = 7;
$do75 = 7;
}elseif ($t_inne <10){
//temp mellan 7-10
$do90 = 0.25;
$do85 = 0.75;
$do80 = 4;
$do75 = 7;
}elseif ($t_inne <15) {
//temp mellan 10-15
$do90 = 0;
# $do85 = 0.25;
# $do80= 0.5;
# $do75=2;
$do85 = 0.75;
$do80 = 2.5;
$do75 = 9;
}elseif ($t_inne <20){
//Temp mellan 15-20
$do90 = 0;
$do85 =0;
$do80 =2;
$do75 = 7;
} else {
//Temp over 20
$do90 = 0;
$do85 = 0;
$do80 = 1.5;
$do75 =5;
}
#if (date("H") >21 || date("H") <8) {
$styr_flakt =0;
if ($diff > 0.00015){
$styr_flakt = 1;
}
if ($rh_inne > 90){
if($tid_over90 > $do90 *86400) {
$styr_heat = 1;
}
}elseif ($rh_inne > 85) {
if($tid_over85 >$do85 * 86400){
$styr_heat=1;
}
}elseif ($rh_inne > 80) {
if($tid_over80 > $do80 *86400){
$styr_heat = 1;
}
}elseif($rh_inne >75) {
if($tid_over75 > $do75* 86400) {
$styr_heat = 1;
}
}
echo "\nUnder r.dande omst.ndigheter b.r fl.kten ";
if ($styr_flakt == 1){
echo "K.ras";
exec("/bin/rfcmd /dev/usb/tts/0 NEXA $flaktid 1");
}else {
echo "Vara avst.ngd";
exec("/bin/rfcmd /dev/usb/tts/0 NEXA $flaktid 0");
}
echo "\nV.rmen b.r vara ";
if($styr_heat == 1){
echo "P.slagen";
exec("/bin/rfcmd /dev/usb/tts/0 NEXA $heatid 1");
}else {
echo "Avst.ngd";
exec("/bin/rfcmd /dev/usb/tts/0 NEXA $heatid 0");
}
echo "\nInformation om nuvarande omst.ndigheter:\n";
echo "Temperatur ute/inne: $t_ute/$t_inne\n";
echo "RH ute/inne: $rh_ute/$rh_inne\n";
echo ".nghalt ute/inne (diff): $anghalt_ute/$anghalt_inne ($diff)\n";
echo "90: $tid_over90, till.tet: $do90 * 86400\n";
echo "85: $tid_over85, till.tet: $do85 * 86400\n";
echo "80: $tid_over80, till.tet: $do80 * 86400\n";
echo "75: $tid_over75, till.tet: $do75 * 86400\n";
if(!isset($argv[1])) {
echo "\n\nUppdaterar databaserna!\n\n";
mysql_query("INSERT into data (tid, temp_inne, temp_ute, rh_inne, rh_ute, fukt_inne, fukt_ute,fan,heat) VALUES (NOW(), '$t_inne', '$t_ute', '$rh_inne', '$rh_ute', '$ang
passthru("/usr/bin/rrdtool update /mnt/usb/fuktctrl/temp_fukt.rrd N:$t_inne:$t_ute:$rh_inne:$rh_ute:$anghalt_inne:$anghalt_ute:$styr_flakt:$styr_heat");
}
Kod: Markera allt
<?php
function init_db() {
$user = "xxxxxxxxx"; //mysql username
$pass = "xxxxxxxxx"; //mysql password
$sqlhost = "xxxxxxxxxxx"; //mysql host
$sqlbase = "xxxxxxxxxxx"; //mysql database
error_reporting(E_ALL);
$dbh = mysql_connect($sqlhost, $user, $pass) ;
if (!$dbh) {
die('Not connected : ' . mysql_error());
}
mysql_select_db($sqlbase);
}
function anghalt($rh, $temp) {
$base = 1.098 + $temp/100.0;
$tmp = pow($base, 8.02);
$anghalt = 288.68*$tmp * 1/(461.4*($temp+273.15))*$rh/100;
return $anghalt;
}
Tyvärr är jag kass på att kommentera det jag skriver.
I princip så har jag satt olika regler för när det behöver ventileras/värmas beroende på temperaturen.