[feature] Adaptive / Feedforward Temperature setpoint
-
@timschneider I wonder if temp increase VS speed will be ok when you change to a bigger noozle and you go slow; in that situation you would have a potential huge increment of mm3/s but a lower speed. Example: 100 MM/s speed with a 0.4 noozle . The you switch to a 0.8 nozzle and go to 80 mm/s
-
@Tinchus it is extruder speed e.g. movement of filament per sec, not travel speed so it is accounting for that. I print with 0.8mm to 1.2mm nozzles.
-
@timschneider that is what I meant. May be Im wrong so please clarify: the push request is using the new requested T parameter in terms of extrusion speed or volumentric speed? Because the firmeware actually never knows what size of nozzle you are using: if slicer request a 10 mm/s extrusion move and you are using a 0.8 nozzle volumen and needed temperature will be quite dfifferent if the slicer request the same speed but you are using a 0.4 nozzle. am I wrong?
-
@Tinchus, it's the extrusion speed. So I use 2.85 mm filament and if I use an extrusion speed of 1 mm/s, for example, it is about 6.38 mm³/s, regardless of the nozzle size. The only difference between extrusion speed and volume speed is the area of the filament, e.g. for 2.85 mm filament 6.38 mm² and thus only a factor.
-
@timschneider said in [feature] Adaptive / Feedforward Temperature setpoint:
So I use 2.85 mm filament
I thought it was just me using up everyone else's 2.85mm filament! If I ever get my Trident-ish machine finished, I've got a Titan extruder with volcano CHT nozzles (probably 1mm nozzle dia) tool earmarked for it, to get through all the old stock (after it's spent time in the filament dryer), and print big things fast! So some form of temperature feedforward would be good.
Ian
-
@timschneider As this feature has been added (https://github.com/Duet3D/RepRapFirmware/commit/b300085b44b2fe403d231a674b3b29f702c6b66f), have you got any suggestions for the tuning method that I could add to the feedforward documentation?
M309 in the Gcode dictionary has been updated to say:
Parameters
...
Tddd:eee:fff... Feedforward temperature increase coefficients. The number of coefficients provided must equal the number of heaters configured for the tool when it was created (see M563). Supported in RRF 3.6.0-beta.2 and later.
Aggg Feedforward advance time in milliseconds, maximum 100. RRF will attempt to apply the temperature and PWM adjustment this time in advance of the start of the corresponding move. This advance time may not always be achieved, for example when commencing movement from standstill. Supported in RRF 3.6.0-beta.2 and later.Notes
...
The units of T are degrees Celsius per mm/sec of filament forward movement.No notes on the A parameter.
Ian
-
@droftarts
Hi @droftarts
I use the following tuning method:- determine the lowest possible temperatur
Temp_base
for the filament, e.g. extrude with F30 (0.5 mm/secSpeed_base
) so that the filament is melting and will bond to each other - define your desired extrusion rate, e.g. 35 mm³/sec -> calculate the required extrusion speed -> around 5.5 mm/sec (
Speed_desired
) for 2.85mm filament -> F330 - Extrude the filament with the desired speed + 20% and increase the temperature of the hotend till you are able to extrude at the desired speed. Note the needed temperature for that speed
Temp_required
. The extrusion length should be at least two times your hotend length. The 20% increase is some kind of error margin for non linear extrusion and when the fan is on. - calculate the needed temperature boost with
Temp_boost = (Temp_required - Temp_base) / (Speed_desired - Speed_base)
For Example PLA
Temp_base = 190 Temp_required = 230 Speed_base = 0.5 mm/s Speed_desired = 5.5 mm/s Temp_boost = 40 / 5 => 8 => T8
Edit:
Temp_base
will be the temperature you set in your slicer for that material. - determine the lowest possible temperatur
-
@droftarts
I have updated the description so that it hopefully becomes clearer how much material has to be extruded and why you should aim for a 20% plus error margin and that you should use the temp_base for slicing. -
@dc42
thank you for implementing the temperature feedforward.
It took me a while to get it installed on a machine and test it, unfortunately I was not able to get it working. Maybe its a pure display thing, but I do not see the temperature increase I was expecting.I set
M309 P0 S0.06 T8 A100
and was extruding at 245°C with 0.6mm/sec, so I was expecting an temperature increase of 4.8°C but the temperature in DWC was still at 245°C.the following chart is showing the print process and a pretty stable temperature without the increase and decrease of the temperature feed forward.
The printer is on
-
@dc42
The problem is the A100 - without the A param it works.
What is the purpose of the A param - I thought it is kind of a look a head and will set the temp increase in advance.
But it will not work for short moves.To reproduce:
G28 X Y M568 P0 R160 S230 T0 G91 echo "will not work" M309 P0 S0.05 T8 A100 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G4 S5 echo "will work" M309 P0 S0.05 T8 A0 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120 G1 X1 E1 F120