Solved Heater 0 fault: exceeded allowed temperature excursion
Replaced a generic E3D hotend with a new Pico Hybrid setup, swapping in a 100k NTC 3950 thermistor, hotend fan, layer fan, and new heater element. I also removed a dc42 for the time being, until I can print a new holder for it. Wiring was replaced 1 for 1.
Just to complicate things I upgraded the firmware at the same time, to version 3.4.0rc1
On boot get the error message "Heater 0 fault: exceeded allowed temperature excursion: target 125.0°C actual 52.3°C" . The 52.3 is some random temp between 35 and 80. Get an additional message "Heater 0 not switched on due to bad model" in the console. It looks like there is a temp reading spike to about 88°C at startup, then the reading slowly normalized back down to room temp over the course of 10 minutes, dropping about 0.1°C per second.
Changing or commenting out PID tuning (307) commands didn't help. Not sure where else to look.
; General preferences M575 P1 S1 B57600 ; enable support for PanelDue G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Griffin Delta" ; set printer name ;M665 R130 L288.87 B130 H229.4 ; Set delta radius, diagonal rod length, printable radius and homed height M665 R130 L288.87 B130 H227.35 ; Set delta radius, diagonal rod length, printable radius and homed height M666 X0 Y0 Z0 ; endstop adjustments here, or let auto calibration find them ; Network M552 S1 ; enable network M586 P0 S1 C"*" ; enable HTTP M586 P1 S1 C"*" ; enable FTP M586 P2 S1 ; enable Telnet ; Drives M569 P0 S0 ; physical drive 0 goes backwards M569 P1 S0 ; physical drive 1 goes backwards M569 P2 S0 ; physical drive 2 goes backwards M569 P3 S1 ; physical drive 3 goes forwards M584 X0 Y1 Z2 E3 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z80.00 E393.06 ; set steps per mm M566 X12000.00 Y12000.00 Z12000.00 E1200.00 ; set maximum instantaneous speed changes (mm/min) ---was 1200 M203 X18000.00 Y18000.00 Z18000.00 E2400.00 ; set maximum speeds (mm/min) M201 X5000.00 Y5000.00 Z5000.00 E1000.00 ; set accelerations (mm/s^2) -- was 1000 M906 X1000 Y1000 Z1000 E1000 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 Z0 S1 ; set minimum Z ; Endstops M574 X2 S1 P"xstop" ; configure switch-type (e.g. microswitch) endstop for high end on X via pin xstop M574 Y2 S1 P"ystop" ; configure switch-type (e.g. microswitch) endstop for high end on Y via pin ystop M574 Z2 S1 P"zstop" ; configure switch-type (e.g. microswitch) endstop for high end on Z via pin zstop ; Z-Probe (Disabled) ;M558 P1 X0 Z0 H5 F600 T5000 C"zprobe.in+zprobe.mod" ; Set Z probe type to dc42 IR_PROBE ;G31 P450 X18 Y18 Z0.91 ; set Z probe trigger value, offset and trigger height ;M557 R100 S10 ; define mesh grid ; Bed Heater M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 A"Bed Heater" ; 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 S0.90 ; use PID tuning for the bed heater and set PWM limit // CONFIG_OVERRIDE handles this M140 H0 ; map bed to heater 0 M140 S-273 R40 ; active/standby to 25/40. turn off bed heater by setting to -273 M143 H0 S120 ; set temperature limit for heater 0 to 120C ; Hot End Heater M308 S1 P"e0temp" Y"thermistor" T100000 B3950 A"Hot End" ; 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 ;M307 H1 B0 S0.90 ; use PID tuning for the heater and set PWM limit // CONFIG_OVERRIDE handles this M143 H1 S280 ; set temperature limit for heater 1 to 280C ; Fans Q30000 Q1000 M950 F0 C"fan0" ; Layer fan on pin fan0 and set its frequency M106 P0 S0 H-1 C"Print Layer Fan" ; set fan 0 starting speed. Thermostatic control is disabled M950 F1 C"fan1" ; Heat sink fan on pin fan1 and set its frequency M106 P1 S1 H1 T45 C"HotEndFan" ; set fan 1 value. Thermostatic control is turned on ; Tools M563 P0 S"DeltaEffector" H1 F0 D0 ; define tool 0 with heater 1, fan 0, extruder 0 ;G10 P0 R25 S125 ; Active 125 Standby 25 M568 P0 R20 S125 A0 ; replaces g10; Set tool 0 Active/Standby=125C/20C and Current State = Off R25 S150 A0 G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets ; Miscellaneous M501 ; load saved parameters from non-volatile memory M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss T0 ; select first tool
; config-override.g file generated in response to M500 ; This is a system-generated file - do not edit ; Delta parameters M665 L288.871:288.871:288.871 R136.421 H228.480 B135.0 X-0.117 Y1.433 Z0.000 M666 X0.202 Y1.731 Z-1.933 A0.00 B0.00 ; Heater model parameters M307 H0 R0.322 C747.800:747.800 D27.95 S1.00 V14.1 B0 I0 M307 H1 R3.297 C150.900:150.900 D4.24 S0.90 V14.0 B0 I0 ; 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
Can you send M122 and M98 P"config.g" and post the results?
Does this also happen in 3.3?
oracledude last edited by
I should have changed hardware then upgraded firmware, but I wasn't concerned as I've done both pretty easily in the past. This hardware config has only been tested in 3.4.
m122 === Diagnostics === RepRapFirmware for Duet 2 Maestro version 3.4.0rc1 (2022-02-09 10:28:41) running on Duet Maestro 1.0 Board ID: 08DAM-9F9GA-J24TD-6JKD0-3S86R-KP3UT Used output buffers: 3 of 24 (24 max) === RTOS === Static ram: 23628 Dynamic ram: 65660 of which 216 recycled Never used RAM 24840, free system stack 156 words Tasks: NETWORK(ready,28.4%,263) HEAT(notifyWait,0.1%,300) Move(notifyWait,0.0%,326) TMC(notifyWait,1.3%,116) MAIN(running,70.2%,494) IDLE(ready,0.0%,31), total 100.0% Owned mutexes: === Platform === Last reset 21:38:29 ago, cause: software Last software reset at 2022-02-21 17:58, reason: User, GCodes spinning, available RAM 25188, slot 2 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x04 Aux0 errors 0,0,0 Step timer max interval 940 MCU temperature: min 27.9, current 28.8, max 29.4 Supply voltage: min 14.0, current 14.1, max 14.1, 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: 1 queued, 1 completed Driver 0: pos 21170, standstill, read errors 0, write errors 0, ifcnt 69, reads 2845, writes 5, timeouts 0, DMA errors 0, CC errors 0 Driver 1: pos 21170, standstill, read errors 0, write errors 0, ifcnt 69, reads 2845, writes 5, timeouts 0, DMA errors 0, CC errors 0 Driver 2: pos 21170, standstill, read errors 0, write errors 0, ifcnt 69, reads 2845, writes 5, timeouts 0, DMA errors 0, CC errors 0 Driver 3: pos 0, standstill, read errors 0, write errors 0, ifcnt 61, reads 2850, writes 0, timeouts 0, DMA errors 0, CC errors 0 Driver 4: pos 0, standstill, read errors 0, write errors 0, ifcnt 55, reads 2850, writes 0, timeouts 0, DMA errors 0, CC errors 0 Driver 5: pos 0, not present Driver 6: pos 0, not present Date/time: 2022-02-22 15:37:17 Slowest loop: 11.28ms; fastest: 0.15ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Storage === Free file entries: 10 SD card 0 detected, interface speed: 15.0MBytes/sec SD card longest read time 0.7ms, write time 1.1ms, max retries 0 === Move === DMs created 83, segments created 6, maxWait 77518183ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 10, completed 10, hiccups 2, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters 0 -1, chamber heaters -1 -1, ordering errs 0 === GCodes === Segments left: 0 Movement lock held by 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 Daemon is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty === Network === Slowest loop: 24.80ms; fastest: 0.05ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions HTTP sessions: 1 of 8 Interface state active, link 100Mbps full duplex
2/22/2022, 3:39:58 PM M98 P"config.g" HTTP is enabled on port 80 FTP is enabled on port 21 TELNET is enabled on port 23 Warning: Heater 0 predicted maximum temperature at full power is 265°C
Ran the M98 after system was idle all day, thermistor hit 65°, then 90° within two refreshes, then output the error below. Five minutes later, it's dropping below 35° and will probably normalize at room temp
2/22/2022, 3:40:12 PM Error: Heater 0 fault: exceeded allowed temperature excursion: target 125.0°C actual 69.0°C
So if I plug in my old thermistor - room temp immediately. Hard stop, reboot, shows ambient. Replace it with pico's, no power cycle, jumps to 160C and starts the same normalization countdown back to ambient. Something in the firmware is getting confused with the response from it.
Working with Metaform in their discord channel in parallel. Seems to be a new problem to them as well.
@oracledude said in Heater 0 fault: exceeded allowed temperature excursion:
This hardware config has only been tested in 3.4.
Can you roll back to 3.3 to test?
You can upload this zip file to change it.
Problem isolated to thermistor, not Duet.