New heater tuning algorithm
-
@dc42 said in New heater tuning algorithm:
@sozkan said in New heater tuning algorithm:
@dc42 I have water-block cooling which is originally Dyze double heater Typhoon hot end. Which is continuously running. I need multiple heaters and sensors running simultaneously. Since they are on the same block, they are influencing. Incredibly fast heating, one of them cool fast and heat slow, other heat slow but cool fast. But they are defined in the config as a single hot end. Once a job starts, it enables both at the same time. ( Which is initially from the dyze design documentation) . However, It is all the time out of the temperature range and error.
Dyze-Design does not recommend using Duet on their advanced hot ends because of these time-based safety futures. That's why they don't provide support on that.
It's a shame that they haven't been in touch with us about that. I had no idea they were advising against using Duet, and I wasn't aware of the Typhoon hot end.
It's possible to extend the heater timeouts and allowed temperature ranges using the M570 command, in particular the P and T parameters.
Tuning those coupled heaters may work better using the following procedure;
-
Set the M570 limits for those heaters very high.
-
Find some parameters that allow you to heat both heaters at once to the target temperature.
-
With heater #1 at its normal operating temperature, tune heater #2 with the target temperature equal to its normal operating temperature.
-
Now set heater #2 to its normal operating temperature and tune heater #1.
If you continue to get "Temperature rising too slowly" errors, the fix is to reduce the gain or heating rate parameter. That's the M307 R parameter in 3.2RC1 and later.
HTH David
Hi David,
Thank you for the support, I couldn`t realize this feature without your support.They actually don`t blame DUET, What they say;" They have some strong advantages, as much as some very frustrating weaknesses" advise me to get in touch with the DUET support team.
This what I wrote to them;"We are using RepRap based Duet 2 Wifi hardware. I have checked in your documentation, but PID parameters are not related to Typhoon.
Could you please specify what parameters needed? Because Heater 1 increases rapidly and Heater 2 slowdown. That cause error. Autotuning of PID is failing all the time. So I cant get the correct parameters."Their return; "Sadly, it is indeed very tricky to fine-tune the heaters with Duet. They have so many security and error checking features that it becomes a pain for the user.
We are using Duet with one of our Pulsar, and there is sadly nothing we can do to go around this firmware feature.
I would strongly suggest that you contact the guys from Duet and maybe they can implement a fix.Most of the time, we don't supply any parameters to our heaters, as it leads to more problems. It seems like the default values are good enough for what we are doing.
**"
However as of my thesis research subject; "Applicability of Large 3D Printers to the Production industry" stuck on these heater errors, which is frustrating. I needed to get into work and print some successful products. But almost 1.5 half months dealing with the heating errors. -
-
I have a 240v 500w AC heater controlled by an SSR heating a 250x250x4 aluminium bed.
With the old algorithm, the bed temp was flatline stable.
With the new algorithm I get 4-5 degrees oscillation after PID tuning at 100C
The extruder is as good as before, with almost no deviation.
Most of the deviation is over shooting (2.5-3 degrees)
I tried increasing dead time without a lot of change.I'm sure I'll be able to tweak it, but reporting as previous PID worked flawlessly.
; Heaters M308 S0 P"bedtemp" Y"thermistor" A"Bed" B4725 C7.06e-8 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 Q10 ; create bed heater output on bedheat and map it to sensor 0 and set PWM frequency to 10hz M140 H0 ; Set bed themp to zero M143 H0 S130 A0 C0 ; set temperature limit for heater 0 to 130C - fault if too high M308 S1 P"e0temp" Y"thermistor" A"Nozzle-1" B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M143 H1 S280 A0 C0 ; set temperature limit for heater 1 to 280C - fault if too high ; Set PID autotune parameters M307 H0 R0.435 C745.2 D20.50 S1.00 ;set PID values for heater 0 (bed) no V parameter as powered by mains M307 H1 R2.354 C140.7:139.6 D7.38 S1.00 V24.3 ;set PID values for heater 1 (hotend)
-
@OwenD, do you have a record of the M307 bed heater parameters produced by the old tuning algorithm?
-
@dc42 The last time I posted my config it was
M307 H0 A421.6 C860.4 D14.2 S1.00 V24.0 B0
I doubt I would have changed it since them until the new algorithm was introduced. -
@dc42
Dear David,
Many thanks, I have finally Archived to print without problem for more than an hour. I will share the m307 values and printing the video later ( because it is saved on the device).The parameter set to M570 S180 and different
reduced PWM and delay rates for each heater.Since the Typhoon hot end carries two different power capacity rates on the same block and with two sensors individually sensing the temperature, and the auto tunning did not help, I had to play hundreds of times with parameters manually to get them synced on the same temperature.
However, reducing the PWM by more than half will reduce the print rate. Normally it is rated 1 kg/hour capacity hot-end.
-
@OwenD said in New heater tuning algorithm:
@dc42 The last time I posted my config it was
M307 H0 A421.6 C860.4 D14.2 S1.00 V24.0 B0
I doubt I would have changed it since them until the new algorithm was introduced.Penny may have just dropped.
It looks like the M307 returned by the auto-tune didn't include B0, so I presume it will default to bang bang thereafter.
Retrying now with B0 added. -
@OwenD said in New heater tuning algorithm:
@OwenD said in New heater tuning algorithm:
@dc42 The last time I posted my config it was
M307 H0 A421.6 C860.4 D14.2 S1.00 V24.0 B0
I doubt I would have changed it since them until the new algorithm was introduced.Penny may have just dropped.
It looks like the M307 returned by the auto-tune didn't include B0, so I presume it will default to bang bang thereafter.
Retrying now with B0 added.@dc42
Can confirm that the problem was the loss of the B0 parameter after running PID auto tune with the new algorithm.
The temp is now stable at 100C +/- 0.2-0.3Edit: Using M500 puts the B0 parameter into the new M307 settings, but the recommendation in the console at the end of tuning doesn't. I had copied and pasted the latter M307 recommendation.
-
Hi David,
with this algorithm i get always a massive overshoot at first. Which parameters should i tweak manually to try to fix it? R or C? -
@MikeS said in New heater tuning algorithm:
Hi David,
with this algorithm i get always a massive overshoot at first. Which parameters should i tweak manually to try to fix it? R or C?Try reducing R.
-
Hi,
fist thanks for all the work that is put into RRF!
my setup: i3mega with new external 300W-24V supply, converted to a duet-ethernet-1.4 now with firmware RRF3.2-RC2 running (+ PanelDue i5)
I successfully tuned the - in my opinion for higher temperature prints underpowered - "ultrabase mk3" heatplate of the i3mega of which has around 140-145W (glass plate swapped for a solid piece of flat alu with 240x240x5mm attached with heat-conductive-adhesive) for 110°C with M303 H0 P1.0 S110 (heater 0 is setup in config.g as PID via M307 H0 B0 S1.0 )
After successfull tuning with the following console printout
When manually heating afterwards, I am not able to reach any temperature above 100°C (after ca. 15-20minutes from ca. 35°C as start) before a heater0-fault is thrown
currently in config.g I tried
M143 H0 P0 S125 A2 ; switch off heater H_ temporarily if it exceeds S_°C
M143 H0 P1 S130 A0 ; raise a heater fault if it exceeds S_°C
M570 H0 P120 T30 S5to eventually have the error go away, but it seems I cannot get higher temperatures, because the higher the temperatures get, the slower the the heat-up-process is getting until it seems to saturate a little below 100°C. What I do not understand how it was able to reach 110°C while tuning?
Are there any software tweaks I could do to reach around 105-110°C for which I am aiming (I am reluctant to buy a higher W(wattage)-heatplate if I can avoid - which would otherwise be the most obvious thing of course)? The error the tuning threw up leads me to try maybe tuning for 105°C first?
EDIT:
Looks better with 105°C
At least does not throw a heater faultSadly when manually trying afterwards to heat, it also does not go to the 105°C but saturates at ca. 100°C after tuning and throws a fault because it cannot climb any more.
EDIT:
Looks even better with 100°C:
Since it does not throw a warning this is most likely the limit I guess?But even here, I cannot reach the 100°C consistent when heating afterwards manually, it still throws a fault...
But 95°C works fine -> no fault there, hm
-> 95°C
So it seems around 95°C is the inherent limit of this "i3 mega mk3" heatplate with its 140-145W on 220x220mm?
Or would there be any gain by trying hard swithing via setting heater-0 in config.g to M307 H0 B1 S1.0?Next is feeding the 24V through the 12V (It has 2 inputs 1 for 12V 1 for 24V) to see what temperature I can reach there
Stay tuned...
Thanks for working on the console-output for the user: In my perception a big step up!
Best regards
LucasEdit: After retryin 3.1.1, 3.2RC2 & final 3.2alpha it turns out I had in my filament-config.g another M143 with 100°C OUUUUUUUUUCH slap on the forhead at least the heatplate is now feeded with 10A instead of 5A because the waiting got me so nervous that we "tuned" the heating-time -> nice how you can change the behaviour of a resistance-heater by playing with parallel, series, or 1-of-2-circuits-only (no series, no parallel)
WUZA -
@dc42 so i tried playing around with values but i can get a stable temperature during printing, but can't mitigate the overshoot at the first heat up. Also when starting from a cold nozzle i usually get error on bad curve:
Warning: Auto tune of heater 1 failed due to bad curve fit (R=7.999, 1/C=0.0040:0.0097, D=10.3)
The temperature readings seems reasonable to me and i got no "noise" on that, at least from what i can see on duet ui.Any suggestion?
edit1: I managed to get the tune give me results by tuning the heater and not the tools, so i think the bad curve probelm is related to the layer fan but i'm not sure. Also with the given results i get a 8/10°C overshoot at first but at least it won't trigger the thermal runout safety. Still it has to be better than this.
-
Is there any chance to implement more of a plugin approach for the auto-tune algorithm? This algorithm change has been one of my biggest fears in upgrading, although I've been somewhat forced into it to use the web control plugins.
I won't go into the details, but my printer is quite different than traditional printers (for example, I don't use any part cooling fans in my current design). The previous algorithm worked fairly well for me, and after seeing the comments in this post, I'm really afraid of upgrading and may end up manually defining the parameters for a few of my heaters.
I'll report back with the results of using the new algorithm (hopefully this week), but there are so many different heater designs out there that using an option that lets users custom-develop their own versions may be a good opportunity for future growth.
-
@TLAS said in New heater tuning algorithm:
Is there any chance to implement more of a plugin approach for the auto-tune algorithm? This algorithm change has been one of my biggest fears in upgrading, although I've been somewhat forced into it to use the web control plugins.
I won't go into the details, but my printer is quite different than traditional printers (for example, I don't use any part cooling fans in my current design). The previous algorithm worked fairly well for me, and after seeing the comments in this post, I'm really afraid of upgrading and may end up manually defining the parameters for a few of my heaters.
I'll report back with the results of using the new algorithm (hopefully this week), but there are so many different heater designs out there that using an option that lets users custom-develop their own versions may be a good opportunity for future growth.
I would like it also if the new algorithem could be just a new Bx within M307, as was "bang-bang" in the past as B1, B0="simple" PID, and now e.g. B2 as "feed-forward" PID.
Another option would be to put within M307 in the place of B0 the new "feed-forward"PID and "replace" the "old" PID to e.g. a new B2-option... (so that new users use by default B0 for heater1 and only the those who need really, swap back as an individual decision to B2 for whatever reason)?
+1 from me
But if I recall correctly dc42 (altough that was way before RC2 of RRF3.2) had some issue with code getting too much/too big and therfor would of course have liked to get rid of the "old" PID -> Please correct if it is wrong what I write here, these are only some vague memories from several weeks ago long before RC2...
-
What is the limit to the PID values that are available?
I have a very fast heater and would like to use the integrated PID tuning, but unfortunately it heats too quickly (3 seconds to target temp), until now I have only gotten errors. "not heating at expected rate"... -
@Deltasquare are you sure of your temperature readings? 20-200°C in 3 seconds is really fast. Is this a SpaceX motor at launch?
-
Hi
i have updated my Duet wifi to newest RRF 3.2 what i must change to use the new heater tuning algorithm ?
thats my actual settings for heater:
; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0 M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.06e-8; configure sensor 1 as thermistor on pin e0temp M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M143 H1 S280 ; set temperature limit for heater 1 to 300C M307 H1 B0 S1.00
and how i can tune the bed and thermistor ?
thanks a lot
-
@lui2004 You tune it as normal using M303
https://duet3d.dozuki.com/Wiki/Gcode?revisionid=HEAD#Section_M303_Run_heater_tuning
-
@MikeS
I am 100% sure.
However it's not quite up there with the Marlin engine in sophistication.... but close. -
This post is deleted! -
@dc42 now that 3.2 has been out for some time, would it be possible to get a better description of what the new M307 parameters do? the documentation is very vague and (https://duet3d.dozuki.com/Wiki/Tuning_the_heater_temperature_control#Section_Manual_adjustments_to_the_heater_model_parameters) still refers to the deprecated parameter A (gain). Specifically, heater rate has no units on it. Would it be possible to see a quick diagram of what the heater loop looks like and where all the parameters feed in? I'll need to have one of our controls engineers fix a particularly troublesome heater and it would be good if they had a diagram of what's going on so we can tune on the fly.