Solved Nozzle heater goes offline mid-print Duet 3 Toolboard 1LC
-
I am working on an idex printer, using Prusa mk3s+ hardware, and I am currently trying to test one of my extruders. Each extruder has a separate z and x axis, and the y axis will run between them. One of the extruders is running on the mini 5+, while the other is running off a toolboard 1LC + expansion board 3HC. The one connected to the mini prints correctly, but the other extruder is having a mysterious issue with the heater. Whenever I print, without fail, the nozzle heater works at first, but goes offline around the 3rd or 4th layer, reading 2000C and it obviously stops extruding.
After this, the corresponding sensor cannot be detected with M308, it says it does not exist. Restarting the mainboard or rerunning the config file will cause the heater to be recognized again, it's almost as if the heater is being unbinded / unmapped?
I can replicate this issue very consistently, using multiple different prints, even by doing a dry run without using the heater or extruder drive. I have checked the gcode for each print, and there are no tool changes or explicit references to any heater that might be causing the issue. Manually activating the heater and running it at > 200C for extended periods of time DOES NOT produce the issue, it happens solely in the middle of a print, which makes me think it might not be a wiring problem.
I am on duet web control 3.4.0, my main board (mini 5+) and toolboard are also 3.4.0, my expansion board is 3.4.1. My config file is below.
; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Duet Dual Config" ; set printer name ; Network M551 P"password" ; set password M552 P0.0.0.0 S1 ; enable network and acquire dynamic address via DHCP M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives ;back half M569 P0.0 S0 D3 V40 ; physical drive 0.0 (zl) goes backwards M569 P0.1 S0 D3 V40 ; physical drive 0.1 (x) goes forwards M569 P0.2 S1 D3 V40 ; physical drive 0.2 (y) goes forwards M569 P0.3 S1 ; physical drive 0.3 (e) goes forwards M569 P0.4 S0 D3 V40 ; physical drive 0.4 (zr) goes backwards ;front half M569 P121.0 S1 ; physical drive 121.0 (e2) goes forwards M569 P1.0 S1 D3 V40 ; physical drive 1.0 (zr2) goes forwards M569 P1.1 S1 D3 V40 ; physical drive 1.1 (zl2) goes forwards M569 P1.2 S0 D3 V40 ; physical drive 1.2 (x2 / u) goes forwards M584 X0.1 U1.2 Y0.2 Z0.0:0.4:1.1:1.0 E0.3:121.0 ; set drive mapping M350 X16 U16 Y16 E16 Z16 I1 ; Configure microstepping with interpolation M92 X100.00 U100.00 Y100.00 Z400.00 E140.00 ; set steps per mm M566 X600.00 U600.00 Y600.00 Z48.00 E300.00 ; set maximum instantaneous speed changes (mm/min) M203 X12000.00 U12000.00 Y12000.00 Z720.00 E7200.00 ; set maximum feedrate (mm/min) M201 X1000.00 U1000.00 Y1000.00 Z200.00 E5000.00 ; set max accelerations (mm/s^2) M906 X840.00 U840.00 Y620.00 Z580.00 E650.00:650.00 I10 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout M917 X75 U75 Y75 Z45 E75 ; Axis Limits M208 X0 U6 Y-7 Z-0.1 S1 ; set axis minima M208 X255 U255 Y210 Z205 S0 ; set axis maxima ;M208 X255 U255 Y680 Z205 S0 ; set axis maxima M671 X-37:287 U-37:287 Y0:0 S10 ; leadscrews at left (connected to Z) and right (connected to E1) of X axis M564 H0 ; allow unhomed movement ; Endstops M574 X1 S3 ; configure sensorless endstop for low end on X M574 U1 S1 P"1.io2.in" ; configure switch-type (e.g. microswitch) endstop for low end on U / X2 via expansion pin io2.in M574 Y1 S3 ; configure sensorless endstop for low end on Y M915 P0.1 S3 H10 R1 ; set the X axis sensitivity M915 P1.2 S30 H200 R0 ; set the X2 / U axis sensitivity M915 P0.2 S3 F0 H10 R1 ; set the Y axis sensitivity M574 Z1 S2 ;filament sensor M591 D0 P2 C"io3.in" S0 ; Filament Runout Sensor 1 M591 D1 P2 C"121.io0.in" S0 ; Filament Runout Sensor ; Z-Probe M558 K0 P8 C"io2.in" H5 F750:120 T6000 A1 ; disable Z probe but set dive height, probe speed and travel speed M558 K1 P8 C"1.io0.in" H5 F750:120 T6000 A1 ; disable Z probe but set dive height, probe speed and travel speed G31 K0 P500 X-23 Y5 Z2.0 ;set probe offsets G31 K1 P500 X-23 U-23 Y5 Z2.1 M557 X5:245 Y0:210 S15 ; define mesh grid ; Heaters ;bed M308 S0 P"temp1" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp1 M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 R0.281 K0.557:0.000 D13.78 E1.35 S1.00 B0 ; Bed PID Calibration and PWM M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C ;backNozzle M308 S1 P"temp2" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin temp0 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 M307 H1 R2.842 K0.307:0.388 D8.29 E1.35 S1.00 B0 V23.5 ;nozzle heater config M143 H1 S280 ; set temperature limit for heater 1 to 280C ;frontNozzle M308 S2 P"121.temp0" Y"thermistor" T100000 B4138 ; configure sensor 2 as thermistor on pin 121.temp1 M950 H2 C"121.out0" T2 ; create nozzle heater output on 121.out0 and map it to sensor 2 M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M307 H2 R2.809 K0.302:0.000 D8.91 E1.35 S1.00 B0 V24.1 ;nozzle heater config M143 H2 S280 ; set temperature limit for heater 1 to 280C ; Fans M950 F0 C"out3" Q250 ; create fan 0 on pin out3 and set its frequency M106 P0 C"backPart" S0 H-1 ; set fan 0 name and value. Thermostatic control is turned off M950 F1 C"out4" Q250 ; create fan 1 on pin out4 and set its frequency M106 P1 C"backHotend" S1 H1 T45 ; set fan 1 name and value. Thermostatic control is turned on M950 F2 C"121.out1" Q250 ; create fan 2 on pin 121.out1 and set its frequency M106 P2 C"frontPart" S0 H-1 ; set fan 2 name and value. Thermostatic control is turned off M950 F3 C"121.out2" Q250 ; create fan 3 on pin 121.out2 and set its frequency M106 P3 C"frontHotend" S1 H2 T45 ; set fan 3 name and value. Thermostatic control is turned on ; Tools M563 P0 S"back" 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 M563 P1 S"front" D1 H2 F2 X3 ; define tool 1 G10 P1 X0 Y-470 Z0 ; set tool 1 axis offsets G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C ; Custom settings are not defined ; Miscellaneous M501 ; load saved parameters from non-volatile memory
Any insight on the issue would be greatly appreciated. Thanks!
-
What's happening to the toolboard status LED when the heater goes offline? Is the whole toolboard dropping off, or it's just the heater?
-
@gfontanella It sounds as if the toolboard is losing CAN communications. Check the status LED as @Maestro suggested. I had a similar issue when commissioning my tool board. In my case the culprit was a dodgy (supplied) CAN connector. Slight movement in wiring as the print head moved around would make or break the connection. It was the tiny jst one with leads attached. I bought another which fixed the problem.
-
@Maestro @deckingman It is only the heater that goes offline, the toolboard doesn't seem to be dropping off. If it is, it regains connection fast enough to where I can't notice it.
I observed the status LED, it does seem to blink rapidly at the moment the heater loses connection. The CAN connection is quickly re-established, though, and the LED goes back to blinking normally, but the heater is left offline.
I can't seem to recreate this issue outside of a print job. Manually jostling the CAN connectors / wires myself doesn't cause the issue, and I haven't experienced this problem during any manual moves or homing operations, it ONLY happens in the middle of a print. I even attempted to unplug the CAN connector entirely, (even while printing), which caused the heater to go offline as expected, but reconnecting it causes the heater to come back as if nothing happened. Unplugging + reconnecting the connector after the issue has occurred doesn't fix it, though. Whatever is causing the heater to go offline is preventing it from being recognized without restarting / rerunning the config. Again, it's as if the heater is being unmapped or deleted from the config. I am thoroughly confused.
This is the output of M122 B121 after the issue has occurred and the heater is gone, in case it helps.
-
@gfontanella i would suggest trying 3.5b4 as that introduced support for getting notifications when a CAN connection has been lost. this also ties in with the events system so you can do something about it
-
@jay_s_uk I will try this later today.
Update: it seems that the heater issue affects the extruder driver as well. Once the heater gives out, the extruder motor still receives commands but stalls and doesn't work as intended. It might be affecting everything across the toolboard, I'll have to test more soon.
Another thing to note, after the issue happens, I am able to "revive" the heater by manually reinputting my m308 and m950 commands to reconfigure the heater, and this somehow prevents the heater from giving out in subsequent prints. However, the extruder driver still doesn't work, and I have to restart / rerun the whole config in order to restore that motor's functionality, but rerunning the whole config makes it so the next print will trigger the heater error again. I am still thoroughly confused.
-
@gfontanella that's because the toolboard will lose its config. It sounds like it may possibly be a power issue. The M122 seems to indicate a power reset rather than a CAN loss.
You'd have to resend all the commands to set driver current etc as well -
Update: the issue has been resolved for now!
It was indeed a power issue, and I figured out what was causing it. I had my 5V hotend fan and 5V tool fan both connected to the toolboard, but they were sharing the 5V input from io_2, since I couldn't get 5V from out1 or out2. Since the part fan turns on after the first couple of layers, I guess it pulled too much current from io2 and caused the toolboard to power cycle. I moved the fan inputs to take 5V from the expansion board instead, and now everything works as intended.
Thanks to everyone who helped!
-
-