Ich möchte gerne die Temperatur und die Windgeschwindigkeit gleich Windchill auf das Vellemann USB Board (K8055AO1) ausgeben. Um auf einer UVR 1611 eine Spannung von 0-5 Volt anzulegen. Das ist eine Temperatur an der UVR 1611 von -30 bis 30 °C. Habe dazu ein kleines Programm geschrieben aber es läuft leider nicht und ich weiß leider nicht mehr weiter.
Hier das Programm:
<?
$t = str_replace(",", ".", $KS300_Temp);
$w = str_replace(",", ".", $KS300_Wind);
if ($w >= 5) {
$wc = round(13.12 + 0.6215 * $t - 11.37 * pow($w, 0.16) + 0.3965 * $t * pow($w, 0.16), 1);
} else {
$wc = $t;
}
if ($_wc > 30.0) $_wc=30.0;
if ($_wc < -30.0) $_wc=-30.0;
$_wc+= 30.0;
$_anau=255/600.0 * $_wc * 10.0;
$_Rest= $_anau - $_anau;
if ($_Rest >= 0.5) $_anau+=1;
$K8055AO1=str_replace(".",",",$_anau);
?>
Es bleibt die Anzeige immer null (somit wird auch keine Spannung an das Vellemann Board ausgegeben.)
Kann mir vielleicht jemand Helfen.
Vellemann USB Board Analoge Ausgabe
Moderator: Co-Administratoren
-
- Beiträge: 8
- Registriert: 12.11.2008, 22:16
- Wohnort: Austria
Vellemann USB Board Analoge Ausgabe
Zuletzt geändert von hannshobby am 14.11.2008, 23:29, insgesamt 1-mal geändert.
-
- Ehrenmitglied
- Beiträge: 12194
- Registriert: 29.07.2006, 15:58
- Wohnort: Schweiz
- Danksagung erhalten: 5 Mal
Re: Vellemann USB Board Analoge Ausgabe
Hallo
Ohne deine Formel ganz begriffen zu haben: Hast du im "Original" bei der letzten Zeile auch eine Leerstelle zwischen $ und K8055AO1? Die gehört WEG!
Ansonsten: Funktioniert es, wenn du einfach K8055A01:=100 einträgst?
Viele Grüsse
Bümpi
Ohne deine Formel ganz begriffen zu haben: Hast du im "Original" bei der letzten Zeile auch eine Leerstelle zwischen $ und K8055AO1? Die gehört WEG!
Ansonsten: Funktioniert es, wenn du einfach K8055A01:=100 einträgst?
Viele Grüsse
Bümpi
-
- Beiträge: 8
- Registriert: 12.11.2008, 22:16
- Wohnort: Austria
Re: Vellemann USB Board Analoge Ausgabe
Hallo buempi
Zwischen $ und K8055A01 war ein Schreibfehler von mir im Programm ist es richtig.
In der Formel begrenze ich die Temperatur zwischen -30°C und + 30 °C um eine bessere Auflösung zu bekommen.
Dann muss ich den Wert noch auf 255 begrenzen (255 sind gleich 5 Volt und 30°C auf der UVR 1611). Den dass Vellmann Board kann nur 255 Bit ausflössen. Da ich eine Spannung zwischen 0 Volt und 5 Volt brauche um diese Spannung in der UVR 1611 wieder auf Temperatur umzurechnen.
Zwischen $ und K8055A01 war ein Schreibfehler von mir im Programm ist es richtig.
In der Formel begrenze ich die Temperatur zwischen -30°C und + 30 °C um eine bessere Auflösung zu bekommen.
Dann muss ich den Wert noch auf 255 begrenzen (255 sind gleich 5 Volt und 30°C auf der UVR 1611). Den dass Vellmann Board kann nur 255 Bit ausflössen. Da ich eine Spannung zwischen 0 Volt und 5 Volt brauche um diese Spannung in der UVR 1611 wieder auf Temperatur umzurechnen.
-
- Ehrenmitglied
- Beiträge: 12194
- Registriert: 29.07.2006, 15:58
- Wohnort: Schweiz
- Danksagung erhalten: 5 Mal
Re: Vellemann USB Board Analoge Ausgabe
Hallo
Ich hab's gefunden - noch ein ähnlicher Fehler: Eine deiner Variablen heisst zuerst $wc und dann plötzlich $_wc. Das ist aber doch im "Original" auch so? Wenn du die Unterstriche überall weglässt, wird richtig gerechnet.
Beim Vergleich "if ($_wc < -30.0)" wird true zurückgegeben ($_wc gibt es in diesem Moment ja noch gar nicht) und die Variable erhält also den Wert -30. Nachher wird 0 draus und so bleibt es bis zum Schluss...
Viele Grüsse
Bümpi
PS: Übrigens: Das mit dem "Rest" funktioniert auch nicht richtig. "$_Rest = $_anau - $_anau" ergibt IMMER 0.0 ; verwende doch einfach "$K8055AO1 = round($_anau)"
Ich hab's gefunden - noch ein ähnlicher Fehler: Eine deiner Variablen heisst zuerst $wc und dann plötzlich $_wc. Das ist aber doch im "Original" auch so? Wenn du die Unterstriche überall weglässt, wird richtig gerechnet.
Beim Vergleich "if ($_wc < -30.0)" wird true zurückgegeben ($_wc gibt es in diesem Moment ja noch gar nicht) und die Variable erhält also den Wert -30. Nachher wird 0 draus und so bleibt es bis zum Schluss...
Viele Grüsse
Bümpi
PS: Übrigens: Das mit dem "Rest" funktioniert auch nicht richtig. "$_Rest = $_anau - $_anau" ergibt IMMER 0.0 ; verwende doch einfach "$K8055AO1 = round($_anau)"
-
- Beiträge: 8
- Registriert: 12.11.2008, 22:16
- Wohnort: Austria
Re: Vellemann USB Board Analoge Ausgabe
Hallo buempi
Danke für deine rasche Hilfe, ich hatte wirklich einen Fehler wie du geschrieben hast.
Jetzt läuft das Programm einwandfrei.
<?
$t = str_replace(",", ".", $KS300_Temp);
$w = str_replace(",", ".", $KS300_Wind);
if ($w >= 5) {
$wc = round(13.12 + 0.6215 * $t - 11.37 * pow($w, 0.16) + 0.3965 * $t * pow($w, 0.16), 1);
} else {
$_wc = $t;
}
if ($_wc > 30.0) $_wc=30.0;
if ($_wc < -30.0) $_wc=-30.0;
$_wc+= 30.0;
$_anau=255/600.0 * $_wc * 10.0;
$_Rest= $_anau - $_anau;
if ($_Rest >= 0.5) $_anau+=1;
$K8055AO1=str_replace(".",",",$_anau);
?>
Danke für deine rasche Hilfe, ich hatte wirklich einen Fehler wie du geschrieben hast.
Jetzt läuft das Programm einwandfrei.
<?
$t = str_replace(",", ".", $KS300_Temp);
$w = str_replace(",", ".", $KS300_Wind);
if ($w >= 5) {
$wc = round(13.12 + 0.6215 * $t - 11.37 * pow($w, 0.16) + 0.3965 * $t * pow($w, 0.16), 1);
} else {
$_wc = $t;
}
if ($_wc > 30.0) $_wc=30.0;
if ($_wc < -30.0) $_wc=-30.0;
$_wc+= 30.0;
$_anau=255/600.0 * $_wc * 10.0;
$_Rest= $_anau - $_anau;
if ($_Rest >= 0.5) $_anau+=1;
$K8055AO1=str_replace(".",",",$_anau);
?>
-
- Ehrenmitglied
- Beiträge: 12194
- Registriert: 29.07.2006, 15:58
- Wohnort: Schweiz
- Danksagung erhalten: 5 Mal
Re: Vellemann USB Board Analoge Ausgabe
Hallo
Ja, aber so läuft es nur einwandfrei bei Wind <5. Vor dem "else" musst du das $wc auch noch gegen $_wc ersetzen! - Sonst kommt wieder 0, sobald der Wind bläst...
Hast du mein PS betreffend "Rest" im letzten Beitrag übersehen?
Viele Grüsse
Bümpi
Ja, aber so läuft es nur einwandfrei bei Wind <5. Vor dem "else" musst du das $wc auch noch gegen $_wc ersetzen! - Sonst kommt wieder 0, sobald der Wind bläst...
Hast du mein PS betreffend "Rest" im letzten Beitrag übersehen?
Viele Grüsse
Bümpi
-
- Beiträge: 8
- Registriert: 12.11.2008, 22:16
- Wohnort: Austria
Re: Vellemann USB Board Analoge Ausgabe
Hallo Bümpi
Habe das auch noch geändert.
Danke noch einmal für deine rasche Hilfe.
$t = str_replace(",", ".", $KS300_Temp);
$w = str_replace(",", ".", $KS300_Wind);
if ($w >= 5) {
$_wc = round(13.12 + 0.6215 * $t - 11.37 * pow($w, 0.16) + 0.3965 * $t * pow($w, 0.16), 1);
} else {
$_wc = $t;
}
if ($_wc > 30.0) $_wc=30.0;
if ($_wc < -30.0) $_wc=-30.0;
$_wc+= 30.0;
$_anau=255/600.0 * $_wc * 10.0;
$K8055AO1= round($_anau);
?>
Grüße Hannes
Habe das auch noch geändert.
Danke noch einmal für deine rasche Hilfe.
$t = str_replace(",", ".", $KS300_Temp);
$w = str_replace(",", ".", $KS300_Wind);
if ($w >= 5) {
$_wc = round(13.12 + 0.6215 * $t - 11.37 * pow($w, 0.16) + 0.3965 * $t * pow($w, 0.16), 1);
} else {
$_wc = $t;
}
if ($_wc > 30.0) $_wc=30.0;
if ($_wc < -30.0) $_wc=-30.0;
$_wc+= 30.0;
$_anau=255/600.0 * $_wc * 10.0;
$K8055AO1= round($_anau);
?>
Grüße Hannes