-
-
Notifications
You must be signed in to change notification settings - Fork 19.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Thermistors malfunction tests results #2066
Comments
Tl;DR but basically thermistor tables should start at 0 or at the very least below MINTEMP. |
Talk about through testing procedure. ;) Nice work there. 👍 👍 |
@nophead I totally agree. Is there a workaround? Anyway, I think the next Marlin release should address such issues. @Natealus Thanks, it took me half a day to document, but I'm willing to redo it whenever new PR are available for this, because I believe safety should be priority one for the next release. |
A long time ago all the Marlin thermistor tables where changed to make sure they started at 0 so that they would always give MINTEMP when disconnected. Which thermistor is it? Presumably it isn't 100K, that the circuit was designed for. I can see why it might not be because in order to have any resolution at 500C it would need to be a higher resistance version and then you can't measure room temp accurately enough with only a 10bit ADC. |
|
So that's the host, correct? I see that it does still show up in the LCD menu under Control > Temperature > Bed |
This should be slightly improved by #2067, as it keeps the test alive while the temperature is still low enough. |
By my reading of the code this should throw a Runaway error after
|
@thinkyhead Do I update the OP with the new PR or post a new comment? |
@clefranc You should continue to comment on the differences, but since the OP is very long, it will be better to update it with your new results rather than post another long comment. |
a) Set MINTEMP well above 25 degree. Preheat the nozzle with a lighter to avoid MINTEMP-ERRORS during startup. |
@AnHardt The ultimate workaround is to keep augmenting the heater sanity check. The current routines to catch thermal problems are:
What is missing?
|
Well the algorithm I proposed earlier is simpler and catches all those simply by insisting it should get hotter when full on and cooler when full off. Sudden jumps will get caught indirectly if they violate those basic rules. Catching them immediately will get lots of false alarms due to noisy wiring, poor grounds and loose connections. People would rather their print finished with a loose connection than abort and as long as the temperature is still under control that is OK. |
I agree with Chris. My thermistor for my heatbed is really noisy while heat up. Also a lot of different checks will give it too much complexity also later for debugging issues. |
'Workaround' implies to me - a not so perfect solution to make it work - somehow. |
@thinkyhead Updated the OP with #2067 |
@clefranc |
@KiteLab Updated the strikeout so you can see what the new PR brings new. At this time, only Test 12 goes from HIGH to none. |
Got 'sudden temperature jumps' to work on raw-temperature level. Tried this to avoid floating point compares. But it's ugly, because of a lot of cases to integrate MAX5564 - with no oversampling. |
@AnHardt To the extent that things can be done at the raw temperature level, I think that will perform the best and provide the best encapsulation. We'll just have to pre-convert any temperature-based stuff into sensor values. And I like the suggestion from @nophead, if we could use an algorithm that simply checks that when the heater is on the temp goes up, when it's off the temp goes down, and Bob's your uncle. |
Yes it doesn't care about set point changes and start up, etc. You can rely on the fact the control loop will apply full power or full off when the temperature is outside the PID band. |
I did a wee table, and only issue I can see with @nophead's proposal is when the printer is sitting at ambient, the heater is off, the temperature will stay constant (won't decrease) - would this trigger the fault? |
#2077 looks good - and simple. I'm almost inspired enough to add BED MINTEMP and round out the whole thing… |
@grob6000 the pseudo code I posted caters for that condition explicitly with this line:
|
When i tried to implement it yesterday, my firs note was: Some ideas pop on simultaneously , for different reasons. Any good ideas for a default value? |
Should really be called MAX_AMBIENT_TEMP I suppose to make more sense when you have a heated chamber. 50C should be safe for most cases. |
@AnHardt @thinkyhead Will try to test #2156 #2157 tonight... |
@thinkyhead |
@AnHardt @thinkyhead See OP for PR #2164 test 8,10,12 & 14. Almost there, but the test 14 failed because after M109, there is no Heating failed. |
@clefranc The thermometer shows 240°C. The heater_state is ether Conclusion: |
@AnHardt Your're right, I've used the default parameters. Using these catch test 14 with a Heating failed:
I wrongly assumed I should use the default protection for the test. Sorry for the confusion. I'll redo all test tomorrow. Is my values above correct? |
Strategy to tune (set up) the new test. 1.) Turn off THERMAL_PROTECTION_HOTENDS and THERMAL_PROTECTION_BED in Configuration.h. 2.) In Configuration_adv.h turn on the new functions by setting MAX_TEMP_OVERSTOOT_TIME to value different from 0. 3.) Turn on HEATER_STATE_DEBUG to see what's going on. 4.) Don't heat any heater but observe the output of HEATER_STATE_DEBUG on the serial console.
Temperature: 0 -> bed Now some noise:
5.) Find a value for TEMP_RAW_NOISE where the count stays between -2 and 2, than add a bit. 6.) Set TEMP_CONSEC_COUNT to a value the count NEVER can reach by noise. If set to low, you may get false positives. 7.) For MAX_AMBIENT_TEMPERATURE 50° is a good value. A extruder heater may not fall below this, placed above a working heated bed. 8.) To adjust MAX_THERMO_JUMP_AMOUNT take a look on your 9.) Tests
10.) Disable HEATER_STATE_DEBUG |
@AnHardt Here my parameters:
Doing regular heating, I can't get it to work without error:
|
@clefranc |
The bug in TEST 7 sounds familiar. At least I think I recall we had some other display issue where the display needed to initialize earlier, before the temperature protection started. Getting closer…! |
@thinkyhead Getting closer indeed. Thankfully @AnHardt is still patching his code, I'll be available to test again in 2 weeks... |
2 and 8 fail because a) there is no jump downwards to detect, b) the condition for failing is: "if the heater is full on the temperature shall not fall". The temperature can not fall. All in all #2231 again is not very satisfying to me. The 'jump' test is working well, is cheep and easy to set up, but does nothing what MIN/MAX-TEMP tests could not detect (except for the 25° sensors - and even there disconnected sensors during boot can not be detected). With the experience of #2231 i'll try to polish 'heater sanity check' and extend it to the bed. |
If it is full on it should rise, given enough delay. It may fall initially though, so this seems wrong. |
@nophead |
Well a bed like that is self limiting so doesn't need any firmware protection. The resistance of PCB beds increases with temperature so the maximum temperature is determined by the supply voltage. They are inherently safe unless you use a very high voltage supply. If you do then it will still rise when power is full on near the target temperature. I have some beds with resistors and they can get too hot so I use a thermal fuse to make them safe. I don't rely on firmware as the most likely failure is the SSR becoming shorted. On one of my machines I have a PCB bed with a 1mm thick aluminium sheet under the glass to spread the heat better. That has a very curious affect: When the power is full on it heats and then levels off well below the target and actually starts dropping a bit before heating again and reaching the target. This is all before the PWM kicks in, I can see the power is 100%. I only get this strange inflection with the aluminium sheet in place. It would certainly trip all the protection schemes that have been discussed so I prefer not to use any protection as it will just lead to false positives and become a nuisance. I think there are such a range of heater characteristics that it will be impossible to come up with an algorithm that doesn't give false positives in some situations. |
@nophead - "bed ... aluminium sheet ... curious effect" "impossible to come up with an algorithm that doesn't give false positives" -- I totally agree. |
Yes its very odd. My only theory is perhaps the PCB or the aluminium flexes and they achieve a better thermal contact at higher temperatures, although it is very consistent and a smooth graph. The temperature is measured on the underside of the PCB, where the traces are. I don't suppose the surface temperature has an inflection but it might have an increase in gradient. |
That is a reasonable hypothesis. If things flex, creating better contact, the "cold" aluminum would suck the heat out of the PCB during that conductivity transition. |
I'll have a look how #2231 looks when the failure condition is configurable - per thermometer. But will last for a while - projects are piling up. |
This is quite stale now. Please open a new issue if this is still existing in |
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
Here are the bed and hotend thermistors malfunction tests results.
Tests done using full thermal protection.
Please report errors, omissions, ask for more tests or information about results here.
EDIT 2015-05-13 - Added PR #2067 test
EDIT 2015-05-14 - Added PR #2077 bed test, will do hotend later
EDIT 2015-05-15 - Added PR #2077 hotend test
EDIT 2015-05-19 - Added PR #2115 bed test, will do hotend later
EDIT 2015-05-20 - Redo PR #2115 (right branch) for Test 8
EDIT 2015-05-22 - Added PR #2142 for Test 1,2,7 & 8
EDIT 2015-05-26 - Added PR #2164 for Test 8,10,12 & 14
EDIT 2015-06-03 - Added PR #2231 for Test 1, 2, 3, 4, 5, 6, 8 & 14
New addition in italic.
TEST 1 - Bed's thermistor disconnected before startup
PR :
#2055,#2067,#2077,#2142, #2231The bed shows 0°C current temperature at startup and the _Err: MINTEMP BED_is displayed on the LCD.
Host:
No warning or error displays on the console.LCD:
Going to the Prepare/Preaheat ABS/Preheat ABS Bed set the bed target temperature to 100°C on the LCD...Idem to hostConclusion:
When the bed's thermistor is disconnected before startup, the bed's current temperature displayed on the LCD is always 0°C and a _MINTEMP BED_ error is displayed both on the LCD and serial console.
When sending M140 command, or using LCD preheat, the bed's target temperature displayed on the LCD is 100°C. The bed is not heating and there is no warning or error displayed. After reconnecting the bed's thermistor, a thermal jump error is displayed both on the LCD and serial console. The board can be restarted with a M999 command to continue normal operation.The board needs to be reset to continue normal operation.THERMAL RUNAWAY RISK: none
TEST 2 - Bed's thermistor disconnected before startup AND thermistor table begins at 25°C
PR :
#2055,#2067,#2077,#2142, #2231The bed shows 25°C current temperature at startup.
Host:
LCD:
Conclusion:
When the bed's thermistor is disconnected before startup AND thermistor table begins at 25°C, the bed's current temperature displayed on the LCD is always 25°C. When sending M140 command, or using LCD preheat, the bed's target temperature displayed on the LCD is 100°C. The bed will heat indefinitely, or stops when proper command sent. After reconnecting the bed's thermistor, the bed stops heating and a thermal jump error is displayed both on the LCD and serial console.
The board can be restarted with a M999 command to continue normal operation.The board needs to be reset to continue normal operation.THERMAL RUNAWAY RISK: HIGH
TEST 3 - Bed's thermistor disconnected after heating begins
PR :
#2055,#2067,#2077,#2142, #2231The bed shows 25°C current temperature at startup.
Host:
LCD:
Going to the Prepare/Preaheat ABS/Preheat ABS Bed set the bed target temperature to 100°C on the LCD...Idem to hostConclusion:
When the bed's thermistor is disconnected after heating begins, the bed's current temperature displayed on the LCD freezes at the current temperature and its target temperature drops to 0°C. The bed stops heating and a thermal jump error is displayed both on the LCD and serial console.
The board can be restarted with a M999 command to continue normal operation.The board needs to be reset to continue normal operation.THERMAL RUNAWAY RISK: none
TEST 4 - Bed's thermistor disconnected after heating begins AND thermistor table begins at 25°C
PR :
#2055,#2067,#2077,#2142, #2231The bed shows 25°C current temperature at startup.
Host:
LCD:
Conclusion:
When the bed's thermistor is disconnected after heating begins AND thermistor table begins at 25°C, the bed's current temperature displayed on the LCD drops to 25°C and its target temperature drops to 0°C. The bed stops heating and a thermal jump error is displayed both on the LCD and serial console.
After reconnecting the bed's thermistor, the board can be restarted with a M999 command to continue normal operation.The board needs to be reset to continue normal operation.THERMAL RUNAWAY RISK: none
TEST 5 - Bed's thermistor disconnected after target temperature reached
PR :
#2055,#2067,#2077,#2142, #2231The bed shows 25°C current temperature at startup.
Host:
LCD:
Conclusion:
When the bed's thermistor is disconnected after target temperature is reached, the bed's current temperature drops to a random value and its target temperature drops to 0°C. The bed heating stops immediately and ~~a MINTEMP BED error is displayed both on the LCD and serial console a _thermal jump error_ is displayed both on the LCD and serial console.
After reconnecting the bed's thermistor, the board can be restarted with a M999 command to continue normal operation. The board needs to be reset to continue normal operation.THERMAL RUNAWAY RISK: none
TEST 6 - Bed's thermistor disconnected after target temperature reached AND thermistor table begins at 25°C
PR :
#2055,#2067,#2077,#2142, #2231The bed shows 25°C current temperature at startup.
Host:
LCD:
Conclusion:
When the bed's thermistor is disconnected after target temperature is reached AND thermistor table begins at 25°C, the current temperature displayed on the LCD drops to 25°C. The bed stops heating and a thermal jump error is displayed both on the LCD and serial console.
After reconnecting the bed's thermistor, the board can be restarted with a M999 command to continue normal operation.The board needs to be reset to continue normal operation.THERMAL RUNAWAY RISK: none
TEST 7 - Hotend's thermistor disconnected before startup
PR :
#2055,#2067,#2077, #2142The hotend #1 shows 0°C current temperature at startup, hotend #2 shows 25°C. The LCD status message shows Err: MINTEMP. The hotend #1 is used for LCD preheat tests purpose.The REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER doesn't start. The serial console is full of
_Error:MINTEMP triggered, system stopped! Heater_ID: 0_
_20:09:26.154 : Error:Printer halted. kill() called!_
Host:
Sending a M104 S240 don’t sets the hotend's target temperature to 240°C on the LCD...The hotend’s target temperature stays at 0°C…The hotend’s current temperature stays at 0°C…The hotend is not heating...LCD:
Going to the Prepare/Preaheat ABS/Preheat ABS 1 don’t set the hotend's target temperature to 240°C and bed's at 100°C...Idem to host for all heaters.LCD:
Going to the Prepare/Preaheat ABS/Preheat ABS All don’t set the hotends target temperature to 240°C and bed's at 100°C...Idem to host for all heaters.Conclusion:
When the hotend's thermistor is disconnected before startup, the LCD is blank and MINTEMP error is displayed indefinitely in the serial console.
the hotend's current temperature displayed on the LCD is always 0°C. When sending M104 command, or using LCD preheat, the hotend will not heat. New hotend’s target temperature and heating operates normally after the thermistor reconnection. The LCD status message shows Err: MINTEMP even after the hotend’s thermistor is reconnected or new commands sent.THERMAL RUNAWAY RISK: none + bug
TEST 8 - Hotend's thermistor disconnected before startup AND thermistor table begins at 25°C
PR :
#2055,#2067,#2077,#2115,#2142, #2231The hotend_s_ shows 25°C current temperature at startup. The hotend #1 is used for LCD preheat tests purpose.
Host:
Sending a M104 S240 sets the hotend's target temperature to 240°C on the LCD...
The hotend starts heating...
Hotend's current temperature stays at 25°C...
The hotend's target temperature drops to 0°C after the 16 seconds mark...The hotend stops heating...The LCD status message shows:Heating failed* The host displays:Error:Heating failed, system stopped! Heater_ID: 0Error:Printer halted. kill() called!* The board needs to be reset to accept new commands.The hotend heats indefinitely...
The hotend's thermistor is reconnected...
The hotend's current temperature is displayed...
The hotend's target temperature drops to 0°C...
The bed stops heating immediately...
The LCD status message shows _Err: THERMAL JUMP__..._
The serial console shows _Error:Thermal jump, system stopped! Heater_ID: bed__..._
The serial console shows _Error:Printer halted. kill() called!__._
LCD:
_LCD:_
Conclusion:
When the hotend's thermistor is disconnected before startup AND thermistor table begins at 25°C, the hotend's current temperature displayed on the LCD is always 25°C. When sending M104 command, or using LCD Preheat ABS 1 or LCD Preheat ABS 2, the hotend will heat indefinitely
until 16 seconds elapsed then all heaters are shutdown properly. The LCD status message Heating failed is then displayed. The board needs to be reset to continue normal operation.When using the LCD Preheat ABS All after a reset and before 16 seconds, none of the heaters are heating. The board freezes or reset itself.THERMAL RUNAWAY RISK: HIGH
TEST 9 - Hotend's thermistor disconnected after heating begins AND before 16 seconds elapsed
PR :
#2055,#2067,#2077, #2142The hotend shows 25°C current temperature at startup.
Host:
LCD:
LCD:
Conclusion:
When the hotend's thermistor is disconnected after heating begins AND before 16 seconds elapsed, the hotend's current temperature displayed on the LCD drops to 0°C and the hotend’s stops heating. New hotend’s target temperature and heating operates normally after the thermistor reconnection. The LCD status message shows Err: MINTEMP even after the hotend’s thermistor is reconnected or new commands sent.
THERMAL RUNAWAY RISK: none
TEST 10 - Hotend's thermistor disconnected after heating begins AND before 16 seconds elapsed AND thermistor table begins at 25°C
PR :
#2055,#2067,#2077, #2142The hotend_s_ shows 25°C current temperature at startup. The hotend #1 is used for LCD preheat tests purpose.
Host:
LCD:
_LCD:_
Conclusion:
When the hotend's thermistor is disconnected after heating begins AND before 16 seconds elapsed AND thermistor table begins at 25°C, the hotend's current temperature displayed on the LCD drops to 25°C. The hotend and bed stops heating at the 16 seconds mark. The LCD status message Heating failed is then displayed. The board can continue operation normally. When using the LCD Preheat ABS All, the faulted hotend's thermistor keeps its heater on indefinitely while the other hotend and bed reaches their target temperature. There is no warning or error displayed on both the LCD and the console.
THERMAL RUNAWAY RISK:
noneHIGHTEST 11 - Hotend's thermistor disconnected after heating begins AND after 16 seconds elapsed
PR :
#2055,#2067,#2077, #2142The hotend shows 25°C current temperature at startup.
Host:
LCD:
LCD:
Conclusion:
When the hotend's thermistor is disconnected after heating begins AND after 16 seconds elapsed, the hotend's current temperature displayed on the LCD drops to 0°C and the hotend’s stops heating. New hotend’s target temperature and heating operates normally after the thermistor reconnection. The LCD status message shows Err: MINTEMP even after the hotend’s thermistor is reconnected or new commands sent.
THERMAL RUNAWAY RISK: none
TEST 12 - Hotend's thermistor disconnected after heating begins AND after 16 seconds elapsed AND thermistor table begins at 25°C
PR :
#2055,#2067,#2077, #2142The hotend_s_ shows 25°C current temperature at startup. The hotend #1 is used for LCD preheat tests purpose.
Host:
The hotend continues heating...After 16 seconds, hotend stops heating...The LCD status message shows Heating failedLCD:
Idem to host._LCD:_
Conclusion:
When the hotend's thermistor is disconnected after heating begins AND after 16 seconds elapsed AND thermistor table begins at 25°C, the current temperature displayed on the LCD drops to 25°C.
After 16 seconds, all heaters stops heating and the LCD status message Heating failed is then displayed.All heaters stops heating and the LCD status message _Err: THERMAL JUMP_ is then displayed. The board can be restarted with a M999 command to continue normal operation.THERMAL RUNAWAY RISK: none
TEST 13 - Hotend's thermistor disconnected after target temperature reached
PR :
#2055,#2067,#2077, #2142The hotend shows 25°C current temperature at startup.
Host:
LCD:
LCD:
Conclusion:
When the hotend's thermistor is disconnected after target temperature is reached, the hotend's current temperature displayed on the LCD drops to 0°C and the hotend’s stops heating. New hotend’s target temperature and heating operates normally after thermistor reconnection. The LCD status message shows Err: MINTEMP even after the hotend’s thermistor is reconnected or new commands sent.
THERMAL RUNAWAY RISK: none
TEST 14 - Hotend's thermistor disconnected after target temperature reached AND thermistor table begins at 25°C
PR :
#2055,#2067,#2077,#2142, #2231The hotend_s_ shows 25°C current temperature at startup. The hotend #1 is used for LCD preheat tests purpose.
Host:
LCD:
Conclusion:
When the hotend's thermistor is disconnected after its target temperature is reached AND thermistor table begins at 25°C, the hotend's current temperature displayed on the LCD drops to a random value and its target temperature drops to 0°C. All heaters stops heating and a thermal jump error is displayed both on the LCD and serial console.
The board can be restarted with a M999 command to continue normal operation.The board needs to be reset to continue normal operation.THERMAL RUNAWAY RISK: none
See #2024 and #2025 for original issues.
The text was updated successfully, but these errors were encountered: