-
-
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
Printer increases temp to 325C when set to 235C on second layer WITH thermal runaway enabled #11643
Comments
Try a different slicer and see if it makes any difference. |
I can. I also I have the G code and my configuration attached in that zip if anyone feels like trying to run the gcode dry. I actually checked the raw gcode and the values for the M140 are correct. |
So here's an additional question. How is it getting to 325 when my max hotend temp is set to 300? (I'm using an e3d pt100) To my understanding the thermal runaway should be triggered way before it gets to 325. |
You're right that it makes no sense. You might want to rebuild and re-flash Marlin to see if it corrects itself. Also, |
Well the reason I posted is that I was having the issue with the original release of 1.1.9 so I updated to the latest hoping it would be resolved. Alas the rest is history. Also I always do the M502 M500 thing when I re-flash. |
Temperature table 20 is relatively rarely used - compared to the normal thermistors; so not very well tested. Happy macro expanding. When 20 ist used together with normal thermistors the scope of the compare-macros becomes important. |
Maybe I got it. Logically this has to be applied for all heaters. |
I did not, but have an other suspicion what i'm investigating. |
If we have PIDTEMP and the current temperature is already high enough for the PID to decide, we don't need any further heat, so adjusting the soft_pwm_amount to 0, we can't get a max_temp_error. If the heater got stuck ON, we have a problem. Switching off the power supply, by kill(), would have been the last chance to stop the heater automatically. @thinkyhead |
Booting with a stuck heater is still undetected because of the changes needed for the fu**ing "high temperature thermistors". |
See further comments in #11718 (comment) |
The patches have been merged, so try the bugfix branch to see if it's behaving better now. |
Probably just preserving existing behavior from long, long ago. We can follow the Git Blame history to trace back to the first commit where this was used and see what the justification was at that time. |
Since yesterday i can. See the links one comment later. Modify the interesting line of code and commit it locally. At least worked her for the two cases i tried to look up yesterday. EDIT: Sorry meaned gitk all the time. |
I suspect the whole reason for using the PWM instead of the target temp is that the temp used to be a 4 byte float. Now it's a 16-bit integer, so using the PWM is no longer an optimization. So, we're all good! |
Would you please follow my links. |
@thinkyhead |
Crap I lied it still starts to increase on the second layer. |
I don't understand PID scaling very well, but it seems that we should throw an error and have the printer shut down if the temperature of the nozzle goes over the In the meantime, it's probably best to avoid using |
Next layer or part cooling fan?
The problemIt needs energy to melt filament. To heat the filament the heater block around the nozzle is cooled down. The cooling takes some time (dT1) to reach the temp. sensor. Now the PID can begin to work against that cooling and gives some more power to the heater. The additional heat starts creeping thru the heater bock. After some time (dT2) the heat reaches the nozzle and after an other time (dT3) the heat reaches the sensor. (dT2 can be larger than dT3 or the other way around. ) Magnitude for the dTs is usually ~seconds, depending on material, mass, distances and coupling (f.e. direct, thermal compound or air).
The ideaAvoid oscillations of the nozzles temperature by putting in the melt energy early, so the nozzle does not have to cool down until the energy is provided by the PID. The code #if ENABLED(PID_EXTRUSION_SCALING)
cTerm[HOTEND_INDEX] = 0; // cTerm[] is only used for debug output
if (_HOTEND_TEST) { // Is this the right heater?
const long e_position = stepper.position(E_AXIS);
if (e_position > last_e_position) {
lpq[lpq_ptr] = e_position - last_e_position; // amount of planed! extrusion
// since the last call ~1/5 second before
last_e_position = e_position;
}
else
lpq[lpq_ptr] = 0;
if (++lpq_ptr >= lpq_len) lpq_ptr = 0; //lpw_len is a delay in ~1/5 second
cTerm[HOTEND_INDEX] = (lpq[lpq_ptr] * planner.steps_to_mm[E_AXIS]) * PID_PARAM(Kc, HOTEND_INDEX);
pid_output += cTerm[HOTEND_INDEX]; // PID_output is adjusted directly. No chance to throw
// errors based on MAX_TEMP. Array could be omitted.
}
#endif // PID_EXTRUSION_SCALING What is the code doing?Determine how much filament is planned to extrude. Apply the energy delayed by some fixed time. What's wrong with the code?The code tries to delay the additional melt energy by some fix time. Conclusion:Can't work as expected! What's needed?Provide more energy a fixed time before the filament is melted, delayed by the amount of time in the planner buffer. If the sum of these times becomes negative, apply the energy immediately. This will be to late but hopefully faster than waiting for the temperature drop. SuggestionDrop for now.
This is already fixed now. |
Sorry let me clarify my previous comment. This is what should happen: This is what actually happens |
@AnHardt 2nd we would need a much much much larger planner buffer so that we could actually compensate for temperature multiple seconds in advance of E movements. This method is likely impossible for 8 bit boards since they are so starved for memory as it is. However with the advent of 32 bit boards this could actually become a possibility. |
I still don't understand. Please cite the g-code at the layer change. What else happens when z is lifted and the temperature is lowered? |
Please also append the config files and the used pins file. |
@AnHardt The right target temperature is displayed but the actual continues to rise until it resets. |
Fan is on D9 |
Yes. Your changes should not cause the problem. Will dive into pins_RAMPS.h tomorrow (Don't drink and debug - 2 am here). Would be a great help for me if you coud state where you connected fan and heater and if the fan works - to eliminate a few dozen cases. Could also be a physical short between them. |
As I said earlier |
Bingo! |
As a workaround you could try to edit pins_RAMPS.h from
to
And connect the heater to D7. |
Good point hopefully I'll have a chance to look into it tonight. |
FYI - I discovered my problem and it turns out that once again I am my own worst enemy. What ended up happening is that I had a few wires switched around. Because I use 24 gauge ethernet cable for my wiring I use two pairs for the hotend heater but only one pair for the layer cooling fan. I some how made a bozo move and wired one hotend pair and the fan to the E0 mosfet while connecting the second hotend pair to the fan mosfet. So in the end it was entirely my fault although as a result we did fix a critical bug in the thermal runaway code so I feel good about that. |
Thanks for the update! |
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. |
Description
Printer increases temperature to 325C on the second layer when it is set at 235C
This occurs on the latest stable branch downloaded 2018-08-24
This happened to me first on the initial release of 1.1.9 so I downloaded the latest revision from the stable branch yesterday and tried it again with the same result. I only noticed originally because the filament which was orange was becoming more neon yellow and started stringing like crazy. I'm so glad I stayed to watch the first couple layers.
Steps to Reproduce
Expected behavior: [What you expect to happen]
Printer switches from 240C (first layer temp) to 235C
Actual behavior: [What actually happens]
Printer increases to 325C while oddly still showing that the set point is 235C on the screen.
Additional Information
I'll attach a picture of the LCD screen if desired showing that it still thinks it's set to 235 although the temp reading goes up to 325C also I do not have thermal runaway disabled.
MarlinIssueFiles.zip
The text was updated successfully, but these errors were encountered: