-
-
Notifications
You must be signed in to change notification settings - Fork 19.4k
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
[FR] Improved MPC support for PTC hotends #27223
Comments
The E3D Revo heater graphs below illustrate my suggestion. You can see that the typical 20x6mm heater cartridge's power output is quite temperature independent. But the ceramic heater's output power changes much more. I use the K1 max ceramic heaters, they are even more temperature dependent, I found a factor of 3 in output power between room temperature and 225 degrees. |
MPC does not support ceramic heaters (ie PTC heaters) see #23751 (comment) for details |
Actually MPC works pretty well with PTC heaters even though it was not designed to. I have used it for ages with a TriangleLabs CHC. What does not work well is the original asymptotic autotune. The differential autotune should work with PTC hotends but I haven't tested it. New newer default autotune behaviour is to try asymptotic and if that gives obviously bad results use differential. With PTC I would advise going straight for Once tuned, I add a line like A nice feature to add to MPC would be to be able to tell MPC that the hotend is PTC and give a coefficient so it can automatically calculate power from temperature and also so that it defaults straight to differential tuning. |
Thanks for the clarification, I didn't know that, but from what I saw and measured I suspected this, so I raised this FR. Practically I have been using MPC with PTC heaters for some time, and found it results in much more stable temperature behavior than PID. Internally I assume some calculation will be wrong and the autotune is likely to produce some incorrect values, but in the end it works fine as long as I provide a heater power that is close to reality at the working temperature (around 235°C). Revo heater temperature coefficient: The needed math is quite simple: Rt = R23 * (1+α * (t - 23)) For example: I use a 60 Watt Creality K1 style heater, the temperature coefficient is much bigger. |
@rondlh If I code it will you test it? |
I will, no problem! |
Is your feature request related to a problem? Please describe.
Yes, MPC doesn't always work well for ceramic hotend heaters
Are you looking for hardware support?
No
Describe the feature you want
MPC (Predictive Model temperature control) generally works very well, especially with the common 6x20mm hotend heater cartridges.
These cartridges heating power is largely independent of the temperature they are at, but this is not the case with ceramic heaters.
For ceramic heaters the heating power is drastically reduced when the temperature increases.
I measured a ceramic heaters and found a start heating power of about 50 Watt at room temperature, but only about 24 Watt at 235 °C.
With MPC you need to provide the heater power, so I enter 24 Watt. This causes 2 issues:
Additional context
I believe the common 6x20mm hotend heaters use nichrome wire inside. Nichrome has a very low temperature coefficient α = 0.0002 / 1 °C. This means that a temperature increase of 100 °C only increases the electrical resistance by 2%.
I'm not sure what wire is used in ceramic heaters, but the temperature coefficient is much larger.
If the heater wire is a pure metal then the resistance should be linear (within reason) to the temperature, so only 2 points/measurents would be needed to calculate an estimation of the heater power at a given temperature.
The text was updated successfully, but these errors were encountered: