diff --git a/source/Core/Inc/power.hpp b/source/Core/Inc/power.hpp index 786fb979..f8d35f67 100644 --- a/source/Core/Inc/power.hpp +++ b/source/Core/Inc/power.hpp @@ -22,7 +22,8 @@ const uint8_t wattHistoryFilter = 24; // I term look back weighting extern expMovingAverage x10WattHistory; -int32_t tempToX10Watts(int32_t rawTemp); -void setTipX10Watts(int32_t mw); -uint8_t X10WattsToPWM(int32_t milliWatts, uint8_t sample = 0); +uint32_t availableW10(uint8_t sample); +int32_t tempToX10Watts(int32_t rawTemp); +void setTipX10Watts(int32_t mw); +uint8_t X10WattsToPWM(int32_t milliWatts, uint8_t sample = 0); #endif /* POWER_HPP_ */ diff --git a/source/Core/Src/power.cpp b/source/Core/Src/power.cpp index 3fcaa302..d6665bd0 100644 --- a/source/Core/Src/power.cpp +++ b/source/Core/Src/power.cpp @@ -44,7 +44,7 @@ void setTipX10Watts(int32_t mw) { x10WattHistory.update(actualMilliWatts); } -static uint32_t availableW10(uint8_t sample) { +uint32_t availableW10(uint8_t sample) { // P = V^2 / R, v*v = v^2 * 100 // R = R*10 // P therefore is in V^2*100/R*10 = W*10. diff --git a/source/Core/Threads/PIDThread.cpp b/source/Core/Threads/PIDThread.cpp index fd921b3a..f7721303 100644 --- a/source/Core/Threads/PIDThread.cpp +++ b/source/Core/Threads/PIDThread.cpp @@ -171,10 +171,7 @@ void detectThermalRunaway(const int16_t currentTipTempInC, const int tError) { } int32_t getX10WattageLimits() { - const auto vin = getInputVoltageX10(getSettingValue(SettingsOptions::VoltageDiv), 0); - int32_t limit = ((vin * vin) * tipResistance); - limit *= 12; // Default to 20% over - limit /= 100; + int32_t limit = availableW10(0); if (getSettingValue(SettingsOptions::PowerLimit) && limit > (getSettingValue(SettingsOptions::PowerLimit) * 10)) { limit = getSettingValue(SettingsOptions::PowerLimit) * 10;