Heater Control
-
OK with p0.2
23:51:34Auto tune of heater 1 with P=0.20 S=260.0 cancelled because temperature limit exceeded. Use lower P or higher S in m303 command.
23:40:37M303 H1 P0.2 S260
Auto tuning heater 1 - do not leave printer unattendedI surmise that the tuning is looking for the max stable temp for a given pwm?
midnight here will try again tomorrow with even lower P values.
Cheers
-
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.
-
How do you make H0 (bed) to use PID? The M307 H0 after the M303 shows PID, but after putting it in config.g, it's always bang-bang. It overshoots and stops heating using any of the three settings it gives. Error: heating fault on heater 0, temperature excursion too large. I used M303 H0 P0.1 S140 to do the auto-tuning. It does complain about it being overpowered. I do have a 160C thermal fuse installed.
It has no problems with the 40w 24vdc heater in the hotend.
-
Hi Stephen,
Are you sure it is using bang-bang and not PID? What settings does M307 H0 report? Also, were you successfully using PID previously, and if so, what M301 parameters were you using?
-
What I got after the auto-tune:
1:31:55 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.2, I0.12, D43.3
Load change: P11.2, I1.02, D43.3
1:31:32 PMWarning: Heater 0 appears to be over-powered and a fire risk! If left on at full power, its temperature is predicted to reach 291C.
Auto tune heater 0 with PWM=0.10 completed in 279 sec, maximum temperature reached 73.4C
Use M307 H0 to see the result
1:26:52 PMM303 H0 P0.1 S140
Auto tuning heater 0 - do not leave printer unattended
–---------------
Sent M307 H0 and got:
2:07:56 PMM307 H0
Heater 0 model: gain 271.5, time constant 94.2, dead time 5.5, max PWM 1.00, in use: yes, mode: bang-bangI did a power cycle after the changes to config.g. M307 H0 A271.5 C94.2 D5.5
I was using the default settings in prior versions, no M301 or M304 used. That didn't work in 1.15-rc4, the bed faulted, so I did an auto-tune.
Firmware Name: RepRapFirmware for Duet
Firmware Version: 1.15-rc4 (2016-08-21)
Web Interface Version: 1.12-RC1 -
Hi Stephen,
It looks to me that auto tuning has failed to measure the time constant correctly, because 94 seconds is very low for a bed heater. That probably means it is under-measuring the gain too. I saw this on one of my bed heaters too, before I lengthened the auto tune process. It occurs when you have a thick bed plate and the thermistor is not in good contact with it. Is that the case in your setup?
You may get more accurate results if you use higher PWM than 0.1, such as 0.15.
Here are some possible workarounds:
1. Use the S parameter in the M307 H0 command to reduce the maximum PWM used. This should reduce the overshoot.
2. Switch to bang-bang control, which was the default before 1.15rc, by using B1 in your M307 H0 command instead of B0. You can still use the S parameter in M307 to reduce the overshot if necessary (you will get a heating fault if the overshoot exceeds 8C when using 1.15-rc4).
3. Enter your own estimates of the M307 A and C parameters instead of using the auto-tune ones..
-
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.