From 7c9067b7b15a72ec5a8d59a571ec098a355b43c4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 10 Feb 2021 15:56:06 +0100 Subject: [PATCH] Fix NTC calculation for ESP32 Fix NTC calculation for ESP32 (#10906) --- tasmota/xsns_02_analog.ino | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tasmota/xsns_02_analog.ino b/tasmota/xsns_02_analog.ino index 73193a8af..6d581c4fd 100644 --- a/tasmota/xsns_02_analog.ino +++ b/tasmota/xsns_02_analog.ino @@ -42,7 +42,7 @@ #define TO_KELVIN(x) ((x) + 273.15) // Parameters for equation -#define ANALOG_V33 3.3 // ESP8266 Analog voltage +#define ANALOG_V33 3.3 // ESP8266 / ESP32 Analog voltage #define ANALOG_T0 TO_KELVIN(25.0) // 25 degrees Celcius in Kelvin (= 298.15) // Shelly 2.5 NTC Thermistor @@ -410,9 +410,9 @@ void AdcEverySecond(void) { if (ADC_TEMP == Adc[idx].type) { int adc = AdcRead(Adc[idx].pin, 2); // Steinhart-Hart equation for thermistor as temperature sensor - double Rt = (adc * Adc[idx].param1) / (1024.0 * ANALOG_V33 - (double)adc); - double BC = (double)Adc[idx].param3 / 10000; - double T = BC / (BC / ANALOG_T0 + TaylorLog(Rt / (double)Adc[idx].param2)); + double Rt = (adc * Adc[idx].param1) / (ANALOG_RANGE * ANALOG_V33 - (double)adc); // Shelly param1 = 32000 (ANALOG_NTC_BRIDGE_RESISTANCE) + double BC = (double)Adc[idx].param3 / 10000; // Shelly param3 = 3350 (ANALOG_NTC_B_COEFFICIENT) + double T = BC / (BC / ANALOG_T0 + TaylorLog(Rt / (double)Adc[idx].param2)); // Shelly param2 = 10000 (ANALOG_NTC_RESISTANCE) Adc[idx].temperature = ConvertTemp(TO_CELSIUS(T)); } else if (ADC_CT_POWER == Adc[idx].type) {