Is smoothieboard support redundant thermistor ?
Is there any thermal runway protect mechanism ? I think this is very important for everyone who can’t always keep an eye on 3DP all the time.
There is an very easy protect mechanism for a loosen thermistor:
If the system cannot reach the target temperature at a defined time( maybe 180 second), smoothieboard should turn off the heater.
Imported from wikidot
Hi there !
Smoothie will shut down if the thermistor gets disconnected, that’s implemented.
I think redundant thermistor and the delay thing are not really necessary considering we already have protection, but if you want to add those features, I guess more safety is better …
Cheers !
Thermistor sometimes is not only disconnected but only defected and keep in wrong resistance and makes system keep heating up. It is better to have a timeout to protect this.
Safety is my priority one.
ErikZalm Marlin has this done. You could refer it. Thanks a lot.
Are you interested in adding this to the firmware ? If so I can guide/help you.
Sure, I’m interesting in this. Please help, thanks a lot.
Hey.
You can contact me at wolf.arthur@gmail.com, and we can work on this.
Cheers 
Any updates on this?
I find this very important, and I able to code it, but I think this should be built in. No runaway heaters.
Their are cases where the thermometer becomes dislodged from the hotend, so reporting wrong temperature.
A simple timer might fix it. If the printer on constantly for over a set time (Like 15 minutes for hotend, or 30 minutes for heatbed). Shut down every thing.
Took a look at the code. Line 470 TemperatureControl.cpp
Just need to add a timer here most likely. Here is some sudo code
TemperatureControl.h
Timer TimerA //Or Tick count
bool startedMaxPwmTimer
TemperatureControl.cpp
if (this->o >= heater_pin.max_pwm())
{
this->o = heater_pin.max_pwm();
if(!startedMaxPwmTimer)
{
timerA.Reset;
timerA.Start;
startedMaxPwmTimer = true;
}
else
{
if(TimerA > MaxTime)
KillAll();
}
}
else if (this->o < 0)
this->o = 0;
startedMaxPwmTimer = false;
timerA.Stop;
else if(this->windup)
this->iTerm = new_I; // Only update I term when output is not saturated.
startedMaxPwmTimer = false;
timerA.Stop;</code>