Troubleshooting a heater fault
-
Is it possible to have the temperature graph stop collecting data and hold upon a heater fault? I've got a heater fault on my hotend that seems to only ever happen on long prints, by the time I get back to see a heater fault, the graph has long recorded over the recorded instance making it impossible to see what the graph captured during the event. I've already changed my heater cartridge and the conductor pair leading back to the board. The heater responds find and has very little ripple yet it is throwing an error "Tool 0 was not driven because its heater temps were not high enough or it has a heater fault"
-
@leckietech you could try logging or conditonal gcode to capture data on a fault event.
No way to hold the temperature graph though -
@jay_s_uk thanks for the suggestions. I just sent M929 P"eventlog.txt" S1, Ill see how that goes. is there any particular conditional string you had in mind? I have no experience with conditional code, unfortunately.
-
@leckietech this would let you know if the heater was in a fault state
heat.heaters[1].state
and then something in daemon.g to say something likewhile heat.heaters[1].state == "fault" M118 S"{heat.heaters[1].current}" L1
that may need tweaking (especially around the M118 message).
That will loop and keep writing the temperature so you may want to only take so many readings otherwise you may wear out your SD card -
@jay_s_uk ok this was very helpful thank you. I added the daemon.g file to my card with the code, hope I can catch this thing.. I'm about 3 hours into a print now and just noticing some ripple in the graph that wasn't there about 30 mins ago. it would appear there is a pattern which to me, indicates there is a position the printer gets into that is causing this.
-
@jay_s_uk just found the issue. the connector bringing power to the hotend is slightly melted. I wiggle it and see the graph get corrected. my god, the simple things, huh?
-
while heat.heaters[1].state == "fault" M118 S"{heat.heaters[1].current}" L1
Ive tried this and it works.. well, Kind of.
Upon a fault, im getting a flood of messages to the terminal but its just displaying and not the actual temperatureheat.heaters[1].current
I tried replacing it with the following for duet 2 wifi temp pin
while heat.heaters[1].state == "fault" M118 S"{e0temp}" L1
still just displays the same.
also any ideas to slow down the number of messages? I wouldnt imagine adding a G4 between loops would be a good idea during a print -
@leckietech
Sorry about that as I was having a bit of a guess at what was correct.
This will work (as I've just been able to test it)while heat.heaters[1].state == "fault" M118 S{heat.heaters[1].current} L1
-
@jay_s_uk Ah, awesome thanks! Do you know of a reference table where I can find a list of conditional functions and varible names for duet e.g.
heat.heaters[1].state
move.axes[0].homed
move.calibration.initial.deviation
etc. -
-
@leckietech they are all browseable within the object model.
There is a plugin for DWC (thats built in) that can be activated.
There is also the meta commands page https://duet3d.dozuki.com/Wiki/GCode_Meta_Commands -
@jay_s_uk Oh brilliant! The object model browser is exactly what I was looking for!