+ Antworten
Ergebnis 1 bis 1 von 1
  1. #1
    Registriert seit
    Sep 2007
    Ort
    Daisendorf - Bodensee
    Beiträge
    946

    Standard Skript für AVR-NET-IO und PT100

    Hallo zusammen,

    nachdem ich mit der Hilfe von EHB und tommy erfolgreich mein AVR zusammen mit den PT100-Fühlern ans Laufen gebracht habe, möchte ich euch die dafür geschriebenen Skripte zur Verfügung stellen.
    Getriggert wird das Skript bei Änderung der ADC-Messwerte der RegisterVariable. Ich hab es bewusst nicht in das Skript von EHB gepackt, um eine zusätzliche Kontrolle zu haben, was der AD-Wandler liefert.
    Ein Skript beinhaltet die Kennlinie des PT100, ein weiteres liefert einen interpolierten Wert aus einer Kennlinie.

    PT100-Kennlinie:
    PHP-Code:
    <?
    // create arrays for scaling and curve:
    $PT100_sca_spd = array(80.3184.2788.2292.1696.09100103.9107.79109.74111.67115.54119.4123.24127.07130.89134.7138.5142.29146.06149.82153.58157.31);
    $PT100_curve = array(-50, -40, -20, -10010202530405060708090100110120130140150);
    ?>
    Interpolationsroutine:
    PHP-Code:
    <?
    function ip_1D ($sca_spd$curve$bp) {

    // check base point against the maximum of the scaling:
    if ($bp >= $sca_spd[sizeof($sca_spd)-1]) {
        
    $val $curve[sizeof($curve)-1]; // base point is too big --> return last data point
        
    return $val;
        
    }
    // check base point against the minimum of the scaling:
    if ($bp <= $sca_spd[0]) {
        
    $val $curve[0]; // base point is too low --> return first data point
        
    return $val;
    }
    // execute base point search to get index:
    $i 0;
    while (
    $bp $sca_spd[$i]) {
      
    $i += 1;
    }
       
    // calculate interpolation factor:
    $bp_range $sca_spd[$i] - $sca_spd[$i-1];
    $bp_part $bp $sca_spd[$i-1];
    $fac $bp_part $bp_range;

    // perform interpolation:
    $val $curve[$i-1] + ($fac $curve[$i] - $curve[$i-1]);

    // return interpolated value:
    return $val;
    }
    ?>
    Umrechnung des ADC-Werts:
    PHP-Code:
    <?
    include(IPS_GetScriptIDByName("fct_ip_1D"33588 /*[.System\Skripts]*/).".ips.php"); // C1D-Interpolation
    include(IPS_GetScriptIDByName("PT100"33588 /*[.System\Skripts]*/).".ips.php"); // PT100-Kennlinie
    $U = ($IPS_VALUE 1024) * 5;
    $R 100 / (5.06 $U 1);
    $T ip_1D($PT100_sca_spd$PT100_curve$R);
    SetValue(34846 /*[Heizung\Wärmepumpe\Vorlauftemperatur 1]*/round($T,2));
    ?>
    Vielleicht kann es der Ein oder Andere ja gebrauchen.

    Gruß
    dfhome
    Geändert von dfhome (24.09.09 um 11:01 Uhr)

Ähnliche Themen

  1. AVR NET IO Fehler
    Von zman0801 im Forum Bastel-Ecke
    Antworten: 9
    Letzter Beitrag: 09.09.10, 19:48
  2. Anfängerfrage - Skript für Lüftung funktioniert nur teilweise
    Von chris_basi im Forum Skripte, PHP, SQL
    Antworten: 12
    Letzter Beitrag: 10.07.09, 22:12
  3. Dieses Skript wurde als 'fehlerhaft' markiert, falsch!
    Von Hinti im Forum Skripte, PHP, SQL
    Antworten: 6
    Letzter Beitrag: 24.02.09, 20:33
  4. Wer ruft das Skript auf
    Von wgreipl im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 4
    Letzter Beitrag: 03.05.08, 12:38
  5. Probleme mit dem Skript von Retiarius(FHT)
    Von crezs im Forum Skripte, PHP, SQL
    Antworten: 5
    Letzter Beitrag: 20.12.06, 08:05