MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.16k stars 19.21k forks source link

Thermistors malfunction tests results #2066

Closed clefranc closed 8 years ago

clefranc commented 9 years ago

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 https://github.com/MarlinFirmware/Marlin/pull/2067 test EDIT 2015-05-14 - Added PR https://github.com/MarlinFirmware/Marlin/pull/2077 bed test, will do hotend later EDIT 2015-05-15 - Added PR https://github.com/MarlinFirmware/Marlin/pull/2077 hotend test EDIT 2015-05-19 - Added PR https://github.com/MarlinFirmware/Marlin/pull/2115 bed test, will do hotend later EDIT 2015-05-20 - Redo PR https://github.com/MarlinFirmware/Marlin/pull/2115 (right branch) for Test 8 EDIT 2015-05-22 - Added PR https://github.com/MarlinFirmware/Marlin/pull/2142 for Test 1,2,7 & 8 EDIT 2015-05-26 - Added PR https://github.com/MarlinFirmware/Marlin/pull/2164 for Test 8,10,12 & 14 EDIT 2015-06-03 - Added PR https://github.com/MarlinFirmware/Marlin/pull/2231 for Test 1, 2, 3, 4, 5, 6, 8 & 14

New addition in italic.

TEST 1 - Bed's thermistor disconnected before startup

PR : https://github.com/MarlinFirmware/Marlin/pull/2055, https://github.com/MarlinFirmware/Marlin/pull/2067, https://github.com/MarlinFirmware/Marlin/pull/2077, https://github.com/MarlinFirmware/Marlin/pull/2142, https://github.com/MarlinFirmware/Marlin/pull/2231

The bed shows 0°C current temperature at startup and the _Err: MINTEMP BED_is displayed on the LCD.

Host:

LCD:

Conclusion: 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 : https://github.com/MarlinFirmware/Marlin/pull/2055, https://github.com/MarlinFirmware/Marlin/pull/2067, https://github.com/MarlinFirmware/Marlin/pull/2077, https://github.com/MarlinFirmware/Marlin/pull/2142, https://github.com/MarlinFirmware/Marlin/pull/2231

The 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 : https://github.com/MarlinFirmware/Marlin/pull/2055, https://github.com/MarlinFirmware/Marlin/pull/2067, https://github.com/MarlinFirmware/Marlin/pull/2077, https://github.com/MarlinFirmware/Marlin/pull/2142, https://github.com/MarlinFirmware/Marlin/pull/2231

The bed shows 25°C current temperature at startup.

Host:

LCD:

Conclusion: 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 : https://github.com/MarlinFirmware/Marlin/pull/2055, https://github.com/MarlinFirmware/Marlin/pull/2067, https://github.com/MarlinFirmware/Marlin/pull/2077, https://github.com/MarlinFirmware/Marlin/pull/2142, https://github.com/MarlinFirmware/Marlin/pull/2231

The 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 : https://github.com/MarlinFirmware/Marlin/pull/2055, https://github.com/MarlinFirmware/Marlin/pull/2067, https://github.com/MarlinFirmware/Marlin/pull/2077, https://github.com/MarlinFirmware/Marlin/pull/2142, https://github.com/MarlinFirmware/Marlin/pull/2231

The 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 : https://github.com/MarlinFirmware/Marlin/pull/2055, https://github.com/MarlinFirmware/Marlin/pull/2067, https://github.com/MarlinFirmware/Marlin/pull/2077, https://github.com/MarlinFirmware/Marlin/pull/2142, https://github.com/MarlinFirmware/Marlin/pull/2231

The 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 : https://github.com/MarlinFirmware/Marlin/pull/2055, https://github.com/MarlinFirmware/Marlin/pull/2067, https://github.com/MarlinFirmware/Marlin/pull/2077, https://github.com/MarlinFirmware/Marlin/pull/2142

The 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_SMARTCONTROLLER 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:

LCD:

LCD:

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 : https://github.com/MarlinFirmware/Marlin/pull/2055, https://github.com/MarlinFirmware/Marlin/pull/2067, https://github.com/MarlinFirmware/Marlin/pull/2077, https://github.com/MarlinFirmware/Marlin/pull/2115, https://github.com/MarlinFirmware/Marlin/pull/2142, https://github.com/MarlinFirmware/Marlin/pull/2231

The hotends 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 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 : https://github.com/MarlinFirmware/Marlin/pull/2055, https://github.com/MarlinFirmware/Marlin/pull/2067, https://github.com/MarlinFirmware/Marlin/pull/2077, https://github.com/MarlinFirmware/Marlin/pull/2142

The 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 : https://github.com/MarlinFirmware/Marlin/pull/2055, https://github.com/MarlinFirmware/Marlin/pull/2067, https://github.com/MarlinFirmware/Marlin/pull/2077, https://github.com/MarlinFirmware/Marlin/pull/2142

The hotends 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: none HIGH


TEST 11 - Hotend's thermistor disconnected after heating begins AND after 16 seconds elapsed

PR : https://github.com/MarlinFirmware/Marlin/pull/2055, https://github.com/MarlinFirmware/Marlin/pull/2067, https://github.com/MarlinFirmware/Marlin/pull/2077, https://github.com/MarlinFirmware/Marlin/pull/2142

The 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 : https://github.com/MarlinFirmware/Marlin/pull/2055, https://github.com/MarlinFirmware/Marlin/pull/2067, https://github.com/MarlinFirmware/Marlin/pull/2077, https://github.com/MarlinFirmware/Marlin/pull/2142

The hotends 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 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 : https://github.com/MarlinFirmware/Marlin/pull/2055, https://github.com/MarlinFirmware/Marlin/pull/2067, https://github.com/MarlinFirmware/Marlin/pull/2077, https://github.com/MarlinFirmware/Marlin/pull/2142

The 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 : https://github.com/MarlinFirmware/Marlin/pull/2055, https://github.com/MarlinFirmware/Marlin/pull/2067, https://github.com/MarlinFirmware/Marlin/pull/2077, https://github.com/MarlinFirmware/Marlin/pull/2142, https://github.com/MarlinFirmware/Marlin/pull/2231

The hotends 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 https://github.com/MarlinFirmware/Marlin/issues/2024 and https://github.com/MarlinFirmware/Marlin/issues/2025 for original issues.

nophead commented 9 years ago

Tl;DR but basically thermistor tables should start at 0 or at the very least below MINTEMP.

Natealus commented 9 years ago

Talk about through testing procedure. ;) Nice work there. :+1: :+1:

clefranc commented 9 years ago

@nophead I totally agree. Unfortunately, I have a 500°C thermistor which have a very high resistance around room temperature. So the "official" thermistor table from the hotend vendor start at 25°C. Someone has already redone the temp table using a thermocouple and all the stuff: same result. The ADC will read 1023 occasionally, enough to trigger the MINTEMP and annoy the user, hence the vendor provides a table that start at 25°C.

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.

nophead commented 9 years ago

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.

thinkyhead commented 9 years ago

The LCD status message parameters: is then displayed.

2067

thinkyhead commented 9 years ago

The bed doesn't appears in the Manual Control tab!

So that's the host, correct? I see that it does still show up in the LCD menu under Control > Temperature > Bed

thinkyhead commented 9 years ago

TEST 12

This should be slightly improved by #2067, as it keeps the test alive while the temperature is still low enough.

thinkyhead commented 9 years ago

TEST 4

By my reading of the code this should throw a Runaway error after THERMAL_PROTECTION_BED_PERIOD seconds transpires. The test is as follows:

// If the temperature is over the target (-hysteresis) restart the timer
if (temperature >= tr_target_temperature[heater_index] - hysteresis_degc)
  *timer = millis();
// If the timer goes too long without a reset, trigger shutdown
else if (millis() > *timer + period_seconds * 1000UL)
  *state = TRRunaway;
clefranc commented 9 years ago

@thinkyhead Do I update the OP with the new PR or post a new comment?

thinkyhead commented 9 years ago

@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.

AnHardt commented 9 years ago

Is there a workaround?

a) Set MINTEMP well above 25 degree. Preheat the nozzle with a lighter to avoid MINTEMP-ERRORS during startup. b) Use an other thermistor. c) if you really need the higher temperatures - how about a thermocoupler (MAX6675 or AD595 )

thinkyhead commented 9 years ago

@AnHardt The ultimate workaround is to keep augmenting the heater sanity check. The current routines to catch thermal problems are:

What is missing?

nophead commented 9 years ago

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.

Wurstnase commented 9 years ago

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.

AnHardt commented 9 years ago

'Workaround' implies to me - a not so perfect solution to make it work - somehow. Currently working on a PR what checks for sudden temperature jumps.

clefranc commented 9 years ago

@thinkyhead Updated the OP with https://github.com/MarlinFirmware/Marlin/pull/2067

KiteLab commented 9 years ago

@clefranc Does this mean - nothing has changed? Or didn't you uses siekeout everywhere?

clefranc commented 9 years ago

@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.

AnHardt commented 9 years ago

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. I will have an other try later on the floating point level. (too difficult to concentrate when angry)

thinkyhead commented 9 years ago

@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.

nophead commented 9 years ago

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.

grob6000 commented 9 years ago

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? Maybe a couple of options: (a) only check when heater is enabled (not ideal - worth identifying errors even when they're off!) (b) have a threshold (say 60C, yet another config parameter!) above which you trigger (if heater off and temp not down then kill), but below this only (if heater off and temp up then kill). I'm a fan of doing temperature stuff in temperature space - would make the whole MAX5564 thing not an issue, not to mention any other temperature sources included later down the track... Is it worth doing an FMEA table for this stuff, make sure we've chosen a sane solution?

thinkyhead commented 9 years ago

2077 looks good - and simple. I'm almost inspired enough to add BED MINTEMP and round out the whole thing…

nophead commented 9 years ago

@grob6000 the pseudo code I posted caters for that condition explicitly with this line:

              initial_temp = max(current_temp(), MAX_ROOM_TEMP);
AnHardt commented 9 years ago

When i tried to implement it yesterday, my firs note was: // MAX_ROOM_TEMP is critical here. For sure we don't want false positives. // One thermometer more, for the 'chamber temperature', would be fine.

Some ideas pop on simultaneously , for different reasons.

Any good ideas for a default value?

nophead commented 9 years ago

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.

grob6000 commented 9 years ago

Ah yes, thanks @nophead. Yup, 50C sounds good to me - I run my chamber at 40C at the moment, and besides, somebody who cares enough to add a chamber heater can probably configure the value in config_adv. :)

thinkyhead commented 9 years ago

when the printer is sitting at ambient, the heater is off, the temperature will stay constant (won't decrease) - would this trigger the fault?

Only if it's asserted that the heater must decrease when the heater is off. If you think about it, it's enough to just check that it doesn't increase when the heater is off. Standing still should be allowed in all cases, because it's a nonsense case for a heater that's on — and if the thermistor is disconnected and this is why there is no change, well that's okay because the heater is off.

Leaving these bad conditions:

And these good conditions:

AnHardt commented 9 years ago

@thinkyhead Good point. This way we don't need a configurable parameter for MAX_AMBIENT_TEMP.

During tests i had overshoot. Heater was on, is now off, but temperature rises for a while. It's not as simple as hoped for.

AnHardt commented 9 years ago

Experimenting now with ~a delay longer delays.

clefranc commented 9 years ago

@thinkyhead @AnHardt Sorry for the delay. I've just expanded the hotend test to use LCD Prepare/Preheat ABS/Preheat ABS All. Previous tests were done only with Preheat ABS 1. I've then discovered that some tests that were at thermal runaway risk none are indeed HIGH when using Preheat ABS All.

The thermal runaway protection seems to be ignored when one of the hotend's temperature is rising and the other is not.

Very interesting...

grob6000 commented 9 years ago

With the heater off & temp going up check: as long as we still pickup mintemp/maxtemp for the thermistor electrical faults, this should be fine I think.

nophead commented 9 years ago

@AnHardt, The algorithm I proposed has a delay because even if it doesn't overshoot it takes time to start rising or falling when the heater state changes. It it didn't, control would be trivial.

@thinkyhead,

Only if it's asserted that the heater must decrease when the heater is off. If you think about it, it's enough to just check that it doesn't increase when the heater is off.

No that isn't sufficient because the room temperature can fluctuate up and down a little while the heater is off. That is why I had MAX_ROOM_TEMP to not require it to fall when switched off below that temperature. In normal use it will be much hotter when switched off but if somebody aborted heating immediately you could get a false trigger.

grob6000 commented 9 years ago

Good point - hadn't thought of that. Something like my heated chamber would trip pretty quickly - the hotend temperature would gradually increase as the chamber temp increases, even though the hotend heater is off. I would like that this didn't trigger a temp fault...

Perhaps MAX_ROOM_TEMP threshold for the (heater off & not dropping --> kill) logic is just the best idea.

And could we use something like "MAX_ENCLOSURE_TEMP" or "MAX_CHAMBER_TEMP" instead of "ROOM" or "AMBIENT": these imply outside the printer in my mind...

nophead commented 9 years ago

A lot of printers have no inside or outside if they don't have an enclosure or chamber. Perhaps quiescent?

thinkyhead commented 9 years ago

the room temperature can fluctuate up and down a little while the heater is off

Well, of course you could ignore normal slow fluctuations. I think the key is to look for rapid rises within obvious ranges for a heater that wants to heat up fast. Treat any changes under "2 degrees per 10 seconds" as ambient, etc.

nophead commented 9 years ago

Yes but if you insisted it goes down when switched off near room temp just as your central heating switches on you might get a false alarm as it might slowly increase for a long time. Hence the reason for not requiring it to go down when switched off below MAX_ROOM_TEMP.

thinkyhead commented 9 years ago

Perhaps MAX_ROOM_TEMP threshold for the (heater off & not dropping --> kill) logic is just the best idea.

Hence the reason for not requiring it to go down when switched off below MAX_ROOM_TEMP.

That's not a bad idea to do also. The chances of a hot-end sitting below —say 80°C — for any period of time in normal usage are very slim. If a heater was left on at that temperature for a week it probably would be ok, but possibly messy, certainly costly. Better to switch it off.

nophead commented 9 years ago

Well that is why I suggested 50C as nobody has a room that hot and a hot end at 50C indefinitely would cause no problems at all, you could touch it.

clefranc commented 9 years ago

When I do a Preheat ABS All before 16 seconds after a board reset, I get an Err: MAXTEMP BED.

Same thing for PLA.

AnHardt commented 9 years ago

Not watching all heaters withPreheat_X_All is addressed by #2134.

AnHardt commented 9 years ago

@clefranc

When I do a Preheat ABS All before 16 seconds after a board reset, I get an Err: MAXTEMP BED.

In which patch combination, with which sensors? Can't reproduce it. Immediately or after a time?

clefranc commented 9 years ago

@AnHardt

In which patch combination

It do this with the latests dev.

with which sensors?

Both my printer have 2 hotends, 1 bed.

Immediately or after a time?

Like I said, just after a reset and before 16 seconds mark. After 16 seconds, all is going well.

thinkyhead commented 9 years ago

@clefranc How weird. The bed doesn't use the 16 second timer.

clefranc commented 9 years ago

@thinkyhead Is there a reason the bed's thermistor doesn't use the WATCH_TEMP_PERIOD?

It'll prevent #2066 test 2.

thinkyhead commented 9 years ago

Is there a reason the bed's thermistor doesn't use the WATCH_TEMP_PERIOD?

@clefranc So far it just hasn't been implemented. But when it is (maybe I'll try it now) the bed should have its own watch parameters.

AnHardt commented 9 years ago

Try of an analysis.

  1. Not connected bed sensor could be caught by BED_MINTEMP during startup if it would be implemented. Reconnect could be caught by 'jump'. MIN and MAX temp are caught in the interrupt. kill() is not perfect. Currently until kill() has shut down the interrupt we have enough calls to killl() to get out of memory, see a reset and may lose communication..
  2. Currently can not be caught by the implemented methods. Maybe the modified NopHead algorithm I proposed in #2066 could catch this. I'm still working on that. Rising-constant-falling seems to work now - but i'm not ready to publish for now.
  3. BED_MINTEMP should work. Jump too.
  4. Jump will work if temperature has rised enough before disconnecting. Modified NopHed could detect not rising temperature while heating.
  5. Jump or Bed_MINTEMP will work.
  6. Can be caught by jump.
  7. MINTEMP. See 1.
  8. THERMAL_PROTECTION or mod. NopHead. Preheat_X_All now checks all heaters (only E3 before). I have no explanation for the resets.
  9. MINTEMP.
  10. THERMAL_PROTECTION works - but did not call kill() before.
  11. MINTEMP
  12. THERMAL_PROTECTION and jump will work.
  13. MINTEMP
  14. Jump will work.

Conclusion: BED_MINTEMP would be good. 'Jump' catches a lot when implemented. Maybe to much - when adjusted too sensitive. Calling kill() from interrupt is problematic. 'Modified NopHead' isn't ready now. Maybe I'll get it to work. 25°C sensors are not a good idea - now.

I'm Away for the weekend. More during the next week.

thinkyhead commented 9 years ago
  1. So, set a "kill" flag, and call it from the main loop instead? Or, better, set an iAmSoKild flag in "kill" so it just returns after the first call.
  2. Can be caught by the watching period method once that is added.

Seems 7 and 10 are the trickiest.

AnHardt commented 9 years ago

Test 7: is the multiple calls of kill(). Interrupts work before display is initialized. My tests say - it's ok with #2156 #2157 Test 10: Was the not calling kill(). Fixed with #2115 (call kill(). #2134 (start_watching_heater() for all hotends).

thinkyhead commented 9 years ago

Test 2 is still flagged. Do the latest changes (bed mintemp, etc.) help with that one?