Heater Control
-
I was able to get my E3D V6 heater to auto tune after reducing the max PWM level to 0.3 and setting the max temp to 260 so:
M303 H1 P0.3 S260 yielded:M307 H1
Heater 1 model: gain 732.3, time constant 176.9, dead time 4.1, max PWM 1.00, in use: yes, mode: PID
Setpoint change: P10.6, I0.06, D30.2
Load change: P10.6, I1.30, D30.2I also got this message:
Warning: Heater 1 appears to be over-powered and a fire risk! If left on at full power, its temperature is predicted to reach 752C.
Auto tune heater 1 with PWM=0.30 completed in 500 sec, maximum temperature reached 228.2C
Use M307 H1 to see the resultSounds scary, but I realize it is a pretty powerful heater. I'm running the 12V E3D cartridge at 15VDC.
Now, I try to auto tune my bed heater (Rostock Max V2 12V heater, with an aluminum heat spreader from Trick Laser under the stock glass plate). I tried a few settings but none seemed to work.
The last one I tried was:
M303 H0 P1.0 S140
And I got this message about 30 seconds later:
Auto tune cancelled because temperature is not increasingI realize the bed heater is underpowered and has a lot of thermal capacity with the heat spreader. Any way to increase the timeout for temperature increase so I can get it to auto tune?
EDIT – I think I may have found a solution!! I sent:
M307 B0 H0 D60
to set the dead time to 60 seconds. Curiously, it didn't actually show up as received on the DWC interface, like the other commands seem to do... but it set it nonetheless.When I ran:
M307 H0, it seemed to have updated the dead time to 60.Tuning the bed heater now....
-
A 12v/40w heater would produce 62.5w at 15v. I'd predict that to reach around 650C based on my experience, so that model is not too far off from the truth.
-
I have further updated the wiki page on tuning, including replacing "a few minutes" by "between five and ten minutes".
Aussiephil, if the temperature overshoots the maximum you specified during tuning then you need to do exactly what the message says, i.e. reduce P or increase S in the tuning command. As a very rough guide, a 30W heater run at its rated voltage is good with P=0.5 and the PWM required is inversely proportional to heating power. Your heater is 60W so I would expect a P value of around 0.25 to work. However, if the Dyzend hot end has lower heat loss to the environment than the E3Dv6 has, you may need to further reduce P to 0.2 or even 0.15. Also, if you are running your heater at more than its rated voltage, then you will need to reduce P some more, because heater power goes as the square of the voltage.
I agree that auto tuning a powerful hot end is not as simple as it should be, and in the longer term I will change the tuning mechanism to use both a heating phase and a cooling phase, so that the PWM used is much less critical. But I don't have time to work through the maths and implement that right now; so I have released 1.15 with the existing tuning mechanism.
-
Now I'm getting H1 temperature faults. First one: part blower fans cooled the hotend too much while it started printing the second set of a top layer on the printed part, didn't fault on the larger earlier one. To test to see if it was the fans, I turned on them on with the nozzle next to the bed, sure enough the part cooling fans cooled it off enough for it to fault. Temporary fix: removed one of the blowers. They've always dropped the temp, but it always recovered.
Then it did it again when the temp was dropped 5C after the first layer was done. Printing PETG, first layer 255C, after that 250C. No problems with PLA, which used 198C first layer, 195C after.
Gone back to 1.14 where it never had this problem.
Genuine 1.75mm E3DV6 with a 24vdc 40watt heater. Heatblock not insulated. Slic3r 1.30-dev.
-
Stephen, are you running the 1.15 release or one of the release candidates? I increased the allowed temperature variation from 5 to 8C in the later versions.
-
Quick update…
Using the 1.15 rc3 firmware, I was able to tune my heated bed after increasing the dead time parameter. I did 4 tuning runs on the hot end and 2 runs on the bed. They gave very consistent results, which I averaged and put into the M307 lines in my config.g file.
I now have the hot end and bed calibrated and they seem to work really well! Overshoot on the both the bed and hot end is maybe 0.5 deg C max. Once stabilized, they stay very consistent.
I also updated to the latest release 1.15 and DWC and webserver files.
Good job dc42 and chrishamm!
-
Stephen, are you running the 1.15 release or one of the release candidates? I increased the allowed temperature variation from 5 to 8C in the later versions.
It was the 1.15 release. Upgraded it before switching the filament to PETG and the hotend heated up fine for the swap.
-
Stephen, are you running the 1.15 release or one of the release candidates? I increased the allowed temperature variation from 5 to 8C in the later versions.
It was the 1.15 release. Upgraded it before switching the filament to PETG and the hotend heated up fine for the swap.
How much temperature drop do the blowers cause then?
-
I have had a couple of reports of heat creep still occurring with the 1.15 release firmware for the wired Duets. I suspect this was being caused by spikes in the temperature sensor reading, so I have built a 1.15a binary to address this possibility. The Duet WiFi binary is here https://dl.dropboxusercontent.com/u/19369680/DuetWiFiFirmware.bin. Also in this version I have further increased the maximum allowed temperature deviation in the steady state before a fault is reported to 10C, which I hope will help with StephenRC's issue when the blower fans are turned on.
-
Stephen, are you running the 1.15 release or one of the release candidates? I increased the allowed temperature variation from 5 to 8C in the later versions.
It was the 1.15 release. Upgraded it before switching the filament to PETG and the hotend heated up fine for the swap.
How much temperature drop do the blowers cause then?
Put the second blower back on and ran the tests:
Bed heater off.With 1.14 with no M301, set to 250C, Blowers at 100%, nozzle at bed, it dropped to 244.8C and held there +- a few tenths.
With 1.15 with M307 H1 A483.6 C120.3 D4.8, Blowers at 100%, nozzle at bed, it dropped to 242.1C, then increased very, very slowly.
Did another auto-tune with M303 H1 P0.2 S250 after it cooled down, and got M307 H1 A472.2 C119.1 D4.9, Blowers at 100%, nozzle at bed, it dropped to 242.9C, then increased very, very slowly.
Just realized I never mentioned that this is on a Duet 0.8.5.
-
Thanks, Stephen, now I know what I am dealing with. Thank you for your patience.
I found that even with the 1.15a release, you could still get temperature creep if you have a noisy thermistor channel and were using legacy PID parameters. I've fixed that in release 1.15b, available on github at https://github.com/dc42/RepRapFirmware/tree/dev/Release.
-
I printed that part again with 1.15a. Printing PETG at 250C, when the blowers came on the first time it dropped to 243.7C, it increased a few tenths of a C while printing the first solid top layer layer and it didn't get back to 250C until they turned off. The second time it dropped to 242.7C, and also the temp didn't get back to 250C until they turned off.
-
Update running 1.15b – pressing the PanelDue reset button fixes it temporarily. When I power cycle, the PanelDue gets stuck on "Starting up" and I have to press the reset button to get it to connect.
Found a text error in the gcode console:
11:01:20 PM
M303
Heater 1 tuning succeeded, use M207 H1 to see resultOn picking P values… would it be possible to auto-tune that too? Turn on the heater at 100% power, wait through the dead time, measure the heat-up curve slope, and ballpark a P value that gives a reasonable slope? Then cool back down and restart. Yeah, that takes considerably longer, but one longer run that works 99% of the time is preferable than needing multiple runs to dial in a good number, particularly on beds where there is more variability than hot ends.
-
By the way, I REALLY appreciate the "heater appears to be overpowered" warning. It's going to lead to some good conversations and end-user concern. Really emphasizes the need for thermal fuses on high-power beds, for example. Auto-tune says my bed can hit 258C, which would be a pretty big problem since it's on ABS mounts. I do have a thermal fuse on it though.
-
Update running 1.15b – pressing the PanelDue reset button fixes it temporarily. When I power cycle, the PanelDue gets stuck on "Starting up" and I have to press the reset button to get it to connect.
Found a text error in the gcode console:
11:01:20 PM
M303
Heater 1 tuning succeeded, use M207 H1 to see resultOn picking P values… would it be possible to auto-tune that too? Turn on the heater at 100% power, wait through the dead time, measure the heat-up curve slope, and ballpark a P value that gives a reasonable slope? Then cool back down and restart. Yeah, that takes considerably longer, but one longer run that works 99% of the time is preferable than needing multiple runs to dial in a good number, particularly on beds where there is more variability than hot ends.
In future I plan to use a heating phase, a cooling phase, and then a steady temperature phase. This will be somewhat faster than the approach you suggest. But the maths is more complex and I need to work that out; also I want to resolve any issues with temperature control first.
-
dc42 1.15c firmware. My first attempts at auto tuning the hot end on a printer that has been running this hotend (E3D v6 with 12V cartridge) for several years without fail.
I started with P0.5 and that overshot (S240) P0.4 and P0.3 the same. Then P0.2 gave this:
M303 H1 P0.2 S240
1:36:48 PMWarning: Heater 1 appears to be over-powered and a fire risk! If left on at full power, its temperature is predicted to reach 882C.
Auto tune heater 1 with PWM=0.20 completed in 824 sec, maximum temperature reached 195.5C
Use M307 H1 to see the resultThis is a stock E3D v6 setup with a stock 12V supply putting out 12.45VDC. Any suggestions or explanations appreciated.
cheers,
Michael -
Those results don't sound right. What M307 parameters did it return? Can you measure the resistance of the heater cartridge? Do you have any thermal insulation on your hot end?
I believe E3D changed the power of the heaters they ship from 40W to 25W some time ago.
-
This is a 40W cartridge that measures 3.6Ω, no insulation. Unfortunately, I did not check M307.
I just reran it after waiting for it to cool to room temperature as:
M303 H1 P0.25 S250Temperature increased gradually (I have a screen shot) and then get this message:
Auto tune of heater 1 with P=0.25 S=250.0 cancelled because temperature limit exceeded. Use lower P or higher S in m303 command.I did an M307 H1:
Heater 1 model: gain 862.3, time constant 296.2, dead time 6.9, max PWM 1.00, in use: yes, mode: PID
Setpoint change: P8.9, I0.03, D42.9
Load change: P8.9, I0.65, D42.9I'll rerun the P0.2 S240 and do an M307 this time.
-
So that's 43W at 12.45V. Your time constant found by tuning is about double the value I get, which suggests to me that either your hot end is better insulated than mine or your hot end heatsink cooling fan is not very effective. The combination of high heater power and long time constant explains the high gain and hence the warning message.
-
It's a stock E3D V6 with standard cooling fan and shroud. I've measured the top of the cold zone and it is fine and I never get plugging with PLA. The parameters I use with the M301 are:
M301 H1 P20 I0.27 D100 T1.1 S1 W300 B30
(this is with 1.15-beta3) and worked fine. Hot end heated up quickly and stabilized. I have other printers I can update to the 1.15c firmware but they are Duet .85 controllers. Not sure what to do here with this one though.
I did rerun the P0.2 S240 and got the same overpower warning and this time I dd the M307:
M307 H1
Heater 1 model: gain 884.2, time constant 296.0, dead time 6.8, max PWM 1.00, in use: yes, mode: PID
Setpoint change: P8.7, I0.03, D41.8
Load change: P8.7, I0.64, D41.8