From 1749c9ac82dd7d8b44c5269c8539d20456ff9391 Mon Sep 17 00:00:00 2001 From: David Hilton Date: Sat, 5 Dec 2020 08:21:50 -0700 Subject: [PATCH] High wattage means tip temp is low, compensate --- workspace/TS100/Core/Drivers/TipThermoModel.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/workspace/TS100/Core/Drivers/TipThermoModel.cpp b/workspace/TS100/Core/Drivers/TipThermoModel.cpp index 18ab0a10..056e48a5 100644 --- a/workspace/TS100/Core/Drivers/TipThermoModel.cpp +++ b/workspace/TS100/Core/Drivers/TipThermoModel.cpp @@ -8,6 +8,7 @@ #include "TipThermoModel.h" #include "Settings.h" #include "BSP.h" +#include "power.hpp" #include "../../configuration.h" /* @@ -102,6 +103,10 @@ uint32_t TipThermoModel::convertFtoC(uint32_t degF) { uint32_t TipThermoModel::getTipInC(bool sampleNow) { int32_t currentTipTempInC = TipThermoModel::convertTipRawADCToDegC(getTipRawTemp(sampleNow)); currentTipTempInC += getHandleTemperature() / 10; //Add handle offset + // Power usage indicates that our tip temp is lower than our thermocouple temp. + // I found a number that doesn't unbalance the existing PID, causing overshoot. + // This could be tuned in concert with PID parameters... + currentTipTempInC -= x10WattHistory.average() / 25; if (currentTipTempInC < 0) return 0; return currentTipTempInC; @@ -111,6 +116,7 @@ uint32_t TipThermoModel::getTipInF(bool sampleNow) { uint32_t currentTipTempInF = TipThermoModel::convertTipRawADCToDegF( getTipRawTemp(sampleNow)); currentTipTempInF += convertCtoF(getHandleTemperature() / 10); //Add handle offset + currentTipTempInF += x10WattHistory.average() / 45; // 25 * 9 / 5, see getTipInC return currentTipTempInF; } #endif