Heater Control
-
The heater is under a 1/4" MIC-6 plate with the thermister between them in the center. From your #2, to enable PID, just add a B0 to M307. B0 is not mentioned on the web page for tuning the temp control, just to add B1 to use bang-bang. I didn't have any B parameter with M307. So, I added the B0 to the M307, and it now works in PID and no overshoot. It's now holding fine at 65C and 110C. It only went over by a couple of tenths of a degree, then settled on 65C or 110C.
Log file after adding B0 to M307 in config.g and power cycling:
3:42:28 PMM307 H0
Heater 0 model: gain 271.5, time constant 94.2, dead time 5.5, max PWM 1.00, in use: yes, mode: PID
Setpoint change: P11.3, I0.12, D43.4
Load change: P11.3, I1.02, D43.4Adding the B0 put the bed in PID mode, without it, the mode was bang-bang. I didn't need to add B0 for the hotend for it to use PID.
-
I'm glad you got it working. I'll add a note to the tuning instructions that the bed heater defaults to bang-bang, so you need to add B0 to the M307 H0 line if you want to use PID.
-
The tuning runs at constant PWM (the value you select) and looks at the temperature profile. It stops when the temperature rise is a little less than 90% of the expected maximum.
I don't get it then..
my M303 for tuning on the last run was M303 H1 P0.2 S260, it took 11 minutes before it failed with over temperature at 260. this is well over the couple minutes you expect it to run.1. Is the S value the "expected maximum"? It's not clear from the documentation.
2. if so why didn't my tuning run stop at 90%?In that last run it got to around 240 and slowed up and above 250 it got really slow but never stopped rising till it hit 260 and then failed.
-
The S value is not the expected maximum, it's the maximum you want to allow during tuning.
My hot end heaters have time constants of around 2min 20saec and tuning takes around 2.8 time constants. So tuning a hot end will take around 7 minutes.
-
So what is the expected maximum and how is it set?
(deep breath) (a few times)
semi rant on….. apologies in advance.....From the wiki.... Tuning a hot end heater normally takes just a few minutes.
yet above you now say it will take about 7 minutes.No where in the documentation do you discuss the expected maximum, how it is determined or if it is settable.
can you or should you tune for different setting ie PLA v ABS v even higher.I know this is beta and we are testing but i've had 5 runs with different P values and all ended up going over S max each time but no useful ideas on what to look for further.
Is this a case that the default boot up tuning model just can't handle the high powered heater as it stands.
I'm somewhat astounded that what should be for the end user a simple no brainer exercise regardless of the heater power, you are collecting the temperature numbers as it heats and I would expect that the tuning would automatically handle the fast heating.
I have no doubt the behind the scenes firmware calculations are no where near as simple as i think of course.
rant off//
I understand that I continue to represent an edge case in all your testing but I would hope that is valuable as well.
-
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.