Hotend temp control
-
I am looking at setting up a mathematical model of how heat propagates from the heating element to the temperature sensor, based on the diffusion equation and Newton's law of cooling.
I don't know if I would bother modeling the relationship between the heater and sensor as anything more complex than a dead time. You could also add a first-order lag component to the sensing to account for the hot block conductivity and thermistor/tc time constant, but for this kind of hardware the sensor response is so much faster than the process heating/cooling rate (seconds vs minutes) that it's negligible from a control standpoint. Measure dead-time, and reduce heater power that many seconds before hitting the temp target, and preheat overshoot should be almost completely eliminated. THEN you kick on PID, with the law-of-cooling heat loss calibration being used to pre-set your integral term so you go straight to the correct power. Max preheat speed, no overshoot, just go straight to the target temp +/- a few degrees and the PID starts out pretty close to exactly dialed in.
I've given suggestions to the Smoothie and Redeem devs, you can read the basic writeup I made for Smoothie here: https://docs.google.com/document/d/16U3f0zCnfF7ZrIULSXhErqUoYj8u6mmENN2EbmX4loA/edit?usp=sharing but I'd recommend skipping ahead to page 9 to look at the heat-loss calibration and PID autotune algorithm improvements I proposed. Redeem is doing some of this stuff now. The Smoothie guys went a different direction.
-
Actually Id like to break the autotune/pid/predictive discussion out to a new thread as I do believe that in everything i've read including RCarlyle's doc just now that we neglect to take into account the major cause of heat loss whilst the printer is running…..
That is the amount of heat/energy required to heat the incoming filament from the ambient temperature to the nozzle temperature at whatever flow rate is being used. if I missed it i'm sorry.
Predictive temperature needs to take into account filament flow rate and ambient air temperature.
RC - (with a smile on face) not every has a slow heating hot end, i get from 9c to 170 in 52 seconds and from 162 to 170 in 13 seconds, rather than minutes -
Agreed with breaking out temp control discussion into a new thread. Have to point out real quick that filament melt power is only a few watts at most for a typical hot end. Whereas air loss is usually more like 10-20 watts depending on insulation and airflow. (This is less true for volcanos…)
-
Agreed with breaking out temp control discussion into a new thread. Have to point out real quick that filament melt power is only a few watts at most for a typical hot end. Whereas air loss is usually more like 10-20 watts depending on insulation and airflow. (This is less true for volcanos…)
hopefully the forum admins can split threads.
Maybe air loss is high for PLA fan cooled solutions running silly air flow however My setup has zero air flow pointed at the nozzle/heatblock and the cold end cooling is fully isolated from the hot end, so the only heat loss from air flow is as the print head moves through the air printing stuff.
This lack of air flow related heat loss becomes even less in general for ABS and heated enclosures, it would seem at this point that filament melt related losses start to rule the equation especially as you approach max flow rates.
on my Duet0.8.5
I'm currently printing some 200mm high things (but narrow thin) in PLA and have the print speed dialled down to 70mm/s and i'm watching the hot end temps bounce around plus/minus 1c from the set temp, yet if I slow down to 80% the temp varies by less than 0.2c
This seems to indicate the PID tuning could be further tweaked for the filament feed and ambient air temp which btw is less than 10c in my garage with the printer. -
Thread split out from the firmware priorities discussion
-
Thanks Tony.
David:
Can your proposed modelling deal with the various hot end combinations such as Aluminium/brass and Alu/SS being the two most common.? -
Aussiephil, what does your host software say the "steady state" heater power is keeping your hot end up to temp? Multiply that PWM duty cycle by your heater power and let us know what you get.
As for modeling, don't forget the time delay in the heater cartridge itself. That's the largest lag / dead time component. Generated heat has to get through the ceramic potting around the coil (slow) then through a steel jacket (not very fast) and then across what is primarily an air gap to get into the aluminum hot block (not very fast). A typical setscrew style cartridge clamp only gets line-contact between the hot block and heater. The E3Dv6 style split clamp is significantly better but I couldn't tell you whether it's three-line contact or what. Probably depends on the exact cartridge and bore diameter.
I have a special heater cartridge that contains an internal thermocouple, and in a setscrew-clamp style hotblock it consistently runs about 2.5C per watt higher temp than the hot block. That's 100C hotter during preheating. This is a non-negligible quantity of stored heat to consider in the model, if you really want to be accurate with the physics.
For practical purposes, the heat conductivity through the aluminum hot block itself is almost infinite compared to the cartridge-block interface and block-sensor interface.
-
, it would seem at this point that filament melt related losses start to rule the equation especially as you approach max flow rates.
The math doesn't support that.
Max flow rate of an E3Dv6 is about 12mm^3/sec.
ABS has a density of 1 g/cm^3, specific heat of 1.3 J/g-K
12/1000 = 0.012 g/sec
Say you're heating it up 200C just to make the numbers all nice:
0.0121.3200 = 3.12J/s, better known as a watt.
3.12watts go into actually melting it. I think you'll find the duty cycle of a 30w heater to be around 50% in those conditions, so about 1/5th of the available heat is being spent actually melting the filament.
-
Agreed w/ elmoret, although do the equations for 30mm/s^3 PLA through a Volcano, and it starts to be a pretty meaningful portion of the total.
For practical purposes, the way everybody in the community is handling melt power is:
- Average melt power requirement is dialed in by the PID integral term (along with air losses etc)
- Short-term variation in melt power requirement (eg accel/decel transient) is buffered by the heat capacity of the hot block (<1sec effects)
- The resulting small-scale temp changes, if they affect measured temp, are partially damped by the PID derivative term (1-3sec effects)
- Medium-term heat balance issues (eg due to infill/perimeter flow rate differences) are corrected by the PID integral term (3-20sec effects
This works very well for hot blocks with a large ratio of hot block heat capacity to filament melt power requirement. But I have seen quite a few people report control issues with very small hot ends and with Volcano type hot ends.
-
I was planning the predictive algorithm to include inputs and calibration factors for extrusion rate, and also for print cooling fan speed in case the cooling air blows on the heater block.
-
As for modeling, don't forget the time delay in the heater cartridge itself. That's the largest lag / dead time component. Generated heat has to get through the ceramic potting around the coil (slow) then through a steel jacket (not very fast) and then across what is primarily an air gap to get into the aluminum hot block (not very fast). A typical setscrew style cartridge clamp only gets line-contact between the hot block and heater. The E3Dv6 style split clamp is significantly better but I couldn't tell you whether it's three-line contact or what. Probably depends on the exact cartridge and bore diameter.
How about copper "grease" to eliminate/replace the air gap? I was thinking of this http://www.molyslip.co.uk/copaslip.php. It's primarily an anti seize product but has pretty good thermal conductivity and unlike "normal" thermal paste is good for up to 1,100 deg C.
-
How about copper "grease" to eliminate/replace the air gap? I was thinking of this http://www.molyslip.co.uk/copaslip.php. It's primarily an anti seize product but has pretty good thermal conductivity and unlike "normal" thermal paste is good for up to 1,100 deg C.
Might work but I wouldn't bet much on it. The datasheet says the base oil flash point is 243C, which means it will cook off over time and just leave the metal powder behind.
-
We used to use it a lot in a previous life on things like spark plug threads and between brake pads and calipers (not on the face of the pad of course), both of which get seriously hot. It worked well in situations where "normal" grease would burn off but admittedly as an anti seize compound, not specifically as a thermal transfer paste. When it was time to replace the spark plugs, if you looked at the threads when you removed them (which was easy as they didn't seize), they looked as if they were coated in copper. Maybe the base oil is just a carrier to get the metallic particles to where they are needed? I think I'll give it a go an a heater cartridge and see if it works. A simple test to check warm up time with and without should do it. Then see if the warm up time drops off in use.
-
I don't think warmup time will be super sensitive to the change, since the heater is outputting the same power and the hot block has the same heat capacity. Where you're likely to see a difference is in deadtime and overshoot.
Need to run it for a while to confirm whether the grease cooks out. I've tried thermal grease before and it was initially successful but eventually turned to powder and was worse than nothing.
-
Fairly redundant with the other document, but I found another little auto-tune "white paper" I wrote a couple years ago: https://docs.google.com/document/d/1NhgKmadb-GhqncekIlJEBUHKlc-PzJY42-hhr58QJ9I/edit?usp=sharing
This one has air-loss calibration and melt power auto-calibration.
(Yes, I've been trying to convince firmware devs to implement feed-forward temp control for years.)