From 85be031a6baa9b426284a70f8f0a616fb82ca1d1 Mon Sep 17 00:00:00 2001 From: "Hansi, dl9rdz" Date: Sun, 26 Sep 2021 15:05:22 +0200 Subject: [PATCH] RS41-SGP hum calc with real pressure. now correct. --- RX_FSK/src/RS41.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/RX_FSK/src/RS41.cpp b/RX_FSK/src/RS41.cpp index 9a9668a..086305a 100644 --- a/RX_FSK/src/RS41.cpp +++ b/RX_FSK/src/RS41.cpp @@ -798,9 +798,8 @@ int RS41::decode41(byte *data, int maxlen) // temp: 0xF8==bits 3..7 : we need refResistorlow/high, taylorT, polyT bool validExternalTemperature = calibration!=NULL && (calibration->valid & 0xF8) == 0xF8; - // humidity: bits 3..20 and 37..46. - // (note: we check validPressure below as well, thus we only calculate humidity of bit 33 (variant) is available as well) - bool validHumidity = calibration!=NULL && (calibration->valid & 0x7FE0001FFFF8) == 0x7FE0001FFFF8; + // humidity: bits 3..20 and 37..46. and bit 33 (variant) + bool validHumidity = calibration!=NULL && (calibration->valid & 0x7FE2001FFFF8) == 0x7FE2001FFFF8; // pressure: bits 33 and 37..42 (variant; x25..x2a: matrixP) /// CALIB_P is 0x7E200000000) bool validPressure = calibration!=NULL && (calibration->valid & CALIB_P)==CALIB_P && calibration->value.names.variant[7]=='P'; @@ -816,7 +815,7 @@ int RS41::decode41(byte *data, int maxlen) Serial.printf("External temperature = %f\n", si->temperature ); } - if ( validHumidity && validExternalTemperature & validPressure ) { + if ( validHumidity && validExternalTemperature ) { si->tempRHSensor = GetRATemp( tempHumiMain, tempHumiRef1, tempHumiRef2, calibration->value.calTU, calibration->value.taylorTU, calibration->value.polyTrh ); Serial.printf("Humidity Sensor temperature = %f\n", si->tempRHSensor );