Very large heated bed - autotune cancelled error
-
Hi guys. Duet Wifi powered large deltabot. I am attempting to run PID autotune on a very large heated bed and need to set a much longer time before it times out during autotune.
The bed heater is powered using a 120v AC resistance coil underneath tempered glass. Duet Wifi is switching an SSR (bang-bang) by the H0 bed output.
I'm running this design on several other large printers and it works well.
Everything works great except a bed of this size takes approximately 5 minutes to reach temperature so during the PID autotune sequence it's timing out.How can I increase the error checking timeouts for the M303 command? Or is there some other way to skin this cat?
Currently running - M303 H0 B1 S50
Standard 2Kg reel shown for size reference
image url) -
You could try increasing the timeout with https://duet3d.dozuki.com/Wiki/Gcode#Section_M570_Configure_heater_fault_detection
-
@Phaedrux - Thanks for that suggestion.
I tried this to no avail, same error:
M307 H0 B1 ; enable bang-bang mode for the bed heater
M305 P0 T100000 B4138 R4700 ; set thermistor + ADC parameters for heater 0
M143 H0 S60 ; set temperature limit for heater 0 to 60C
M570 H0 P400 T15 S400 -
Perhaps best not to use bang-bang mode. It's not required for controlling an SSR. Using PID should be just fine.
If the autotune can't reliably finish, you could manually define the parameters.
-
@Phaedrux - I'll give that a try tomorrow. Thanks for your help.
-
will PID tune even work if its in Bang-Bang mode?
-
Phaedrux recommended not to use bang-bang mode and put it in PID mode.
-
Yes! Success.
(edit: I manually entered the tuning paramters, not using autotune)
The following parameters did the job with a +3C overshoot to the commanded 55C, which is pretty good considering the significant thermal mass involved.
; Heater model parameters
M307 H0 A90.0 C7000.0 D70.0 S1.00 V12.4 B0
M570 H0 P400 T30 S400M307 H0
Heater 0 model: gain 900.0, time constant 7000.0, dead time 70.0, max PWM 1.00, calibration voltage 12.4, mode PID, inverted no, frequency default
Computed PID parameters for setpoint change: P19.8, I0.028, D971.8Those PID parameters are in the ballpark compared to when the printer was running on Smoothieware.
I notice the words 'frequency default'. What is the default pwm frequency and would it be beneficial to the SSR lifespan to lower that? If so, how do I do that?
Thanks again. I'm still getting up to speed but so far Duet3D ROCKS!
-
I'm glad you got it working. If tuning the bed heater times out during the initial heating phase, the fix is to increase the dead time before tuning using the M307 D parameter.
The default bed heater PWM frequency is 10Hz so as to be compatible with all types of SSR. This is why you will see the bed heater LED flickering.
-
@dc42 - Thank you. I may attempt the autotune again at some point now that I've increased the dead-time significantly, but the bed appears to be quite stable now in any case. Good to know about the bed pwm frequency.
-
@dc42 Well unfortunately the joy has not lasted very long. Even though the bed heater will manually allow itself to be heated to its commanded temperature and will hold temp within a degree or so for hours, it will only do that if the heater is commanded manually. Any attempt to use the bed heater (H0) during a print job causes a temperature fault after a few minutes. This error occurs AFTER the bed has been manually brought up to temperature (in this case 55 or 60C) and then the print job gets started once it has stabilized. In some cases I have been able to issue M562 multiple times and the print will finally get underway, even though the temperature fault error message still appears on the screen!
To recap: The bed is preheated to 55C, the print job is started with the bed commanded to 55C. The bed is AT 55C (or 56, or 54) for ~15 minutes before the print job is then started, within the first couple of minutes a bed temperature fault error pauses the print and disables the heaters. Restarting via M562 multiple times seems to finally allow the print to continue, but the fault message still appears onscreen.
It's very likely I'm doing something wrong as I am still on a steep learning curve and in the deep end of the pool.
Relevant config entries:
config.g
Heaters;
M305 P0 T100000 B4138 R4700
M143 H0 S60
M570 H0 P400 T15 S400config-override.g
; Heater model parameters
M307 H0 A90.0 C7000.0 D70.0 S1.00 V12.4 B0 -
@grabercars is the fault that the heater is heating too slowly, or that it is outside of the configured temperature window?
Also does the time to error coincide with the P parameter time in M570?
-
@T3P3Tony - The heater does heat quite slowly, but that is due to the fact that the maximum achievable temperature is fairly low, something like 90C at full power. For obvious safety reasons. This is a PLA/PETG printer so really no reason to go higher.
It takes approximately 8 minutes to reach 50C from ambient, with an initial overshoot of around 3C, but it never appears to go out of the configured temperature window. I haven't put a timer on the appearance of the error to check the P parameter time. It's printing a large job at the moment but as soon as we can I'll check on that.
The issue is that there is no error if we are not actively printing. The error occurs at the start of a print job, even if the bed has been preheated to 50C and is set to 50C in the gcode.
The printer then pauses on error and bed halts. The temp error can be cleared with M562 but as soon as the print is resumed it halts within a short period of time (I need to time this). Clearing the fault some number of times (I need to verify the exact number) then seems to allow the printer to continue printing EVEN THOUGH... the error message pops back up but then it's no longer pausing the print.