3.2 heater tuning issues
-
Dead time 50 finally worked (from the 4 suggested). Bed overshoots quite a bit but that's easily fixed by setting a lower temp.
I'll start lowering the value at each print until I find the optimal dead time. The auto calibration probably needs some work though
-
@matt3o said in from duet 2 to duet 3 bed temp issues:
Bed overshoots quite a bit but that's easily fixed by setting a lower temp.
-
@matt3o said in from duet 2 to duet 3 bed temp issues:
@deckingman you are the 6-input hotend guy. A heated bed can't scare you!
6 input hot end, 7 axes CoreXYUVAB, 13 steppers, one main Duet board and 3 expansion boards as well as a mains heated bed, none of which bother me in the slightest - but the new firmware (or what bugs, faults or foibles may be contained therein) terrifies me.
But actually, I've now completed the heated bed tuning, with the new algorithm and RRF 3.2. "stable (ish)", and can confirm that my prior misgivings were unfounded in this case. The process completed without any obvious signs of bad behaviour. I didn't take much note of the time but it took less than 2 hours overall (it takes about 13 minutes to get from ambient of around 20 to 90 deg C but much much longer to cool because if the insulation).
For info, the parameters I ended up with were as follows
M307 H0 R0.104 C2186.5 D28.16 S1.00 B0; auto tune 08/01/2021 using RRF 3.2.
Vin was 27.6 but that's irrelevant with a mains heated bed. I haven't tried an actual print yet.
-
@deckingman have you already tried to print? because the calibration completed correctly for me too.
wait until the bed is back to room temp, and try to heat it up to 60-90C.
-
@matt3o said in from duet 2 to duet 3 bed temp issues:
@deckingman have you already tried to print?................
Read my last sentence.
I'll have to wait another hour or so for the bed to cool to ambient, then I'll try heating it.
-
@deckingman oh yeah sorry, I missed that last sentence after the code. finger crossed then. but your dead time seems high enough and it might work
-
@matt3o Ok, so it took a while for the bed to cool but eventually got down to 23 degC which is close enough to ambient I think. I just heated it to 70 deg C (I normally run it at 50 or 60 but because of your problems I decided to use a higher temperature).
I can report that I had no problems. The heating process was smooth and even - the shape of the slope is a nice straight line up to around 69 deg C where it gradually curves to a slight overshoot which I observed to be 0.7 deg C (to a temperature of 70.7 deg C) before very gradually dropping back down to 70.0 where it sits as solid as a rock. I'd say that the control is actually better than the old algorithm (this is from someone who has no hesitation in being critical when things are not as good as expected).
So from my results, with my similar build plate configuration, it looks you might have some other issue.
One thing that comes to mind is that when I changed from Duet 2 to Duet 3, the trace for the bed temperature was very noisy. That may have been coincidental because there were some wiring changes as well. On the other hand, it might be that Gen 3 products are more susceptible to noisy signals.
This noise on the thermistor signal did play havoc with the bed heater control. My solution was to use screened cable for that thermistor and connect the screen to gnd. Does your signal look noisy or is it a nice, clean, "sharp" line?
EDIT. ....and of course, to be clear, I had no heater fault messages just now.
-
@deckingman thanks for your feedback.
The curve is rather smooth, without jittering. It's very fast from 20 to 50 then it becomes incredibly slow. So, yeah definitely something's wrong there.
I'll check my wires but everything's grounded and the exposed thermistor cable is not longer than 10cm.
-
@matt3o said in from duet 2 to duet 3 bed temp issues:
@deckingman thanks for your feedback.
The curve is rather smooth, without jittering. It's very fast from 20 to 50 then it becomes incredibly slow. So, yeah definitely something's wrong there.
I'll check my wires but everything's grounded and the exposed thermistor cable is not longer than 10cm.
Long shot - the heater doesn't have a thermal cut-out embedded in it does it? If there was something like that, it would explain why it heats quickly to around 50 then cycles slowly beyond that. Alternatively, maybe the heater has a fault of the "bi-metalic" nature with the heating element itself.
-
okay, insulated the wires and tried different in/out for bed and thermistor. same result.
what I don't understand is that during tuning the bed is super snappy. It reaches the temperature very quickly, but then during printing it becomes very slow.
Stupid question incoming: is it normal that the bed light on the duet is flashing during heating? I guess it's showing the PWM but I don't remember if it was flashing on the duet2...
@deckingman said in from duet 2 to duet 3 bed temp issues:
Long shot - the heater doesn't have a thermal cut-out embedded in it does it? If there was something like that, it would explain why it heats quickly to around 50 then cycles slowly beyond that. Alternatively, maybe the heater has a fault of the "bi-metalic" nature with the heating element itself.
nah, don't think that's the case. Again, it was working great on the duet2 (prev firmware) both in pid and BB.
-
@matt3o said in 3.2 heater tuning issues:
...............is it normal that the bed light on the duet is flashing during heating? I guess it's showing the PWM but I don't remember if it was flashing on the duet2...
Yes that's normal. It depends a bit on what frequency you have the PWM set to. (That's the Q value in your M950 H0).
What I see is that the light is fully on as the bed start to heat - that's because the PWM ratio (not the frequency) will be at 1.0. Then when the temperature gets close to the set point, PWM will start to kick in and the LED will start to flash - on when the heater is on, off when it's off.
For the hot end, the LED appears to be fully on all the time but that's because the PWM frequency is much higher so retinal retention (or whatever it's called) comes into being and one's eyeball can't detect the rapid flashing.Actually, that's a point .......... for use with an SSR, you should have that set to 10 Hz. If it's too high, that might possibly be your problem because the SSR might not be able to switch at the frequency that the Duet board puts out. During the initial heating, that won't matter because it'll be fully on, but as the temperature approaches the set point, then PWM will kick on and the SSR will start to switch. So you'll get the initial rapid rise, then the temperature might go haywire as it approaches the set point because the SSR can't switch at the frequency that Duet is out putting.
That reminds me of something else. I could be wrong but I have a nagging thought that Duet 2 always used a default value of 10 Hz for a bed heater but Duet 3 does not. If that is the case, then might indeed be the cause of your problem. So add
G10Q10 to your M950 H0 if you don't already have that. -
@deckingman said in 3.2 heater tuning issues:
That reminds me of something else. I could be wrong but I have a nagging thought that Duet 2 always used a default value of 10 Hz for a bed heater but Duet 3 does not. If that is the case, then might indeed be the cause of your problem. So add G10 Q10 to your M950 H0 if you don't already have that.
Yeah I've read that on the docs, the default is 500 and you have to set it 10 for the SSR. "unfortunately" I have that already... But as far as I can tell the LED is always flashing (only during calibration is always on). I'll check again later when the bed is finally cold again (gosh this is extenuating )
that was a good call, though! Thanks. Maybe my ssr needs a different frequency?
-
@matt3o I think that because you get an initial, rapid, temperature rise, that the PWM is working as it should. But it could be that the SSR goes flaky when it needs to switch on and off rapidly. I.e when the PWM mark-space ratio changes (the "W" part of PWM). You could try a really low frequency like say 1Hz. If that doesn't work, maybe try another SSR.
Might it also be possible that the MOSFET on the Duet board is flaky and goes a bit haywire when it has to switch rapidly? Dunno - not my area of expertise....... -
oookay I did more experimenting and tried to figure out the new algorithm. This is my theory I wish @Phaedrux or @dc42 could confirm my findings
Dead time (D parameter) is the time needed to "kick start" the heating. Before you see any change in the curve basically. I believe it's just at the beginning of the heating process.
Time Constant (C param) I believe is the time to reach the end of the straight heating before the start of the curve (should be 63% of the target temperature). The temp raise is fast and straight up to 50C (in my case) and then it slows down and reaches the target temp with a smooth curve.
Heating rate I don't know exactly, but I guess it's the heater efficiency/power. I think that the higher the number the more efficient it is.
Since my heating always fails at the very beginning of the heating curve (at about 50C) I believe the auto-tuning fails either to find the right "Time constant" or over-estimate my "Heating rate".
With this theory I changed the auto-tuned values FROM:
M307 H0 R0.729 C638.9 D4.16 S1.00
TO
M307 H0 R0.600 C700 D6 S1.00
And the heating process was actually successful. So basically I gave it more time to reach the curve and under evaluated the heater.
What is the unit that "Dead time" and "Time constant" are measured? I don't think it's seconds.
@deckingman 's auto-tuning was M307 H0 R0.104 C2186.5 D28.16 S1.00 B0 for a bed similar to mine but with less wattage. In fact it takes a lot of time to reach the start of the curve (C2186.5) and the heater is indeed very slow (R0.104).
-
@matt3o said in 3.2 heater tuning issues:
@deckingman thanks for your feedback.
The curve is rather smooth, without jittering. It's very fast from 20 to 50 then it becomes incredibly slow. So, yeah definitely something's wrong there.
I'll check my wires but everything's grounded and the exposed thermistor cable is not longer than 10cm.
Are you using a silicone bed heater with an embedded thermistor?
There is a problem with this arrangement, which is that the thermistor responds very quickly to changes in heater power, but the temperature of the bed plate responds much more slowly. So in effect you have a heating system (heater + thermistor) loosely coupled to a heat reservoir (the bed plate). This means there are two different values for the gain. There is the gain for short-term changes to heater power when the bed is already close to the required temperature and can be considered at constant temperature. This value is needed to get good PID control. And there is the long-term gain, which is much lower. It is the long-term gain that is needed to avoid overshoot during initial heating.
In future firmware versions, I may provide for the long-term gain to be measured and included in M307 separately from the short-term heating rate.
-
@dc42 said in 3.2 heater tuning issues:
Are you using a silicone bed heater with an embedded thermistor?
yes that's me... What would you suggest? At the moment I made a few changes to the M307 to trick the heating process... and it seems to be working. Another easier solution is to pre-heat to 45°C and then heat to 60 (or whatever). That also works.
-
@matt3o said in 3.2 heater tuning issues:
@dc42 said in 3.2 heater tuning issues:
Are you using a silicone bed heater with an embedded thermistor?
yes that's me... What would you suggest? At the moment I made a few changes to the M307 to trick the heating process... and it seems to be working. Another easier solution is to pre-heat to 45°C and then heat to 60 (or whatever). That also works.
As per my first post on 8th - I drilled a 3mm hole in the edge of the plate (mine is 10mm thick) as close to the top surface as possible and as deep as possible with the drill bit I had to hand (about 30 - 40mm deep IIRC), and I have an E3D style cartridge thermistor in that hole.
I kind of assumed that you were doing something similar. The problem with embedded thermistors is that they are very close to the junction between the heat pad and the aluminium. If that aluminium is thick, then it takes a long time for the heat to conduct through to the top surface (which is really where we went to measure the temperature).
The problem I had was that when the bed starts to heat, the pad heats up quickly, the thermistor at the junction sees that temperature rise so turns the heater off even though the top surface is still cool. Then there is a time delay for the pad to cool before the thermistor sees that drop in temperature and the heater comes on again. The net result for me, was that it took an awfully long time for the top surface to reach temperature. Moving the thermistor cuts out the on-off cycle so the overall heat up time (for the top surface) is much reduced.
I'm not sure that would cure your particular problem (but it's well worth doing in any case IMO.
EDIT - after reading DC's explanation of two types of gain that the PID control uses, then moving the thermistor might well cure your problem.
-
@deckingman said in 3.2 heater tuning issues:
EDIT - after reading DC's explanation of two types of gain that the PID control uses, then moving the thermistor might well cure your problem.
and I will do exactly that... thanks for your continued support and patience. really appreciated it.
-
Sorry for necroposting, but if anyone comes here with a similar problem, the solution is to lower the bed power to 80% or even 60% with the S parameter in your M307.
This should be needed only with rather big print beds and powerful heaters.