Wenn man mit sog. "Umweltsensoren" arbeitet, die Temperatur, Luftfeuchte und/oder Luftdruck liefern, dann sind deren Ausgabewerte manchmal nicht ausreichend. Die Luftfeuchte wird in der Regel als relative Luftfeuchte ausgegeben, der Luftdruck dagegen als absoluter.
Nun braucht man aber vielleicht gerade die absolute Luftfeuchte z.B. für eine Lüftersteuerung, bei der die tatsächliche Menge an Feuchtigkeit innen und außen verglichen werden muss, damit man nicht Feuchte von außen in den Innenraum hineinbläst.
Oder man braucht den relativen Luftdruck, der die Höhe (und die Temperatur) berücksichtigt, um mit anderen Wetterstationen vergleichen zu können. Dabei wird bei den digitalen Sensoren die Temperatur schon mit eingerechnet, aber die Höhe aus verständlichen Gründen nicht.
Die aufgeführten Formeln berechnen nun die meteorologischen Zusatzwerte mit BASCOM.
RoBue
Alles anzeigen
Nun braucht man aber vielleicht gerade die absolute Luftfeuchte z.B. für eine Lüftersteuerung, bei der die tatsächliche Menge an Feuchtigkeit innen und außen verglichen werden muss, damit man nicht Feuchte von außen in den Innenraum hineinbläst.
Oder man braucht den relativen Luftdruck, der die Höhe (und die Temperatur) berücksichtigt, um mit anderen Wetterstationen vergleichen zu können. Dabei wird bei den digitalen Sensoren die Temperatur schon mit eingerechnet, aber die Höhe aus verständlichen Gründen nicht.
Die aufgeführten Formeln berechnen nun die meteorologischen Zusatzwerte mit BASCOM.
RoBue
BASCOM-Quellcode
- '**********************************************************
- 'Compiler : BasCom
- 'Hardware : AVR-Ctrl / RoBue AVR-PC-Control
- ' : LCD, DS1307, ...
- 'Chip type : ATmega644P
- 'Clock frequency : 8,000000 MHz
- '**********************************************************
- ' Routinen zur Berechnung von Werten aus Temperatur und Luftfeuchte
- $regfile = "m644pdef.dat"
- $crystal = 8000000
- ' framesize
- ' - fuer Prozeduren
- ' - Umwandlung von Variablen in andere Datentypen
- $framesize = 128
- ' hwstack:
- ' - 32 Bytes fuer Interrupts
- ' - 2 pro Gosub
- $hwstack = 64
- ' swstack:
- ' - fuer Prozeduren
- $swstack = 32
- $baud = 9600
- ' Gemeinsame Variable fuer Ausgabe
- Dim Ausgabehilfswert As Single
- Dim A_feuchte As Single
- Dim A_temperatur As Single
- Dim Tp As Single
- Dim Sdd As Single
- Dim Dd As Single
- Dim Fa As Single
- Dim P_abs As Single
- Dim A_druck As Single
- ' Hoehe:
- Dim Altitude As Word
- Do
- ' Eingabewerte (Beispiel):
- A_temperatur = 28.5
- A_feuchte = 63.7
- Gosub Meteowerte
- If Tp = 9999 Then
- Print "Error"
- Else
- Print "Temperatur: " ; A_temperatur ; " °C"
- Print "Luftfeuchte: " ; A_feuchte ; " %H"
- Print "Saettigungsdd: " ; Sdd ; " hPa"
- Print "Dampfdruck: " ; Dd ; " hPa"
- Print "Feuchtegehalt: " ; Fa ; " g/m³"
- Print "Taupunkt: " ; Tp ; " °C"
- End If
- ' Eingabewerte (Beispiel)
- Altitude = 565
- P_abs = 953.45
- Gosub Luftdruck_rel
- Print "Luftdruck (abs.): " ; P_abs ; " hPa"
- Print "Luftdruck (rel.): " ; A_druck ; " hPa"
- Print "Hoehe: " ; Altitude ; " m"
- Wait 15
- Loop
- End
- Meteowerte:
- ' Infos: -> http://www.wetterochs.de/wetter/feuchte.html
- ' Berechnung nur fuer Werte ueber 0°C
- If A_temperatur >= 0 Then
- ' - Saettigungsdampfdruck (o.k.):
- ' Sdd = 6.1078 * 10^ ((7.45 * Temperatur) / (237.3 + Temperatur))
- Ausgabehilfswert = A_temperatur
- Ausgabehilfswert = 237.3 + Ausgabehilfswert
- Ausgabehilfswert = 7.5 / Ausgabehilfswert
- Ausgabehilfswert = Ausgabehilfswert * A_temperatur
- Ausgabehilfswert = 10 ^ Ausgabehilfswert
- Sdd = Ausgabehilfswert * 6.1078
- ' Dampfdruck
- ' Dd = Feuchte / 100 * Sdd
- Ausgabehilfswert = A_feuchte * Sdd
- ' Ausgabehilfswert = Ausgabehilfswert / 100
- ' (Wert auch noch durch 10 teilen s.o => 1000
- Dd = Ausgabehilfswert / 100
- ' Feuchtegehalt / absolute Luftfeuchte(o.k.):
- ' Fa = 216.7 * Dd / (237.3 + Temperatur)
- Ausgabehilfswert = 273.15 + A_temperatur
- Fa = 216.7 * Dd
- Fa = Fa / Ausgabehilfswert
- ' Taupunkt (o.k.):
- Ausgabehilfswert = Dd / 6.1078
- Ausgabehilfswert = Log10(ausgabehilfswert)
- Tp = 7.5 - Ausgabehilfswert
- Tp = 237.3 / Tp
- Tp = Tp * Ausgabehilfswert
- Else
- ' Errorausgabe
- Tp = 9999
- End If
- Return
- ' Relativer Druck mit barometrischer Hoehenformel berechnen
- ' (wenn die Temperaturkompensation schon erfolgt ist: BMP085, BMP180, BME280)
- ' Absoluter Luftdruck in hPa muss in der Single-Variablen P_abs stehen
- ' Relativer Luftdruck in hPa wird in der Single-Variablen A_druck ausgegeben
- ' Formel -> http://www.kompf.de/weather/pibaro.html
- Luftdruck_rel:
- Ausgabehilfswert = Altitude / 44330
- Ausgabehilfswert = 1 - Ausgabehilfswert
- Ausgabehilfswert = Ausgabehilfswert ^ 5.255
- A_druck = P_abs / Ausgabehilfswert
- Return
5.170 mal gelesen