Merge pull request #993 from Ralim/ralim/const-temp-catch
Thermal Runaway alert
This commit is contained in:
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": " LOCKED",
|
"LockingKeysString": " LOCKED",
|
||||||
"UnlockingKeysString": "UNLOCKED",
|
"UnlockingKeysString": "UNLOCKED",
|
||||||
"WarningKeysLockedString": "!LOCKED!"
|
"WarningKeysLockedString": "!LOCKED!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "R",
|
"SettingRightChar": "R",
|
||||||
|
|||||||
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": " LOCKED",
|
"LockingKeysString": " LOCKED",
|
||||||
"UnlockingKeysString": "UNLOCKED",
|
"UnlockingKeysString": "UNLOCKED",
|
||||||
"WarningKeysLockedString": "!LOCKED!"
|
"WarningKeysLockedString": "!LOCKED!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "P",
|
"SettingRightChar": "P",
|
||||||
|
|||||||
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": " LOCKED",
|
"LockingKeysString": " LOCKED",
|
||||||
"UnlockingKeysString": "UNLOCKED",
|
"UnlockingKeysString": "UNLOCKED",
|
||||||
"WarningKeysLockedString": "!LOCKED!"
|
"WarningKeysLockedString": "!LOCKED!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "H",
|
"SettingRightChar": "H",
|
||||||
|
|||||||
@@ -43,7 +43,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "GESPERRT",
|
"LockingKeysString": "GESPERRT",
|
||||||
"UnlockingKeysString": "ENTSPERRT",
|
"UnlockingKeysString": "ENTSPERRT",
|
||||||
"WarningKeysLockedString": "!GESPERRT!"
|
"WarningKeysLockedString": "!GESPERRT!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "R",
|
"SettingRightChar": "R",
|
||||||
|
|||||||
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "LOCKED",
|
"LockingKeysString": "LOCKED",
|
||||||
"UnlockingKeysString": "UNLOCKED",
|
"UnlockingKeysString": "UNLOCKED",
|
||||||
"WarningKeysLockedString": "!LOCKED!"
|
"WarningKeysLockedString": "!LOCKED!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "R",
|
"SettingRightChar": "R",
|
||||||
|
|||||||
@@ -43,7 +43,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": " BLOQUEADO",
|
"LockingKeysString": " BLOQUEADO",
|
||||||
"UnlockingKeysString": "DESBLOQUEADO",
|
"UnlockingKeysString": "DESBLOQUEADO",
|
||||||
"WarningKeysLockedString": "¡BLOQUEADO!"
|
"WarningKeysLockedString": "¡BLOQUEADO!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "D",
|
"SettingRightChar": "D",
|
||||||
|
|||||||
@@ -41,7 +41,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": " LUKITTU",
|
"LockingKeysString": " LUKITTU",
|
||||||
"UnlockingKeysString": "AUKI",
|
"UnlockingKeysString": "AUKI",
|
||||||
"WarningKeysLockedString": "!LUKKO!"
|
"WarningKeysLockedString": "!LUKKO!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "O",
|
"SettingRightChar": "O",
|
||||||
|
|||||||
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "VERROUIL",
|
"LockingKeysString": "VERROUIL",
|
||||||
"UnlockingKeysString": "DEVERROU",
|
"UnlockingKeysString": "DEVERROU",
|
||||||
"WarningKeysLockedString": "! VERR. !"
|
"WarningKeysLockedString": "! VERR. !",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "D",
|
"SettingRightChar": "D",
|
||||||
|
|||||||
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": " LOCKED",
|
"LockingKeysString": " LOCKED",
|
||||||
"UnlockingKeysString": "UNLOCKED",
|
"UnlockingKeysString": "UNLOCKED",
|
||||||
"WarningKeysLockedString": "!LOCKED!"
|
"WarningKeysLockedString": "!LOCKED!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "D",
|
"SettingRightChar": "D",
|
||||||
|
|||||||
@@ -45,7 +45,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "LEZÁRVA",
|
"LockingKeysString": "LEZÁRVA",
|
||||||
"UnlockingKeysString": "FELOLDVA",
|
"UnlockingKeysString": "FELOLDVA",
|
||||||
"WarningKeysLockedString": "!LEZÁRVA!"
|
"WarningKeysLockedString": "!LEZÁRVA!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "J",
|
"SettingRightChar": "J",
|
||||||
|
|||||||
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "Blocc.",
|
"LockingKeysString": "Blocc.",
|
||||||
"UnlockingKeysString": "Sblocc.",
|
"UnlockingKeysString": "Sblocc.",
|
||||||
"WarningKeysLockedString": "BLOCCATO"
|
"WarningKeysLockedString": "BLOCCATO",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "D",
|
"SettingRightChar": "D",
|
||||||
|
|||||||
@@ -40,7 +40,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "ボタンロック",
|
"LockingKeysString": "ボタンロック",
|
||||||
"UnlockingKeysString": "ロックを解除",
|
"UnlockingKeysString": "ロックを解除",
|
||||||
"WarningKeysLockedString": "!入力ロック中!"
|
"WarningKeysLockedString": "!入力ロック中!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "右",
|
"SettingRightChar": "右",
|
||||||
|
|||||||
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": " UŽRAKIN",
|
"LockingKeysString": " UŽRAKIN",
|
||||||
"UnlockingKeysString": "ATRAKIN",
|
"UnlockingKeysString": "ATRAKIN",
|
||||||
"WarningKeysLockedString": "!UŽRAK!"
|
"WarningKeysLockedString": "!UŽRAK!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "D",
|
"SettingRightChar": "D",
|
||||||
|
|||||||
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": " GEBLOKKEERD",
|
"LockingKeysString": " GEBLOKKEERD",
|
||||||
"UnlockingKeysString": "GEDEBLOKKEERD",
|
"UnlockingKeysString": "GEDEBLOKKEERD",
|
||||||
"WarningKeysLockedString": "!GEBLOKKEERD!"
|
"WarningKeysLockedString": "!GEBLOKKEERD!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "R",
|
"SettingRightChar": "R",
|
||||||
|
|||||||
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": " LOCKED",
|
"LockingKeysString": " LOCKED",
|
||||||
"UnlockingKeysString": "UNLOCKED",
|
"UnlockingKeysString": "UNLOCKED",
|
||||||
"WarningKeysLockedString": "!LOCKED!"
|
"WarningKeysLockedString": "!LOCKED!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "R",
|
"SettingRightChar": "R",
|
||||||
|
|||||||
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": " LOCKED",
|
"LockingKeysString": " LOCKED",
|
||||||
"UnlockingKeysString": "UNLOCKED",
|
"UnlockingKeysString": "UNLOCKED",
|
||||||
"WarningKeysLockedString": "!LOCKED!"
|
"WarningKeysLockedString": "!LOCKED!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "H",
|
"SettingRightChar": "H",
|
||||||
|
|||||||
@@ -43,7 +43,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": " ZABLOK.",
|
"LockingKeysString": " ZABLOK.",
|
||||||
"UnlockingKeysString": "ODBLOK.",
|
"UnlockingKeysString": "ODBLOK.",
|
||||||
"WarningKeysLockedString": "!ZABLOK!"
|
"WarningKeysLockedString": "!ZABLOK!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "P",
|
"SettingRightChar": "P",
|
||||||
|
|||||||
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "LOCKED",
|
"LockingKeysString": "LOCKED",
|
||||||
"UnlockingKeysString": "UNLOCKED",
|
"UnlockingKeysString": "UNLOCKED",
|
||||||
"WarningKeysLockedString": "!LOCKED!"
|
"WarningKeysLockedString": "!LOCKED!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "D",
|
"SettingRightChar": "D",
|
||||||
|
|||||||
@@ -43,7 +43,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "LOCKED",
|
"LockingKeysString": "LOCKED",
|
||||||
"UnlockingKeysString": "UNLOCKED",
|
"UnlockingKeysString": "UNLOCKED",
|
||||||
"WarningKeysLockedString": "!LOCKED!"
|
"WarningKeysLockedString": "!LOCKED!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "П",
|
"SettingRightChar": "П",
|
||||||
|
|||||||
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "ZABLOK.",
|
"LockingKeysString": "ZABLOK.",
|
||||||
"UnlockingKeysString": "ODBLOK.",
|
"UnlockingKeysString": "ODBLOK.",
|
||||||
"WarningKeysLockedString": "!ZABLOK!"
|
"WarningKeysLockedString": "!ZABLOK!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "P",
|
"SettingRightChar": "P",
|
||||||
|
|||||||
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "ZAKLENJ.",
|
"LockingKeysString": "ZAKLENJ.",
|
||||||
"UnlockingKeysString": "ODKLENJ.",
|
"UnlockingKeysString": "ODKLENJ.",
|
||||||
"WarningKeysLockedString": "ZAKLENJ."
|
"WarningKeysLockedString": "ZAKLENJ.",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "D",
|
"SettingRightChar": "D",
|
||||||
|
|||||||
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "LOCKED",
|
"LockingKeysString": "LOCKED",
|
||||||
"UnlockingKeysString": "UNLOCKED",
|
"UnlockingKeysString": "UNLOCKED",
|
||||||
"WarningKeysLockedString": "!LOCKED!"
|
"WarningKeysLockedString": "!LOCKED!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "Д",
|
"SettingRightChar": "Д",
|
||||||
|
|||||||
@@ -42,7 +42,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "LOCKED",
|
"LockingKeysString": "LOCKED",
|
||||||
"UnlockingKeysString": "UNLOCKED",
|
"UnlockingKeysString": "UNLOCKED",
|
||||||
"WarningKeysLockedString": "!LOCKED!"
|
"WarningKeysLockedString": "!LOCKED!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "D",
|
"SettingRightChar": "D",
|
||||||
|
|||||||
@@ -36,7 +36,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "LÅST",
|
"LockingKeysString": "LÅST",
|
||||||
"UnlockingKeysString": "UPPLÅST",
|
"UnlockingKeysString": "UPPLÅST",
|
||||||
"WarningKeysLockedString": "!LÅST!"
|
"WarningKeysLockedString": "!LÅST!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "H",
|
"SettingRightChar": "H",
|
||||||
|
|||||||
@@ -45,7 +45,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "LOCKED",
|
"LockingKeysString": "LOCKED",
|
||||||
"UnlockingKeysString": "UNLOCKED",
|
"UnlockingKeysString": "UNLOCKED",
|
||||||
"WarningKeysLockedString": "!LOCKED!"
|
"WarningKeysLockedString": "!LOCKED!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "R",
|
"SettingRightChar": "R",
|
||||||
|
|||||||
@@ -43,7 +43,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "ЗАБЛОК.",
|
"LockingKeysString": "ЗАБЛОК.",
|
||||||
"UnlockingKeysString": "РОЗБЛОК.",
|
"UnlockingKeysString": "РОЗБЛОК.",
|
||||||
"WarningKeysLockedString": "!ЗАБЛОК!"
|
"WarningKeysLockedString": "!ЗАБЛОК!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "П",
|
"SettingRightChar": "П",
|
||||||
|
|||||||
@@ -40,7 +40,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "已鎖定",
|
"LockingKeysString": "已鎖定",
|
||||||
"UnlockingKeysString": "已解除鎖定",
|
"UnlockingKeysString": "已解除鎖定",
|
||||||
"WarningKeysLockedString": "!撳掣鎖定!"
|
"WarningKeysLockedString": "!撳掣鎖定!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "右",
|
"SettingRightChar": "右",
|
||||||
|
|||||||
@@ -40,7 +40,8 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "已锁定",
|
"LockingKeysString": "已锁定",
|
||||||
"UnlockingKeysString": "已解除锁定",
|
"UnlockingKeysString": "已解除锁定",
|
||||||
"WarningKeysLockedString": "!按键锁定!"
|
"WarningKeysLockedString": "!按键锁定!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "右",
|
"SettingRightChar": "右",
|
||||||
|
|||||||
@@ -40,7 +40,9 @@
|
|||||||
],
|
],
|
||||||
"LockingKeysString": "已鎖定",
|
"LockingKeysString": "已鎖定",
|
||||||
"UnlockingKeysString": "已解除鎖定",
|
"UnlockingKeysString": "已解除鎖定",
|
||||||
"WarningKeysLockedString": "!按鍵鎖定!"
|
"WarningKeysLockedString": "!按鍵鎖定!",
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"],
|
||||||
|
"WarningThermalRunaway":["Thermal","Runaway"]
|
||||||
},
|
},
|
||||||
"characters": {
|
"characters": {
|
||||||
"SettingRightChar": "右",
|
"SettingRightChar": "右",
|
||||||
|
|||||||
@@ -83,6 +83,9 @@ var def =
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "WarningKeysLockedString"
|
"id": "WarningKeysLockedString"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "WarningThermalRunaway"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"characters": [
|
"characters": [
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ struct TranslationIndexTable {
|
|||||||
uint16_t LockingKeysString;
|
uint16_t LockingKeysString;
|
||||||
uint16_t UnlockingKeysString;
|
uint16_t UnlockingKeysString;
|
||||||
uint16_t WarningKeysLockedString;
|
uint16_t WarningKeysLockedString;
|
||||||
|
uint16_t WarningThermalRunaway;
|
||||||
|
|
||||||
uint16_t SettingRightChar;
|
uint16_t SettingRightChar;
|
||||||
uint16_t SettingLeftChar;
|
uint16_t SettingLeftChar;
|
||||||
|
|||||||
@@ -94,6 +94,9 @@
|
|||||||
#define DETAILED_SOLDERING 0 // 0: Disable 1: Enable - Default 0
|
#define DETAILED_SOLDERING 0 // 0: Disable 1: Enable - Default 0
|
||||||
#define DETAILED_IDLE 0 // 0: Disable 1: Enable - Default 0
|
#define DETAILED_IDLE 0 // 0: Disable 1: Enable - Default 0
|
||||||
|
|
||||||
|
#define THERMAL_RUNAWAY_TIME_SEC 20
|
||||||
|
#define THERMAL_RUNAWAY_TEMP_C 20
|
||||||
|
|
||||||
#define CUT_OUT_SETTING 0 // default to no cut-off voltage
|
#define CUT_OUT_SETTING 0 // default to no cut-off voltage
|
||||||
#define RECOM_VOL_CELL 33 // Minimum voltage per cell (Recommended 3.3V (33))
|
#define RECOM_VOL_CELL 33 // Minimum voltage per cell (Recommended 3.3V (33))
|
||||||
#define TEMPERATURE_INF 0 // default to 0
|
#define TEMPERATURE_INF 0 // default to 0
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ extern "C" {
|
|||||||
// File local variables
|
// File local variables
|
||||||
extern uint32_t currentTempTargetDegC;
|
extern uint32_t currentTempTargetDegC;
|
||||||
extern TickType_t lastMovementTime;
|
extern TickType_t lastMovementTime;
|
||||||
|
extern bool heaterThermalRunaway;
|
||||||
extern osThreadId GUITaskHandle;
|
extern osThreadId GUITaskHandle;
|
||||||
extern osThreadId MOVTaskHandle;
|
extern osThreadId MOVTaskHandle;
|
||||||
extern osThreadId PIDTaskHandle;
|
extern osThreadId PIDTaskHandle;
|
||||||
@@ -62,7 +63,7 @@ void GUIDelay() {
|
|||||||
// This limits the re-draw rate to the LCD and also lets the DMA run
|
// This limits the re-draw rate to the LCD and also lets the DMA run
|
||||||
// As the gui task can very easily fill this bus with transactions, which will
|
// As the gui task can very easily fill this bus with transactions, which will
|
||||||
// prevent the movement detection from running
|
// prevent the movement detection from running
|
||||||
osDelay(50);
|
vTaskDelay(5 * TICKS_10MS);
|
||||||
}
|
}
|
||||||
void gui_drawTipTemp(bool symbol, const FontStyle font) {
|
void gui_drawTipTemp(bool symbol, const FontStyle font) {
|
||||||
// Draw tip temp handling unit conversion & tolerance near setpoint
|
// Draw tip temp handling unit conversion & tolerance near setpoint
|
||||||
@@ -608,7 +609,6 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
OLED::refresh();
|
OLED::refresh();
|
||||||
|
|
||||||
// Update the setpoints for the temperature
|
// Update the setpoints for the temperature
|
||||||
if (boostModeOn) {
|
if (boostModeOn) {
|
||||||
if (systemSettings.temperatureInF)
|
if (systemSettings.temperatureInF)
|
||||||
@@ -645,6 +645,15 @@ static void gui_solderingMode(uint8_t jumpToSleep) {
|
|||||||
} else {
|
} else {
|
||||||
setStatusLED(LED_HEATING);
|
setStatusLED(LED_HEATING);
|
||||||
}
|
}
|
||||||
|
// If we have tripped thermal runaway, turn off header and show warning
|
||||||
|
if (heaterThermalRunaway) {
|
||||||
|
currentTempTargetDegC = 0; // heaater control off
|
||||||
|
// TODO WARNING
|
||||||
|
|
||||||
|
warnUser(translatedString(Tr->WarningThermalRunaway), 10 * TICKS_SECOND);
|
||||||
|
heaterThermalRunaway = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
// slow down ui update rate
|
// slow down ui update rate
|
||||||
GUIDelay();
|
GUIDelay();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ static TickType_t powerPulseDurationUnit = (5 * TICKS_100MS) / 2; // 250 ms
|
|||||||
TaskHandle_t pidTaskNotification = NULL;
|
TaskHandle_t pidTaskNotification = NULL;
|
||||||
uint32_t currentTempTargetDegC = 0; // Current temperature target in C
|
uint32_t currentTempTargetDegC = 0; // Current temperature target in C
|
||||||
int32_t powerSupplyWattageLimit = 0;
|
int32_t powerSupplyWattageLimit = 0;
|
||||||
|
bool heaterThermalRunaway = false;
|
||||||
/* StartPIDTask function */
|
/* StartPIDTask function */
|
||||||
void startPIDTask(void const *argument __unused) {
|
void startPIDTask(void const *argument __unused) {
|
||||||
/*
|
/*
|
||||||
@@ -32,8 +33,10 @@ void startPIDTask(void const *argument __unused) {
|
|||||||
history<int32_t, PID_TIM_HZ> tempError = {{0}, 0, 0};
|
history<int32_t, PID_TIM_HZ> tempError = {{0}, 0, 0};
|
||||||
currentTempTargetDegC = 0; // Force start with no output (off). If in sleep / soldering this will
|
currentTempTargetDegC = 0; // Force start with no output (off). If in sleep / soldering this will
|
||||||
// be over-ridden rapidly
|
// be over-ridden rapidly
|
||||||
pidTaskNotification = xTaskGetCurrentTaskHandle();
|
pidTaskNotification = xTaskGetCurrentTaskHandle();
|
||||||
uint32_t PIDTempTarget = 0;
|
uint32_t PIDTempTarget = 0;
|
||||||
|
uint16_t tipTempCRunawayTemp = 0;
|
||||||
|
TickType_t runawaylastChangeTime = 0;
|
||||||
#ifdef SLEW_LIMIT
|
#ifdef SLEW_LIMIT
|
||||||
int32_t x10WattsOutLast = 0;
|
int32_t x10WattsOutLast = 0;
|
||||||
#endif
|
#endif
|
||||||
@@ -91,6 +94,33 @@ void startPIDTask(void const *argument __unused) {
|
|||||||
// and counters extra power if the iron is no longer losing temp.
|
// and counters extra power if the iron is no longer losing temp.
|
||||||
// basically: temp - lastTemp
|
// basically: temp - lastTemp
|
||||||
// Unfortunately, our temp signal is too noisy to really help.
|
// Unfortunately, our temp signal is too noisy to really help.
|
||||||
|
|
||||||
|
// Check for thermal runaway, where it has been x seconds with negligible (y) temp rise
|
||||||
|
// While trying to actively heat
|
||||||
|
if ((tError > THERMAL_RUNAWAY_TEMP_C)) {
|
||||||
|
// Temp error is high
|
||||||
|
int16_t delta = (int16_t)currentTipTempInC - (int16_t)tipTempCRunawayTemp;
|
||||||
|
if (delta < 0) {
|
||||||
|
delta = -delta;
|
||||||
|
}
|
||||||
|
if (delta > THERMAL_RUNAWAY_TEMP_C) {
|
||||||
|
// We have heated up more than the threshold, reset the timer
|
||||||
|
tipTempCRunawayTemp = currentTipTempInC;
|
||||||
|
runawaylastChangeTime = xTaskGetTickCount();
|
||||||
|
} else {
|
||||||
|
if ((xTaskGetTickCount() - runawaylastChangeTime) > (THERMAL_RUNAWAY_TIME_SEC * TICKS_SECOND)) {
|
||||||
|
// It has taken too long to rise
|
||||||
|
heaterThermalRunaway = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
tipTempCRunawayTemp = currentTipTempInC;
|
||||||
|
runawaylastChangeTime = xTaskGetTickCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
tipTempCRunawayTemp = currentTipTempInC;
|
||||||
|
runawaylastChangeTime = xTaskGetTickCount();
|
||||||
}
|
}
|
||||||
// If the user turns on the option of using an occasional pulse to keep the power bank on
|
// If the user turns on the option of using an occasional pulse to keep the power bank on
|
||||||
if (systemSettings.KeepAwakePulse) {
|
if (systemSettings.KeepAwakePulse) {
|
||||||
@@ -111,6 +141,9 @@ void startPIDTask(void const *argument __unused) {
|
|||||||
if (getTipRawTemp(0) > (0x7FFF - 32)) {
|
if (getTipRawTemp(0) > (0x7FFF - 32)) {
|
||||||
x10WattsOut = 0;
|
x10WattsOut = 0;
|
||||||
}
|
}
|
||||||
|
if (heaterThermalRunaway) {
|
||||||
|
x10WattsOut = 0;
|
||||||
|
}
|
||||||
if (systemSettings.powerLimit && x10WattsOut > (systemSettings.powerLimit * 10)) {
|
if (systemSettings.powerLimit && x10WattsOut > (systemSettings.powerLimit * 10)) {
|
||||||
x10WattsOut = systemSettings.powerLimit * 10;
|
x10WattsOut = systemSettings.powerLimit * 10;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user