add compensation temperature and humidity for SGP41

This commit is contained in:
Phat Nguyen
2024-03-10 11:20:52 +07:00
parent b94ae9eff0
commit 6837529096
4 changed files with 41 additions and 3 deletions

View File

@ -2288,6 +2288,11 @@ static void tempHumUpdate(void) {
Serial.printf("Temperature in C: %0.2f\r\n", temp);
Serial.printf("Relative Humidity: %d\r\n", hum);
// Update compensation temperature and humidity for SGP41
if (hasSensorSGP) {
ag.sgp41.setCompensationTemperatureHumidity(temp, hum);
}
} else {
Serial.println("SHT read failed");
}

View File

@ -1204,6 +1204,25 @@ static void pmUpdate(void) {
pm2hum = 0;
}
}
if (hasSensorSGP) {
float temp;
float hum;
if (pmsResult_1 && pmsResult_2) {
temp = (temp_1 + temp_2) / 2.0f;
hum = (hum_1 + hum_2) / 2.0f;
} else {
if (pmsResult_1) {
temp = temp_1;
hum = hum_1;
}
if (pmsResult_2) {
temp = temp_2;
hum = hum_2;
}
}
ag.sgp41.setCompensationTemperatureHumidity(temp, hum);
}
}
static void co2Update(void) {

View File

@ -257,3 +257,16 @@ int Sgp41::getTvocRaw(void) { return tvocRaw; }
* @return int
*/
int Sgp41::getNoxRaw(void) { return noxRaw; }
/**
* @brief Set compasation temperature and humidity to calculate TVOC and NOx
* index
*
* @param temp Temperature
* @param hum Humidity
*/
void Sgp41::setCompensationTemperatureHumidity(float temp, float hum) {
defaultT = static_cast<uint16_t>((temp + 45) * 65535 / 175);
defaultRh = static_cast<uint16_t>(hum * 65535 / 100);
AgLog("Update: defaultT: %d, defaultRh: %d", defaultT, defaultRh);
}

View File

@ -25,6 +25,7 @@ public:
int getNoxIndex(void);
int getTvocRaw(void);
int getNoxRaw(void);
void setCompensationTemperatureHumidity(float temp, float hum);
private:
bool onConditioning = true;