Extruder motor stops during print…
-
another failure
M906 Motor current (mA) - X:1000, Y:1000, Z:1000, E:400:400:400:400:400:400:400:400:400, idle factor 30%
M122 === Diagnostics === Used output buffers: 3 of 32 (9 max) === Platform === RepRapFirmware for Duet Ethernet version 1.20 running on Duet Ethernet 1.0 Board ID: 08DDM-9FAMU-JW4S4-6JKD8-3SD6L-TMXMS Static ram used: 11992 Dynamic ram used: 98816 Recycled dynamic ram: 3880 Stack ram used: 1216 current, 8448 maximum Never used ram: 7936 Last reset 27:23:06 ago, cause: power up Last software reset at 2018-01-26 12:31, reason: User, spinning module GCodes, available RAM 10464 bytes (slot 0) Software reset code 0x0003 HFSR 0x00000000, CFSR 0x00000000, ICSR 0x0441f000, BFAR 0xe000ed38, SP 0xffffffff Error status: 0 Free file entries: 10 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest block write time: 0.0ms MCU temperature: min 41.0, current 41.2, max 60.2 Supply voltage: min 23.8, current 24.4, max 24.9, under voltage events: 0, over voltage events: 0 Driver 0: standstill, SG min/max 0/1023 Driver 1: standstill, SG min/max 0/1023 Driver 2: standstill, SG min/max 0/1023 Driver 3: standstill, SG min/max 0/1023 Driver 4: standstill, SG min/max not available Date/time: 2018-01-27 15:56:14 Cache data hit count 4294967295 Slowest main loop (seconds): 0.607014; fastest: 0.000045 === Move === MaxReps: 5856, StepErrors: 0, FreeDm: 240, MinFreeDm 120, MaxWait: 2357420531ms, Underruns: 0, 1 Scheduled moves: 0, completed moves: 0 Bed compensation in use: none Bed probe heights: 0.000 0.000 0.000 0.000 0.000 === Heat === Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 Heater 0 is on, I-accum = 0.0 Heater 1 is on, I-accum = 0.5 === GCodes === Segments left: 0 Stack records: 2 allocated, 0 in use 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 serial is idle in state(s) 0 aux is idle in state(s) 0 daemon is idle in state(s) 0 queue is idle in state(s) 0 autopause is idle in state(s) 0 Code queue is empty. === Network === State: 5 HTTP sessions: 1 of 8 Responder states: HTTP(1) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0)
what should i try next? i have not yet tried the other extruder pins on my board. i also have a wifi i can try, but that's pretty invasive, and it makes connecting a PITA.
-
ok, so i tried something. with the machine in its errored state, i swapped the extruder motor pins to E1, instead of E0. then, i made a new tool in the web interface.
switching to the new tool on the other pins allowed me to extrude! then, as a sanity check, i swapped the pins back to E0, changed back to the original tool, and was unable to extrude. ok, i am not insane. switch to new tool on E1, extruding is ok.
i think i will try printing on E1.
-
i printed on E1 last night, to no avail. still failed. i am unable to connect to the printer, "due to the duet firmware". wish i had a screencap of the page – did a refresh, and now get nothing. i am unable to connect to the printer through any other means. my normal fallback of repetier host, simplify3d, and all other programs fail to connect.
i have now wasted about two kg of plastic due to this problem...
-
-
another failure, on my wifi, 1.20. we can safely say:
-
either neither of my duet boards are defective, or both are
-
if this is a firmware problem, it exists in 1.19.2 and 1.20
i additionally believe that
- we can rule out my wiring as a problem. otherwise, when i switched E0 to E1, the extruder would not have moved without a restart. however, if my wiring is causing this fault, it should be firmware detectable… ideally
one problem i have observed is that the firmware is unable to detect if the extruder motor comes disconnected. you can unplug, and replug, no errors. should this not be observable?
-
-
is this the same problem as i am experiencing?
https://community.ultimaker.com/topic/4733-print-stops-or-fails-halfway-through/
-
it seemed so at first, but no, my fans work fine. that post was about heat creep, not the motor stopping.
-
Does extrusion stop at the same point in the print each time?
The stepper drivers on the Duet can in theory detect when a motor wire is disconnected, but in practice we found it gave false positives, so I disabled that facility. If I can find a way to filter out the false positives, I will enable it again.
-
another thought i had – maybe i should put a fan on the duet? is the board overheating?
-
no, it is not the same point every time.
-
here's a snippet of what my gcode looks like:
G1 X-9.773 Y20.202 E0.0240 G1 X-8.049 Y19.083 E0.0845 G1 X-7.228 Y18.592 E0.0393 G1 X-5.829 Y17.806 E0.0660 G1 X-2.005 Y15.805 E0.1774 G1 X-1.749 Y15.664 E0.0120 G1 X-0.741 Y15.031 E0.0489 G1 X-0.182 Y14.575 E0.0297 G1 X0.225 Y14.087 E0.0261 G1 X0.746 Y12.742 E0.0593 G1 X0.847 Y12.526 E0.0098 G1 X0.864 Y12.365 E0.0066 G1 X0.745 Y10.941 E0.0588 G1 X0.342 Y9.133 E0.0761 G1 X-0.212 Y7.194 E0.0829 G1 X-1.216 Y3.878 E0.1424 G1 X-1.686 Y2.198 E0.0717 G1 X-1.997 Y1.061 E0.0484 G1 X-2.338 Y-0.306 E0.0579 G1 X-2.657 Y-1.687 E0.0582 G1 X-3.138 Y-4.143 E0.1029 G1 X-3.300 Y-5.092 E0.0396 G1 X-3.519 Y-6.570 E0.0614 G1 X-3.767 Y-8.725 E0.0892 G1 X-3.921 Y-10.510 E0.0736 G1 X-4.038 Y-12.900 E0.0984 G1 X-4.060 Y-14.016 E0.0459 G1 X-4.047 Y-16.295 E0.0937 G1 X-3.986 Y-17.935 E0.0674 G1 X-3.894 Y-19.398 E0.0602 G1 X-3.771 Y-20.858 E0.0602
so it is a sequence of short extrusion moves the whole file. no long linear extrudes, just this.
-
-
another thought: should i prefer absolute or relative extrusions? i have only been using relative through this whole process.
-
i am starting to think there is a bug in the reprap firmware, in the part that processes relative extrusion distances. i printed the same model, same supports and all settings, last night. only change was that in simplify3d, i switched to absolute extrusion.
ok, there was another difference that i should have not let happen, and that was that i printed this one without the https://www.thingiverse.com/thing:2567240 bottom corner plates.
i am re-printing the same file now. if it fails again, then we know that the relative / absolute distances had nothing to do with my problem. if it succeeds, we have stronger evidence that it is a firmware bug.
-
i am now convinced that there is a bug in the firmware dealing with relative extruder distances
another success with absolute extruder distances, print time was 36h 21m
video:
https://youtu.be/7BCaq2k_oJkpic:
a little problem at the top. caused due to top layers being set to 0 for that process in simplify3d. (6 processes used total, to reduce the amount of plastic used by varying the infill %)
-
Most Duet users - including me - only ever use relative extrusion distances.
Did you turn off "Allow zeroing of extrusion distance" in S3D? You should do that when using relative extrusion, although AFAIK it doesn't matter if you leave it enabled.
-
zeroing was indeed allowed in s3d, both in my relative and absolute prints.
brad at ultibots indicated that he thinks people mostly use absolute, where you think it is relative…
i have > 70 hours of absolute distance printing with no errors now, so am growing in confidence that i was experiencing something problematic with relative. i think some stress-test kinds of gcode files are merited. i was thinking that cylindrical circles or ellipses with ever-smaller faces might be useful, and mix in the zeroing.
are there known smallest distances that the extruder should be asked to perform? i read the code in the reprap firmware, and nothing immediately jumped out at me as risking underflow or rounding error. i was however concerned in GCodes.cpp at lines 2044 or so,
const float moveArg = eMovement[0] * distanceScale; float requestedExtrusionAmount; if (gb.MachineState().drivesRelative) { requestedExtrusionAmount = moveArg; } else { requestedExtrusionAmount = moveArg - virtualExtruderPosition; virtualExtruderPosition = moveArg; }
that in one case, the value of virtualExtruderPosition is adjusted, and not in the other. is it assumed to be always 0 if relative? where is it adjusted?
i just want to know exactly how to manifest this problem, as i am not content with absolute distances as a workaround.
-
Taking a WAG based solely on the code you posted:
If doing relative extrusion, the "virtualExtruderPosition" variable is meaningless (simply because it's not needed: It's a variable only used to calculate requestedExtrusionAmount if and only if absolute extrusions.)
If relative, then the value of "E" is the amount that is extruded in this step.
If absolute, then the value of "E" (moveArg) is the amount that is extruded in this step and all the previous steps combined. So, in order to know how much THIS step extrudes (requestedExtrusionAmount), you have to subtract "all the previous steps combined" (virtualExtruderPosition) from moveArg. At that point, "all the previous steps combined" (virtualExtruderPosition) needs to be updated to reflect the added amount THIS step extrudes (requestedExtrusionAmount.)
That could be written any of the following ways, and all would be accurate:
virtualExtruderPosition = virtualExtruderPosition + requestedExtrusionAmount;
virtualExtruderPosition += requestedExtrusionAmount;
virtualExtruderPosition = moveArg; // because moveArg == (virtualExtruderPosition + requestedExtrusionAmount)
-
gotcha.
do you have references to any other places people have had problems with relative extrusion and zeroing on?
-
the drama continues.
i printed a surface called "tobel", and it failed, even with absolute extruder distances. we can rule out relative as the culprit.
added a heatbreak out of lexan, with a fan blowing directly across the duet.
the print still failed.
here is what it is supposed to look like:
i think we can rule out heat as the source of the problem. because the two prints failed at such a similar place, i am hopeful that i can develop a short gcode file that fails every time i run it. then, hopefully, someone else can also try it, and fail.