Temperature jumps when the fan is turned on
-
@vladimir_u That's interesting. If I understand you correctly, it seems that the heater model for the hot end fan compensation is being affected by any fan coming on and not just the hot end cooling fan.
Can you post your config.g file please.
Also, if you've tuned the PID for a tool rather a heater, the M307 should have two values for the "C" parameter separated by a colon. What happens if you remove one of those values? Does the hot end temperature change when your electronics cooling fan comes on or does that fix the issue?
-
Might be related to the issue I'm having:
https://forum.duet3d.com/post/267283
Did you PID calibrate your extruder as a tool or as a heater? I'm trying PID now as a heater so there is no fan correction enabled which might cause this.
-
@deckingman Yes, you got it right. Configured as a tool
There is no parameter "C" in the M307...config.g
G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"UltiHBot" ; set printer name M669 K1 ; select CoreXY mode ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0.0 S1 D3 V20 ; physical drive 0.0 goes forwards M569 P0.1 S1 D3 V20 ; physical drive 0.1 goes forwards M569 P0.2 S1 D3 V20 ; physical drive 0.2 goes forwards M569 P0.3 S1 D3 V20 ; physical drive 0.3 goes forwards M584 X0.0 Y0.1 Z0.2 E0.3 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z1600.00 E700.1 ; set steps per mm M566 X900.00 Y900.00 Z60.00 E120.00 ; set maximum instantaneous speed changes (mm/min) M203 X10800.00 Y10800.00 Z300.00 E1200.00 ; set maximum speeds (mm/min) M201 X3000.00 Y3000.00 Z20.00 E250.00 ; set accelerations (mm/s^2) M906 X1200 Y1200 Z800 E300 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S60 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X200 Y200 Z280 S0 ; set axis maxima ; Endstops M574 X1 S1 P"io0.in" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin io0.in M574 Y1 S1 P"io1.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io1.in M574 Z1 S1 P"io3.in" ; configure switch-type (e.g. microswitch) endstop for low end on Z via pin io3.in ; Z-Probe M558 P0 H5 F120 T6000 ; disable Z probe but set dive height, probe speed and travel speed M557 X15:190 Y15:190 S20 ; define mesh grid ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 Q10 ; create bed heater output on out0 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"temp1" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin temp1 M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S280 ; set temperature limit for heater 1 to 280C M308 S2 Y"mcu-temp" A"MCU" M308 S3 Y"drivers" A"DRIVERS" ; Fans M950 F0 C"out3" Q500 ; create fan 0 on pin out3 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"out4" Q500 ; create fan 1 on pin out4 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on M950 F2 C"out5" Q15000 ;Q15000 M106 P2 H2:3 T45 ; Tools M563 P0 D0 H1 F0 ; define tool 0 G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C ; Custom settings M918 P2 E-4 F2000000 ; Fysetc 12864mini M150 X2 R255 U0 B0 P255 S1 F1 ; display led M150 X2 R0 U255 B0 P255 S1 F1 ; left encoder led M150 X2 R0 U255 B0 P255 S1 F0 ; right encoder led ;accelerometers M955 I10 P0 C"io2.out+io2.in" ; Miscellaneous M501 ; load saved parameters from non-volatile memory T0
config-override.g
; config-override.g file generated in response to M500 at 2022-01-10 01:31 ; This is a system-generated file - do not edit ; Heater model parameters M307 H0 R0.687 K0.739:0.000 D2.17 E1.35 S1.00 B0 M307 H1 R2.580 K0.391:0.254 D7.43 E1.35 S1.00 B0 V12.4 ; Workplace coordinates G10 L2 P1 X0.00 Y0.00 Z0.00 G10 L2 P2 X0.00 Y0.00 Z0.00 G10 L2 P3 X0.00 Y0.00 Z0.00 G10 L2 P4 X0.00 Y0.00 Z0.00 G10 L2 P5 X0.00 Y0.00 Z0.00 G10 L2 P6 X0.00 Y0.00 Z0.00 G10 L2 P7 X0.00 Y0.00 Z0.00 G10 L2 P8 X0.00 Y0.00 Z0.00 G10 L2 P9 X0.00 Y0.00 Z0.00
-
@argo a very similar case
-
@vladimir_u OK. So since RRF3.4.0 beta 7, the C parameter has been deprecated to using a K parameter. Your config-overide shows the M307 has two values for "K". The first will be for the fan being off, the second will be for the fan being on. But of course, it should only take account of the hot end cooling fan (F1) - not the electronics cooling fan which I assume is Fan2. Can you temporarily remove the second K value and check if the hot end temperature changes when the electronics cooling fan turns on.
So instead of
M307 H1 R2.580 K0.391:0.254 D7.43 E1.35 S1.00 B0 V12.4
try
M307 H1 R2.580 K0.391 D7.43 E1.35 S1.00 B0 V12.4
and see if that makes a difference.
-
@adrian52 I didn't even know there WAS heater compensation for the cooling fan. How do you control it?
-
@donstauffer said in Temperature jumps when the fan is turned on:
@adrian52 I didn't even know there WAS heater compensation for the cooling fan. How do you control it?
I'm on my phone so difficult to send links but look up the tuning command. I think it's M303 but could be wrong. Essentially you PID tune a tool with it's associated heater rather than a heater.
-
@donstauffer Its M303 TX SXXX with T being the tool number (e.g. 0) and S being the temperature you want to tune to
-
@vladimir_u I've checked the code. The only situations in which the heater power is adjusted are:
-
When a M106 command with an S parameter but no P parameter is used to adjust the speed of the print cooling fan for the current tool. In this case the feedforward correction is used, controlled by the second K parameter n the M307 command for that tool heater. No correction is applied if that second K term is zero.
-
If the VIN voltage measured by the Duet drops, then the tool heater power is corrected to allow for that voltage drop.
There is no path for a thermostatic fan turning on to cause a change in heater power, unless that fan draws such a large current that the power voltage drops - which would be unusual for a fan.
-
-
@dc42 Yes, I can't repeat this bug right now. I tried to start the fan with different options. there were no jumps. But I am sure for sure that it was synchronized with the inclusion of the cooling fan of the board. Later I will run this code that had this effect. Could you tell me by what value the voltage should change in order for the correction to work?
-
It looks like I found what was the reason for the hotend temperature fluctuations. It's all about the slicer settings. The fact is that when printing bridges, the slicer increases cooling. But the bridges were so small that the actual speed of the coolers did not have time to change. But the firmware already included heating compensation. And for this reason there were temperature jumps. This affects the quality of the model wall. I should have written about it here. Perhaps someone else will encounter a similar effect.
-
@dc42 have you considered adding some time delay to the firmware to enable compensation. Or activation of compensation by double analysis of changes in fan rotation speed with an interval of several seconds. Perhaps this would help to avoid such an effect.
-
@vladimir_u great detective work.
-
@phaedrux the desire to understand this did not give me peace
-
@vladimir_u in the tests we did using a E3D V6 hot end, the compensation needed to act instantly, because the additional heater power took a small number of seconds to reach the nozzle, whereas the fan took less than a second to reach the new speed. So the fan speed increased faster than the heat reached the nozzle. As a result, the best compensation we could achieve still resulted in a slight dip in indicated temperature when the fan speed increased; but this dip was smaller than without heater feedforward, also the recovery to the set temperature was faster.
I am surprised that in your graph, the temperature is rising so much because of heater feedforward. Have you tested whether the heater feedforward is compensating correctly when you change the fan speed and leave it at the new value for several seconds? It may be that the feedforward constant (the second K parameter in the M307 command) is not appropriate for your hot end.
What type of hot end do you have, and what type of print cooling fan?
-
The E3D V6 and similar hotends with heater cartridges react slow.
There are newer hotends like the E3D Revo or the Rapido which don't have a "classic" heater cartridge. The heating unit is cylindrical and they draw less power the higher the temperature gets:
They also heat up much fast and the reaction time is lower.
Workaround for me (with the Rapido hotend) at the moment is to do the PID tuning without the fan (H parameter instead of T) so the temperature stays somewhat stable when the fan is turned on. -
@dc42 My printer uses a hotend other than e3dv6. the thermistor there is located closer to the heater. Perhaps for this reason he is more sensitive. However. As a result of several experiments, with the implementation of the M303 with different blowing power, I stopped at the option when calibration occurs with a blowout of 35 percent. Fluctuations when switching within 3 degrees. The best with this configuration can not be achieved, I think.