Hotend Heater Overshoots Badly
-
I normally try to research ad nauseum to solve problems myself, but this one really has me stumped. I just installed a Mosquito Magnum Pro 2.85 hotend, running a Duet3 wifi and 1LC toolboard.
I did the PID tuning at 230, and the tunes come out fine; relatively consistent numbers on 3 separate PID tunes, with no errors during the tunes.
When I go to set a temperature, it overshoots very rapidly, and I get a fault.
-
I have raised/lowered the M307 K value 10%. The guide says to lower it but I've also seen Dave tell people to raise it in this forum, so not sure.
-
I have tried lowering the M307 S value (0.7).
-
I even disassembled the hotend to verify the heater is 24V. It is indeed a 24V, 52W Slice Engineering heater.
-
I've observed heating cycles; the rate on the graph is very smooth, with no weird spikes or abnormalities.
-
I went to just try setting temps at various increments. On the first try at 100, it quickly shot past 100, faulted, and hit 121 before cooling off.
Here is all the information and configs. Hopefully I'm just missing something stupid. I also understand this is a pretty massive heater and it may take some effort.
M307 H1:
Heater 1: heating rate 1.516, cooling rate 4.830, dead time 8.83, max PWM 1.00, mode PID, calibrated at 23.5V Predicted max temperature rise 42°C PID parameters: heating P13.3 I0.938 D82.4, steady P13.3 I1.044 D82.4
config.g:
; Configuration file for Duet 3 Mini 5+ (firmware version 3.3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.16 on Sun Apr 16 2023 22:41:37 GMT-0400 (Eastern Daylight Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"BR1" ; set printer name M669 K1 ; select CoreXY mode ; Wait a moment for the CAN expansion boards to start G4 S4 ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0.0 S0 ; physical drive 0.0 goes forwards M569 P0.1 S0 ; physical drive 0.1 goes forwards M569 P0.2 S0 ; physical drive 0.2 goes forwards M569 P0.3 S1 ; physical drive 0.3 goes forwards M569 P0.4 S1 ; physical drive 0.4 goes forwards M569 P0.5 S1 ; physical drive 0.5 goes forwards M569 P121.0 S0 ; physical drive 121.0 goes forwards M584 X0.4 Y0.3 Z0.2:0.1:0.0 E121.0 ; set drive mapping M350 E16 I0 ; configure microstepping without interpolation M350 X16 Y16 Z16 E32 I1 ; configure microstepping with interpolation M92 X81.07 Y80.90 Z800.82 E825.00 ; set steps per mm for .8mm ASA filament M566 X720.00 Y720.00 Z10.00 E3000.00 ; set maximum instantaneous speed changes (mm/min) M203 X16000.00 Y16000.00 Z600.00 E6000.00 ; set maximum speeds (mm/min) M201 X6000.00 Y6000.00 Z100.00 E3600.00 ; set accelerations (mm/s^2) M906 X1400 Y1400 Z1600 E600 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X-245:245 Y-250:250 Z0:460 ;XY axis minima ; Endstops M574 X1 S1 P"io0.in" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin io0.in M574 Y2 S1 P"io1.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io1.in M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Bed Leveling M671 X-253.5:-1:253.5 Y-243:267.5:-243 S5 ; define positions of Z leadscrews or bed levelling screws M557 X-200:200 Y-190:210 S20 ; define 5x5 mesh grid ; Z-Probe M950 S0 C"121.io0.out" ; create servo pin 0 for BLTouch M558 P8 C"121.io0.in" H4 F120 T12000 R0.2 A20 S0.005 ; set Z probe type to DuetIR and the dive height + speeds avg 5 probes tolerance .01 ;M558 H30 ;*** Remove this line after delta calibration has been done and new delta parameters have been saved G31 P50 X27.33 Y73.71 Z2.888 ; set Z probe trigger value, offset and trigger height M556 S50 X0 Y0 Z0 ; set orthogonal axis compensation parameters M557 X-200:200 Y-190:210 P5 ; define mesh grid ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B3950 A"Bed" ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out0" T0 Q11 ; create bed heater output on out0 and map it to sensor 0, lower switching frequency 11hz ;M307 H0 R0.456 K0.916:0.000 D3.79 E1.35 S1.00 B0 ; old heater PID parameters 100C given from PID tune 14May23 M307 H0 R0.460 K0.487:0.000 D3.36 E1.35 S1.00 B0 ; PID parameters 110 C 22May23 M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 110C M308 S1 P"121.temp0" Y"PT1000" ; configure sensor 1 as thermistor on pin 121.temp0 M950 H1 C"121.out0" T1 ; create nozzle heater output on 121.out0 and map it to sensor 1 M307 H1 R1.516 K4.830:0.000 D8.83 E1.35 S1.0 B0 V23.5 ; PID from 22Jan24 Mosquito Pro Ind 230 celsius M143 H1 S295 ; set temperature limit for heater 1 to 295C ; Fans M950 F0 C"!out4+out4.tach" Q25 ; create fan 0 on pin out4 and set its frequency M950 F1 C"121.out2" ; create fan 1 at extruder toolboard M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M106 P1 T40 H1:1 ; set extruder 121 fan to run at 40° extruder temp ; Tools M563 P0 S"Mosquito Magnum" D0 H1 F0 ; define tool 0 G10 P0 X0 Y10 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C ;M572 D0 S0.050 ;PA for .8 ASA ;M572 D0 S0.07 ;PA .6 ASA ;M572 D0 S0.045 ;PA for 1.2 ASA ;M572 D0 S0.05 ;PA for .6 Nylon ;M572 D0 S0.085 ; PA for .8 PETG ;M572 D0 S0.065 ;PA for .4 PC ; retraction ;M207 S0.5 F3000 ; retraction amount and speed ASA .8 ;M207 S0.8 F2700 ; retraction amount and speed ASA 1.2 M207 S0.25 F2100 Z0.3 ; retraction for PETG .8 ; Accelerometer and Input Shaping M955 P121.0 I41 M593 P"zvd" F25.4 S0.0 ;configure direct connect display M918 P2 E-4 F2000000 M950 E0 C"io3.out" T1 U3 ; create a RGB Neopixel LED strip with 3 LEDs on the Duet 3 Mini 5+ 12864_EXP1 header M150 E0 R255 U255 B255 P255 S1 F1 ; display led M150 E0 R0 U0 B255 P255 S1 F1 ; left encoder led M150 E0 R0 U0 B255 P255 S1 F0 ; right encoder led ; Custom settings are not defined ; Miscellaneous T0
config-override.g
; config-override.g file generated in response to M500 at 2024-01-22 21:21 ; This is a system-generated file - do not edit ; Heater model parameters M307 H0 R0.460 K0.487:0.000 D3.36 E1.35 S1.00 B0 M307 H1 R1.516 K4.830:0.000 D8.83 E1.35 S1.00 B0 V23.5 ; 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
M122:
m122 === Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.5.0-rc.1+ (2023-11-03 17:18:21) running on Duet 3 Mini5plus WiFi (standalone mode) Board ID: GS9VZ-V296U-D65J0-40KMY-L713Z-RU7ZK Used output buffers: 3 of 40 (20 max) === RTOS === Static ram: 102812 Dynamic ram: 128244 of which 12 recycled Never used RAM 10348, free system stack 200 words Tasks: NETWORK(2,nWait,15.7%,228) HEAT(3,nWait,0.0%,356) Move(4,nWait,0.0%,358) CanReceiv(6,nWait,0.0%,774) CanSender(5,nWait,0.0%,336) CanClock(7,delaying,0.0%,350) TMC(4,nWait,0.7%,108) MAIN(1,running,82.7%,670) IDLE(0,ready,0.0%,29) AIN(4,delaying,0.8%,264), total 100.0% Owned mutexes: WiFi(NETWORK) === Platform === Last reset 00:29:28 ago, cause: power up Last software reset at 2023-12-25 09:52, reason: User, Gcodes spinning, available RAM 11228, slot 0 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 MCU revision 3, ADC conversions started 1768450, completed 1768450, timed out 0, errs 0 MCU temperature: min 19.6, current 33.2, max 33.2 Supply voltage: min 24.0, current 24.1, max 24.2, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0 Events: 3 queued, 3 completed Driver 0: standstill, SG min 0, read errors 0, write errors 0, ifcnt 18, reads 27499, writes 18, timeouts 0, DMA errors 0, CC errors 0 Driver 1: standstill, SG min 0, read errors 0, write errors 0, ifcnt 18, reads 27499, writes 18, timeouts 0, DMA errors 0, CC errors 0 Driver 2: standstill, SG min 0, read errors 0, write errors 0, ifcnt 18, reads 27498, writes 18, timeouts 0, DMA errors 0, CC errors 0 Driver 3: standstill, SG min 0, read errors 0, write errors 0, ifcnt 18, reads 27498, writes 18, timeouts 0, DMA errors 0, CC errors 0 Driver 4: standstill, SG min 0, read errors 0, write errors 0, ifcnt 18, reads 27499, writes 18, timeouts 0, DMA errors 0, CC errors 0 Driver 5: not present Driver 6: not present Date/time: 2024-01-22 21:08:15 Cache data hit count 3375602439 Slowest loop: 60.74ms; fastest: 0.17ms === Storage === Free file entries: 20 SD card 0 detected, interface speed: 22.5MBytes/sec SD card longest read time 4.6ms, write time 2.0ms, max retries 0 === Move === DMs created 83, segments created 0, maxWait 0ms, bed compensation in use: none, height map offset 0.000, ebfmin 0.00, ebfmax 0.00 no step interrupt scheduled Moves shaped first try 0, on retry 0, too short 0, wrong shape 0, maybepossible 0 === DDARing 0 === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === DDARing 1 === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters 0 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 1 is on, I-accum = 0.0 === GCodes === Movement locks held by null, null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 File2 is idle in state(s) 0 Queue2 is idle in state(s) 0 Q0 segments left 0, axes/extruders owned 0x0000803 Code queue 0 is empty Q1 segments left 0, axes/extruders owned 0x0000000 Code queue 1 is empty === CAN === Messages queued 15996, received 35418, lost 0, errs 0, boc 0 Longest wait 2ms for reply type 6053, peak Tx sync delay 261, free buffers 26 (min 25), ts 8842/8841/0 Tx timeouts 0,0,0,0,0,0 === Network === Slowest loop: 17.33ms; fastest: 0.00ms Responder states: MQTT(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) HTTP sessions: 1 of 8 === WiFi === Interface state: active Module is connected to access point Failed messages: pending 0, notrdy 0, noresp 0 Firmware version 1.27 MAC address f0:08:d1:03:80:d7 Module reset reason: Power up, Vcc 3.38, flash size 2097152, free heap 25056 WiFi IP address 192.168.1.135 Signal strength -36dBm, channel 0, mode 802.11n, reconnections 0 Clock register 00002002 Socket states: 0 0 0 0 0 0 0 0
Thanks for your time.
-
-
@br7408 When you run the heater tune, do you write the values to config-override or copy and paste them to config g? If it's the latter, then you need to put M501 at the end of config g in order for those values to be read in. Essentially, you have two M307 commands - one in config g and one in config-override.g but without using M501, then the values in config-override will be ignored. So do you have the result of the PID tune in config g?
-
@br7408 It looks like you have copied the M307 command into config.g. While the new value has been saved into config-override.g, you don't appear to have an M501 command in config.g to load those overrides.
I have raised/lowered the M307 K value 10%. The guide says to lower it but I've also seen Dave tell people to raise it in this forum, so not sure.
If during initial heating the temperature overshoots the target:
- RRF 3.3 and later: reduce the R parameter by 5% or 10%
It is not the K parameter you want to change, which is the cooling rate, it is the R parameter. The overheating may be because of the type of heater; if it is a PTC heater, these are harder to characterise, as their heating rate changes as they get hotter.
Ian
-
Somehow I fixed it.
I added the M501 at the end of the config.g.
I was not changing the K value; I was changing the R value; that was a mistype.
It looks like I had gotten some strangely high K values from the M307 yesterday. I tried another PID today and it dropped way down and its working properly now. This hotend seems to be much more affected by my fan as well.
I also updated to the newer RC2 firmware; although I doubt that made any difference.
-
@br7408 When you say this hot end is more affected by the fan, do you mean the part cooling fan? If so then try tuning the tool rather than the heater i.e. use M303 T0 rather then M303 H1. This will give you two sets of PID parameters and the firmware will switch to the second set when the fan comes on. The procedure is best done with the hot end close to the build plate so you get the same amount of deflected part cooling air as you would when printing.
-
Hi Ian. I was looking into that, as well as PID fan compensation. My part cooling fan is run off of the main board, through a CPAP tube. I also reasoned that this hotend would likely benefit from a heatsock/insulator but the Slice offering is about $50 USD.
I built this printhead purely for a promotion, so I just need it to run well enough for now to get a print or two out of it. I will work out a more efficient implementation later.